#include <stdio.h>
#include <X11/X.h>
#include <X11/Xproto.h>
#define _RENDER_SERVER_
#include "scope.h"
#include "x11.h"
#include "renderscope.h"
#include "extensions.h"
static unsigned char RENDERRequest, RENDERError;
#define RENDERNError 5
static void
render_decode_req (
FD fd,
const unsigned char *buf)
{
short Major = IByte (&buf[0]);
short Minor = IByte (&buf[1]);
switch (Minor) {
case 0: RenderQueryVersion (fd, buf); ExtendedReplyExpected (fd, Major, Minor); break;
case 1: RenderQueryPictFormats (fd, buf); ExtendedReplyExpected (fd, Major, Minor); break;
case 2: RenderQueryPictIndexValues (fd, buf); ExtendedReplyExpected (fd, Major, Minor); break;
case 3: RenderQueryDithers (fd, buf); ExtendedReplyExpected (fd, Major, Minor); break;
case 4: RenderCreatePicture (fd, buf); break;
case 5: RenderChangePicture (fd, buf); break;
case 6: RenderSetPictureClipRectangles (fd, buf); break;
case 7: RenderFreePicture (fd, buf); break;
case 8: RenderComposite (fd, buf); break;
case 9: RenderScale (fd, buf); break;
case 10: RenderTrapezoids (fd, buf); break;
case 11: RenderTriangles (fd, buf); break;
case 12: RenderTriStrip (fd, buf); break;
case 13: RenderTriFan (fd, buf); break;
case 14: RenderColorTrapezoids (fd, buf); break;
case 15: RenderColorTriangles (fd, buf); break;
case 16: RenderTransform (fd, buf); break;
case 17: RenderCreateGlyphSet (fd, buf); break;
case 18: RenderReferenceGlyphSet (fd, buf); break;
case 19: RenderFreeGlyphSet (fd, buf); break;
case 20: RenderAddGlyphs (fd, buf); break;
case 21: RenderAddGlyphsFromPicture (fd, buf); break;
case 22: RenderFreeGlyphs (fd, buf); break;
case 23: RenderCompositeGlyphs8 (fd, buf); break;
case 24: RenderCompositeGlyphs16 (fd, buf); break;
case 25: RenderCompositeGlyphs32 (fd, buf); break;
case 26: RenderFillRectangles (fd, buf); break;
case 27: RenderCreateCursor (fd, buf); break;
case 28: RenderSetPictureTransform (fd, buf); break;
case 29: RenderQueryFilters (fd, buf); ExtendedReplyExpected (fd, Major, Minor); break;
case 30: RenderSetPictureFilter (fd, buf); break;
case 31: RenderCreateAnimCursor (fd, buf); break;
case 32: RenderAddTraps (fd, buf); break;
case 33: RenderCreateSolidFill (fd, buf); break;
case 34: RenderCreateLinearGradient (fd, buf); break;
case 35: RenderCreateRadialGradient (fd, buf); break;
case 36: RenderCreateConicalGradient (fd, buf); break;
default:
ExtendedRequest(fd, buf);
ExtendedReplyExpected(fd, Major, Minor);
break;
}
}
static void
render_decode_reply (
FD fd,
const unsigned char *buf,
short RequestMinor)
{
switch (RequestMinor) {
case 0: RenderQueryVersionReply (fd, buf); break;
case 1: RenderQueryPictFormatsReply (fd, buf); break;
case 2: RenderQueryPictIndexValuesReply (fd, buf); break;
case 3: RenderQueryDithersReply (fd, buf); break;
case 29: RenderQueryFiltersReply (fd, buf); break;
default: UnknownReply(buf); break;
}
}
static void
render_decode_error (
FD fd,
const unsigned char *buf)
{
short error = IByte(&buf[1]) - RENDERError;
switch (error) {
case 0: RenderPictFormatError (fd, buf); break;
case 1: RenderPictureError (fd, buf); break;
case 2: RenderPictOpError (fd, buf); break;
case 3: RenderGlyphSetError (fd, buf); break;
case 4: RenderGlyphError (fd, buf); break;
default:
break;
}
}
static int
PrintPICTURE (
const unsigned char *buf)
{
long n = ILong (buf);
if (n == 0)
fprintf(stdout, "None");
else
fprintf(stdout, "PICTURE %08lx", n);
return(4);
}
static int
PrintPICTFORMAT (
const unsigned char *buf)
{
long n = ILong (buf);
if (n == 0)
fprintf(stdout, "None");
else
fprintf(stdout, "PICTFORMAT %08lx", n);
return(4);
}
static int
PrintPICTFORMINFO (
const unsigned char *buf)
{
long n = ILong(buf);
short t = IByte(buf+4);
short d = IByte(buf+5);
fprintf (stdout, "PICTFORMINFO %08lx %s %d ",
n, t == 0 ? "Indexed" : "Direct", d);
if (t == 0) {
long c = ILong(buf+20);
fprintf (stdout, "cmap %08lx", c);
} else {
short r = IShort(buf+8);
short g = IShort(buf+12);
short b = IShort(buf+16);
short a = IShort(buf+20);
fprintf (stdout, "%d %d %d %d", a, r, g, b);
}
return(28);
}
static int
PrintGLYPHSET (
const unsigned char *buf)
{
long n = ILong (buf);
if (n == 0)
fprintf(stdout, "None");
else
fprintf(stdout, "GLYPHSET %08lx", n);
return(4);
}
static int
PrintRENDERCOLOR (
const unsigned char *buf)
{
unsigned short r, g, b, a;
r = IShort(buf);
g = IShort(buf+2);
b = IShort(buf+4);
a = IShort(buf+6);
fprintf(stdout, "COLOR r:%04x g:%04x b:%04x a:%04x", r, g, b, a);
return(8);
}
static int
PrintFIXED (
const unsigned char *buf)
{
long n = ILong (buf);
fprintf (stdout, "FIXED %7.2f", n / 65536.0);
return 4;
}
static int
PrintPOINTFIXED (
const unsigned char *buf)
{
long x = ILong (buf);
long y = ILong (buf+4);
fprintf (stdout, "POINT %7.2f, %7.2f", x / 65536.0, y / 65536.0);
return 8;
}
static int
PrintTRAPEZOID (
const unsigned char *buf)
{
PrintField (buf, 0, 4, FIXED, "top");
PrintField (buf, 4, 4, FIXED, "bottom");
PrintField (buf, 8, 8, POINTFIXED, "left top");
PrintField (buf, 16, 8, POINTFIXED, "left bottom");
PrintField (buf, 24, 8, POINTFIXED, "right top");
PrintField (buf, 32, 8, POINTFIXED, "right bottom");
return 40;
}
static int
PrintTRIANGLE (
const unsigned char *buf)
{
PrintField (buf, 0, 8, POINTFIXED, "p1");
PrintField (buf, 8, 8, POINTFIXED, "p2");
PrintField (buf,16, 8, POINTFIXED, "p3");
return 24;
}
static int
PrintFILTERALIAS (
const unsigned char *buf)
{
short n = IShort (buf);
if (n == -1)
fprintf(stdout, "AliasNone");
else
fprintf(stdout, "FILTERALIAS %04x", n);
return(2);
}
static int
PrintRENDERTRANSFORM(const unsigned char *buf)
{
const unsigned char *next = buf;
int i, j;
for (i = 0 ; i < 3; i++) {
for (j = 0 ; j < 3; j++) {
long f = ILong(next);
next += 4;
fprintf(stdout, " %7.2f", f / 65536.0);
}
if (i < 2) {
fprintf(stdout, "\n%s%20s ", Leader, "");
} else {
fprintf(stdout, "\n");
}
}
return (next - buf);
}
void
InitializeRENDER (
const unsigned char *buf)
{
TYPE p;
int errcode;
RENDERRequest = (unsigned char)(buf[9]);
RENDERError = (unsigned char)(buf[11]);
DefineEValue (&TD[REQUEST], (unsigned long) RENDERRequest, "RenderRequest");
DefineEValue (&TD[REPLY], (unsigned long) RENDERRequest, "RenderReply");
DefineEValue (&TD[ERROR], (unsigned long) RENDERError + 0, "BadPictFormat");
DefineEValue (&TD[ERROR], (unsigned long) RENDERError + 1, "BadPicture");
DefineEValue (&TD[ERROR], (unsigned long) RENDERError + 2, "BadPictOp");
DefineEValue (&TD[ERROR], (unsigned long) RENDERError + 3, "BadGlyphSet");
DefineEValue (&TD[ERROR], (unsigned long) RENDERError + 4, "BadGlyph");
p = DefineType(RENDERREQUEST, ENUMERATED, "RENDERREQUEST", (PrintProcType) PrintENUMERATED);
DefineEValue(p, 0L, "RenderQueryVersion");
DefineEValue(p, 1L, "RenderQueryPictFormats");
DefineEValue(p, 2L, "RenderQueryPictIndexValues");
DefineEValue(p, 3L, "RenderQueryDithers");
DefineEValue(p, 4L, "RenderCreatePicture");
DefineEValue(p, 5L, "RenderChangePicture");
DefineEValue(p, 6L, "RenderSetPictureClipRectangles");
DefineEValue(p, 7L, "RenderFreePicture");
DefineEValue(p, 8L, "RenderComposite");
DefineEValue(p, 9L, "RenderScale");
DefineEValue(p, 10L, "RenderTrapezoids");
DefineEValue(p, 11L, "RenderTriangles");
DefineEValue(p, 12L, "RenderTriStrip");
DefineEValue(p, 13L, "RenderTriFan");
DefineEValue(p, 14L, "RenderColorTrapezoids");
DefineEValue(p, 15L, "RenderColorTriangles");
DefineEValue(p, 16L, "RenderTransform");
DefineEValue(p, 17L, "RenderCreateGlyphSet");
DefineEValue(p, 18L, "RenderReferenceGlyphSet");
DefineEValue(p, 19L, "RenderFreeGlyphSet");
DefineEValue(p, 20L, "RenderAddGlyphs");
DefineEValue(p, 21L, "RenderAddGlyphsFromPicture");
DefineEValue(p, 22L, "RenderFreeGlyphs");
DefineEValue(p, 23L, "RenderCompositeGlyphs8");
DefineEValue(p, 24L, "RenderCompositeGlyphs16");
DefineEValue(p, 25L, "RenderCompositeGlyphs32");
DefineEValue(p, 26L, "RenderFillRectangles");
DefineEValue(p, 27L, "RenderCreateCursor");
DefineEValue(p, 28L, "RenderSetPictureTransform");
DefineEValue(p, 29L, "RenderQueryFilters");
DefineEValue(p, 30L, "RenderSetPictureFilter");
DefineEValue(p, 31L, "RenderCreateAnimCursor");
DefineEValue(p, 32L, "RenderAddTraps");
DefineEValue(p, 33L, "RenderCreateSolidFill");
DefineEValue(p, 34L, "RenderCreateLinearGradient");
DefineEValue(p, 35L, "RenderCreateRadialGradient");
DefineEValue(p, 36L, "RenderCreateConicalGradient");
p = DefineType(RENDERREPLY, ENUMERATED, "RENDERREPLY", (PrintProcType) PrintENUMERATED);
DefineEValue (p, 0L, "QueryVersion");
DefineEValue (p, 1L, "QueryPictFormats");
DefineEValue (p, 2L, "QueryPictIndexValues");
DefineEValue (p, 3L, "QueryDithers");
DefineEValue (p, 29L, "QueryFilters");
DefineType(PICTURE, BUILTIN, "PICTURE", PrintPICTURE);
DefineType(PICTFORMAT, BUILTIN, "PICTFORMAT", PrintPICTFORMAT);
DefineType(GLYPHSET, BUILTIN, "GLYPHSET", PrintGLYPHSET);
DefineType(RENDERCOLOR, BUILTIN, "RENDERCOLOR", PrintRENDERCOLOR);
DefineType(PICTFORMINFO, BUILTIN, "PICTFORMINFO", PrintPICTFORMINFO);
p = DefineType(PICTURE_BITMASK, SET, "PICTURE_BITMASK", (PrintProcType) PrintSET);
DefineValues(p, 0x00000001L, 1, BOOL, "repeat");
DefineValues(p, 0x00000002L, 1, PICTURE, "alpha-map");
DefineValues(p, 0x00000004L, 1, INT16, "alpha-x-origin");
DefineValues(p, 0x00000008L, 1, INT16, "alpha-y-origin");
DefineValues(p, 0x00000010L, 1, INT16, "clip-x-origin");
DefineValues(p, 0x00000020L, 1, INT16, "clip-y-origin");
DefineValues(p, 0x00000040L, 1, PIXMAP, "clip-mask");
DefineValues(p, 0x00000080L, 1, BOOL, "graphics-exposures");
DefineValues(p, 0x00000100L, 1, SUBWINMODE, "repeat");
DefineValues(p, 0x00000200L, 1, BOOL, "poly-edge");
DefineValues(p, 0x00000400L, 1, BOOL, "poly-mode");
DefineValues(p, 0x00000800L, 1, ATOM, "dither");
DefineValues(p, 0x00001000L, 1, BOOL, "component-alpha");
p = DefineType(PICTOP, ENUMERATED, "PICTOP", (PrintProcType) PrintENUMERATED);
DefineEValue (p, 0L, "Clear");
DefineEValue (p, 1L, "Src");
DefineEValue (p, 2L, "Dst");
DefineEValue (p, 3L, "Over");
DefineEValue (p, 4L, "OverReverse");
DefineEValue (p, 5L, "In");
DefineEValue (p, 6L, "InReverse");
DefineEValue (p, 7L, "Out");
DefineEValue (p, 8L, "OutReverse");
DefineEValue (p, 9L, "Atop");
DefineEValue (p, 10L, "AtopReverse");
DefineEValue (p, 11L, "Xor");
DefineEValue (p, 12L, "Add");
DefineEValue (p, 13L, "Saturate");
DefineEValue (p, 0x10, "PictOpDisjointClear");
DefineEValue (p, 0x11, "PictOpDisjointSrc");
DefineEValue (p, 0x12, "PictOpDisjointDst");
DefineEValue (p, 0x13, "PictOpDisjointOver");
DefineEValue (p, 0x14, "PictOpDisjointOverReverse");
DefineEValue (p, 0x15, "PictOpDisjointIn");
DefineEValue (p, 0x16, "PictOpDisjointInReverse");
DefineEValue (p, 0x17, "PictOpDisjointOut");
DefineEValue (p, 0x18, "PictOpDisjointOutReverse");
DefineEValue (p, 0x19, "PictOpDisjointAtop");
DefineEValue (p, 0x1a, "PictOpDisjointAtopReverse");
DefineEValue (p, 0x1b, "PictOpDisjointXor");
DefineEValue (p, 0x20, "PictOpConjointClear");
DefineEValue (p, 0x21, "PictOpConjointSrc");
DefineEValue (p, 0x22, "PictOpConjointDst");
DefineEValue (p, 0x23, "PictOpConjointOver");
DefineEValue (p, 0x24, "PictOpConjointOverReverse");
DefineEValue (p, 0x25, "PictOpConjointIn");
DefineEValue (p, 0x26, "PictOpConjointInReverse");
DefineEValue (p, 0x27, "PictOpConjointOut");
DefineEValue (p, 0x28, "PictOpConjointOutReverse");
DefineEValue (p, 0x29, "PictOpConjointAtop");
DefineEValue (p, 0x2a, "PictOpConjointAtopReverse");
DefineEValue (p, 0x2b, "PictOpConjointXor");
DefineEValue (p, 0x30, "PictOpMultiply");
DefineEValue (p, 0x31, "PictOpScreen");
DefineEValue (p, 0x32, "PictOpOverlay");
DefineEValue (p, 0x33, "PictOpDarken");
DefineEValue (p, 0x34, "PictOpLighten");
DefineEValue (p, 0x35, "PictOpColorDodge");
DefineEValue (p, 0x36, "PictOpColorBurn");
DefineEValue (p, 0x37, "PictOpHardLight");
DefineEValue (p, 0x38, "PictOpSoftLight");
DefineEValue (p, 0x39, "PictOpDifference");
DefineEValue (p, 0x3a, "PictOpExclusion");
DefineEValue (p, 0x3b, "PictOpHSLHue");
DefineEValue (p, 0x3c, "PictOpHSLSaturation");
DefineEValue (p, 0x3d, "PictOpHSLColor");
DefineEValue (p, 0x3e, "PictOpHSLLuminosity");
DefineType(FIXED, BUILTIN, "FIXED", PrintFIXED);
DefineType(POINTFIXED, BUILTIN, "POINTFIXED", PrintPOINTFIXED);
DefineType(TRIANGLE, RECORD, "TRIANGLE", PrintTRIANGLE);
DefineType(TRAPEZOID, RECORD, "TRAPEZOID", PrintTRAPEZOID);
DefineType(FILTERALIAS, BUILTIN, "FILTERALIAS", PrintFILTERALIAS);
DefineType(RENDERTRANSFORM, BUILTIN, "RENDERTRANSFORM", PrintRENDERTRANSFORM);
InitializeExtensionDecoder(RENDERRequest, render_decode_req,
render_decode_reply);
for (errcode = RENDERError; errcode < (RENDERError + RENDERNError) ;
errcode ++) {
InitializeExtensionErrorDecoder(errcode, render_decode_error);
}
}