/*
 * $XFree86: xc/include/extensions/render.h,v 1.10 2002/11/06 22:47:49 keithp Exp $
 *
 * 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 _RENDER_H_
#define _RENDER_H_

typedef XID     Glyph;
typedef XID     GlyphSet;
typedef XID     Picture;
typedef XID     PictFormat;

#define RENDER_NAME "RENDER"
#define RENDER_MAJOR    0
#define RENDER_MINOR    10

#define X_RenderQueryVersion            0
#define X_RenderQueryPictFormats        1
#define X_RenderQueryPictIndexValues        2   /* 0.7 */
#define X_RenderQueryDithers            3
#define X_RenderCreatePicture           4
#define X_RenderChangePicture           5
#define X_RenderSetPictureClipRectangles    6
#define X_RenderFreePicture         7
#define X_RenderComposite           8
#define X_RenderScale               9
#define X_RenderTrapezoids          10
#define X_RenderTriangles           11
#define X_RenderTriStrip            12
#define X_RenderTriFan              13
#define X_RenderColorTrapezoids         14
#define X_RenderColorTriangles          15
/* #define X_RenderTransform            16 */
#define X_RenderCreateGlyphSet          17
#define X_RenderReferenceGlyphSet       18
#define X_RenderFreeGlyphSet            19
#define X_RenderAddGlyphs           20
#define X_RenderAddGlyphsFromPicture        21
#define X_RenderFreeGlyphs          22
#define X_RenderCompositeGlyphs8        23
#define X_RenderCompositeGlyphs16       24
#define X_RenderCompositeGlyphs32       25
#define X_RenderFillRectangles          26
/* 0.5 */
#define X_RenderCreateCursor            27
/* 0.6 */
#define X_RenderSetPictureTransform     28
#define X_RenderQueryFilters            29
#define X_RenderSetPictureFilter        30
/* 0.8 */
#define X_RenderCreateAnimCursor        31
/* 0.9 */
#define X_RenderAddTraps            32
/* 0.10 */
#define X_RenderCreateSolidFill             33
#define X_RenderCreateLinearGradient        34
#define X_RenderCreateRadialGradient        35
#define X_RenderCreateConicalGradient       36
#define RenderNumberRequests            (X_RenderCreateConicalGradient+1)

#define BadPictFormat               0
#define BadPicture              1
#define BadPictOp               2
#define BadGlyphSet             3
#define BadGlyph                4
#define RenderNumberErrors          (BadGlyph+1)

#define PictTypeIndexed             0
#define PictTypeDirect              1

#define PictOpMinimum               0
#define PictOpClear             0
#define PictOpSrc               1
#define PictOpDst               2
#define PictOpOver              3
#define PictOpOverReverse           4
#define PictOpIn                5
#define PictOpInReverse             6
#define PictOpOut               7
#define PictOpOutReverse            8
#define PictOpAtop              9
#define PictOpAtopReverse           10
#define PictOpXor               11
#define PictOpAdd               12
#define PictOpSaturate              13
#define PictOpMaximum               13

/*
 * Operators only available in version 0.2
 */
#define PictOpDisjointMinimum               0x10
#define PictOpDisjointClear             0x10
#define PictOpDisjointSrc               0x11
#define PictOpDisjointDst               0x12
#define PictOpDisjointOver              0x13
#define PictOpDisjointOverReverse           0x14
#define PictOpDisjointIn                0x15
#define PictOpDisjointInReverse             0x16
#define PictOpDisjointOut               0x17
#define PictOpDisjointOutReverse            0x18
#define PictOpDisjointAtop              0x19
#define PictOpDisjointAtopReverse           0x1a
#define PictOpDisjointXor               0x1b
#define PictOpDisjointMaximum               0x1b

#define PictOpConjointMinimum               0x20
#define PictOpConjointClear             0x20
#define PictOpConjointSrc               0x21
#define PictOpConjointDst               0x22
#define PictOpConjointOver              0x23
#define PictOpConjointOverReverse           0x24
#define PictOpConjointIn                0x25
#define PictOpConjointInReverse             0x26
#define PictOpConjointOut               0x27
#define PictOpConjointOutReverse            0x28
#define PictOpConjointAtop              0x29
#define PictOpConjointAtopReverse           0x2a
#define PictOpConjointXor               0x2b
#define PictOpConjointMaximum               0x2b

#define PolyEdgeSharp               0
#define PolyEdgeSmooth              1

#define PolyModePrecise             0
#define PolyModeImprecise           1

#define CPRepeat                (1 << 0)
#define CPAlphaMap              (1 << 1)
#define CPAlphaXOrigin              (1 << 2)
#define CPAlphaYOrigin              (1 << 3)
#define CPClipXOrigin               (1 << 4)
#define CPClipYOrigin               (1 << 5)
#define CPClipMask              (1 << 6)
#define CPGraphicsExposure          (1 << 7)
#define CPSubwindowMode             (1 << 8)
#define CPPolyEdge              (1 << 9)
#define CPPolyMode              (1 << 10)
#define CPDither                (1 << 11)
#define CPComponentAlpha            (1 << 12)
#define CPLastBit               12

/* Filters included in 0.6 */
#define FilterNearest               "nearest"
#define FilterBilinear              "bilinear"
/* Filters included in 0.10 */
#define FilterConvolution           "convolution"

#define FilterFast              "fast"
#define FilterGood              "good"
#define FilterBest              "best"

#define FilterAliasNone             -1

/* Subpixel orders included in 0.6 */
#define SubPixelUnknown             0
#define SubPixelHorizontalRGB           1
#define SubPixelHorizontalBGR           2
#define SubPixelVerticalRGB         3
#define SubPixelVerticalBGR         4
#define SubPixelNone                5

/* Extended repeat attributes included in 0.10 */
#define RepeatNone                          0
#define RepeatNormal                        1
#define RepeatPad                           2
#define RepeatReflect                       3

#endif  /* _RENDER_H_ */
