Technical Brief: FCW-01

WIDE LINES and THICK LINES in FastCAD 32


by Michael Riddle
July 30, 1997

Introduction

FastCAD versions 5.07 through 5.09 introduced extensive new features dealing with line widths. These features are designed to solve a host of differing user needs, and as such need some explanation of how they may be used and what tradeoffs are involved.

Paper Scaling & Geometric Scaling

Paper scaling refers to those features defined as being a certain size on a printed piece of paper or the display screen, regardless of scaling or zoom factor.

Geometric scaling refers to those features that change their apparent size on paper or the screen with different zoom factors or print scaling.

GDI vs. Non-GDI Features

The Windows Graphics Device Interface (GDI) is an an extensive set of procedures that perform drawing functions. These procedures, like any such, have certain limitations. When FastCAD uses a GDI procedure to perform a needed action, we say it is performed with GDI-based functions. Some FastCAD functions need to extend the capability or performance and are performed by FastCAD routines that result in the final use of multiple lower-level GDI functions. An example is the drawing of an arc on screen - FastCAD can turn it into a set of connected lines approximating the arc and draw them much faster than the GDI arc command.

Thick Lines

A thick line in FastCAD is a paper-scale line that is always solid-filled. Think of it as drawing with either a razor pen, or one with a blunt tip. No matter the drawing scale, the line produced by that pen has only one thickness. Thick lines are implemented as pen-widths in the GDI function CreatePen.

Wide Lines

A wide line is a line that is usually geometrically scaled, but can be switched to paper scaled. It may be filled with any of the FastCAD fill styles. It is implemented in FastCAD by our high-speed fill engine, the same as that used to pattern-fill polygons, circles, etc. Each drawing entity has an assigned width property, like color, layer, etc.

Using Wide Lines

The LWIDTH command brings up a Line Width dialog (The same one presented by clicking on the top startus bar width display). Entering a numeric value then clicking OK sets the Current Line Width property. Each new entity created is assigned this value. A value of 0.0 indicates a normal thin line.

Non-closed entities are drawn as a wide line, with their interior filled with the fill-style assigned to the entity. Examples are Lines, Paths, Splines, Arcs, etc.

Filled entities such as polygons, smooth polys, circles, etc. are no longer considered filled. Instead, they are drawn as an outline of the geometry with the assigned width filled with the fill style assigned to the entity.

Color Mapping

The LWIDTH dialog provides an option to enable color mapping. If you define a width to selected colors in this dialog, then any entity drawn in that color, whose entity width property is 0.0, will instead be drawn as if it had the width that is mapped to that color.

The LWIDTH dialog has a check box at the bottom that enables "pen width through GDI calls". This causes the color mapping width to be used for a thick line, rather than a wide line. For this to work, both the color mapping and pend-width boxes must be checked.

When using thick lines, all lines in that color are drawn as lines of the desired thickness (in paper scale), while any assigned width property is used to control the filling of the interior. This will let you have a filled polygon with a thick outline, for example, by specifying 0.0 width for the entity, and the thick line width in the color mapping.

Note that the color mapping and line-width option check boxes are saved in the system registry and apply to all drawings on your system, and are NOT saved with each individual drawing.

Speed Considerations

Filling wide lines (especially if they use a non-solid line style!) can be a time-consuming process. The LWIDTH dialog lets you specify that you wish to "ignore line widths for display" which will draw a lines as thin lines on-screen, but draw them with proper thickness and width when printing.

Plotters

If you are using a true pen plotter device, wide lines are VERY slow, as the pen must scan back and forth to fill an area. Bitmap and Brush Pattern fills do not work, and any of them you select will be solid-filled. You CAN use hatch and symbol fill styles effectively on a pen plotter (this is in fact the motivation for their existence in FastCAD). Also, hatch and symbol fills are transparent.

If you have a pen plotter, checking the "ignore line widths for printing" will cause wide lines to become ordinary unfilled lines. You may use color mapping and GDI pen widths to get thick lines, and fast printing speeds.

PRINTERS as if they were PLOTTERS

Many printers offer the option (through their properties dialog) to send graphics in raster or vector format. Raster format needs memory for printing in relation to the image size, not its visual complexity. Vector representation needs memory in relation to the image complexity, not its overall size.

Vector format printing is often an order of magnitude faster in transmission of data to the printer, but for very complex drawings, can cause a printer "memory overrun". If this occurs, you either add more memory to your printer, use raster transmisssion for that drawing, or make your drawing less complex.

Printer Drivers

Some printers may be connected to windows by several different drivers. HP printers and the CADJET printers, among others, can use the HPGL vector-based printing language. The HP printers can do intermixed raster fills and vector drawing.

The WINLINE driver, intended for pen plotters, can be used with these printers for fast vector-based printing, by checking the color mapping, disable width to printer, and use GDI pen thickness boxes. Line thickness through color mapping will work, but all brush and bitmap fills become solid fills.

Color Changes

In the PRINT command dialog box, you may check "print white as black" or "print all as black". These options let you change the color used when printing from that used on-screen. If you draw with white lines on a black background, most (but not all) printers will not show these lines - white is assumed to be the paper color. You would want to print these white lines as black on the printer.

If however, you use white on top of a filled color, some (but not all) printers will properly "nock out" that area back to white for printing. If this is your need, you would not check "print white as black".

Some printers try to print color as grey-scale at higher resolutions. If you wish to avoid this to have very solid printing lines, you might whish to check "print all as black".

Color Changes through Color Mapping

Consider the situation where you are using color mapping for thick lines, but wish to have all of these mapped lines print as black, any you also want to print certain features (logos, etc.) in color. You may use the "Set black" button in the color dialog box to pick which colors are printed as black. The two color samples shown are for the display (on the left) and the printer (on the right). If you are using this feature, do NOT select "print all black" as it overrides this.

Summary

Hopefully, the above will explain why there is such a multitude of width and thickness options in FastCAD, and in which situations they might be of some use. Many people will use the width property for line widths, with all boxes unchecked, and never become involved with color mapping. This approach is much less complex. For those customers with high volume printing needs where printing speed is critical, these options provide viable solutions worth the added complexity.

©1997 Evolution Computing, Inc.