From 990bc3f015a4f8fce2eb918375defcd44980a845 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 8 Jun 2012 09:33:13 +0200 Subject: Used synchronise script to update files --- libX11/man/XCreateGC.man | 2406 +++++++++++++++++++++++----------------------- 1 file changed, 1203 insertions(+), 1203 deletions(-) (limited to 'libX11/man/XCreateGC.man') diff --git a/libX11/man/XCreateGC.man b/libX11/man/XCreateGC.man index 72a31f07c..c55c4c9c7 100644 --- a/libX11/man/XCreateGC.man +++ b/libX11/man/XCreateGC.man @@ -1,1203 +1,1203 @@ -'\" 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 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 -- cgit v1.2.3