]> Dogcows Code - chaz/openbox/blobdiff - otk/truerendercontrol.hh
Added diagonal and crossdiagonal gradients
[chaz/openbox] / otk / truerendercontrol.hh
index 72e3850e431e7cb47c5e1b15b8d4fad7c8736029..64559d12e8e00d3c6f0382a86be9ab33f71c44bd 100644 (file)
@@ -4,33 +4,59 @@
 
 #include "rendercontrol.hh"
 
+extern "C" {
+
+#ifdef HAVE_STDINT_H
+#  include <stdint.h>
+#else
+#  ifdef HAVE_SYS_TYPES_H
+#    include <sys/types.h>
+#  endif
+#endif
+
+}
+
+#include <vector>
+
 namespace otk {
 
+#ifdef HAVE_STDINT_H
+typedef uint32_t pixel32;
+typedef uint16_t pixel16;
+#else
+typedef u_int32_t pixel32;
+typedef u_int16_t pixel16;
+#endif
+
 class TrueRenderControl : public RenderControl {
 private:
+  // the number of bits to shift a color value (from 0-255) to the right, to
+  // fit it into the the color mask (do this before the offset)
+  int _red_shift;
+  int _green_shift;
+  int _blue_shift;
+
   // the offset of each color in a color mask
   int _red_offset;
   int _green_offset;
   int _blue_offset;
 
-  // 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;
-
-  // color tables, meaning, 256 (possibly) different shades of each color,
-  // based on the number of bits there are available for each color in the
-  // visual
-  unsigned char _red_color_table[256];
-  unsigned char _green_color_table[256];
-  unsigned char _blue_color_table[256];
-  
 public:
-  TrueRenderControl(const ScreenInfo *screen);
+  TrueRenderControl(int screen);
   virtual ~TrueRenderControl();
 
-  virtual void render(::Drawable d);
+  virtual void drawBackground(Surface& sf, const RenderTexture &texture) const;
+  virtual void drawGradientBackground(Surface &sf,
+                                      const RenderTexture &texture) const;
+
+  inline void highlight(pixel32 *x, pixel32 *y, bool raised) const;
+  void reduceDepth(XImage *im, pixel32 *data) const;
+  void verticalGradient(Surface &sf, const RenderTexture &texture,
+                        pixel32 *data) const;
+  void diagonalGradient(Surface &sf, const RenderTexture &texture,
+                        pixel32 *data) const;
+  void crossDiagonalGradient(Surface &sf, const RenderTexture &texture,
+                        pixel32 *data) const;
 };
 
 }
This page took 0.024981 seconds and 4 git commands to generate.