Line Width and Geometric Width

The operating system defines two types of lines: cosmetic and geometric, representing two separate concepts.

Cosmetic lines represent the mathematical ideal of a line being an entity with only one dimension-length. When cosmetic lines are drawn, they usually are only one pel wide.

The line width attribute provides a visual method of distinguishing different types of lines. For example, on a map, roads might be drawn thicker than railroad tracks. The line width attribute defines a multiplier to be applied to the normal (or default) line width. Your application can determine the cosmetic line width by calling GpiQueryLineWidth.

There are certain devices that do not define the thickness of cosmetic lines in terms of a number of pels. The PM interface interprets the specified width for these devices as shown in the following table:

┌────────────────────┬────────────────────────────────────────┐
│Identifer           │Description                             │
├────────────────────┼────────────────────────────────────────┤
│LINEWIDTH_DEFAULT   │The default width for the device.       │
├────────────────────┼────────────────────────────────────────┤
│LINEWIDTH_NORMAL    │The line width equivalent to a          │
│                    │multiplier of 1.  Identical to          │
│                    │LINEWIDTH_DEFAULT unless changed with   │
│                    │GpiSetDefAttrs.                         │
├────────────────────┼────────────────────────────────────────┤
│LINEWIDTH_THICK     │The line width equivalent to a          │
│                    │multiplier greater than 1.              │
└────────────────────┴────────────────────────────────────────┘

Your application can set the cosmetic line width with either a multiplier or an identifier value using GpiSetLineWidth. Since the line represents a widthless ideal, the actual drawn width is a fixed value. The line width remains unchanged when you increase the size of, or zoom in on, a graphics object. The cosmetic line width is not subject to transformations.

In contrast, geometric lines represent an area whose thickness is equal to the specified line width. Geometric lines are subject to changes in scale through transformations, in the same manner as geometric figures.

The width of a geometric line does not have a default value. Width is treated as a line attribute for programming convenience, but it actually is a geometric property. A line width is set with GpiSetLineWidthGeom. If a width is already specified, that width can be determined with GpiQueryLineWidthGeom.

To use geometric line width, the lines are assembled into a path. When you use a path to define wide lines, you can specify the following:

These three attributes apply only to geometric lines drawn using paths.


[Back: Attributes of Line and Arc Primitives]
[Next: Line Types]