The actual width of non-antialiased lines is determined by rounding the supplied width to the nearest integer, then clamping it to the implementation-dependent maximum non-antialiased line width. Though this implementation-dependent value cannot be queried, it must be no less than the implementation-dependent maximum antialiased line width, rounded to the nearest integer value, and in any event no less than 1. If rounding the specified width results in the value 0, then it is as if the value were 1.
Non-antialiased line segments of width other than one are rasterized by offsetting them in the minor direction (for an x-major line, the minor direction is y, and for a y-major line, the minor direction is x) and replicating fragments in the minor direction (see Figure 3.5).
Figure 3.5: Rasterization of non-antialiased wide lines.
x-major line segments are shown.
The heavy line segment is the one specified to be rasterized;
the light segment is the offset segment used for rasterization.
x marks indicate the fragment centers produced by rasterization.
Let w be the width rounded to the nearest integer (if w=0, then it is as if w=1). If the line segment has endpoints given by and in window coordinates, the segment with endpoints and is rasterized, but instead of a single fragment, a column of fragments of height w (a row of fragments of length w for a y-major segment) is produced at each x (y for y-major) location. The lowest fragment of this column is the fragment that would be produced by rasterizing the segment of width 1 with the modified coordinates. The whole column is not produced if the stipple bit for the column's x location is zero; otherwise, the whole column is produced.