summaryrefslogtreecommitdiff
path: root/print_wcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'print_wcp.c')
-rw-r--r--print_wcp.c617
1 files changed, 281 insertions, 336 deletions
diff --git a/print_wcp.c b/print_wcp.c
index 3011857..f8b5506 100644
--- a/print_wcp.c
+++ b/print_wcp.c
@@ -15,7 +15,7 @@
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
* 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
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Keith Packard, Network Computing Devices
@@ -26,102 +26,86 @@
#include "wcpscope.h"
void
-WcpQueryVersion (
- FD fd,
- register const unsigned char *buf)
+WcpQueryVersion(FD fd, register const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
}
void
-WcpQueryVersionReply (
- FD fd,
- const unsigned char *buf)
+WcpQueryVersionReply(FD fd, const unsigned char *buf)
{
- PrintField(RBf, 0, 1, REPLY, REPLYHEADER) /* WcpRequest reply */ ;
- PrintField(RBf, 1, 1, WCPREPLY, WCPREPLYHEADER) /* WcpQueryVersion reply */;
- if (Verbose < 1)
- return;
- printfield(buf, 2, 2, CARD16, "sequence number");
- printfield(buf, 4, 4, DVALUE4(0), "reply length");
- PrintField(buf, 8, 2, CARD16, "major-version");
- PrintField(buf, 10, 2, CARD16, "minor-version");
+ PrintField(RBf, 0, 1, REPLY, REPLYHEADER); /* WcpRequest reply */
+ PrintField(RBf, 1, 1, WCPREPLY,
+ WCPREPLYHEADER); /* WcpQueryVersion reply */
+ if (Verbose < 1)
+ return;
+ printfield(buf, 2, 2, CARD16, "sequence number");
+ printfield(buf, 4, 4, DVALUE4(0), "reply length");
+ PrintField(buf, 8, 2, CARD16, "major-version");
+ PrintField(buf, 10, 2, CARD16, "minor-version");
}
-
+
#define NextByte(dst) if (!len--) { error = "Out of data"; break; } dst = *data++;
static void
-WcpAnalyzeImage1RLL (
- const char *buf,
- int len,
- int width,
- int height)
+WcpAnalyzeImage1RLL(const char *buf, int len, int width, int height)
{
- unsigned char byte;
- unsigned char *data = (unsigned char *) buf;
- int x, y;
- const char *error = NULL;
- int bytewidth;
- int i;
- int w;
-
+ unsigned char byte;
+ unsigned char *data = (unsigned char *) buf;
+ int x, y;
+ const char *error = NULL;
+ int bytewidth;
+ int i;
+ int w;
+
y = 0;
- bytewidth = (width + 7) >> 3;
- while (!error && height--)
- {
- x = 0;
- if (Verbose > 2)
- fprintf (stdout, "%s %9d %9d:", Leader, y, (char *) data - buf);
- NextByte (byte);
- if (Verbose > 2)
- fprintf (stdout, " %2x", byte);
- switch (byte) {
- case 0xff:
- for (i = 0; i < bytewidth; i++)
- {
- NextByte(byte);
- }
- break;
- default:
- w = width;
- while (w)
- {
- NextByte(byte);
- if (Verbose > 2)
- fprintf (stdout, " %3d", byte);
- if (byte > w)
- {
- error = "bad run";
- break;
- }
- x += byte;
- w -= byte;
- }
- break;
- }
- if (Verbose > 2)
- fprintf (stdout, "\n");
- y++;
+ bytewidth = (width + 7) >> 3;
+ while (!error && height--) {
+ x = 0;
+ if (Verbose > 2)
+ fprintf(stdout, "%s %9d %9d:", Leader, y, (char *) data - buf);
+ NextByte(byte);
+ if (Verbose > 2)
+ fprintf(stdout, " %2x", byte);
+ switch (byte) {
+ case 0xff:
+ for (i = 0; i < bytewidth; i++) {
+ NextByte(byte);
+ }
+ break;
+ default:
+ w = width;
+ while (w) {
+ NextByte(byte);
+ if (Verbose > 2)
+ fprintf(stdout, " %3d", byte);
+ if (byte > w) {
+ error = "bad run";
+ break;
+ }
+ x += byte;
+ w -= byte;
+ }
+ break;
+ }
+ if (Verbose > 2)
+ fprintf(stdout, "\n");
+ y++;
}
if (error)
- fprintf (stdout, "%s%20s: %d, %d %d\n", Leader, error,
- x, y - 1, (char *) data - buf);
+ fprintf(stdout, "%s%20s: %d, %d %d\n", Leader, error,
+ x, y - 1, (char *) data - buf);
}
static void
-WcpAnalyzeImageNRLL (
- const char *buf,
- int len,
- int width,
- int height,
- int bytes)
+WcpAnalyzeImageNRLL(const char *buf, int len, int width, int height, int bytes)
{
}
@@ -132,331 +116,292 @@ WcpAnalyzeImageNRLL (
#define LRU_CACHE 0xf
#define LRU_MISS 0xf
-typedef unsigned long PIXEL;
+typedef unsigned long PIXEL;
static void
-init_cache (
- PIXEL cache[LRU_CACHE],
- int BPP)
+init_cache(PIXEL cache[LRU_CACHE], int BPP)
{
- int e;
-
+ int e;
+
/*
* initialize cache values
*/
- for (e = 0; e < 8; e++)
- {
- cache[e] = e;
- cache[LRU_CACHE-e-1] = ((1 << BPP) - 1) - e;
+ for (e = 0; e < 8; e++) {
+ cache[e] = e;
+ cache[LRU_CACHE - e - 1] = ((1 << BPP) - 1) - e;
}
}
static void
-push (
- PIXEL cache[LRU_CACHE],
- PIXEL pixel)
+push(PIXEL cache[LRU_CACHE], PIXEL pixel)
{
- int e;
+ int e;
e = LRU_CACHE - 1;
while (--e >= 0)
- cache[e+1] = cache[e];
+ cache[e + 1] = cache[e];
cache[0] = pixel;
}
static PIXEL
-use (
- PIXEL cache[LRU_CACHE],
- int e)
+use(PIXEL cache[LRU_CACHE], int e)
{
- PIXEL tmp;
+ PIXEL tmp;
tmp = cache[e];
- if (e)
- {
- while (--e >= 0)
- cache[e+1] = cache[e];
- cache[0] = tmp;
+ if (e) {
+ while (--e >= 0)
+ cache[e + 1] = cache[e];
+ cache[0] = tmp;
}
return tmp;
}
static void
-WcpAnalyzeImageNLRU (
- const char *buf,
- int len,
- int width,
- int height,
- int bytes)
+WcpAnalyzeImageNLRU(const char *buf, int len, int width, int height, int bytes)
{
- unsigned char *data = (unsigned char *) buf;
- unsigned char byte;
- int x, y;
- int w;
- int i;
- int bytewidth;
- int cache;
- unsigned long run;
- PIXEL lru[LRU_CACHE];
- PIXEL pix;
- const char *error = NULL;
+ unsigned char *data = (unsigned char *) buf;
+ unsigned char byte;
+ int x, y;
+ int w;
+ int i;
+ int bytewidth;
+ int cache;
+ unsigned long run;
+ PIXEL lru[LRU_CACHE];
+ PIXEL pix;
+ const char *error = NULL;
y = 0;
bytewidth = width * bytes;
- while (!error && height--)
- {
- x = 0;
- if (Verbose > 2)
- fprintf (stdout, "%s %9d %9d:", Leader, y, (char *) data - buf);
- NextByte (byte);
- if (Verbose > 2)
- fprintf (stdout, " %2x", byte);
- switch (byte) {
- case 0xff:
- for (i = 0; i < bytewidth; i++)
- {
- NextByte (byte);
- }
- break;
- default:
- init_cache (lru, bytes * 8);
- w = width;
- while (w)
- {
- NextByte (byte);
- run = byte >> 4;
- cache = byte & 0xf;
- if (run == LRU_LONG)
- {
- NextByte (byte);
- run = (int) byte + MAX_LRU_SHORT;
- }
- run++;
- if (cache == LRU_MISS)
- {
- pix = 0;
- for (i = 0; i < bytes; i++)
- {
- pix = pix << 8;
- NextByte (byte);
- pix |= byte;
- }
- push (lru, pix);
- }
- else
- {
- pix = use (lru, cache);
- }
- w -= run;
- if (w < 0)
- {
- error = "bad run";
- break;
- }
- x += run;
- fprintf (stdout, " %3ld:%0*x", run, bytes * 2, pix);
- }
- break;
- }
- if (Verbose > 2)
- fprintf (stdout, "\n");
- y++;
+ while (!error && height--) {
+ x = 0;
+ if (Verbose > 2)
+ fprintf(stdout, "%s %9d %9d:", Leader, y, (char *) data - buf);
+ NextByte(byte);
+ if (Verbose > 2)
+ fprintf(stdout, " %2x", byte);
+ switch (byte) {
+ case 0xff:
+ for (i = 0; i < bytewidth; i++) {
+ NextByte(byte);
+ }
+ break;
+ default:
+ init_cache(lru, bytes * 8);
+ w = width;
+ while (w) {
+ NextByte(byte);
+ run = byte >> 4;
+ cache = byte & 0xf;
+ if (run == LRU_LONG) {
+ NextByte(byte);
+ run = (int) byte + MAX_LRU_SHORT;
+ }
+ run++;
+ if (cache == LRU_MISS) {
+ pix = 0;
+ for (i = 0; i < bytes; i++) {
+ pix = pix << 8;
+ NextByte(byte);
+ pix |= byte;
+ }
+ push(lru, pix);
+ }
+ else {
+ pix = use(lru, cache);
+ }
+ w -= run;
+ if (w < 0) {
+ error = "bad run";
+ break;
+ }
+ x += run;
+ fprintf(stdout, " %3ld:%0*x", run, bytes * 2, pix);
+ }
+ break;
+ }
+ if (Verbose > 2)
+ fprintf(stdout, "\n");
+ y++;
}
if (error)
- fprintf (stdout, "%s%20s: %d, %d %d\n", Leader, error,
- x, y - 1, (char *) data - buf);
+ fprintf(stdout, "%s%20s: %d, %d %d\n", Leader, error,
+ x, y - 1, (char *) data - buf);
}
static void
-WcpAnalyzeImage (
- const char *buf,
- int len,
- int depth,
- int encoding,
- int width,
- int height)
+WcpAnalyzeImage(const char *buf,
+ int len, int depth, int encoding, int width, int height)
{
- int bytes;
-
+ int bytes;
+
bytes = depth / 8;
switch (depth) {
case 1:
- switch (encoding) {
- case 1:
- case 2:
- case 3:
- case 4:
- WcpAnalyzeImage1RLL (buf, len, width, height);
- return;
- default:
- break;
- }
- break;
+ switch (encoding) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ WcpAnalyzeImage1RLL(buf, len, width, height);
+ return;
+ default:
+ break;
+ }
+ break;
case 4:
- switch (encoding) {
- case 1:
- case 2:
- case 3:
- case 4:
- default:
- break;
- }
- break;
+ switch (encoding) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ default:
+ break;
+ }
+ break;
case 8:
case 16:
case 24:
- switch (encoding) {
- case 1:
- case 2:
- case 3:
- WcpAnalyzeImageNRLL (buf, len, width, height, bytes);
- return;
- case 4:
- WcpAnalyzeImageNLRU (buf, len, width, height, bytes);
- return;
- default:
- break;
- }
- break;
+ switch (encoding) {
+ case 1:
+ case 2:
+ case 3:
+ WcpAnalyzeImageNRLL(buf, len, width, height, bytes);
+ return;
+ case 4:
+ WcpAnalyzeImageNLRU(buf, len, width, height, bytes);
+ return;
+ default:
+ break;
+ }
+ break;
}
- fprintf (stdout, "%s%20s: ", Leader, "invalid");
- fprintf (stdout, "encoding %d depth %d\n", encoding, depth);
+ fprintf(stdout, "%s%20s: ", Leader, "invalid");
+ fprintf(stdout, "encoding %d depth %d\n", encoding, depth);
}
void
-WcpPutImage (
- FD fd,
- const unsigned char *buf)
+WcpPutImage(FD fd, const unsigned char *buf)
{
- int n;
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- n = (IShort(&buf[2]) - 7) * 4;
- printreqlen(buf, fd, DVALUE2(7 + (n + p) / 4));
- PrintField(buf, 4, 4, DRAWABLE, "drawable");
- PrintField(buf, 8, 4, GCONTEXT, "gc");
- if (Verbose > 2)
- PrintValueRec (ILong(&buf[8]),
- GC_function|
- GC_plane_mask|
- GC_foreground|
- GC_background,
- GC_BITMASK);
- PrintField(buf, 12, 4, CARD32, "lut");
- PrintField(buf, 16, 2, INT16, "dst-x");
- PrintField(buf, 18, 2, INT16, "dst-y");
- PrintField(buf, 20, 2, CARD16, "width");
- PrintField(buf, 22, 2, CARD16, "height");
- PrintField(buf, 24, 1, CARD8, "depth");
- PrintField(buf, 25, 1, CARD8, "encoding");
- PrintField(buf, 26, 1, CARD8, "left-pad");
- WcpAnalyzeImage ((const char *) &buf[28], (long) n, buf[24], buf[25],
- IShort(&buf[20]) + buf[26],
- IShort(&buf[22]));
- PrintBytes(&buf[28], (long)n, "data");
+ int n;
+
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ n = (IShort(&buf[2]) - 7) * 4;
+ printreqlen(buf, fd, DVALUE2(7 + (n + p) / 4));
+ PrintField(buf, 4, 4, DRAWABLE, "drawable");
+ PrintField(buf, 8, 4, GCONTEXT, "gc");
+ if (Verbose > 2)
+ PrintValueRec(ILong(&buf[8]),
+ GC_function |
+ GC_plane_mask |
+ GC_foreground |
+ GC_background,
+ GC_BITMASK);
+ PrintField(buf, 12, 4, CARD32, "lut");
+ PrintField(buf, 16, 2, INT16, "dst-x");
+ PrintField(buf, 18, 2, INT16, "dst-y");
+ PrintField(buf, 20, 2, CARD16, "width");
+ PrintField(buf, 22, 2, CARD16, "height");
+ PrintField(buf, 24, 1, CARD8, "depth");
+ PrintField(buf, 25, 1, CARD8, "encoding");
+ PrintField(buf, 26, 1, CARD8, "left-pad");
+ WcpAnalyzeImage((const char *) &buf[28], (long) n, buf[24], buf[25],
+ IShort(&buf[20]) + buf[26], IShort(&buf[22]));
+ PrintBytes(&buf[28], (long) n, "data");
}
void
-WcpGetImage (
- FD fd,
- const unsigned char *buf)
+WcpGetImage(FD fd, const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
- PrintField(buf, 4, 4, DRAWABLE, "drawable");
- PrintField(buf, 8, 4, CARD32, "lut");
- PrintField(buf, 12, 2, INT16, "x");
- PrintField(buf, 14, 2, INT16, "y");
- PrintField(buf, 16, 2, CARD16, "width");
- PrintField(buf, 18, 2, CARD16, "height");
- PrintField(buf, 20, 1, CARD8, "encoding");
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 4, 4, DRAWABLE, "drawable");
+ PrintField(buf, 8, 4, CARD32, "lut");
+ PrintField(buf, 12, 2, INT16, "x");
+ PrintField(buf, 14, 2, INT16, "y");
+ PrintField(buf, 16, 2, CARD16, "width");
+ PrintField(buf, 18, 2, CARD16, "height");
+ PrintField(buf, 20, 1, CARD8, "encoding");
}
void
-WcpGetImageReply (
- FD fd,
- const unsigned char *buf)
+WcpGetImageReply(FD fd, const unsigned char *buf)
{
- long n;
-
- PrintField(RBf, 0, 1, REPLY, REPLYHEADER) /* WcpRequest reply */ ;
- PrintField(RBf, 1, 1, WCPREPLY, WCPREPLYHEADER) /* WcpGetImage reply */;
- if (Verbose < 1)
- return;
- printfield(buf, 2, 2, CARD16, "sequence number");
- printfield(buf, 4, 4, DVALUE4(n), "reply length");
- PrintField(buf, 8, 4, CARD32, "visual");
- n = ILong (&buf[4]) * 4;
- PrintBytes (&buf[32], n, "data");
+ long n;
+
+ PrintField(RBf, 0, 1, REPLY, REPLYHEADER); /* WcpRequest reply */
+ PrintField(RBf, 1, 1, WCPREPLY, WCPREPLYHEADER); /* WcpGetImage reply */
+ if (Verbose < 1)
+ return;
+ printfield(buf, 2, 2, CARD16, "sequence number");
+ printfield(buf, 4, 4, DVALUE4(n), "reply length");
+ PrintField(buf, 8, 4, CARD32, "visual");
+
+ n = ILong(&buf[4]) * 4;
+ PrintBytes(&buf[32], n, "data");
}
void
-WcpCreateColorCursor (
- FD fd,
- const unsigned char *buf)
+WcpCreateColorCursor(FD fd, const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
}
void
-WcpCreateLut (
- FD fd,
- const unsigned char *buf)
+WcpCreateLut(FD fd, const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
}
void
-WcpFreeLut (
- FD fd,
- const unsigned char *buf)
+WcpFreeLut(FD fd, const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
}
void
-WcpCopyArea (
- FD fd,
- const unsigned char *buf)
+WcpCopyArea(FD fd, const unsigned char *buf)
{
- PrintField (buf, 0, 1, REQUEST, REQUESTHEADER) /* WcpRequest */ ;
- PrintField (buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER) /* WcpSwitch */ ;
- if (Verbose < 1)
- return;
- if (Verbose > 1)
- PrintField(SBf, 0, 4, CARD32, "sequence number");
-
- printreqlen(buf, fd, CONST2(2));
+ PrintField(buf, 0, 1, REQUEST, REQUESTHEADER); /* WcpRequest */
+ PrintField(buf, 1, 1, WCPREQUEST, WCPREQUESTHEADER); /* WcpSwitch */
+ if (Verbose < 1)
+ return;
+ if (Verbose > 1)
+ PrintField(SBf, 0, 4, CARD32, "sequence number");
+
+ printreqlen(buf, fd, CONST2(2));
}