aboutsummaryrefslogtreecommitdiff
path: root/libX11/man/XCreateGC.man
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-08-27 08:17:50 +0200
committermarha <marha@users.sourceforge.net>2012-08-27 08:17:50 +0200
commitb3462c12542a69eeaa3fe90fddfbb15d30c18158 (patch)
tree294230cca0e59ee250cd70060ba3f8c3742b4023 /libX11/man/XCreateGC.man
parente91ed68959d63f79e3b4973bc80c7ebcd07ed021 (diff)
downloadvcxsrv-b3462c12542a69eeaa3fe90fddfbb15d30c18158.tar.gz
vcxsrv-b3462c12542a69eeaa3fe90fddfbb15d30c18158.tar.bz2
vcxsrv-b3462c12542a69eeaa3fe90fddfbb15d30c18158.zip
xwininfo fontconfig libX11 libXau libXext libxcb mesa pixman
xkeyboard-config git update 27 Aug 2012
Diffstat (limited to 'libX11/man/XCreateGC.man')
-rw-r--r--libX11/man/XCreateGC.man2341
1 files changed, 1138 insertions, 1203 deletions
diff --git a/libX11/man/XCreateGC.man b/libX11/man/XCreateGC.man
index c55c4c9c7..62a2f00c1 100644
--- a/libX11/man/XCreateGC.man
+++ b/libX11/man/XCreateGC.man
@@ -1,1203 +1,1138 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.de Ds
-.nf
-.\\$1D \\$2 \\$1
-.ft 1
-.\".ps \\n(PS
-.\".if \\n(VS>=40 .vs \\n(VSu
-.\".if \\n(VS<=39 .vs \\n(VSp
-..
-.de De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.de C{
-.KS
-.nf
-.D
-.\"
-.\" choose appropriate monospace font
-.\" the imagen conditional, 480,
-.\" may be changed to L if LB is too
-.\" heavy for your eyes...
-.\"
-.ie "\\*(.T"480" .ft L
-.el .ie "\\*(.T"300" .ft L
-.el .ie "\\*(.T"202" .ft PO
-.el .ie "\\*(.T"aps" .ft CW
-.el .ft R
-.ps \\n(PS
-.ie \\n(VS>40 .vs \\n(VSu
-.el .vs \\n(VSp
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure
-.SH SYNTAX
-.HP
-GC XCreateGC\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
-.HP
-int XCopyGC\^(\^Display *\fIdisplay\fP\^, GC \fIsrc\fP\^,
-unsigned long \fIvaluemask\fP\^, GC \fIdest\fP\^);
-.HP
-int XChangeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
-.HP
-Status XGetGCValues\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\fIvalues_return\fP\^);
-.HP
-int XFreeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^);
-.HP
-GContext XGContextFromGC\^(\^GC \fIgc\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdest\fP 1i
-Specifies the destination GC.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIsrc\fP 1i
-Specifies the components of the source GC.
-.ds Vm set, copied, changed, or returned
-.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.
-.IP \fIvalues_return\fP 1i
-Returns the GC values in the specified
-.ZN XGCValues
-structure.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN BadMatch
-error.
-.LP
-.ZN XCreateGC
-can generate
-.ZN BadAlloc ,
-.ZN BadDrawable ,
-.ZN BadFont ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN BadMatch
-error results.
-The valuemask specifies which component to copy, as for
-.ZN XCreateGC .
-.LP
-.ZN XCopyGC
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN 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
-.ZN XCreateGC .
-Changing the clip-mask overrides any previous
-.ZN XSetClipRectangles
-request on the context.
-Changing the dash-offset or dash-list
-overrides any previous
-.ZN 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
-.ZN XChangeGC
-can generate
-.ZN BadAlloc ,
-.ZN BadFont ,
-.ZN BadGC ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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 ,
-.ZN GCPlaneMask ,
-.ZN GCForeground ,
-.ZN GCBackground ,
-.ZN GCLineWidth ,
-.ZN GCLineStyle ,
-.ZN GCCapStyle ,
-.ZN GCJoinStyle ,
-.ZN GCFillStyle ,
-.ZN GCFillRule ,
-.ZN GCTile ,
-.ZN GCStipple ,
-.ZN GCTileStipXOrigin ,
-.ZN GCTileStipYOrigin ,
-.ZN GCFont ,
-.ZN GCSubwindowMode ,
-.ZN GCGraphicsExposures ,
-.ZN GCClipXOrigin ,
-.ZN GCCLipYOrigin ,
-.ZN GCDashOffset ,
-or
-.ZN GCArcMode )
-and no error occurs,
-.ZN 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
-.ZN GCClipMask
-and
-.ZN 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
-.ZN GCFont ,
-.ZN GCTile ,
-and
-.ZN GCStipple
-if the component has never been explicitly set by the client.
-.LP
-The
-.ZN XFreeGC
-function destroys the specified GC as well as all the associated storage.
-.LP
-.ZN XFreeGC
-can generate a
-.ZN BadGC
-error.
-.SH STRUCTURES
-The
-.ZN XGCValues
-structure contains:
-.LP
-.LP
-/\&* GC attribute value mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.75i).
-T{
-\&#define
-T} T{
-.ZN GCFunction
-T} T{
-(1L<<0)
-T}
-T{
-\&#define
-T} T{
-.ZN GCPlaneMask
-T} T{
-(1L<<1)
-T}
-T{
-\&#define
-T} T{
-.ZN GCForeground
-T} T{
-(1L<<2)
-T}
-T{
-\&#define
-T} T{
-.ZN GCBackground
-T} T{
-(1L<<3)
-T}
-T{
-\&#define
-T} T{
-.ZN GCLineWidth
-T} T{
-(1L<<4)
-T}
-T{
-\&#define
-T} T{
-.ZN GCLineStyle
-T} T{
-(1L<<5)
-T}
-T{
-\&#define
-T} T{
-.ZN GCCapStyle
-T} T{
-(1L<<6)
-T}
-T{
-\&#define
-T} T{
-.ZN GCJoinStyle
-T} T{
-(1L<<7)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFillStyle
-T} T{
-(1L<<8)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFillRule
-T} T{
-(1L<<9)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTile
-T} T{
-(1L<<10)
-T}
-T{
-\&#define
-T} T{
-.ZN GCStipple
-T} T{
-(1L<<11)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTileStipXOrigin
-T} T{
-(1L<<12)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTileStipYOrigin
-T} T{
-(1L<<13)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFont
-T} T{
-(1L<<14)
-T}
-T{
-\&#define
-T} T{
-.ZN GCSubwindowMode
-T} T{
-(1L<<15)
-T}
-T{
-\&#define
-T} T{
-.ZN GCGraphicsExposures
-T} T{
-(1L<<16)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipXOrigin
-T} T{
-(1L<<17)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipYOrigin
-T} T{
-(1L<<18)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipMask
-T} T{
-(1L<<19)
-T}
-T{
-\&#define
-T} T{
-.ZN GCDashOffset
-T} T{
-(1L<<20)
-T}
-T{
-\&#define
-T} T{
-.ZN GCDashList
-T} T{
-(1L<<21)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-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.
-.ZN 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{
-.ZN GXclear
-T} T{
-0x0
-T} T{
-0
-T}
-T{
-.ZN GXand
-T} T{
-0x1
-T} T{
-src AND dst
-T}
-T{
-.ZN GXandReverse
-T} T{
-0x2
-T} T{
-src AND NOT dst
-T}
-T{
-.ZN GXcopy
-T} T{
-0x3
-T} T{
-src
-T}
-T{
-.ZN GXandInverted
-T} T{
-0x4
-T} T{
-(NOT src) AND dst
-T}
-T{
-.ZN GXnoop
-T} T{
-0x5
-T} T{
-dst
-T}
-T{
-.ZN GXxor
-T} T{
-0x6
-T} T{
-src XOR dst
-T}
-T{
-.ZN GXor
-T} T{
-0x7
-T} T{
-src OR dst
-T}
-T{
-.ZN GXnor
-T} T{
-0x8
-T} T{
-(NOT src) AND (NOT dst)
-T}
-T{
-.ZN GXequiv
-T} T{
-0x9
-T} T{
-(NOT src) XOR dst
-T}
-T{
-.ZN GXinvert
-T} T{
-0xa
-T} T{
-NOT dst
-T}
-T{
-.ZN GXorReverse
-T} T{
-0xb
-T} T{
-src OR (NOT dst)
-T}
-T{
-.ZN GXcopyInverted
-T} T{
-0xc
-T} T{
-NOT src
-T}
-T{
-.ZN GXorInverted
-T} T{
-0xd
-T} T{
-(NOT src) OR dst
-T}
-T{
-.ZN GXnand
-T} T{
-0xe
-T} T{
-(NOT src) OR (NOT dst)
-T}
-T{
-.ZN 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
-.ZN 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{
-.ZN LineSolid
-T} T{
-The full path of the line is drawn.
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN CapButt
-style used where even and odd dashes meet.
-T}
-.sp 6p
-T{
-.ZN LineOnOffDash
-T} T{
-Only the even dashes are drawn,
-and cap-style applies to
-all internal ends of the individual dashes,
-except
-.ZN CapNotLast
-is treated as
-.ZN 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{
-.ZN CapNotLast
-T} T{
-This is equivalent to
-.ZN CapButt
-except that for a line-width of zero the final endpoint is not drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN 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
-.ZN CapButt
-for line-width of zero).
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN 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{
-.ZN 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
-.ZN JoinBevel
-join-style is used instead.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN JoinBevel
-T} T{
-The corner has
-.ZN 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{
-.ZN CapNotLast
-T} T{
-thin
-T} T{
-The results are device dependent,
-but the desired effect is that nothing is drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN CapRound
-T} T{
-thin
-T} T{
-The results are the same as for
-.ZN CapButt /thin.
-T}
-.sp 6p
-T{
-.ZN CapProjecting
-T} T{
-thin
-T} T{
-The results are the same as for
-.ZN CapButt /thin.
-T}
-.sp 6p
-T{
-.ZN CapButt
-T} T{
-wide
-T} T{
-Nothing is drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN 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
-.ZN BadMatch
-error results.
-The stipple pixmap must have depth one and must have the same root as the
-GC, or a
-.ZN BadMatch
-error results.
-For stipple operations where the fill-style is
-.ZN FillStippled
-but not
-.ZN 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,
-.ZN XDrawText ,
-.ZN XDrawText16 ,
-.ZN XFillRectangle ,
-.ZN XFillPolygon ,
-and
-.ZN XFillArc );
-for line requests
-with line-style
-.ZN LineSolid
-(for example,
-.ZN XDrawLine ,
-.ZN XDrawSegments ,
-.ZN XDrawRectangle ,
-.ZN XDrawArc );
-and for the even dashes for line requests with line-style
-.ZN LineOnOffDash
-or
-.ZN LineDoubleDash ,
-the following apply:
-.TS
-lw(1.8i) lw(4i).
-T{
-.ZN FillSolid
-T} T{
-Foreground
-T}
-.sp 6p
-T{
-.ZN FillTiled
-T} T{
-Tile
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN FillStippled
-T} T{
-Foreground masked by stipple
-T}
-.TE
-.LP
-When drawing lines with line-style
-.ZN LineDoubleDash ,
-the odd dashes are controlled by the fill-style in the following manner:
-.TS
-lw(1.8i) lw(4i).
-T{
-.ZN FillSolid
-T} T{
-Background
-T}
-.sp 6p
-T{
-.ZN FillTiled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.ZN FillOpaqueStippled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN XSetDashes .
-Specifying a
-value of N is equivalent to specifying the two-element list [N, N] in
-.ZN XSetDashes .
-The value must be nonzero,
-or a
-.ZN 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
-.ZN BadMatch
-error results.
-If clip-mask is set to
-.ZN None ,
-the pixels are always drawn regardless of the clip origin.
-The clip-mask also can be set by calling the
-.ZN XSetClipRectangles
-or
-.ZN 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
-.ZN ClipByChildren
-or
-.ZN IncludeInferiors .
-For
-.ZN ClipByChildren ,
-both source and destination windows are
-additionally clipped by all viewable
-.ZN InputOutput
-children.
-For
-.ZN 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
-.ZN 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
-.ZN XFillPolygon
-requests and can be set to
-.ZN EvenOddRule
-or
-.ZN WindingRule .
-For
-.ZN EvenOddRule ,
-a point is inside if
-an infinite ray with the point as origin crosses the path an odd number
-of times.
-For
-.ZN 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
-.ZN EvenOddRule
-and
-.ZN 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
-.ZN XFillArcs
-function and can be set to
-.ZN ArcPieSlice
-or
-.ZN ArcChord .
-For
-.ZN ArcPieSlice ,
-the arcs are pie-slice filled.
-For
-.ZN ArcChord ,
-the arcs are chord filled.
-.LP
-The graphics-exposure flag controls
-.ZN GraphicsExpose
-event generation
-for
-.ZN XCopyArea
-and
-.ZN XCopyPlane
-requests (and any similar requests defined by extensions).
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-Some numeric value falls outside the range of values accepted by the request.
-Unless a specific range is specified for an argument, the full range defined
-by the argument's type is accepted. Any argument defined as a set of
-alternatives can generate this error.
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-XCopyArea(__libmansuffix__),
-XCreateRegion(__libmansuffix__),
-XDrawArc(__libmansuffix__),
-XDrawLine(__libmansuffix__),
-XDrawRectangle(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XFillRectangle(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft CW
+.\".ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de IN \" send an index entry to the stderr
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.ny0
+'\" t
+.TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure
+.SH SYNTAX
+.HP
+GC XCreateGC\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
+.HP
+int XCopyGC\^(\^Display *\fIdisplay\fP\^, GC \fIsrc\fP\^,
+unsigned long \fIvaluemask\fP\^, GC \fIdest\fP\^);
+.HP
+int XChangeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
+.HP
+Status XGetGCValues\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\fIvalues_return\fP\^);
+.HP
+int XFreeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^);
+.HP
+GContext XGContextFromGC\^(\^GC \fIgc\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdest\fP 1i
+Specifies the destination GC.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsrc\fP 1i
+Specifies the components of the source GC.
+.ds Vm set, copied, changed, or returned
+.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.
+.IP \fIvalues_return\fP 1i
+Returns the GC values in the specified
+.ZN XGCValues
+structure.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN BadMatch
+error.
+.LP
+.ZN XCreateGC
+can generate
+.ZN BadAlloc ,
+.ZN BadDrawable ,
+.ZN BadFont ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN BadMatch
+error results.
+The valuemask specifies which component to copy, as for
+.ZN XCreateGC .
+.LP
+.ZN XCopyGC
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN 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
+.ZN XCreateGC .
+Changing the clip-mask overrides any previous
+.ZN XSetClipRectangles
+request on the context.
+Changing the dash-offset or dash-list
+overrides any previous
+.ZN 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
+.ZN XChangeGC
+can generate
+.ZN BadAlloc ,
+.ZN BadFont ,
+.ZN BadGC ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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 ,
+.ZN GCPlaneMask ,
+.ZN GCForeground ,
+.ZN GCBackground ,
+.ZN GCLineWidth ,
+.ZN GCLineStyle ,
+.ZN GCCapStyle ,
+.ZN GCJoinStyle ,
+.ZN GCFillStyle ,
+.ZN GCFillRule ,
+.ZN GCTile ,
+.ZN GCStipple ,
+.ZN GCTileStipXOrigin ,
+.ZN GCTileStipYOrigin ,
+.ZN GCFont ,
+.ZN GCSubwindowMode ,
+.ZN GCGraphicsExposures ,
+.ZN GCClipXOrigin ,
+.ZN GCCLipYOrigin ,
+.ZN GCDashOffset ,
+or
+.ZN GCArcMode )
+and no error occurs,
+.ZN 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
+.ZN GCClipMask
+and
+.ZN 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
+.ZN GCFont ,
+.ZN GCTile ,
+and
+.ZN GCStipple
+if the component has never been explicitly set by the client.
+.LP
+The
+.ZN XFreeGC
+function destroys the specified GC as well as all the associated storage.
+.LP
+.ZN XFreeGC
+can generate a
+.ZN BadGC
+error.
+.SH STRUCTURES
+The
+.ZN XGCValues
+structure contains:
+.LP
+.LP
+/\&* GC attribute value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+\&#define
+T} T{
+.ZN GCFunction
+T} T{
+(1L<<0)
+T}
+T{
+\&#define
+T} T{
+.ZN GCPlaneMask
+T} T{
+(1L<<1)
+T}
+T{
+\&#define
+T} T{
+.ZN GCForeground
+T} T{
+(1L<<2)
+T}
+T{
+\&#define
+T} T{
+.ZN GCBackground
+T} T{
+(1L<<3)
+T}
+T{
+\&#define
+T} T{
+.ZN GCLineWidth
+T} T{
+(1L<<4)
+T}
+T{
+\&#define
+T} T{
+.ZN GCLineStyle
+T} T{
+(1L<<5)
+T}
+T{
+\&#define
+T} T{
+.ZN GCCapStyle
+T} T{
+(1L<<6)
+T}
+T{
+\&#define
+T} T{
+.ZN GCJoinStyle
+T} T{
+(1L<<7)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFillStyle
+T} T{
+(1L<<8)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFillRule
+T} T{
+(1L<<9)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTile
+T} T{
+(1L<<10)
+T}
+T{
+\&#define
+T} T{
+.ZN GCStipple
+T} T{
+(1L<<11)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTileStipXOrigin
+T} T{
+(1L<<12)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTileStipYOrigin
+T} T{
+(1L<<13)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFont
+T} T{
+(1L<<14)
+T}
+T{
+\&#define
+T} T{
+.ZN GCSubwindowMode
+T} T{
+(1L<<15)
+T}
+T{
+\&#define
+T} T{
+.ZN GCGraphicsExposures
+T} T{
+(1L<<16)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipXOrigin
+T} T{
+(1L<<17)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipYOrigin
+T} T{
+(1L<<18)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipMask
+T} T{
+(1L<<19)
+T}
+T{
+\&#define
+T} T{
+.ZN GCDashOffset
+T} T{
+(1L<<20)
+T}
+T{
+\&#define
+T} T{
+.ZN GCDashList
+T} T{
+(1L<<21)
+T}
+T{
+\&#define
+T} T{
+.ZN GCArcMode
+T} T{
+(1L<<22)
+T}
+.TE
+.IN "XGCValues" "" "@DEF@"
+.Ds 0
+/\&* 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
+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.
+.ZN 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{
+.ZN GXclear
+T} T{
+0x0
+T} T{
+0
+T}
+T{
+.ZN GXand
+T} T{
+0x1
+T} T{
+src AND dst
+T}
+T{
+.ZN GXandReverse
+T} T{
+0x2
+T} T{
+src AND NOT dst
+T}
+T{
+.ZN GXcopy
+T} T{
+0x3
+T} T{
+src
+T}
+T{
+.ZN GXandInverted
+T} T{
+0x4
+T} T{
+(NOT src) AND dst
+T}
+T{
+.ZN GXnoop
+T} T{
+0x5
+T} T{
+dst
+T}
+T{
+.ZN GXxor
+T} T{
+0x6
+T} T{
+src XOR dst
+T}
+T{
+.ZN GXor
+T} T{
+0x7
+T} T{
+src OR dst
+T}
+T{
+.ZN GXnor
+T} T{
+0x8
+T} T{
+(NOT src) AND (NOT dst)
+T}
+T{
+.ZN GXequiv
+T} T{
+0x9
+T} T{
+(NOT src) XOR dst
+T}
+T{
+.ZN GXinvert
+T} T{
+0xa
+T} T{
+NOT dst
+T}
+T{
+.ZN GXorReverse
+T} T{
+0xb
+T} T{
+src OR (NOT dst)
+T}
+T{
+.ZN GXcopyInverted
+T} T{
+0xc
+T} T{
+NOT src
+T}
+T{
+.ZN GXorInverted
+T} T{
+0xd
+T} T{
+(NOT src) OR dst
+T}
+T{
+.ZN GXnand
+T} T{
+0xe
+T} T{
+(NOT src) OR (NOT dst)
+T}
+T{
+.ZN 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
+.ZN 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
+[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{
+.ZN LineSolid
+T} T{
+The full path of the line is drawn.
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN CapButt
+style used where even and odd dashes meet.
+T}
+.sp 6p
+T{
+.ZN LineOnOffDash
+T} T{
+Only the even dashes are drawn,
+and cap-style applies to
+all internal ends of the individual dashes,
+except
+.ZN CapNotLast
+is treated as
+.ZN 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{
+.ZN CapNotLast
+T} T{
+This is equivalent to
+.ZN CapButt
+except that for a line-width of zero the final endpoint is not drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN 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
+.ZN CapButt
+for line-width of zero).
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN 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{
+.ZN 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
+.ZN JoinBevel
+join-style is used instead.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN JoinBevel
+T} T{
+The corner has
+.ZN 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{
+.ZN CapNotLast
+T} T{
+thin
+T} T{
+The results are device dependent,
+but the desired effect is that nothing is drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN CapRound
+T} T{
+thin
+T} T{
+The results are the same as for
+.ZN CapButt /thin.
+T}
+.sp 6p
+T{
+.ZN CapProjecting
+T} T{
+thin
+T} T{
+The results are the same as for
+.ZN CapButt /thin.
+T}
+.sp 6p
+T{
+.ZN CapButt
+T} T{
+wide
+T} T{
+Nothing is drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN 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
+.ZN BadMatch
+error results.
+The stipple pixmap must have depth one and must have the same root as the
+GC, or a
+.ZN BadMatch
+error results.
+For stipple operations where the fill-style is
+.ZN FillStippled
+but not
+.ZN 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,
+.ZN XDrawText ,
+.ZN XDrawText16 ,
+.ZN XFillRectangle ,
+.ZN XFillPolygon ,
+and
+.ZN XFillArc );
+for line requests
+with line-style
+.ZN LineSolid
+(for example,
+.ZN XDrawLine ,
+.ZN XDrawSegments ,
+.ZN XDrawRectangle ,
+.ZN XDrawArc );
+and for the even dashes for line requests with line-style
+.ZN LineOnOffDash
+or
+.ZN LineDoubleDash ,
+the following apply:
+.TS
+lw(1.8i) lw(4i).
+T{
+.ZN FillSolid
+T} T{
+Foreground
+T}
+.sp 6p
+T{
+.ZN FillTiled
+T} T{
+Tile
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN FillStippled
+T} T{
+Foreground masked by stipple
+T}
+.TE
+.LP
+When drawing lines with line-style
+.ZN LineDoubleDash ,
+the odd dashes are controlled by the fill-style in the following manner:
+.TS
+lw(1.8i) lw(4i).
+T{
+.ZN FillSolid
+T} T{
+Background
+T}
+.sp 6p
+T{
+.ZN FillTiled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.ZN FillOpaqueStippled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN XSetDashes .
+Specifying a
+value of N is equivalent to specifying the two-element list [N, N] in
+.ZN XSetDashes .
+The value must be nonzero,
+or a
+.ZN 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
+.ZN BadMatch
+error results.
+If clip-mask is set to
+.ZN None ,
+the pixels are always drawn regardless of the clip origin.
+The clip-mask also can be set by calling the
+.ZN XSetClipRectangles
+or
+.ZN 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
+.ZN ClipByChildren
+or
+.ZN IncludeInferiors .
+For
+.ZN ClipByChildren ,
+both source and destination windows are
+additionally clipped by all viewable
+.ZN InputOutput
+children.
+For
+.ZN 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
+.ZN 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
+.ZN XFillPolygon
+requests and can be set to
+.ZN EvenOddRule
+or
+.ZN WindingRule .
+For
+.ZN EvenOddRule ,
+a point is inside if
+an infinite ray with the point as origin crosses the path an odd number
+of times.
+For
+.ZN 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
+.ZN EvenOddRule
+and
+.ZN 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
+.ZN XFillArcs
+function and can be set to
+.ZN ArcPieSlice
+or
+.ZN ArcChord .
+For
+.ZN ArcPieSlice ,
+the arcs are pie-slice filled.
+For
+.ZN ArcChord ,
+the arcs are chord filled.
+.LP
+The graphics-exposure flag controls
+.ZN GraphicsExpose
+event generation
+for
+.ZN XCopyArea
+and
+.ZN XCopyPlane
+requests (and any similar requests defined by extensions).
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+Some numeric value falls outside the range of values accepted by the request.
+Unless a specific range is specified for an argument, the full range defined
+by the argument's type is accepted. Any argument defined as a set of
+alternatives can generate this error.
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+XCopyArea(__libmansuffix__),
+XCreateRegion(__libmansuffix__),
+XDrawArc(__libmansuffix__),
+XDrawLine(__libmansuffix__),
+XDrawRectangle(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XFillRectangle(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP