123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609 |
- /*
- *
- * Copyright © 2000 SuSE, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of SuSE not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. SuSE makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Keith Packard, SuSE, Inc.
- */
- #ifndef _PICTURESTR_H_
- #define _PICTURESTR_H_
- #include "glyphstr.h"
- #include "scrnintstr.h"
- #include "resource.h"
- typedef struct _DirectFormat {
- CARD16 red, redMask;
- CARD16 green, greenMask;
- CARD16 blue, blueMask;
- CARD16 alpha, alphaMask;
- } DirectFormatRec;
- typedef struct _IndexFormat {
- VisualID vid;
- ColormapPtr pColormap;
- int nvalues;
- xIndexValue *pValues;
- void *devPrivate;
- } IndexFormatRec;
- typedef struct _PictFormat {
- CARD32 id;
- CARD32 format; /* except bpp */
- unsigned char type;
- unsigned char depth;
- DirectFormatRec direct;
- IndexFormatRec index;
- } PictFormatRec;
- typedef struct _PictVector {
- xFixed vector[3];
- } PictVector, *PictVectorPtr;
- typedef struct _PictTransform {
- xFixed matrix[3][3];
- } PictTransform, *PictTransformPtr;
- #define PICT_GRADIENT_STOPTABLE_SIZE 1024
- #define SourcePictTypeSolidFill 0
- #define SourcePictTypeLinear 1
- #define SourcePictTypeRadial 2
- #define SourcePictTypeConical 3
- typedef struct _PictSolidFill {
- unsigned int type;
- CARD32 color;
- } PictSolidFill, *PictSolidFillPtr;
- typedef struct _PictGradientStop {
- xFixed x;
- xRenderColor color;
- } PictGradientStop, *PictGradientStopPtr;
- typedef struct _PictGradient {
- unsigned int type;
- int nstops;
- PictGradientStopPtr stops;
- CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE];
- } PictGradient, *PictGradientPtr;
- typedef struct _PictLinearGradient {
- unsigned int type;
- int nstops;
- PictGradientStopPtr stops;
- CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE];
- xPointFixed p1;
- xPointFixed p2;
- } PictLinearGradient, *PictLinearGradientPtr;
- typedef struct _PictRadialGradient {
- unsigned int type;
- int nstops;
- PictGradientStopPtr stops;
- CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE];
- double fx;
- double fy;
- double dx;
- double dy;
- double a;
- double m;
- double b;
- } PictRadialGradient, *PictRadialGradientPtr;
- typedef struct _PictConicalGradient {
- unsigned int type;
- int nstops;
- PictGradientStopPtr stops;
- CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE];
- xPointFixed center;
- xFixed angle;
- } PictConicalGradient, *PictConicalGradientPtr;
- typedef union _SourcePict {
- unsigned int type;
- PictSolidFill solidFill;
- PictGradient gradient;
- PictLinearGradient linear;
- PictRadialGradient radial;
- PictConicalGradient conical;
- } SourcePict, *SourcePictPtr;
- typedef struct _Picture {
- DrawablePtr pDrawable;
- PictFormatPtr pFormat;
- PictFormatShort format; /* PICT_FORMAT */
- int refcnt;
- CARD32 id;
- PicturePtr pNext; /* chain on same drawable */
- unsigned int repeat:1;
- unsigned int graphicsExposures:1;
- unsigned int subWindowMode:1;
- unsigned int polyEdge:1;
- unsigned int polyMode:1;
- unsigned int freeCompClip:1;
- unsigned int clientClipType:2;
- unsigned int componentAlpha:1;
- unsigned int repeatType:2;
- unsigned int unused:21;
- PicturePtr alphaMap;
- DDXPointRec alphaOrigin;
- DDXPointRec clipOrigin;
- pointer clientClip;
- Atom dither;
- unsigned long stateChanges;
- unsigned long serialNumber;
- RegionPtr pCompositeClip;
- DevUnion *devPrivates;
- PictTransform *transform;
- int filter;
- xFixed *filter_params;
- int filter_nparams;
- SourcePictPtr pSourcePict;
- } PictureRec;
- typedef Bool (*PictFilterValidateParamsProcPtr) (PicturePtr pPicture, int id,
- xFixed * params, int nparams);
- typedef struct {
- char *name;
- int id;
- PictFilterValidateParamsProcPtr ValidateParams;
- } PictFilterRec, *PictFilterPtr;
- #define PictFilterNearest 0
- #define PictFilterBilinear 1
- #define PictFilterFast 2
- #define PictFilterGood 3
- #define PictFilterBest 4
- #define PictFilterConvolution 5
- typedef struct {
- char *alias;
- int alias_id;
- int filter_id;
- } PictFilterAliasRec, *PictFilterAliasPtr;
- typedef int (*CreatePictureProcPtr) (PicturePtr pPicture);
- typedef void (*DestroyPictureProcPtr) (PicturePtr pPicture);
- typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture,
- int clipType, pointer value, int n);
- typedef void (*DestroyPictureClipProcPtr) (PicturePtr pPicture);
- typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture,
- PictTransform * transform);
- typedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture,
- int filter,
- xFixed * params, int nparams);
- typedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture);
- typedef void (*ChangePictureProcPtr) (PicturePtr pPicture, Mask mask);
- typedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, Mask mask);
- typedef void (*CompositeProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst, CARD16 width, CARD16 height);
- typedef void (*GlyphsProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc,
- int nlists,
- GlyphListPtr lists, GlyphPtr * glyphs);
- typedef void (*CompositeRectsProcPtr) (CARD8 op,
- PicturePtr pDst,
- xRenderColor * color,
- int nRect, xRectangle *rects);
- typedef void (*RasterizeTrapezoidProcPtr) (PicturePtr pMask,
- xTrapezoid * trap,
- int x_off, int y_off);
- typedef void (*TrapezoidsProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int ntrap, xTrapezoid * traps);
- typedef void (*TrianglesProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int ntri, xTriangle * tris);
- typedef void (*TriStripProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int npoint, xPointFixed * points);
- typedef void (*TriFanProcPtr) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int npoint, xPointFixed * points);
- typedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
- typedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
- typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen,
- PictFormatPtr pFormat,
- int ndef, xColorItem * pdef);
- typedef void (*AddTrapsProcPtr) (PicturePtr pPicture,
- INT16 xOff,
- INT16 yOff, int ntrap, xTrap * traps);
- typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture,
- INT16 xOff,
- INT16 yOff, int ntri, xTriangle * tris);
- typedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
- typedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
- typedef struct _PictureScreen {
- int totalPictureSize;
- unsigned int *PicturePrivateSizes;
- int PicturePrivateLen;
- PictFormatPtr formats;
- PictFormatPtr fallback;
- int nformats;
- CreatePictureProcPtr CreatePicture;
- DestroyPictureProcPtr DestroyPicture;
- ChangePictureClipProcPtr ChangePictureClip;
- DestroyPictureClipProcPtr DestroyPictureClip;
- ChangePictureProcPtr ChangePicture;
- ValidatePictureProcPtr ValidatePicture;
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
- CompositeRectsProcPtr CompositeRects;
- DestroyWindowProcPtr DestroyWindow;
- CloseScreenProcPtr CloseScreen;
- StoreColorsProcPtr StoreColors;
- InitIndexedProcPtr InitIndexed;
- CloseIndexedProcPtr CloseIndexed;
- UpdateIndexedProcPtr UpdateIndexed;
- int subpixel;
- PictFilterPtr filters;
- int nfilters;
- PictFilterAliasPtr filterAliases;
- int nfilterAliases;
- /**
- * Called immediately after a picture's transform is changed through the
- * SetPictureTransform request. Not called for source-only pictures.
- */
- ChangePictureTransformProcPtr ChangePictureTransform;
- /**
- * Called immediately after a picture's transform is changed through the
- * SetPictureFilter request. Not called for source-only pictures.
- */
- ChangePictureFilterProcPtr ChangePictureFilter;
- DestroyPictureFilterProcPtr DestroyPictureFilter;
- TrapezoidsProcPtr Trapezoids;
- TrianglesProcPtr Triangles;
- TriStripProcPtr TriStrip;
- TriFanProcPtr TriFan;
- RasterizeTrapezoidProcPtr RasterizeTrapezoid;
- AddTrianglesProcPtr AddTriangles;
- AddTrapsProcPtr AddTraps;
- int totalGlyphPrivateSize;
- unsigned int *glyphPrivateSizes;
- int glyphPrivateLen;
- int glyphPrivateOffset;
- RealizeGlyphProcPtr RealizeGlyph;
- UnrealizeGlyphProcPtr UnrealizeGlyph;
- } PictureScreenRec, *PictureScreenPtr;
- extern int PictureScreenPrivateIndex;
- extern int PictureWindowPrivateIndex;
- extern RESTYPE PictureType;
- extern RESTYPE PictFormatType;
- extern RESTYPE GlyphSetType;
- #define GetPictureScreen(s) ((PictureScreenPtr) ((s)->devPrivates[PictureScreenPrivateIndex].ptr))
- #define GetPictureScreenIfSet(s) ((PictureScreenPrivateIndex != -1) ? GetPictureScreen(s) : NULL)
- #define SetPictureScreen(s,p) ((s)->devPrivates[PictureScreenPrivateIndex].ptr = (pointer) (p))
- #define GetPictureWindow(w) ((PicturePtr) ((w)->devPrivates[PictureWindowPrivateIndex].ptr))
- #define SetPictureWindow(w,p) ((w)->devPrivates[PictureWindowPrivateIndex].ptr = (pointer) (p))
- #define GetGlyphPrivatesForScreen(glyph, s) \
- ((glyph)->devPrivates + (GetPictureScreen (s))->glyphPrivateOffset)
- #define VERIFY_PICTURE(pPicture, pid, client, mode, err) {\
- pPicture = SecurityLookupIDByType(client, pid, PictureType, mode);\
- if (!pPicture) { \
- client->errorValue = pid; \
- return err; \
- } \
- }
- #define VERIFY_ALPHA(pPicture, pid, client, mode, err) {\
- if (pid == None) \
- pPicture = 0; \
- else { \
- VERIFY_PICTURE(pPicture, pid, client, mode, err); \
- } \
- } \
- void
- ResetPicturePrivateIndex(void);
- Bool
- PictureDestroyWindow(WindowPtr pWindow);
- Bool
- PictureCloseScreen(int Index, ScreenPtr pScreen);
- void
- PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef);
- Bool
- PictureInitIndexedFormats(ScreenPtr pScreen);
- Bool
- PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
- int
- PictureGetSubpixelOrder(ScreenPtr pScreen);
- PictFormatPtr PictureCreateDefaultFormats(ScreenPtr pScreen, int *nformatp);
- PictFormatPtr
- PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
- PictFormatPtr PictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format);
- Bool
- PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
- int
- PictureGetFilterId(char *filter, int len, Bool makeit);
- char *PictureGetFilterName(int id);
- int
- PictureAddFilter(ScreenPtr pScreen,
- char *filter, PictFilterValidateParamsProcPtr ValidateParams);
- Bool
- PictureSetFilterAlias(ScreenPtr pScreen, char *filter, char *alias);
- Bool
- PictureSetDefaultFilters(ScreenPtr pScreen);
- void
- PictureResetFilters(ScreenPtr pScreen);
- PictFilterPtr PictureFindFilter(ScreenPtr pScreen, char *name, int len);
- int
- SetPictureFilter(PicturePtr pPicture, char *name, int len, xFixed * params,
- int nparams);
- Bool
- PictureFinishInit(void);
- void
- SetPictureToDefaults(PicturePtr pPicture);
- PicturePtr AllocatePicture(ScreenPtr pScreen);
- #if 0
- Bool
- miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
- #endif
- PicturePtr
- CreatePicture(Picture pid,
- DrawablePtr pDrawable,
- PictFormatPtr pFormat,
- Mask mask, XID *list, ClientPtr client, int *error);
- int
- ChangePicture(PicturePtr pPicture,
- Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
- int
- SetPictureClipRects(PicturePtr pPicture,
- int xOrigin, int yOrigin, int nRect, xRectangle *rects);
- int
- SetPictureClipRegion(PicturePtr pPicture,
- int xOrigin, int yOrigin, RegionPtr pRegion);
- int
- SetPictureTransform(PicturePtr pPicture, PictTransform * transform);
- void
- ValidatePicture(PicturePtr pPicture);
- int
- FreePicture(pointer pPicture, XID pid);
- int
- FreePictFormat(pointer pPictFormat, XID pid);
- void
- CompositePicture(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
- void
- CompositeGlyphs(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
- void
- CompositeRects(CARD8 op,
- PicturePtr pDst,
- xRenderColor * color, int nRect, xRectangle *rects);
- void
- CompositeTrapezoids(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
- void
- CompositeTriangles(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int ntriangles, xTriangle * triangles);
- void
- CompositeTriStrip(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
- void
- CompositeTriFan(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
- Bool
- PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector);
- Bool
- PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector);
- void RenderExtensionInit(void);
- Bool
- AnimCurInit(ScreenPtr pScreen);
- int
- AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
- CursorPtr *ppCursor);
- void
- AddTraps(PicturePtr pPicture,
- INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
- PicturePtr CreateSolidPicture(Picture pid, xRenderColor * color, int *error);
- PicturePtr
- CreateLinearGradientPicture(Picture pid,
- xPointFixed * p1,
- xPointFixed * p2,
- int nStops,
- xFixed * stops, xRenderColor * colors, int *error);
- PicturePtr
- CreateRadialGradientPicture(Picture pid,
- xPointFixed * inner,
- xPointFixed * outer,
- xFixed innerRadius,
- xFixed outerRadius,
- int nStops,
- xFixed * stops, xRenderColor * colors, int *error);
- PicturePtr
- CreateConicalGradientPicture(Picture pid,
- xPointFixed * center,
- xFixed angle,
- int nStops,
- xFixed * stops, xRenderColor * colors, int *error);
- #endif /* _PICTURESTR_H_ */
|