cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/***********************************************************
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987, 1998 The Open Group
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncthe above copyright notice appear in all copies and that both that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynccopyright notice and this permission notice appear in supporting
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncThe above copyright notice and this permission notice shall be included in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncall copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncin this Software without prior written authorization from The Open Group.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync All Rights Reserved
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, and distribute this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose and without fee is hereby granted,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncprovided that the above copyright notice appear in all copies and that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncboth that copyright notice and this permission notice appear in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsupporting documentation, and that the name of Digital not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or publicity pertaining to distribution of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsoftware without specific, written prior permission.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncSOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync******************************************************************/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef GCSTRUCT_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GCSTRUCT_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "gc.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "regionstr.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "region.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "pixmap.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "screenint.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "privates.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <X11/Xprotostr.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GCAllBits ((1 << (GCLastBit + 1)) - 1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * functions which modify the state of the GC
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _GCFuncs {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ValidateGC)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long /*stateChanges*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ChangeGC)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long /*mask*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* CopyGC)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGCSrc*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long /*mask*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGCDst*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* DestroyGC)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ChangeClip)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*type*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer /*pvalue*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nrects*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* DestroyClip)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* CopyClip)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pgcDst*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pgcSrc*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevUnion devPrivate;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} GCFuncs;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * graphics operations invoked through a GC
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _GCOps {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* FillSpans)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nInit*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointPtr /*pptInit*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int * /*pwidthInit*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*fSorted*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* SetSpans)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char * /*psrc*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointPtr /*ppt*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int * /*pwidth*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nspans*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*fSorted*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PutImage)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*depth*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*w*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*h*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*leftPad*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*format*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char * /*pBits*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RegionPtr (* CopyArea)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pSrc*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDst*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*srcx*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*srcy*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*w*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*h*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*dstx*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*dsty*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RegionPtr (* CopyPlane)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pSrcDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDstDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*srcx*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*srcy*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*width*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*height*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*dstx*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*dsty*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long /*bitPlane*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyPoint)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*mode*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*npt*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointPtr /*pptInit*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* Polylines)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*mode*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*npt*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointPtr /*pptInit*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolySegment)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nseg*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xSegment * /*pSegs*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyRectangle)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nrects*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xRectangle * /*pRects*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyArc)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*narcs*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xArc * /*parcs*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* FillPolygon)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*shape*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*mode*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*count*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointPtr /*pPts*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyFillRect)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*nrectFill*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xRectangle * /*prectInit*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyFillArc)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*narcs*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync xArc * /*parcs*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* PolyText8)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*count*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char * /*chars*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* PolyText16)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*count*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short * /*chars*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ImageText8)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*count*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char * /*chars*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ImageText16)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*count*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short * /*chars*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* ImageGlyphBlt)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int /*nglyph*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CharInfoPtr * /*ppci*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer /*pglyphBase*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PolyGlyphBlt)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDrawable*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int /*nglyph*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CharInfoPtr * /*ppci*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer /*pglyphBase*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void (* PushPixels)(
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr /*pGC*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapPtr /*pBitMap*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr /*pDst*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*w*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*h*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*x*/,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int /*y*/);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevUnion devPrivate;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} GCOps;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* there is padding in the bit fields because the Sun compiler doesn't
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * force alignment to 32-bit boundaries. losers.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _GC {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char depth;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char alu;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short lineWidth;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short dashOffset;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short numInDashList;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char *dash;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int lineStyle : 2;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int capStyle : 2;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int joinStyle : 2;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int fillStyle : 2;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int fillRule : 1;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int arcMode : 1;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int subWindowMode : 1;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int graphicsExposures : 1;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int clientClipType : 2; /* CT_<kind> */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int miTranslate:1; /* should mi things translate? */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int tileIsPixel:1; /* tile is solid pixel */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int fExpose:1; /* Call exposure handling */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int freeCompClip:1; /* Free composite clip */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int scratch_inuse:1; /* is this GC in a pool for reuse? */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int unused:13; /* see comment above */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long planemask;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long fgPixel;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long bgPixel;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * alas -- both tile and stipple must be here as they
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * are independently specifiable
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixUnion tile;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapPtr stipple;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointRec patOrg; /* origin for (tile, stipple) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _Font *font;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointRec clipOrg;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DDXPointRec lastWinOrg; /* position of window last validated */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer clientClip;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long stateChanges; /* masked with GC_<kind> */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long serialNumber;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCFuncs *funcs;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCOps *ops;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PrivateRec *devPrivates;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The following were moved here from private storage to allow device-
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * independent access to them from screen wrappers.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * --- 1997.11.03 Marc Aurele La France (tsi@xfree86.org)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapPtr pRotatedPixmap; /* tile/stipple rotated for alignment */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RegionPtr pCompositeClip;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* fExpose & freeCompClip defined above */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} GC;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* GCSTRUCT_H */