*** ./24bit.c.orig Mon Aug 15 00:48:37 1994 --- ./24bit.c Tue Sep 27 11:57:20 1994 *************** *** 23,28 **** --- 23,31 ---- #include "dither.h" #include "proto.h" + + extern int SneakyDepthStorage; + /* * We'll define the "ConvertColor" macro here to do fixed point arithmetic * that'll convert from YCrCb to RGB using: *************** *** 121,126 **** --- 124,130 ---- { int L, CR, CB; unsigned int *row1, *row2; + unsigned short *srow1, *srow2; unsigned char *lum2; int x, y; unsigned int r, b, g; *************** *** 131,136 **** --- 135,142 ---- row1 = (unsigned int *)out; row2 = row1 + cols; + srow1 = (unsigned short *)out; + srow2 = srow1 + cols; lum2 = lum + cols; for (y=0; y> 8) & 0xf800) | ! ((g >> 5) & 0x07e0) | ! ((b >> 3) & 0x001f); ! else if( SneakyDepthStorage == 15 ) ! *srow1++ = ((r >> 9) & 0x7c00) | ! ((g >> 6) & 0x03e0) | ! ((b >> 3) & 0x001f); ! else ! *row1++ = r | g | b; L = *lum++; L = UP(L); *************** *** 173,179 **** g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! *row1++ = r | g | b; /* * Now, do second row. --- 188,203 ---- g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! if( SneakyDepthStorage == 16 ) ! *srow1++ = ((r >> 8) & 0xf800) | ! ((g >> 5) & 0x07e0) | ! ((b >> 3) & 0x001f); ! else if( SneakyDepthStorage == 15 ) ! *srow1++ = ((r >> 9) & 0x7c00) | ! ((g >> 6) & 0x03e0) | ! ((b >> 3) & 0x001f); ! else ! *row1++ = r | g | b; /* * Now, do second row. *************** *** 192,198 **** g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! *row2++ = r | g | b; L = *lum2++; L = UP(L); --- 216,231 ---- g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! if( SneakyDepthStorage == 16 ) ! *srow2++ = ((r >> 8) & 0xf800) | ! ((g >> 5) & 0x07e0) | ! ((b >> 3) & 0x001f); ! else if( SneakyDepthStorage == 15 ) ! *srow2++ = ((r >> 9) & 0x7c00) | ! ((g >> 6) & 0x03e0) | ! ((b >> 3) & 0x001f); ! else ! *row2++ = r | g | b; L = *lum2++; L = UP(L); *************** *** 208,219 **** g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! *row2++ = r | g | b; } lum += cols; lum2 += cols; row1 += cols; row2 += cols; } } --- 241,263 ---- g = CLAMP(0,G,UP(255)) & 0xff00; r = (CLAMP(0,R,UP(255)) & 0xff00) << BITS; #endif ! if( SneakyDepthStorage == 16 ) ! *srow2++ = ((r >> 8) & 0xf800) | ! ((g >> 5) & 0x07e0) | ! ((b >> 3) & 0x001f); ! else if( SneakyDepthStorage == 15 ) ! *srow2++ = ((r >> 9) & 0x7c00) | ! ((g >> 6) & 0x03e0) | ! ((b >> 3) & 0x001f); ! else ! *row2++ = r | g | b; } lum += cols; lum2 += cols; row1 += cols; row2 += cols; + srow1 += cols; + srow2 += cols; } } *** ./util32.c.orig Tue Sep 27 10:55:30 1994 --- ./util32.c Tue Sep 27 10:45:24 1994 *************** *** 5,10 **** --- 5,12 ---- #include "proto.h" #include "ui.h" /* include user interface */ + int SneakyDepthStorage = 0; + /* * Return a pointer to a full color bit visual on the dpy */ *************** *** 32,38 **** } XFree(vinfo_ret); ! if (maxdepth < 24) return NULL; if (XMatchVisualInfo(dpy, DefaultScreen(dpy), maxdepth, TrueColor, &vinfo)) { --- 34,41 ---- } XFree(vinfo_ret); ! if (maxdepth < 12) return NULL; ! SneakyDepthStorage = maxdepth; if (XMatchVisualInfo(dpy, DefaultScreen(dpy), maxdepth, TrueColor, &vinfo)) { *** ./gdith.c.orig Mon Jan 31 06:05:15 1994 --- ./gdith.c Tue Sep 27 12:04:49 1994 *************** *** 24,29 **** --- 24,31 ---- #include "dither.h" #include "ui.h" + extern int SneakyDepthStorage; + /* Range values for lum, cr, cb. */ int LUM_RANGE; int CR_RANGE; *************** *** 568,574 **** fc_visual = FindFullColorVisual(display, &depth); ximage = XCreateImage (display, fc_visual, depth, ZPixmap, 0, &dummy, vid_stream->mb_width * 16, ! vid_stream->mb_height * 16, 32, 0); } else if (ditherType == MONO_DITHER || ditherType == MONO_THRESHOLD) { ximage = XCreateImage (display, None, 1, XYBitmap, 0, &dummy, vid_stream->mb_width * 16, --- 570,577 ---- fc_visual = FindFullColorVisual(display, &depth); ximage = XCreateImage (display, fc_visual, depth, ZPixmap, 0, &dummy, vid_stream->mb_width * 16, ! vid_stream->mb_height * 16, ! depth == 15 ? 16 : depth == 24 ? 32 : depth, 0); } else if (ditherType == MONO_DITHER || ditherType == MONO_THRESHOLD) { ximage = XCreateImage (display, None, 1, XYBitmap, 0, &dummy, vid_stream->mb_width * 16,