aboutsummaryrefslogtreecommitdiff
path: root/libX11/specs/libX11/CH07
diff options
context:
space:
mode:
Diffstat (limited to 'libX11/specs/libX11/CH07')
-rw-r--r--libX11/specs/libX11/CH072357
1 files changed, 0 insertions, 2357 deletions
diff --git a/libX11/specs/libX11/CH07 b/libX11/specs/libX11/CH07
deleted file mode 100644
index d6f672289..000000000
--- a/libX11/specs/libX11/CH07
+++ /dev/null
@@ -1,2357 +0,0 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-.\" OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.\" Except as contained in this notice, the name of the X Consortium shall
-.\" not be used in advertising or otherwise to promote the sale, use or
-.\" other dealings in this Software without prior written authorization
-.\" from the X Consortium.
-.\"
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-.\" Digital Equipment Corporation
-.\"
-.\" Portions Copyright \(co 1990, 1991 by
-.\" Tektronix, Inc.
-.\"
-.\" Permission to use, copy, modify and distribute this documentation for
-.\" any purpose and without fee is hereby granted, provided that the above
-.\" copyright notice appears in all copies and that both that copyright notice
-.\" and this permission notice appear in all copies, and that the names of
-.\" Digital and Tektronix not be used in in advertising or publicity pertaining
-.\" to this documentation without specific, written prior permission.
-.\" Digital and Tektronix makes no representations about the suitability
-.\" of this documentation for any purpose.
-.\" It is provided ``as is'' without express or implied warranty.
-.\"
-\&
-.sp 1
-.ce 3
-\s+1\fBChapter 7\fP\s-1
-
-\s+1\fBGraphics Context Functions\fP\s-1
-.sp 2
-.nr H1 7
-.nr H2 0
-.nr H3 0
-.nr H4 0
-.nr H5 0
-.na
-.LP
-.XS
-Chapter 7: Graphics Context Functions
-.XE
-A number of resources are used when performing graphics operations in X.
-Most information about performing graphics (for example, foreground
-color, background color, line style, and so on) is stored in
-resources called graphics contexts (GCs).
-.IN "Graphics context"
-Most graphics operations (see chapter 8) take a
-GC as an argument.
-Although in theory the X protocol permits sharing of GCs between applications,
-it is expected that applications will use their own
-GCs when performing operations.
-Sharing of GCs is highly discouraged because the library may cache GC state.
-.LP
-Graphics operations can be performed to either windows or pixmaps,
-which collectively are called drawables.
-.IN "Root"
-Each drawable exists on a single screen.
-A GC is created for a specific screen and drawable depth
-and can only be used with drawables of matching
-screen and depth.
-.LP
-This chapter discusses how to:
-.IP \(bu 5
-Manipulate graphics context/state
-.IP \(bu 5
-Use graphics context convenience functions
-.NH 2
-Manipulating Graphics Context/State
-.XS
-\*(SN Manipulating Graphics Context/State
-.XE
-.LP
-Most attributes of graphics operations are stored in GCs.
-These include line width, line style, plane mask, foreground, background,
-tile, stipple, clipping region, end style, join style, and so on.
-Graphics operations (for example, drawing lines) use these values
-to determine the actual drawing operation.
-Extensions to X may add additional components to GCs.
-The contents of a GC are private to Xlib.
-.LP
-Xlib implements a write-back cache for all elements of a GC that are not
-resource IDs to allow Xlib to implement the transparent coalescing of changes
-to GCs.
-For example,
-a call to
-.PN XSetForeground
-of a GC followed by a call to
-.PN XSetLineAttributes
-results in only a single-change GC protocol request to the server.
-GCs are neither expected nor encouraged to be shared between client
-applications, so this write-back caching should present no problems.
-Applications cannot share GCs without external synchronization.
-Therefore,
-sharing GCs between applications is highly discouraged.
-.LP
-To set an attribute of a GC,
-set the appropriate member of the
-.PN XGCValues
-structure and OR in the corresponding value bitmask in your subsequent calls to
-.PN XCreateGC .
-The symbols for the value mask bits and the
-.PN XGCValues
-structure are:
-.sM
-.LP
-/* GC attribute value mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.75i).
-#define\
- T{
-.PN GCFunction
-T} T{
-(1L<<0)
-T}
-#define\
- T{
-.PN GCPlaneMask
-T} T{
-(1L<<1)
-T}
-#define\
- T{
-.PN GCForeground
-T} T{
-(1L<<2)
-T}
-#define\
- T{
-.PN GCBackground
-T} T{
-(1L<<3)
-T}
-#define\
- T{
-.PN GCLineWidth
-T} T{
-(1L<<4)
-T}
-#define\
- T{
-.PN GCLineStyle
-T} T{
-(1L<<5)
-T}
-#define\
- T{
-.PN GCCapStyle
-T} T{
-(1L<<6)
-T}
-#define\
- T{
-.PN GCJoinStyle
-T} T{
-(1L<<7)
-T}
-#define\
- T{
-.PN GCFillStyle
-T} T{
-(1L<<8)
-T}
-#define\
- T{
-.PN GCFillRule
-T} T{
-(1L<<9)
-T}
-#define\
- T{
-.PN GCTile
-T} T{
-(1L<<10)
-T}
-#define\
- T{
-.PN GCStipple
-T} T{
-(1L<<11)
-T}
-#define\
- T{
-.PN GCTileStipXOrigin
-T} T{
-(1L<<12)
-T}
-#define\
- T{
-.PN GCTileStipYOrigin
-T} T{
-(1L<<13)
-T}
-#define\
- T{
-.PN GCFont
-T} T{
-(1L<<14)
-T}
-#define\
- T{
-.PN GCSubwindowMode
-T} T{
-(1L<<15)
-T}
-#define\
- T{
-.PN GCGraphicsExposures
-T} T{
-(1L<<16)
-T}
-#define\
- T{
-.PN GCClipXOrigin
-T} T{
-(1L<<17)
-T}
-#define\
- T{
-.PN GCClipYOrigin
-T} T{
-(1L<<18)
-T}
-#define\
- T{
-.PN GCClipMask
-T} T{
-(1L<<19)
-T}
-#define\
- T{
-.PN GCDashOffset
-T} T{
-(1L<<20)
-T}
-#define\
- T{
-.PN GCDashList
-T} T{
-(1L<<21)
-T}
-#define\
- T{
-.PN GCArcMode
-T} T{
-(1L<<22)
-T}
-.TE
-.IN "XGCValues" "" "@DEF@"
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-/* Values */
-
-typedef struct {
- int function; /* logical operation */
- unsigned long plane_mask; /* plane mask */
- unsigned long foreground; /* foreground pixel */
- unsigned long background; /* background pixel */
- int line_width; /* line width (in pixels) */
- int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
- int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */
- int join_style; /* JoinMiter, JoinRound, JoinBevel */
- int fill_style; /* FillSolid, FillTiled, FillStippled FillOpaqueStippled*/
- int fill_rule; /* EvenOddRule, WindingRule */
- int arc_mode; /* ArcChord, ArcPieSlice */
- Pixmap tile; /* tile pixmap for tiling operations */
- Pixmap stipple; /* stipple 1 plane pixmap for stippling */
- int ts_x_origin; /* offset for tile or stipple operations */
- int ts_y_origin;
- Font font; /* default text font for text operations */
- int subwindow_mode; /* ClipByChildren, IncludeInferiors */
- Bool graphics_exposures; /* boolean, should exposures be generated */
- int clip_x_origin; /* origin for clipping */
- int clip_y_origin;
- Pixmap clip_mask; /* bitmap clipping; other calls for rects */
- int dash_offset; /* patterned/dashed line information */
- char dashes;
-} XGCValues;
-.De
-.LP
-.eM
-The default GC values are:
-.TS H
-l l.
-_
-.sp 6p
-.B
-Component Default
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-T{
-function
-T} T{
-.PN GXcopy
-T}
-plane_mask All ones
-foreground 0
-background 1
-line_width 0
-T{
-line_style
-T} T{
-.PN LineSolid
-T}
-T{
-cap_style
-T} T{
-.PN CapButt
-T}
-T{
-join_style
-T} T{
-.PN JoinMiter
-T}
-T{
-fill_style
-T} T{
-.PN FillSolid
-T}
-T{
-fill_rule
-T} T{
-.PN EvenOddRule
-T}
-T{
-arc_mode
-T} T{
-.PN ArcPieSlice
-T}
-tile Pixmap of unspecified size filled with foreground pixel
- (that is, client specified pixel if any, else 0)
- (subsequent changes to foreground do not affect this pixmap)
-stipple Pixmap of unspecified size filled with ones
-ts_x_origin 0
-ts_y_origin 0
-font <implementation dependent>
-T{
-subwindow_mode
-T} T{
-.PN ClipByChildren
-T}
-T{
-graphics_exposures
-T} T{
-.PN True
-T}
-clip_x_origin 0
-clip_y_origin 0
-T{
-clip_mask
-T} T{
-.PN None
-T}
-dash_offset 0
-dashes 4 (that is, the list [4, 4])
-.sp 6p
-_
-.TE
-.LP
-Note that foreground and background are not set to any values likely
-to be useful in a window.
-.LP
-.IN "Display Functions" "" "@DEF@"
-.IN "Source" "" "@DEF@"
-.IN "Destination" "" "@DEF@"
-The function attributes of a GC are used when you update a section of
-a drawable (the destination) with bits from somewhere else (the source).
-The function in a GC defines how the new destination bits are to be
-computed from the source bits and the old destination bits.
-.PN GXcopy
-is typically the most useful because it will work on a color display,
-but special applications may use other functions,
-particularly in concert with particular planes of a color display.
-The 16 GC functions, defined in
-.hN X11/X.h ,
-are:
-.\" are listed in Table 5-1 along with the
-.\"the associated hexadecimal code
-.\" and operation.
-.\".CP T 1
-.\"Display Functions
-.TS H
-lw(1.5i) cw(.5i) lw(2i).
-_
-.sp 6p
-.B
-Function Name Value Operation
-.sp 6p
-_
-.sp 6p
-.TH
-T{
-.PN GXclear
-T} T{
-0x0
-T} T{
-0
-T}
-T{
-.PN GXand
-T} T{
-0x1
-T} T{
-src AND dst
-T}
-T{
-.PN GXandReverse
-T} T{
-0x2
-T} T{
-src AND NOT dst
-T}
-T{
-.PN GXcopy
-T} T{
-0x3
-T} T{
-src
-T}
-T{
-.PN GXandInverted
-T} T{
-0x4
-T} T{
-(NOT src) AND dst
-T}
-T{
-.PN GXnoop
-T} T{
-0x5
-T} T{
-dst
-T}
-T{
-.PN GXxor
-T} T{
-0x6
-T} T{
-src XOR dst
-T}
-T{
-.PN GXor
-T} T{
-0x7
-T} T{
-src OR dst
-T}
-T{
-.PN GXnor
-T} T{
-0x8
-T} T{
-(NOT src) AND (NOT dst)
-T}
-T{
-.PN GXequiv
-T} T{
-0x9
-T} T{
-(NOT src) XOR dst
-T}
-T{
-.PN GXinvert
-T} T{
-0xa
-T} T{
-NOT dst
-T}
-T{
-.PN GXorReverse
-T} T{
-0xb
-T} T{
-src OR (NOT dst)
-T}
-T{
-.PN GXcopyInverted
-T} T{
-0xc
-T} T{
-NOT src
-T}
-T{
-.PN GXorInverted
-T} T{
-0xd
-T} T{
-(NOT src) OR dst
-T}
-T{
-.PN GXnand
-T} T{
-0xe
-T} T{
-(NOT src) OR (NOT dst)
-T}
-T{
-.PN GXset
-T} T{
-0xf
-T} T{
-1
-T}
-.sp 6p
-_
-.TE
-.LP
-Many graphics operations depend on either pixel values or planes in a GC.
-.IN "Pixel value"
-The planes attribute is of type long, and it specifies which planes of the
-destination are to be modified, one bit per plane.
-.IN "Plane" "mask"
-A monochrome display has only one plane and
-will be the least significant bit of the word.
-As planes are added to the display hardware, they will occupy more
-significant bits in the plane mask.
-.LP
-In graphics operations, given a source and destination pixel,
-the result is computed bitwise on corresponding bits of the pixels.
-That is, a Boolean operation is performed in each bit plane.
-The plane_mask restricts the operation to a subset of planes.
-A macro constant
-.PN AllPlanes
-can be used to refer to all planes of the screen simultaneously.
-The result is computed by the following:
-.LP
-.Ds
-((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
-.De
-.LP
-Range checking is not performed on the values for foreground,
-background, or plane_mask.
-They are simply truncated to the appropriate
-number of bits.
-The line-width is measured in pixels and either can be greater than or equal to
-one (wide line) or can be the special value zero (thin line).
-.LP
-Wide lines are drawn centered on the path described by the graphics request.
-Unless otherwise specified by the join-style or cap-style,
-the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and
-width w is a rectangle with vertices at the following real coordinates:
-.LP
-.Ds
-.TA .5i 2.5i
-.ta .5i 2.5i
-[x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)],
-[x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)]
-.De
-.LP
-Here sn is the sine of the angle of the line,
-and cs is the cosine of the angle of the line.
-A pixel is part of the line and so is drawn
-if the center of the pixel is fully inside the bounding box
-(which is viewed as having infinitely thin edges).
-If the center of the pixel is exactly on the bounding box,
-it is part of the line if and only if the interior is immediately to its right
-(x increasing direction).
-Pixels with centers on a horizontal edge are a special case and are part of
-the line if and only if the interior or the boundary is immediately below
-(y increasing direction) and the interior or the boundary is immediately
-to the right (x increasing direction).
-.LP
-Thin lines (zero line-width) are one-pixel-wide lines drawn using an
-unspecified, device-dependent algorithm.
-There are only two constraints on this algorithm.
-.IP 1. 5
-If a line is drawn unclipped from [x1,y1] to [x2,y2] and
-if another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy],
-a point [x,y] is touched by drawing the first line
-if and only if the point [x+dx,y+dy] is touched by drawing the second line.
-.IP 2. 5
-The effective set of points comprising a line cannot be affected by clipping.
-That is, a point is touched in a clipped line if and only if the point
-lies inside the clipping region and the point would be touched
-by the line when drawn unclipped.
-.LP
-A wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels
-as a wide line drawn from [x2,y2] to [x1,y1], not counting cap-style
-and join-style.
-It is recommended that this property be true for thin lines,
-but this is not required.
-A line-width of zero may differ from a line-width of one in which pixels are
-drawn.
-This permits the use of many manufacturers' line drawing hardware,
-which may run many times faster than the more precisely specified
-wide lines.
-.LP
-In general,
-drawing a thin line will be faster than drawing a wide line of width one.
-However, because of their different drawing algorithms,
-thin lines may not mix well aesthetically with wide lines.
-If it is desirable to obtain precise and uniform results across all displays,
-a client should always use a line-width of one rather than a line-width of zero.
-.LP
-The line-style defines which sections of a line are drawn:
-.TS
-lw(1.3i) lw(4.5i).
-T{
-.PN LineSolid
-T} T{
-The full path of the line is drawn.
-T}
-.sp 6p
-T{
-.PN LineDoubleDash
-T} T{
-The full path of the line is drawn,
-but the even dashes are filled differently
-from the odd dashes (see fill-style) with
-.PN CapButt
-style used where even and odd dashes meet.
-T}
-.sp 6p
-T{
-.PN LineOnOffDash
-T} T{
-Only the even dashes are drawn,
-and cap-style applies to
-all internal ends of the individual dashes,
-except
-.PN CapNotLast
-is treated as
-.PN CapButt .
-T}
-.TE
-.LP
-The cap-style defines how the endpoints of a path are drawn:
-.IN "Graphics context" "path"
-.TS
-lw(1.3i) lw(4.5i).
-T{
-.PN CapNotLast
-T} T{
-This is equivalent to
-.PN CapButt
-except that for a line-width of zero the final endpoint is not drawn.
-T}
-.sp 6p
-T{
-.PN CapButt
-T} T{
-The line is square at the endpoint (perpendicular to the slope of the line)
-with no projection beyond.
-T}
-.sp 6p
-T{
-.PN CapRound
-T} T{
-The line has a circular arc with the diameter equal to the line-width,
-centered on the endpoint.
-(This is equivalent to
-.PN CapButt
-for line-width of zero).
-T}
-.sp 6p
-T{
-.PN CapProjecting
-T} T{
-The line is square at the end, but the path continues beyond the endpoint
-for a distance equal to half the line-width.
-(This is equivalent to
-.PN CapButt
-for line-width of zero).
-T}
-.TE
-.LP
-The join-style defines how corners are drawn for wide lines:
-.TS
-lw(1.3i) lw(4.5i).
-T{
-.PN JoinMiter
-T} T{
-The outer edges of two lines extend to meet at an angle.
-However, if the angle is less than 11 degrees,
-then a
-.PN JoinBevel
-join-style is used instead.
-T}
-.sp 6p
-T{
-.PN JoinRound
-T} T{
-The corner is a circular arc with the diameter equal to the line-width,
-centered on the joinpoint.
-T}
-.sp 6p
-T{
-.PN JoinBevel
-T} T{
-The corner has
-.PN CapButt
-endpoint styles with the triangular notch filled.
-T}
-.TE
-.LP
-For a line with coincident endpoints (x1=x2, y1=y2),
-when the cap-style is applied to both endpoints,
-the semantics depends on the line-width and the cap-style:
-.TS
-lw(1.3i) lw(.5i) lw(4i).
-T{
-.PN CapNotLast
-T} T{
-thin
-T} T{
-The results are device dependent,
-but the desired effect is that nothing is drawn.
-T}
-.sp 6p
-T{
-.PN CapButt
-T} T{
-thin
-T} T{
-The results are device dependent,
-but the desired effect is that a single pixel is drawn.
-T}
-.sp 6p
-T{
-.PN CapRound
-T} T{
-thin
-T} T{
-The results are the same as for
-.PN CapButt /thin.
-T}
-.sp 6p
-T{
-.PN CapProjecting
-T} T{
-thin
-T} T{
-The results are the same as for
-.PN CapButt /thin.
-T}
-.sp 6p
-T{
-.PN CapButt
-T} T{
-wide
-T} T{
-Nothing is drawn.
-T}
-.sp 6p
-T{
-.PN CapRound
-T} T{
-wide
-T} T{
-The closed path is a circle, centered at the endpoint, and
-with the diameter equal to the line-width.
-T}
-.sp 6p
-T{
-.PN CapProjecting
-T} T{
-wide
-T} T{
-The closed path is a square, aligned with the coordinate axes, centered at the
-endpoint, and with the sides equal to the line-width.
-T}
-.TE
-.LP
-For a line with coincident endpoints (x1=x2, y1=y2),
-when the join-style is applied at one or both endpoints,
-the effect is as if the line was removed from the overall path.
-However, if the total path consists of or is reduced to a single point joined
-with itself, the effect is the same as when the cap-style is applied at both
-endpoints.
-.LP
-The tile/stipple represents an infinite two-dimensional plane,
-with the tile/stipple replicated in all dimensions.
-When that plane is superimposed on the drawable
-for use in a graphics operation, the upper-left corner
-of some instance of the tile/stipple is at the coordinates within
-the drawable specified by the tile/stipple origin.
-The tile/stipple and clip origins are interpreted relative to the
-origin of whatever destination drawable is specified in a graphics
-request.
-The tile pixmap must have the same root and depth as the GC,
-or a
-.PN BadMatch
-error results.
-The stipple pixmap must have depth one and must have the same root as the
-GC, or a
-.PN BadMatch
-error results.
-For stipple operations where the fill-style is
-.PN FillStippled
-but not
-.PN FillOpaqueStippled ,
-the stipple pattern is tiled in a
-single plane and acts as an additional clip mask to be ANDed with the clip-mask.
-Although some sizes may be faster to use than others,
-any size pixmap can be used for tiling or stippling.
-.LP
-The fill-style defines the contents of the source for line, text, and
-fill requests.
-For all text and fill requests (for example,
-.PN XDrawText ,
-.PN XDrawText16 ,
-.PN XFillRectangle ,
-.PN XFillPolygon ,
-and
-.PN XFillArc );
-for line requests
-with line-style
-.PN LineSolid
-(for example,
-.PN XDrawLine ,
-.PN XDrawSegments ,
-.PN XDrawRectangle ,
-.PN XDrawArc );
-and for the even dashes for line requests with line-style
-.PN LineOnOffDash
-or
-.PN LineDoubleDash ,
-the following apply:
-.TS
-lw(1.8i) lw(4i).
-T{
-.PN FillSolid
-T} T{
-Foreground
-T}
-.sp 6p
-T{
-.PN FillTiled
-T} T{
-Tile
-T}
-.sp 6p
-T{
-.PN FillOpaqueStippled
-T} T{
-A tile with the same width and height as stipple,
-but with background everywhere stipple has a zero
-and with foreground everywhere stipple has a one
-T}
-.sp 6p
-T{
-.PN FillStippled
-T} T{
-Foreground masked by stipple
-T}
-.TE
-.LP
-When drawing lines with line-style
-.PN LineDoubleDash ,
-the odd dashes are controlled by the fill-style in the following manner:
-.TS
-lw(1.8i) lw(4i).
-T{
-.PN FillSolid
-T} T{
-Background
-T}
-.sp 6p
-T{
-.PN FillTiled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.PN FillOpaqueStippled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.PN FillStippled
-T} T{
-Background masked by stipple
-T}
-.TE
-.LP
-Storing a pixmap in a GC might or might not result in a copy
-being made.
-If the pixmap is later used as the destination for a graphics request,
-the change might or might not be reflected in the GC.
-If the pixmap is used simultaneously in a graphics request both as
-a destination and as a tile or stipple,
-the results are undefined.
-.LP
-For optimum performance,
-you should draw as much as possible with the same GC
-(without changing its components).
-The costs of changing GC components relative to using different GCs
-depend on the display hardware and the server implementation.
-It is quite likely that some amount of GC information will be
-cached in display hardware and that such hardware can only cache a small number
-of GCs.
-.LP
-The dashes value is actually a simplified form of the
-more general patterns that can be set with
-.PN XSetDashes .
-Specifying a
-value of N is equivalent to specifying the two-element list [N, N] in
-.PN XSetDashes .
-The value must be nonzero,
-or a
-.PN BadValue
-error results.
-.LP
-The clip-mask restricts writes to the destination drawable.
-If the clip-mask is set to a pixmap,
-it must have depth one and have the same root as the GC,
-or a
-.PN BadMatch
-error results.
-If clip-mask is set to
-.PN None ,
-the pixels are always drawn regardless of the clip origin.
-The clip-mask also can be set by calling the
-.PN XSetClipRectangles
-or
-.PN XSetRegion
-functions.
-Only pixels where the clip-mask has a bit set to 1 are drawn.
-Pixels are not drawn outside the area covered by the clip-mask
-or where the clip-mask has a bit set to 0.
-The clip-mask affects all graphics requests.
-The clip-mask does not clip sources.
-The clip-mask origin is interpreted relative to the origin of whatever
-destination drawable is specified in a graphics request.
-.LP
-You can set the subwindow-mode to
-.PN ClipByChildren
-or
-.PN IncludeInferiors .
-For
-.PN ClipByChildren ,
-both source and destination windows are
-additionally clipped by all viewable
-.PN InputOutput
-children.
-For
-.PN IncludeInferiors ,
-neither source nor destination window is clipped by inferiors.
-This will result in including subwindow contents in the source
-and drawing through subwindow boundaries of the destination.
-The use of
-.PN IncludeInferiors
-on a window of one depth with mapped
-inferiors of differing depth is not illegal, but the semantics are
-undefined by the core protocol.
-.LP
-The fill-rule defines what pixels are inside (drawn) for
-paths given in
-.PN XFillPolygon
-requests and can be set to
-.PN EvenOddRule
-or
-.PN WindingRule .
-For
-.PN EvenOddRule ,
-a point is inside if
-an infinite ray with the point as origin crosses the path an odd number
-of times.
-For
-.PN WindingRule ,
-a point is inside if an infinite ray with the
-point as origin crosses an unequal number of clockwise and
-counterclockwise directed path segments.
-A clockwise directed path segment is one that crosses the ray from left to
-right as observed from the point.
-A counterclockwise segment is one that crosses the ray from right to left
-as observed from the point.
-The case where a directed line segment is coincident with the ray is
-uninteresting because you can simply choose a different ray that is not
-coincident with a segment.
-.LP
-For both
-.PN EvenOddRule
-and
-.PN WindingRule ,
-a point is infinitely small,
-and the path is an infinitely thin line.
-A pixel is inside if the center point of the pixel is inside
-and the center point is not on the boundary.
-If the center point is on the boundary,
-the pixel is inside if and only if the polygon interior is immediately to
-its right (x increasing direction).
-Pixels with centers on a horizontal edge are a special case
-and are inside if and only if the polygon interior is immediately below
-(y increasing direction).
-.LP
-The arc-mode controls filling in the
-.PN XFillArcs
-function and can be set to
-.PN ArcPieSlice
-or
-.PN ArcChord .
-For
-.PN ArcPieSlice ,
-the arcs are pie-slice filled.
-For
-.PN ArcChord ,
-the arcs are chord filled.
-.LP
-The graphics-exposure flag controls
-.PN GraphicsExpose
-event generation
-for
-.PN XCopyArea
-and
-.PN XCopyPlane
-requests (and any similar requests defined by extensions).
-.LP
-.sp
-To create a new GC that is usable on a given screen with a
-depth of drawable, use
-.PN XCreateGC .
-.IN "Graphics context" "initializing"
-.IN "XCreateGC" "" "@DEF@"
-.sM
-.FD 0
-GC XCreateGC\^(\^\fIdisplay\fP, \fId\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- Drawable \fId\fP\^;
-.br
- unsigned long \fIvaluemask\fP\^;
-.br
- XGCValues *\^\fIvalues\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fId\fP 1i
-Specifies the drawable.
-.ds Vm set using the information in the specified values structure
-.IP \fIvaluemask\fP 1i
-Specifies which components in the GC are to be \*(Vm.
-This argument is the bitwise inclusive OR of zero or more of the valid
-GC component mask bits.
-.IP \fIvalues\fP 1i
-Specifies any values as specified by the valuemask.
-.LP
-.eM
-The
-.PN XCreateGC
-function creates a graphics context and returns a GC.
-The GC can be used with any destination drawable having the same root
-and depth as the specified drawable.
-Use with other drawables results in a
-.PN BadMatch
-error.
-.LP
-.PN XCreateGC
-can generate
-.PN BadAlloc ,
-.PN BadDrawable ,
-.PN BadFont ,
-.PN BadMatch ,
-.PN BadPixmap ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To copy components from a source GC to a destination GC, use
-.PN XCopyGC .
-.IN "XCopyGC" "" "@DEF@"
-.sM
-.FD 0
-XCopyGC\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIvaluemask\fP\^, \fIdest\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIsrc\fP\^, \fIdest\fP\^;
-.br
- unsigned long \fIvaluemask\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIsrc\fP 1i
-Specifies the components of the source GC.
-.ds Vm copied to the destination GC
-.IP \fIvaluemask\fP 1i
-Specifies which components in the GC are to be \*(Vm.
-This argument is the bitwise inclusive OR of zero or more of the valid
-GC component mask bits.
-.IP \fIdest\fP 1i
-Specifies the destination GC.
-.LP
-.eM
-The
-.PN XCopyGC
-function copies the specified components from the source GC
-to the destination GC.
-The source and destination GCs must have the same root and depth,
-or a
-.PN BadMatch
-error results.
-The valuemask specifies which component to copy, as for
-.PN XCreateGC .
-.LP
-.PN XCopyGC
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadMatch
-errors.
-.LP
-.sp
-To change the components in a given GC, use
-.PN XChangeGC .
-.IN "XChangeGC" "" "@DEF@"
-.sM
-.FD 0
-XChangeGC\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIvaluemask\fP\^;
-.br
- XGCValues *\^\fIvalues\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.ds Vm changed using information in the specified values structure
-.IP \fIvaluemask\fP 1i
-Specifies which components in the GC are to be \*(Vm.
-This argument is the bitwise inclusive OR of zero or more of the valid
-GC component mask bits.
-.IP \fIvalues\fP 1i
-Specifies any values as specified by the valuemask.
-.LP
-.eM
-The
-.PN XChangeGC
-function changes the components specified by valuemask for
-the specified GC.
-The values argument contains the values to be set.
-The values and restrictions are the same as for
-.PN XCreateGC .
-Changing the clip-mask overrides any previous
-.PN XSetClipRectangles
-request on the context.
-Changing the dash-offset or dash-list
-overrides any previous
-.PN XSetDashes
-request on the context.
-The order in which components are verified and altered is server dependent.
-If an error is generated, a subset of the components may have been altered.
-.LP
-.PN XChangeGC
-can generate
-.PN BadAlloc ,
-.PN BadFont ,
-.PN BadGC ,
-.PN BadMatch ,
-.PN BadPixmap ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To obtain components of a given GC, use
-.PN XGetGCValues .
-.IN "XGetGCValues" "" "@DEF@"
-.sM
-.FD 0
-Status XGetGCValues\^(\^\fIdisplay\fP, \fIgc\fP, \fIvaluemask\fP, \
-\fIvalues_return\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIvaluemask\fP\^;
-.br
- XGCValues *\fIvalues_return\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.ds Vm returned in the values_return argument
-.IP \fIvaluemask\fP 1i
-Specifies which components in the GC are to be \*(Vm.
-This argument is the bitwise inclusive OR of zero or more of the valid
-GC component mask bits.
-.IP \fIvalues_return\fP 1i
-Returns the GC values in the specified
-.PN XGCValues
-structure.
-.LP
-.eM
-The
-.PN XGetGCValues
-function returns the components specified by valuemask for the specified GC.
-If the valuemask contains a valid set of GC mask bits
-.Pn ( GCFunction ,
-.PN GCPlaneMask ,
-.PN GCForeground ,
-.PN GCBackground ,
-.PN GCLineWidth ,
-.PN GCLineStyle ,
-.PN GCCapStyle ,
-.PN GCJoinStyle ,
-.PN GCFillStyle ,
-.PN GCFillRule ,
-.PN GCTile ,
-.PN GCStipple ,
-.PN GCTileStipXOrigin ,
-.PN GCTileStipYOrigin ,
-.PN GCFont ,
-.PN GCSubwindowMode ,
-.PN GCGraphicsExposures ,
-.PN GCClipXOrigin ,
-.PN GCCLipYOrigin ,
-.PN GCDashOffset ,
-or
-.PN GCArcMode )
-and no error occurs,
-.PN XGetGCValues
-sets the requested components in values_return and returns a nonzero status.
-Otherwise, it returns a zero status.
-Note that the clip-mask and dash-list (represented by the
-.PN GCClipMask
-and
-.PN GCDashList
-bits, respectively, in the valuemask)
-cannot be requested.
-Also note that an invalid resource ID (with one or more of the three
-most significant bits set to 1) will be returned for
-.PN GCFont ,
-.PN GCTile ,
-and
-.PN GCStipple
-if the component has never been explicitly set by the client.
-.LP
-.sp
-To free a given GC, use
-.PN XFreeGC .
-.IN "XFreeGC" "" "@DEF@"
-.sM
-.FD 0
-XFreeGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.LP
-.eM
-The
-.PN XFreeGC
-function destroys the specified GC as well as all the associated storage.
-.LP
-.PN XFreeGC
-can generate a
-.PN BadGC
-error.
-.LP
-.sp
-To obtain the
-.PN GContext
-resource ID for a given GC, use
-.PN XGContextFromGC .
-.IN "XGContextFromGC" "" "@DEF@"
-.sM
-.FD 0
-GContext XGContextFromGC\^(\^\fIgc\fP\^)
-.br
- GC \fIgc\fP\^;
-.FN
-.ds Gc for which you want the resource ID
-.IP \fIgc\fP 1i
-Specifies the GC \*(Gc.
-.LP
-.eM
-.sp
-Xlib usually defers sending changes to the components of a GC to the server
-until a graphics function is actually called with that GC.
-This permits batching of component changes into a single server request.
-In some circumstances, however, it may be necessary for the client
-to explicitly force sending the changes to the server.
-An example might be when a protocol extension uses the GC indirectly,
-in such a way that the extension interface cannot know what GC will be used.
-To force sending GC component changes, use
-.PN XFlushGC .
-.IN "XFlushGC" "" "@DEF@"
-.sM
-.FD 0
-void XFlushGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.LP
-.eM
-.NH 2
-Using Graphics Context Convenience Routines
-.XS
-\*(SN Using Graphics Context Convenience Routines
-.XE
-.LP
-This section discusses how to set the:
-.IP \(bu 5
-Foreground, background, plane mask, or function components
-.IP \(bu 5
-Line attributes and dashes components
-.IP \(bu 5
-Fill style and fill rule components
-.IP \(bu 5
-Fill tile and stipple components
-.IP \(bu 5
-Font component
-.IP \(bu 5
-Clip region component
-.IP \(bu 5
-Arc mode, subwindow mode, and graphics exposure components
-.NH 3
-Setting the Foreground, Background, Function, or Plane Mask
-.XS
-\*(SN Setting the Foreground, Background, Function, or Plane Mask
-.XE
-.LP
-To set the foreground, background, plane mask, and function components
-for a given GC, use
-.PN XSetState .
-.IN "XSetState" "" "@DEF@"
-.sM
-.FD 0
-XSetState\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^, \fIbackground\fP\^, \fIfunction\fP\^, \fIplane_mask\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIforeground\fP\^, \fIbackground\fP\^;
-.br
- int \fIfunction\fP\^;
-.br
- unsigned long \fIplane_mask\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIforeground\fP 1i
-Specifies the foreground you want to set for the specified GC.
-.IP \fIbackground\fP 1i
-Specifies the background you want to set for the specified GC.
-.IP \fIfunction\fP 1i
-Specifies the function you want to set for the specified GC.
-.IP \fIplane_mask\fP 1i
-Specifies the plane mask.
-.\" *** JIM: NEED MORE INFO FOR THIS. ***
-.LP
-.eM
-.PN XSetState
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the foreground of a given GC, use
-.PN XSetForeground .
-.IN "XSetForeground" "" "@DEF@"
-.sM
-.FD 0
-XSetForeground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIforeground\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIforeground\fP 1i
-Specifies the foreground you want to set for the specified GC.
-.LP
-.eM
-.PN XSetForeground
-can generate
-.PN BadAlloc
-and
-.PN BadGC
-errors.
-.LP
-.sp
-To set the background of a given GC, use
-.PN XSetBackground .
-.IN "XSetBackground" "" "@DEF@"
-.sM
-.FD 0
-XSetBackground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIbackground\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIbackground\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIbackground\fP 1i
-Specifies the background you want to set for the specified GC.
-.LP
-.eM
-.PN XSetBackground
-can generate
-.PN BadAlloc
-and
-.PN BadGC
-errors.
-.LP
-.sp
-To set the display function in a given GC, use
-.PN XSetFunction .
-.IN "XSetFunction" "" "@DEF@"
-.sM
-.FD 0
-XSetFunction\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfunction\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIfunction\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIfunction\fP 1i
-Specifies the function you want to set for the specified GC.
-.LP
-.eM
-.PN XSetFunction
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the plane mask of a given GC, use
-.PN XSetPlaneMask .
-.IN "XSetPlaneMask" "" "@DEF@"
-.sM
-.FD 0
-XSetPlaneMask\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIplane_mask\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned long \fIplane_mask\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIplane_mask\fP 1i
-Specifies the plane mask.
-.\" *** JIM: NEED MORE INFO FOR THIS. ***
-.LP
-.eM
-.PN XSetPlaneMask
-can generate
-.PN BadAlloc
-and
-.PN BadGC
-errors.
-.NH 3
-Setting the Line Attributes and Dashes
-.XS
-\*(SN Setting the Line Attributes and Dashes
-.XE
-.LP
-To set the line drawing components of a given GC, use
-.PN XSetLineAttributes .
-.IN "XSetLineAttributes" "" "@DEF@"
-.sM
-.FD 0
-XSetLineAttributes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIline_width\fP\^, \fIline_style\fP\^, \fIcap_style\fP\^, \fIjoin_style\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- unsigned int \fIline_width\fP\^;
-.br
- int \fIline_style\fP\^;
-.br
- int \fIcap_style\fP\^;
-.br
- int \fIjoin_style\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIline_width\fP 1i
-Specifies the line-width you want to set for the specified GC.
-.IP \fIline_style\fP 1i
-Specifies the line-style you want to set for the specified GC.
-You can pass
-.PN LineSolid ,
-.PN LineOnOffDash ,
-or
-.PN LineDoubleDash .
-.IP \fIcap_style\fP 1i
-Specifies the line-style and cap-style you want to set for the specified GC.
-You can pass
-.PN CapNotLast ,
-.PN CapButt ,
-.PN CapRound ,
-or
-.PN CapProjecting .
-.IP \fIjoin_style\fP 1i
-Specifies the line join-style you want to set for the specified GC.
-You can pass
-.PN JoinMiter ,
-.PN JoinRound ,
-or
-.PN JoinBevel .
-.LP
-.eM
-.PN XSetLineAttributes
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the dash-offset and dash-list for dashed line styles of a given GC, use
-.PN XSetDashes .
-.IN "XSetDashes" "" "@DEF@"
-.sM
-.FD 0
-XSetDashes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIdash_offset\fP\^, \fIdash_list\fP\^, \fIn\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIdash_offset\fP\^;
-.br
- char \fIdash_list\fP[]\^;
-.br
- int \fIn\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIdash_offset\fP 1i
-Specifies the phase of the pattern for the dashed line-style you want to set
-for the specified GC.
-.IP \fIdash_list\fP 1i
-Specifies the dash-list for the dashed line-style
-you want to set for the specified GC.
-.IP \fIn\fP 1i
-Specifies the number of elements in dash_list.
-.LP
-.eM
-The
-.PN XSetDashes
-function sets the dash-offset and dash-list attributes for dashed line styles
-in the specified GC.
-There must be at least one element in the specified dash_list,
-or a
-.PN BadValue
-error results.
-The initial and alternating elements (second, fourth, and so on)
-of the dash_list are the even dashes, and
-the others are the odd dashes.
-Each element specifies a dash length in pixels.
-All of the elements must be nonzero,
-or a
-.PN BadValue
-error results.
-Specifying an odd-length list is equivalent to specifying the same list
-concatenated with itself to produce an even-length list.
-.LP
-The dash-offset defines the phase of the pattern,
-specifying how many pixels into the dash-list the pattern
-should actually begin in any single graphics request.
-Dashing is continuous through path elements combined with a join-style
-but is reset to the dash-offset between each sequence of joined lines.
-.LP
-The unit of measure for dashes is the same for the ordinary coordinate system.
-Ideally, a dash length is measured along the slope of the line, but implementations
-are only required to match this ideal for horizontal and vertical lines.
-Failing the ideal semantics, it is suggested that the length be measured along the
-major axis of the line.
-The major axis is defined as the x axis for lines drawn at an angle of between
-\-45 and +45 degrees or between 135 and 225 degrees from the x axis.
-For all other lines, the major axis is the y axis.
-.LP
-.PN XSetDashes
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.NH 3
-Setting the Fill Style and Fill Rule
-.XS
-\*(SN Setting the Fill Style and Fill Rule
-.XE
-.LP
-To set the fill-style of a given GC, use
-.PN XSetFillStyle .
-.IN "XSetFillStyle" "" "@DEF@"
-.sM
-.FD 0
-XSetFillStyle\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_style\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIfill_style\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIfill_style\fP 1i
-Specifies the fill-style you want to set for the specified GC.
-You can pass
-.PN FillSolid ,
-.PN FillTiled ,
-.PN FillStippled ,
-or
-.PN FillOpaqueStippled .
-.LP
-.eM
-.PN XSetFillStyle
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the fill-rule of a given GC, use
-.PN XSetFillRule .
-.IN "XSetFillRule" "" "@DEF@"
-.sM
-.FD 0
-XSetFillRule\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_rule\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIfill_rule\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIfill_rule\fP 1i
-Specifies the fill-rule you want to set for the specified GC.
-You can pass
-.PN EvenOddRule
-or
-.PN WindingRule .
-.LP
-.eM
-.PN XSetFillRule
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.NH 3
-Setting the Fill Tile and Stipple
-.XS
-\*(SN Setting the Fill Tile and Stipple
-.XE
-.LP
-Some displays have hardware support for tiling or
-stippling with patterns of specific sizes.
-Tiling and stippling operations that restrict themselves to those specific
-sizes run much faster than such operations with arbitrary size patterns.
-Xlib provides functions that you can use to determine the best size,
-tile, or stipple for the display
-as well as to set the tile or stipple shape and the tile or stipple origin.
-.LP
-.sp
-To obtain the best size of a tile, stipple, or cursor, use
-.PN XQueryBestSize .
-.IN "XQueryBestSize" "" "@DEF@"
-.sM
-.FD 0
-Status XQueryBestSize\^(\^\fIdisplay\fP, \fIclass\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- int \fIclass\fP\^;
-.br
- Drawable \fIwhich_screen\fP\^;
-.br
- unsigned int \fIwidth\fP, \fIheight\fP\^;
-.br
- unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIclass\fP 1i
-Specifies the class that you are interested in.
-You can pass
-.PN TileShape ,
-.PN CursorShape ,
-or
-.PN StippleShape .
-.IP \fIwhich_screen\fP 1i
-Specifies any drawable on the screen.
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height.
-.IP \fIwidth_return\fP 1i
-.br
-.ns
-.IP \fIheight_return\fP 1i
-Return the width and height of the object best supported
-by the display hardware.
-.LP
-.eM
-The
-.PN XQueryBestSize
-function returns the best or closest size to the specified size.
-For
-.PN CursorShape ,
-this is the largest size that can be fully displayed on the screen specified by
-which_screen.
-For
-.PN TileShape ,
-this is the size that can be tiled fastest.
-For
-.PN StippleShape ,
-this is the size that can be stippled fastest.
-For
-.PN CursorShape ,
-the drawable indicates the desired screen.
-For
-.PN TileShape
-and
-.PN StippleShape ,
-the drawable indicates the screen and possibly the window class and depth.
-An
-.PN InputOnly
-window cannot be used as the drawable for
-.PN TileShape
-or
-.PN StippleShape ,
-or a
-.PN BadMatch
-error results.
-.LP
-.PN XQueryBestSize
-can generate
-.PN BadDrawable ,
-.PN BadMatch ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To obtain the best fill tile shape, use
-.PN XQueryBestTile .
-.IN "XQueryBestTile" "" "@DEF@"
-.sM
-.FD 0
-Status XQueryBestTile\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- Drawable \fIwhich_screen\fP\^;
-.br
- unsigned int \fIwidth\fP, \fIheight\fP\^;
-.br
- unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIwhich_screen\fP 1i
-Specifies any drawable on the screen.
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height.
-.IP \fIwidth_return\fP 1i
-.br
-.ns
-.IP \fIheight_return\fP 1i
-Return the width and height of the object best supported
-by the display hardware.
-.LP
-.eM
-The
-.PN XQueryBestTile
-function returns the best or closest size, that is, the size that can be
-tiled fastest on the screen specified by which_screen.
-The drawable indicates the screen and possibly the window class and depth.
-If an
-.PN InputOnly
-window is used as the drawable, a
-.PN BadMatch
-error results.
-.LP
-.PN XQueryBestTile
-can generate
-.PN BadDrawable
-and
-.PN BadMatch
-errors.
-.LP
-.sp
-To obtain the best stipple shape, use
-.PN XQueryBestStipple .
-.IN "XQueryBestStipple" "" "@DEF@"
-.sM
-.FD 0
-Status XQueryBestStipple\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- Drawable \fIwhich_screen\fP\^;
-.br
- unsigned int \fIwidth\fP, \fIheight\fP\^;
-.br
- unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIwhich_screen\fP 1i
-Specifies any drawable on the screen.
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height.
-.IP \fIwidth_return\fP 1i
-.br
-.ns
-.IP \fIheight_return\fP 1i
-Return the width and height of the object best supported
-by the display hardware.
-.LP
-.eM
-The
-.PN XQueryBestStipple
-function returns the best or closest size, that is, the size that can be
-stippled fastest on the screen specified by which_screen.
-The drawable indicates the screen and possibly the window class and depth.
-If an
-.PN InputOnly
-window is used as the drawable, a
-.PN BadMatch
-error results.
-.LP
-.PN XQueryBestStipple
-can generate
-.PN BadDrawable
-and
-.PN BadMatch
-errors.
-.LP
-.sp
-To set the fill tile of a given GC, use
-.PN XSetTile .
-.IN "XSetTile" "" "@DEF@"
-.sM
-.FD 0
-XSetTile\^(\^\fIdisplay\fP, \fIgc\fP\^, \fItile\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- Pixmap \fItile\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fItile\fP 1i
-Specifies the fill tile you want to set for the specified GC.
-.LP
-.eM
-The tile and GC must have the same depth,
-or a
-.PN BadMatch
-error results.
-.LP
-.PN XSetTile
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-.PN BadMatch ,
-and
-.PN BadPixmap
-errors.
-.LP
-.sp
-To set the stipple of a given GC, use
-.PN XSetStipple .
-.IN "XSetStipple" "" "@DEF@"
-.sM
-.FD 0
-XSetStipple\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIstipple\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- Pixmap \fIstipple\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIstipple\fP 1i
-Specifies the stipple you want to set for the specified GC.
-.LP
-.eM
-The stipple must have a depth of one,
-or a
-.PN BadMatch
-error results.
-.LP
-.PN XSetStipple
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-.PN BadMatch ,
-and
-.PN BadPixmap
-errors.
-.LP
-.sp
-To set the tile or stipple origin of a given GC, use
-.PN XSetTSOrigin .
-.IN "XSetTSOrigin" "" "@DEF@"
-.sM
-.FD 0
-XSetTSOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIts_x_origin\fP\^, \fIts_y_origin\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIts_x_origin\fP\^, \fIts_y_origin\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIts_x_origin\fP 1i
-.br
-.ns
-.IP \fIts_y_origin\fP 1i
-Specify the x and y coordinates of the tile and stipple origin.
-.LP
-.eM
-When graphics requests call for tiling or stippling,
-the parent's origin will be interpreted relative to whatever destination
-drawable is specified in the graphics request.
-.LP
-.PN XSetTSOrigin
-can generate
-.PN BadAlloc
-and
-.PN BadGC
-errors.
-.NH 3
-Setting the Current Font
-.XS
-\*(SN Setting the Current Font
-.XE
-.LP
-To set the current font of a given GC, use
-.PN XSetFont .
-.IN "XSetFont" "" "@DEF@"
-.sM
-.FD 0
-XSetFont\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfont\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- Font \fIfont\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIfont\fP 1i
-Specifies the font.
-.LP
-.eM
-.PN XSetFont
-can generate
-.PN BadAlloc ,
-.PN BadFont ,
-and
-.PN BadGC
-errors.
-.NH 3
-Setting the Clip Region
-.XS
-\*(SN Setting the Clip Region
-.XE
-.LP
-Xlib provides functions that you can use to set the clip-origin
-and the clip-mask or set the clip-mask to a list of rectangles.
-.LP
-.sp
-To set the clip-origin of a given GC, use
-.PN XSetClipOrigin .
-.IN "XSetClipOrigin" "" "@DEF@"
-.sM
-.FD 0
-XSetClipOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIclip_x_origin\fP 1i
-.br
-.ns
-.IP \fIclip_y_origin\fP 1i
-Specify the x and y coordinates of the clip-mask origin.
-.LP
-.eM
-The clip-mask origin is interpreted relative to the origin of whatever
-destination drawable is specified in the graphics request.
-.LP
-.PN XSetClipOrigin
-can generate
-.PN BadAlloc
-and
-.PN BadGC
-errors.
-.LP
-.sp
-To set the clip-mask of a given GC to the specified pixmap, use
-.PN XSetClipMask .
-.IN "XSetClipMask" "" "@DEF@"
-.sM
-.FD 0
-XSetClipMask\^(\^\fIdisplay\fP, \fIgc\fP, \fIpixmap\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- Pixmap \fIpixmap\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIpixmap\fP 1i
-Specifies the pixmap or
-.PN None .
-.LP
-.eM
-If the clip-mask is set to
-.PN None ,
-the pixels are always drawn (regardless of the clip-origin).
-.LP
-.PN XSetClipMask
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-.PN BadMatch ,
-and
-.PN BadPixmap
-errors.
-.LP
-.sp
-To set the clip-mask of a given GC to the specified list of rectangles, use
-.PN XSetClipRectangles .
-.IN "XSetClipRectangles" "" "@DEF@"
-.sM
-.FD 0
-XSetClipRectangles\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^, \fIrectangles\fP\^, \fIn\fP\^, \fIordering\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
-.br
- XRectangle \fIrectangles\fP[]\^;
-.br
- int \fIn\fP\^;
-.br
- int \fIordering\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIclip_x_origin\fP 1i
-.br
-.ns
-.IP \fIclip_y_origin\fP 1i
-Specify the x and y coordinates of the clip-mask origin.
-.IP \fIrectangles\fP 1i
-Specifies an array of rectangles that define the clip-mask.
-.IP \fIn\fP 1i
-Specifies the number of rectangles.
-.IP \fIordering\fP 1i
-Specifies the ordering relations on the rectangles.
-You can pass
-.PN Unsorted ,
-.PN YSorted ,
-.PN YXSorted ,
-or
-.PN YXBanded .
-.LP
-.eM
-The
-.PN XSetClipRectangles
-function changes the clip-mask in the specified GC
-to the specified list of rectangles and sets the clip origin.
-The output is clipped to remain contained within the
-rectangles.
-The clip-origin is interpreted relative to the origin of
-whatever destination drawable is specified in a graphics request.
-The rectangle coordinates are interpreted relative to the clip-origin.
-The rectangles should be nonintersecting, or the graphics results will be
-undefined.
-Note that the list of rectangles can be empty,
-which effectively disables output.
-This is the opposite of passing
-.PN None
-as the clip-mask in
-.PN XCreateGC ,
-.PN XChangeGC ,
-and
-.PN XSetClipMask .
-.LP
-If known by the client, ordering relations on the rectangles can be
-specified with the ordering argument.
-This may provide faster operation
-by the server.
-If an incorrect ordering is specified, the X server may generate a
-.PN BadMatch
-error, but it is not required to do so.
-If no error is generated, the graphics
-results are undefined.
-.PN Unsorted
-means the rectangles are in arbitrary order.
-.PN YSorted
-means that the rectangles are nondecreasing in their Y origin.
-.PN YXSorted
-additionally constrains
-.PN YSorted
-order in that all
-rectangles with an equal Y origin are nondecreasing in their X
-origin.
-.PN YXBanded
-additionally constrains
-.PN YXSorted
-by requiring that,
-for every possible Y scanline, all rectangles that include that
-scanline have an identical Y origins and Y extents.
-.LP
-.PN XSetClipRectangles
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-.PN BadMatch ,
-and
-.PN BadValue
-errors.
-.LP
-Xlib provides a set of basic functions for performing
-region arithmetic.
-For information about these functions,
-see section 16.5.
-.NH 3
-Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
-.XS
-\*(SN Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
-.XE
-.LP
-To set the arc mode of a given GC, use
-.PN XSetArcMode .
-.IN "XSetArcMode" "" "@DEF@"
-.sM
-.FD 0
-XSetArcMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIarc_mode\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIarc_mode\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIarc_mode\fP 1i
-Specifies the arc mode.
-You can pass
-.PN ArcChord
-or
-.PN ArcPieSlice .
-.LP
-.eM
-.PN XSetArcMode
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the subwindow mode of a given GC, use
-.PN XSetSubwindowMode .
-.IN "XSetSubwindowMode" "" "@DEF@"
-.sM
-.FD 0
-XSetSubwindowMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIsubwindow_mode\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- int \fIsubwindow_mode\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIsubwindow_mode\fP 1i
-Specifies the subwindow mode.
-You can pass
-.PN ClipByChildren
-or
-.PN IncludeInferiors .
-.LP
-.eM
-.PN XSetSubwindowMode
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.LP
-.sp
-To set the graphics-exposures flag of a given GC, use
-.PN XSetGraphicsExposures .
-.IN "XSetGraphicsExposures" "" "@DEF@"
-.sM
-.FD 0
-XSetGraphicsExposures\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIgraphics_exposures\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- GC \fIgc\fP\^;
-.br
- Bool \fIgraphics_exposures\fP\^;
-.FN
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIgraphics_exposures\fP 1i
-Specifies a Boolean value that indicates whether you want
-.PN GraphicsExpose
-and
-.PN NoExpose
-events to be reported when calling
-.PN XCopyArea
-and
-.PN XCopyPlane
-with this GC.
-.LP
-.eM
-.PN XSetGraphicsExposures
-can generate
-.PN BadAlloc ,
-.PN BadGC ,
-and
-.PN BadValue
-errors.
-.bp