]> icculus.org git repositories - mikachu/openbox.git/blob - otk/truerendercontrol.hh
bold non-shadowed font
[mikachu/openbox.git] / otk / truerendercontrol.hh
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 #ifndef __truerendercontrol_hh
3 #define __truerendercontrol_hh
4
5 #include "rendercontrol.hh"
6
7 extern "C" {
8
9 #ifdef HAVE_STDINT_H
10 #  include <stdint.h>
11 #else
12 #  ifdef HAVE_SYS_TYPES_H
13 #    include <sys/types.h>
14 #  endif
15 #endif
16
17 }
18
19 #include <vector>
20
21 namespace otk {
22
23 #ifdef HAVE_STDINT_H
24 typedef uint32_t pixel32;
25 typedef uint16_t pixel16;
26 #else
27 typedef u_int32_t pixel32;
28 typedef u_int16_t pixel16;
29 #endif
30
31 class TrueRenderControl : public RenderControl {
32 private:
33   // the number of bits to shift a color value (from 0-255) to the right, to
34   // fit it into the the color mask (do this before the offset)
35   int _red_shift;
36   int _green_shift;
37   int _blue_shift;
38
39   // the offset of each color in a color mask
40   int _red_offset;
41   int _green_offset;
42   int _blue_offset;
43
44 public:
45   TrueRenderControl(int screen);
46   virtual ~TrueRenderControl();
47
48   virtual void drawBackground(Surface& sf, const RenderTexture &texture) const;
49   virtual void drawGradientBackground(Surface &sf,
50                                       const RenderTexture &texture) const;
51
52   inline void highlight(pixel32 *x, pixel32 *y, bool raised) const;
53   void reduceDepth(XImage *im, pixel32 *data) const;
54 };
55
56 }
57
58 #endif // __truerendercontrol_hh