]> Dogcows Code - chaz/openbox/commitdiff
blef
authorDana Jansens <danakj@orodu.net>
Sat, 18 Jan 2003 03:03:44 +0000 (03:03 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 18 Jan 2003 03:03:44 +0000 (03:03 +0000)
otk/rendercontrol.hh
otk/truerendercontrol.cc

index f48f70576ac68180c9d09b18236f3e608374a890..efa16fd05a7886c0cb29f6c7ae3fe4d5bf8bae60 100644 (file)
@@ -16,8 +16,6 @@ class RenderControl {
 protected:
   const ScreenInfo *_screen;
 
-  // the number of bits (1-255) that each shade of color spans across. best
-  // case is 1, which gives 255 shades
   int _red_bits;
   int _green_bits;
   int _blue_bits;
index 0b033955e0775a5e2f70907ed82795017391ac1d..49ed964391c72a3017239343a7df722588414051 100644 (file)
@@ -36,14 +36,11 @@ TrueRenderControl::TrueRenderControl(const ScreenInfo *screen)
   while (! (green_mask & 1)) { _green_offset++; green_mask >>= 1; }
   while (! (blue_mask & 1)) { _blue_offset++; blue_mask >>= 1; }
 
-  // use the mask to determine the number of bits for each shade of color
-  // so, best case, red_mask == 0xff (255), with each bit as a different
-  // shade!
+  // scale available colorspace to match our 256x256x256 cube
   _red_bits = 255 / red_mask;
   _green_bits = 255 / green_mask;
   _blue_bits = 255 / blue_mask;
 
-  // compute color tables, based on the number of bits for each shade
   for (int i = 0; i < 256; i++) {
     _red_color_table[i] = i / _red_bits;
     _green_color_table[i] = i / _green_bits;
@@ -58,54 +55,8 @@ TrueRenderControl::~TrueRenderControl()
 
 }
 
-static inline
-void assignPixel(unsigned int bit_depth, unsigned char **data,  unsigned long pixel) {
-  unsigned char *pixel_data = *data;
-  switch (bit_depth) {
-  case  8: //  8bpp
-    *pixel_data++ = pixel;
-    break;
-
-  case 16: // 16bpp LSB
-    *pixel_data++ = pixel;
-    *pixel_data++ = pixel >> 8;
-    break;
-
-  case 17: // 16bpp MSB
-    *pixel_data++ = pixel >> 8;
-    *pixel_data++ = pixel;
-    break;
-
-  case 24: // 24bpp LSB
-    *pixel_data++ = pixel;
-    *pixel_data++ = pixel >> 8;
-    *pixel_data++ = pixel >> 16;
-    break;
-
-  case 25: // 24bpp MSB
-    *pixel_data++ = pixel >> 16;
-    *pixel_data++ = pixel >> 8;
-    *pixel_data++ = pixel;
-    break;
-
-  case 32: // 32bpp LSB
-    *pixel_data++ = pixel;
-    *pixel_data++ = pixel >> 8;
-    *pixel_data++ = pixel >> 16;
-    *pixel_data++ = pixel >> 24;
-    break;
-
-  case 33: // 32bpp MSB
-    *pixel_data++ = pixel >> 24;
-    *pixel_data++ = pixel >> 16;
-    *pixel_data++ = pixel >> 8;
-    *pixel_data++ = pixel;
-    break;
-  }
-  *data = pixel_data; // assign back so we don't lose our place
-}
-
-void renderPixel(XImage *im, unsigned char *dp, unsigned long pixel)
+static inline void renderPixel(XImage *im, unsigned char *dp,
+                              unsigned long pixel)
 {
   unsigned int bpp = im->bits_per_pixel + (im->byte_order == MSBFirst) ? 1 : 0;
 
@@ -143,6 +94,8 @@ void renderPixel(XImage *im, unsigned char *dp, unsigned long pixel)
     *dp++ = pixel >> 8;
     *dp++ = pixel;
     break;
+  default:
+    assert(false); // wtf?
   }
 }
 
@@ -160,7 +113,7 @@ void TrueRenderControl::render(Widget *wi)
   //GC gc = XCreateGC(**display, _screen->rootWindow(), GCCapStyle, &gcv);
 
   // XXX  + 1?
-  unsigned char *data = new unsigned char[im->bytes_per_line * (h + 1)];
+  unsigned char *data = new unsigned char[im->bytes_per_line * h];
   unsigned char *dp = data;
 
   for (int x = 0; x < w; ++x, dp += im->bits_per_pixel/8)
@@ -175,7 +128,7 @@ void TrueRenderControl::render(Widget *wi)
     for (int x = 0; x < w; ++x, dp += im->bits_per_pixel/8)
       renderPixel(im, dp, _blue_color_table[x] << _blue_offset);
 
-  printf("\nDone\n");
+  printf("\nDone %d %d\n", im->bytes_per_line * h, dp - data);
 
   im->data = (char*) data;
   
This page took 0.025406 seconds and 4 git commands to generate.