summaryrefslogtreecommitdiff
path: root/decode_render.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2002-05-15 05:26:19 +0000
committerAlan Coopersmith <alan.coopersmith@sun.com>2009-05-04 18:14:08 -0700
commit5a0de81b2922b2f2c174f136b0b5ade2440562a8 (patch)
tree3ef3e6f78ac304618a18478a7c8a5346c2c2b1a6 /decode_render.c
parent6e2099e8fa4d192d1dfa324454f538c3017c1988 (diff)
downloadxscope-5a0de81b2922b2f2c174f136b0b5ade2440562a8.tar.gz
Add lots more Render stuff
Diffstat (limited to 'decode_render.c')
-rw-r--r--decode_render.c55
1 files changed, 53 insertions, 2 deletions
diff --git a/decode_render.c b/decode_render.c
index 63e4bbd..8e52d54 100644
--- a/decode_render.c
+++ b/decode_render.c
@@ -92,7 +92,7 @@ render_decode_error(fd, buf)
FD fd;
unsigned char *buf;
{
- short error = IByte(&buf[0]) - RENDERError;
+ short error = IByte(&buf[1]) - RENDERError;
switch (error) {
case 0: RenderPictFormatError (fd, buf); break;
@@ -179,6 +179,47 @@ PrintRENDERCOLOR(buf)
return(8);
}
+PrintFIXED(buf)
+ unsigned char *buf;
+{
+ /* print a PICTURE */
+ long n = ILong (buf);
+ fprintf (stdout, "FIXED %7.2f", n / 65536.0);
+ return 4;
+}
+
+PrintPOINTFIXED(buf)
+ 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;
+}
+
+PrintTRAPEZOID(buf)
+ unsigned char *buf;
+{
+ /* print a TRAPEZOID */
+ 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;
+}
+
+PrintTRIANGLE(buf)
+ unsigned char *buf;
+{
+ /* print a TRIANGLE */
+ PrintField (buf, 0, 8, POINTFIXED, "p1");
+ PrintField (buf, 8, 8, POINTFIXED, "p2");
+ PrintField (buf,16, 8, POINTFIXED, "p3");
+ return 24;
+}
+
InitializeRENDER(buf)
unsigned char *buf;
{
@@ -190,7 +231,12 @@ InitializeRENDER(buf)
DefineEValue (&TD[REQUEST], (unsigned long) RENDERRequest, "RenderRequest");
DefineEValue (&TD[REPLY], (unsigned long) RENDERRequest, "RenderReply");
- DefineEValue (&TD[ERROR], (unsigned long) RENDERError, "RenderError");
+
+ 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", PrintENUMERATED);
DefineEValue(p, 0L, "RenderQueryVersion");
@@ -264,4 +310,9 @@ InitializeRENDER(buf)
DefineEValue (p, 11L, "Xor");
DefineEValue (p, 12L, "Add");
DefineEValue (p, 13L, "Saturate");
+
+ DefineType(FIXED, BUILTIN, "FIXED", PrintFIXED);
+ DefineType(POINTFIXED, BUILTIN, "POINTFIXED", PrintPOINTFIXED);
+ DefineType(TRIANGLE, RECORD, "TRIANGLE", PrintTRIANGLE);
+ DefineType(TRAPEZOID, RECORD, "TRAPEZOID", PrintTRAPEZOID);
}