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