mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 05:54:08 +00:00
render: move over public SDK headers to include/
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
committed by
Enrico Weigelt
parent
0edeb0e34e
commit
25fc1a02f5
62
include/glyphstr.h
Normal file
62
include/glyphstr.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
*
|
||||
* 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 _GLYPHSTR_H_
|
||||
#define _GLYPHSTR_H_
|
||||
|
||||
#include <X11/extensions/renderproto.h>
|
||||
|
||||
#include "picture.h"
|
||||
#include "screenint.h"
|
||||
|
||||
#define GlyphFormat1 0
|
||||
#define GlyphFormat4 1
|
||||
#define GlyphFormat8 2
|
||||
#define GlyphFormat16 3
|
||||
#define GlyphFormat32 4
|
||||
#define GlyphFormatNum 5
|
||||
|
||||
typedef struct _Glyph {
|
||||
CARD32 refcnt;
|
||||
PrivateRec *devPrivates;
|
||||
unsigned char sha1[20];
|
||||
CARD32 size; /* info + bitmap */
|
||||
xGlyphInfo info;
|
||||
/* per-screen pixmaps follow */
|
||||
} GlyphRec, *GlyphPtr;
|
||||
|
||||
typedef struct _GlyphList {
|
||||
INT16 xOff;
|
||||
INT16 yOff;
|
||||
CARD8 len;
|
||||
PictFormatPtr format;
|
||||
} GlyphListRec, *GlyphListPtr;
|
||||
|
||||
#define GLYPH_HAS_GLYPH_PICTURE_ACCESSOR 1 /* used for api compat */
|
||||
extern _X_EXPORT PicturePtr
|
||||
GetGlyphPicture(GlyphPtr glyph, ScreenPtr pScreen);
|
||||
extern _X_EXPORT void
|
||||
SetGlyphPicture(GlyphPtr glyph, ScreenPtr pScreen, PicturePtr picture);
|
||||
|
||||
#endif /* _GLYPHSTR_H_ */
|
||||
@@ -472,6 +472,10 @@ if build_xorg
|
||||
'opaque.h',
|
||||
'optionstr.h',
|
||||
'os.h',
|
||||
'glyphstr.h',
|
||||
'mipict.h',
|
||||
'picture.h',
|
||||
'picturestr.h',
|
||||
'present.h',
|
||||
'pixmap.h',
|
||||
'pixmapstr.h',
|
||||
|
||||
124
include/mipict.h
Normal file
124
include/mipict.h
Normal file
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
*
|
||||
* 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 _MIPICT_H_
|
||||
#define _MIPICT_H_
|
||||
|
||||
#include "picturestr.h"
|
||||
|
||||
#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */
|
||||
|
||||
#if MI_MAX_INDEXED <= 256
|
||||
typedef CARD8 miIndexType;
|
||||
#endif
|
||||
|
||||
typedef struct _miIndexed {
|
||||
Bool color;
|
||||
CARD32 rgba[MI_MAX_INDEXED];
|
||||
miIndexType ent[32768];
|
||||
} miIndexedRec, *miIndexedPtr;
|
||||
|
||||
#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
|
||||
(((s) >> 6) & 0x03e0) | \
|
||||
(((s) >> 9) & 0x7c00))
|
||||
#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
|
||||
#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
|
||||
|
||||
#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
|
||||
|
||||
extern _X_EXPORT int
|
||||
miCreatePicture(PicturePtr pPicture);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miDestroyPicture(PicturePtr pPicture);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miCompositeSourceValidate(PicturePtr pPicture);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
|
||||
miComputeCompositeRegion(RegionPtr pRegion,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pMask,
|
||||
PicturePtr pDst,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc,
|
||||
INT16 xMask,
|
||||
INT16 yMask,
|
||||
INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
miRealizeGlyph(ScreenPtr pScreen, GlyphPtr glyph);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miUnrealizeGlyph(ScreenPtr pScreen, GlyphPtr glyph);
|
||||
|
||||
extern _X_EXPORT void
|
||||
|
||||
miGlyphs(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miRenderColorToPixel(PictFormatPtr pPict, xRenderColor * color, CARD32 *pixel);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miRenderPixelToColor(PictFormatPtr pPict, CARD32 pixel, xRenderColor * color);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
miIsSolidAlpha(PicturePtr pSrc);
|
||||
|
||||
extern _X_EXPORT void
|
||||
|
||||
miCompositeRects(CARD8 op,
|
||||
PicturePtr pDst,
|
||||
xRenderColor * color, int nRect, xRectangle *rects);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
miInitIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
|
||||
|
||||
extern _X_EXPORT void
|
||||
miCloseIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
|
||||
|
||||
extern _X_EXPORT void
|
||||
|
||||
miUpdateIndexed(ScreenPtr pScreen,
|
||||
PictFormatPtr pFormat, int ndef, xColorItem * pdef);
|
||||
|
||||
#endif /* _MIPICT_H_ */
|
||||
215
include/picture.h
Normal file
215
include/picture.h
Normal file
@@ -0,0 +1,215 @@
|
||||
/*
|
||||
*
|
||||
* 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 _PICTURE_H_
|
||||
#define _PICTURE_H_
|
||||
|
||||
#include "privates.h"
|
||||
|
||||
#include <pixman.h>
|
||||
|
||||
typedef struct _DirectFormat *DirectFormatPtr;
|
||||
typedef struct _PictFormat *PictFormatPtr;
|
||||
typedef struct _Picture *PicturePtr;
|
||||
|
||||
/*
|
||||
* While the protocol is generous in format support, the
|
||||
* sample implementation allows only packed RGB and GBR
|
||||
* representations for data to simplify software rendering,
|
||||
*/
|
||||
#define PICT_FORMAT(bpp,type,a,r,g,b) PIXMAN_FORMAT(bpp, type, a, r, g, b)
|
||||
|
||||
/*
|
||||
* gray/color formats use a visual index instead of argb
|
||||
*/
|
||||
#define PICT_VISFORMAT(bpp,type,vi) (((bpp) << 24) | \
|
||||
((type) << 16) | \
|
||||
((vi)))
|
||||
|
||||
#define PICT_FORMAT_BPP(f) PIXMAN_FORMAT_BPP(f)
|
||||
#define PICT_FORMAT_TYPE(f) PIXMAN_FORMAT_TYPE(f)
|
||||
#define PICT_FORMAT_A(f) PIXMAN_FORMAT_A(f)
|
||||
#define PICT_FORMAT_R(f) PIXMAN_FORMAT_R(f)
|
||||
#define PICT_FORMAT_G(f) PIXMAN_FORMAT_G(f)
|
||||
#define PICT_FORMAT_B(f) PIXMAN_FORMAT_B(f)
|
||||
#define PICT_FORMAT_RGB(f) PIXMAN_FORMAT_RGB(f)
|
||||
#define PICT_FORMAT_VIS(f) PIXMAN_FORMAT_VIS(f)
|
||||
|
||||
#define PICT_TYPE_OTHER PIXMAN_TYPE_OTHER
|
||||
#define PICT_TYPE_A PIXMAN_TYPE_A
|
||||
#define PICT_TYPE_ARGB PIXMAN_TYPE_ARGB
|
||||
#define PICT_TYPE_ABGR PIXMAN_TYPE_ABGR
|
||||
#define PICT_TYPE_COLOR PIXMAN_TYPE_COLOR
|
||||
#define PICT_TYPE_GRAY PIXMAN_TYPE_GRAY
|
||||
#define PICT_TYPE_BGRA PIXMAN_TYPE_BGRA
|
||||
|
||||
#define PICT_FORMAT_COLOR(f) PIXMAN_FORMAT_COLOR(f)
|
||||
|
||||
typedef pixman_format_code_t PictFormatShort;
|
||||
|
||||
#define PICT_a2r10g10b10 PIXMAN_a2r10g10b10
|
||||
#define PICT_x2r10g10b10 PIXMAN_x2r10g10b10
|
||||
#define PICT_a2b10g10r10 PIXMAN_a2b10g10r10
|
||||
#define PICT_x2b10g10r10 PIXMAN_x2b10g10r10
|
||||
#define PICT_a8r8g8b8 PIXMAN_a8r8g8b8
|
||||
#define PICT_x8r8g8b8 PIXMAN_x8r8g8b8
|
||||
#define PICT_a8b8g8r8 PIXMAN_a8b8g8r8
|
||||
#define PICT_x8b8g8r8 PIXMAN_x8b8g8r8
|
||||
#define PICT_b8g8r8a8 PIXMAN_b8g8r8a8
|
||||
#define PICT_b8g8r8x8 PIXMAN_b8g8r8x8
|
||||
#define PICT_r8g8b8 PIXMAN_r8g8b8
|
||||
#define PICT_b8g8r8 PIXMAN_b8g8r8
|
||||
#define PICT_r5g6b5 PIXMAN_r5g6b5
|
||||
#define PICT_b5g6r5 PIXMAN_b5g6r5
|
||||
#define PICT_a1r5g5b5 PIXMAN_a1r5g5b5
|
||||
#define PICT_x1r5g5b5 PIXMAN_x1r5g5b5
|
||||
#define PICT_a1b5g5r5 PIXMAN_a1b5g5r5
|
||||
#define PICT_x1b5g5r5 PIXMAN_x1b5g5r5
|
||||
#define PICT_a4r4g4b4 PIXMAN_a4r4g4b4
|
||||
#define PICT_x4r4g4b4 PIXMAN_x4r4g4b4
|
||||
#define PICT_a4b4g4r4 PIXMAN_a4b4g4r4
|
||||
#define PICT_x4b4g4r4 PIXMAN_x4b4g4r4
|
||||
#define PICT_a8 PIXMAN_a8
|
||||
#define PICT_r3g3b2 PIXMAN_r3g3b2
|
||||
#define PICT_b2g3r3 PIXMAN_b2g3r3
|
||||
#define PICT_a2r2g2b2 PIXMAN_a2r2g2b2
|
||||
#define PICT_a2b2g2r2 PIXMAN_a2b2g2r2
|
||||
#define PICT_c8 PIXMAN_c8
|
||||
#define PICT_g8 PIXMAN_g8
|
||||
#define PICT_x4a4 PIXMAN_x4a4
|
||||
#define PICT_x4c4 PIXMAN_x4c4
|
||||
#define PICT_x4g4 PIXMAN_x4g4
|
||||
#define PICT_a4 PIXMAN_a4
|
||||
#define PICT_r1g2b1 PIXMAN_r1g2b1
|
||||
#define PICT_b1g2r1 PIXMAN_b1g2r1
|
||||
#define PICT_a1r1g1b1 PIXMAN_a1r1g1b1
|
||||
#define PICT_a1b1g1r1 PIXMAN_a1b1g1r1
|
||||
#define PICT_c4 PIXMAN_c4
|
||||
#define PICT_g4 PIXMAN_g4
|
||||
#define PICT_a1 PIXMAN_a1
|
||||
#define PICT_g1 PIXMAN_g1
|
||||
#define PICT_yuv2 PIXMAN_yuy2
|
||||
|
||||
/*
|
||||
* For dynamic indexed visuals (GrayScale and PseudoColor), these control the
|
||||
* selection of colors allocated for drawing to Pictures. The default
|
||||
* policy depends on the size of the colormap:
|
||||
*
|
||||
* Size Default Policy
|
||||
* ----------------------------
|
||||
* < 64 PolicyMono
|
||||
* < 256 PolicyGray
|
||||
* 256 PolicyColor (only on PseudoColor)
|
||||
*
|
||||
* The actual allocation code lives in miindex.c, and so is
|
||||
* austensibly server dependent, but that code does:
|
||||
*
|
||||
* PolicyMono Allocate no additional colors, use black and white
|
||||
* PolicyGray Allocate 13 gray levels (11 cells used)
|
||||
* PolicyColor Allocate a 4x4x4 cube and 13 gray levels (71 cells used)
|
||||
* PolicyAll Allocate as big a cube as possible, fill with gray (all)
|
||||
*
|
||||
* Here's a picture to help understand how many colors are
|
||||
* actually allocated (this is just the gray ramp):
|
||||
*
|
||||
* gray level
|
||||
* all 0000 1555 2aaa 4000 5555 6aaa 8000 9555 aaaa bfff d555 eaaa ffff
|
||||
* b/w 0000 ffff
|
||||
* 4x4x4 5555 aaaa
|
||||
* extra 1555 2aaa 4000 6aaa 8000 9555 bfff d555 eaaa
|
||||
*
|
||||
* The default colormap supplies two gray levels (black/white), the
|
||||
* 4x4x4 cube allocates another two and nine more are allocated to fill
|
||||
* in the 13 levels. When the 4x4x4 cube is not allocated, a total of
|
||||
* 11 cells are allocated.
|
||||
*/
|
||||
|
||||
#define PictureCmapPolicyInvalid -1
|
||||
#define PictureCmapPolicyDefault 0
|
||||
#define PictureCmapPolicyMono 1
|
||||
#define PictureCmapPolicyGray 2
|
||||
#define PictureCmapPolicyColor 3
|
||||
#define PictureCmapPolicyAll 4
|
||||
|
||||
extern int PictureCmapPolicy;
|
||||
|
||||
extern int PictureParseCmapPolicy(const char *name);
|
||||
|
||||
extern int RenderErrBase;
|
||||
|
||||
/* Fixed point updates from Carl Worth, USC, Information Sciences Institute */
|
||||
|
||||
typedef pixman_fixed_32_32_t xFixed_32_32;
|
||||
|
||||
typedef pixman_fixed_48_16_t xFixed_48_16;
|
||||
|
||||
#define MAX_FIXED_48_16 pixman_max_fixed_48_16
|
||||
#define MIN_FIXED_48_16 pixman_min_fixed_48_16
|
||||
|
||||
typedef pixman_fixed_1_31_t xFixed_1_31;
|
||||
typedef pixman_fixed_1_16_t xFixed_1_16;
|
||||
typedef pixman_fixed_16_16_t xFixed_16_16;
|
||||
|
||||
/*
|
||||
* An unadorned "xFixed" is the same as xFixed_16_16,
|
||||
* (since it's quite common in the code)
|
||||
*/
|
||||
typedef pixman_fixed_t xFixed;
|
||||
|
||||
#define XFIXED_BITS 16
|
||||
|
||||
#define xFixedToInt(f) pixman_fixed_to_int(f)
|
||||
#define IntToxFixed(i) pixman_int_to_fixed(i)
|
||||
#define xFixedE pixman_fixed_e
|
||||
#define xFixed1 pixman_fixed_1
|
||||
#define xFixed1MinusE pixman_fixed_1_minus_e
|
||||
#define xFixedFrac(f) pixman_fixed_frac(f)
|
||||
#define xFixedFloor(f) pixman_fixed_floor(f)
|
||||
#define xFixedCeil(f) pixman_fixed_ceil(f)
|
||||
|
||||
#define xFixedFraction(f) pixman_fixed_fraction(f)
|
||||
#define xFixedMod2(f) pixman_fixed_mod2(f)
|
||||
|
||||
/* whether 't' is a well defined not obviously empty trapezoid */
|
||||
#define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \
|
||||
(t)->right.p1.y != (t)->right.p2.y && \
|
||||
((t)->bottom > (t)->top))
|
||||
|
||||
/*
|
||||
* Standard NTSC luminance conversions:
|
||||
*
|
||||
* y = r * 0.299 + g * 0.587 + b * 0.114
|
||||
*
|
||||
* Approximate this for a bit more speed:
|
||||
*
|
||||
* y = (r * 153 + g * 301 + b * 58) / 512
|
||||
*
|
||||
* This gives 17 bits of luminance; to get 15 bits, lop the low two
|
||||
*/
|
||||
|
||||
#define CvtR8G8B8toY15(s) (((((s) >> 16) & 0xff) * 153 + \
|
||||
(((s) >> 8) & 0xff) * 301 + \
|
||||
(((s) ) & 0xff) * 58) >> 2)
|
||||
|
||||
#endif /* _PICTURE_H_ */
|
||||
534
include/picturestr.h
Normal file
534
include/picturestr.h
Normal file
@@ -0,0 +1,534 @@
|
||||
/*
|
||||
* 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 <X11/extensions/renderproto.h>
|
||||
#include "scrnintstr.h"
|
||||
#include "glyphstr.h"
|
||||
#include "resource.h"
|
||||
#include "privates.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 pixman_vector PictVector, *PictVectorPtr;
|
||||
typedef struct pixman_transform PictTransform, *PictTransformPtr;
|
||||
|
||||
#define SourcePictTypeSolidFill 0
|
||||
#define SourcePictTypeLinear 1
|
||||
#define SourcePictTypeRadial 2
|
||||
#define SourcePictTypeConical 3
|
||||
|
||||
typedef struct _PictSolidFill {
|
||||
unsigned int type;
|
||||
CARD32 color;
|
||||
xRenderColor fullcolor;
|
||||
} PictSolidFill, *PictSolidFillPtr;
|
||||
|
||||
typedef struct _PictGradientStop {
|
||||
xFixed x;
|
||||
xRenderColor color;
|
||||
} PictGradientStop, *PictGradientStopPtr;
|
||||
|
||||
typedef struct _PictGradient {
|
||||
unsigned int type;
|
||||
int nstops;
|
||||
PictGradientStopPtr stops;
|
||||
} PictGradient, *PictGradientPtr;
|
||||
|
||||
typedef struct _PictLinearGradient {
|
||||
unsigned int type;
|
||||
int nstops;
|
||||
PictGradientStopPtr stops;
|
||||
xPointFixed p1;
|
||||
xPointFixed p2;
|
||||
} PictLinearGradient, *PictLinearGradientPtr;
|
||||
|
||||
typedef struct _PictCircle {
|
||||
xFixed x;
|
||||
xFixed y;
|
||||
xFixed radius;
|
||||
} PictCircle, *PictCirclePtr;
|
||||
|
||||
typedef struct _PictRadialGradient {
|
||||
unsigned int type;
|
||||
int nstops;
|
||||
PictGradientStopPtr stops;
|
||||
PictCircle c1;
|
||||
PictCircle c2;
|
||||
} PictRadialGradient, *PictRadialGradientPtr;
|
||||
|
||||
typedef struct _PictConicalGradient {
|
||||
unsigned int type;
|
||||
int nstops;
|
||||
PictGradientStopPtr stops;
|
||||
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;
|
||||
pixman_format_code_t format; /* PIXMAN_FORMAT */
|
||||
int refcnt;
|
||||
CARD32 id;
|
||||
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 componentAlpha:1;
|
||||
unsigned int repeatType:2;
|
||||
unsigned int filter:3;
|
||||
unsigned int stateChanges:CPLastBit;
|
||||
unsigned int unused:18 - CPLastBit;
|
||||
|
||||
PicturePtr pNext; /* chain on same drawable */
|
||||
|
||||
PicturePtr alphaMap;
|
||||
xPoint alphaOrigin;
|
||||
|
||||
xPoint clipOrigin;
|
||||
RegionPtr clientClip;
|
||||
|
||||
unsigned long serialNumber;
|
||||
|
||||
RegionPtr pCompositeClip;
|
||||
|
||||
PrivateRec *devPrivates;
|
||||
|
||||
PictTransform *transform;
|
||||
|
||||
SourcePictPtr pSourcePict;
|
||||
xFixed *filter_params;
|
||||
int filter_nparams;
|
||||
} PictureRec;
|
||||
|
||||
typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
|
||||
xFixed * params, int nparams,
|
||||
int *width, int *height);
|
||||
typedef struct {
|
||||
char *name;
|
||||
int id;
|
||||
PictFilterValidateParamsProcPtr ValidateParams;
|
||||
int width, height;
|
||||
} PictFilterRec, *PictFilterPtr;
|
||||
|
||||
#define PictFilterNearest 0
|
||||
#define PictFilterBilinear 1
|
||||
|
||||
#define PictFilterFast 2
|
||||
#define PictFilterGood 3
|
||||
#define PictFilterBest 4
|
||||
|
||||
#define PictFilterConvolution 5
|
||||
/* if you add an 8th filter, expand the filter bitfield above */
|
||||
|
||||
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, void *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 {
|
||||
PictFormatPtr formats;
|
||||
PictFormatPtr fallback;
|
||||
int nformats;
|
||||
|
||||
CreatePictureProcPtr CreatePicture;
|
||||
DestroyPictureProcPtr DestroyPicture;
|
||||
ChangePictureClipProcPtr ChangePictureClip;
|
||||
DestroyPictureClipProcPtr DestroyPictureClip;
|
||||
|
||||
ChangePictureProcPtr ChangePicture;
|
||||
ValidatePictureProcPtr ValidatePicture;
|
||||
|
||||
CompositeProcPtr Composite;
|
||||
GlyphsProcPtr Glyphs; /* unused */
|
||||
CompositeRectsProcPtr CompositeRects;
|
||||
|
||||
void *_dummy1; // required in place of a removed field for ABI compatibility
|
||||
void *_dummy2; // required in place of a removed field for ABI compatibility
|
||||
|
||||
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;
|
||||
|
||||
RasterizeTrapezoidProcPtr RasterizeTrapezoid;
|
||||
|
||||
AddTrianglesProcPtr AddTriangles;
|
||||
|
||||
AddTrapsProcPtr AddTraps;
|
||||
|
||||
RealizeGlyphProcPtr RealizeGlyph;
|
||||
UnrealizeGlyphProcPtr UnrealizeGlyph;
|
||||
|
||||
#define PICTURE_SCREEN_VERSION 2
|
||||
TriStripProcPtr TriStrip;
|
||||
TriFanProcPtr TriFan;
|
||||
} PictureScreenRec, *PictureScreenPtr;
|
||||
|
||||
extern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
|
||||
extern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
|
||||
|
||||
#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, &PictureScreenPrivateKeyRec))
|
||||
#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(&PictureScreenPrivateKeyRec) ? GetPictureScreen(s) : NULL)
|
||||
#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, &PictureScreenPrivateKeyRec, p)
|
||||
#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, &PictureWindowPrivateKeyRec))
|
||||
#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, &PictureWindowPrivateKeyRec, p)
|
||||
|
||||
extern _X_EXPORT PictFormatPtr
|
||||
PictureWindowFormat(WindowPtr pWindow);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
|
||||
|
||||
extern _X_EXPORT int
|
||||
PictureGetSubpixelOrder(ScreenPtr pScreen);
|
||||
|
||||
extern _X_EXPORT PictFormatPtr
|
||||
PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
|
||||
|
||||
extern _X_EXPORT PictFormatPtr
|
||||
PictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
|
||||
|
||||
extern _X_EXPORT int
|
||||
PictureGetFilterId(const char *filter, int len, Bool makeit);
|
||||
|
||||
extern _X_EXPORT char *PictureGetFilterName(int id);
|
||||
|
||||
extern _X_EXPORT int
|
||||
PictureAddFilter(ScreenPtr pScreen,
|
||||
const char *filter,
|
||||
PictFilterValidateParamsProcPtr ValidateParams,
|
||||
int width, int height);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureSetDefaultFilters(ScreenPtr pScreen);
|
||||
|
||||
extern _X_EXPORT void
|
||||
PictureResetFilters(ScreenPtr pScreen);
|
||||
|
||||
extern _X_EXPORT PictFilterPtr
|
||||
PictureFindFilter(ScreenPtr pScreen, char *name, int len);
|
||||
|
||||
extern _X_EXPORT int
|
||||
SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter,
|
||||
xFixed * params, int nparams);
|
||||
|
||||
extern _X_EXPORT int
|
||||
SetPictureFilter(PicturePtr pPicture, char *name, int len,
|
||||
xFixed * params, int nparams);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureFinishInit(void);
|
||||
|
||||
extern _X_EXPORT PicturePtr
|
||||
CreatePicture(Picture pid,
|
||||
DrawablePtr pDrawable,
|
||||
PictFormatPtr pFormat,
|
||||
Mask mask, XID *list, ClientPtr client, int *error);
|
||||
|
||||
extern _X_EXPORT int
|
||||
ChangePicture(PicturePtr pPicture,
|
||||
Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
|
||||
|
||||
extern _X_EXPORT int
|
||||
|
||||
SetPictureClipRects(PicturePtr pPicture,
|
||||
int xOrigin, int yOrigin, int nRect, xRectangle *rects);
|
||||
|
||||
extern _X_EXPORT int
|
||||
SetPictureClipRegion(PicturePtr pPicture,
|
||||
int xOrigin, int yOrigin, RegionPtr pRegion);
|
||||
|
||||
extern _X_EXPORT int
|
||||
SetPictureTransform(PicturePtr pPicture, PictTransform * transform);
|
||||
|
||||
extern _X_EXPORT void
|
||||
ValidatePicture(PicturePtr pPicture);
|
||||
|
||||
extern _X_EXPORT int
|
||||
FreePicture(void *pPicture, XID pid);
|
||||
|
||||
extern _X_EXPORT 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);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeGlyphs(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeRects(CARD8 op,
|
||||
PicturePtr pDst,
|
||||
xRenderColor * color, int nRect, xRectangle *rects);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeTrapezoids(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeTriangles(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc, int ntriangles, xTriangle * triangles);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeTriStrip(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
|
||||
|
||||
extern _X_EXPORT void
|
||||
CompositeTriFan(CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
|
||||
|
||||
extern _X_EXPORT void
|
||||
AddTraps(PicturePtr pPicture,
|
||||
INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
|
||||
|
||||
extern _X_EXPORT PicturePtr
|
||||
CreateSolidPicture(Picture pid, xRenderColor * color, int *error);
|
||||
|
||||
extern _X_EXPORT PicturePtr
|
||||
CreateLinearGradientPicture(Picture pid,
|
||||
xPointFixed * p1,
|
||||
xPointFixed * p2,
|
||||
int nStops,
|
||||
xFixed * stops, xRenderColor * colors, int *error);
|
||||
|
||||
extern _X_EXPORT PicturePtr
|
||||
CreateRadialGradientPicture(Picture pid,
|
||||
xPointFixed * inner,
|
||||
xPointFixed * outer,
|
||||
xFixed innerRadius,
|
||||
xFixed outerRadius,
|
||||
int nStops,
|
||||
xFixed * stops, xRenderColor * colors, int *error);
|
||||
|
||||
extern _X_EXPORT PicturePtr
|
||||
CreateConicalGradientPicture(Picture pid,
|
||||
xPointFixed * center,
|
||||
xFixed angle,
|
||||
int nStops,
|
||||
xFixed * stops, xRenderColor * colors, int *error);
|
||||
|
||||
/*
|
||||
* matrix.c
|
||||
*/
|
||||
|
||||
extern _X_EXPORT void
|
||||
PictTransform_from_xRenderTransform(PictTransformPtr pict,
|
||||
xRenderTransform * render);
|
||||
|
||||
extern _X_EXPORT void
|
||||
xRenderTransform_from_PictTransform(xRenderTransform * render,
|
||||
PictTransformPtr pict);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector);
|
||||
|
||||
extern _X_EXPORT Bool
|
||||
PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector);
|
||||
|
||||
#endif /* _PICTURESTR_H_ */
|
||||
Reference in New Issue
Block a user