]> Dogcows Code - chaz/openbox/blob - otk/rendercontrol.hh
Added the much sought after horizontal gradient
[chaz/openbox] / otk / rendercontrol.hh
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 #ifndef __rendercontrol_hh
3 #define __rendercontrol_hh
4
5 extern "C" {
6 #include <X11/Xlib.h>
7 #include <X11/Xutil.h>
8 }
9
10 #include "surface.hh"
11
12 namespace otk {
13
14 class ScreenInfo;
15 class RenderTexture;
16 class Font;
17 class RenderColor;
18 class ustring;
19 class PixmapMask;
20
21 class RenderControl {
22 protected:
23 int _screen;
24
25 // bool _dither;
26
27 RenderControl(int screen);
28
29 inline void highlight(pixel32 *x, pixel32 *y, bool raised) const;
30 void verticalGradient(Surface &sf, const RenderTexture &texture) const;
31 void horizontalGradient(Surface &sf, const RenderTexture &texture) const;
32 void diagonalGradient(Surface &sf, const RenderTexture &texture) const;
33 void crossDiagonalGradient(Surface &sf, const RenderTexture &texture) const;
34 virtual void drawGradientBackground(Surface &sf,
35 const RenderTexture &texture) const;
36 virtual void drawSolidBackground(Surface& sf,
37 const RenderTexture& texture) const;
38
39 //! Reduces a Surface's Surface::pixelData so that it will display correctly
40 //! on the screen's depth
41 /*!
42 This function allocates and sets the im->data member. The allocated memory
43 will be freed when XDetroyImage is called on the XImage.
44 */
45 virtual void reduceDepth(Surface &sf, XImage *im) const = 0;
46
47 public:
48 virtual ~RenderControl();
49
50 static RenderControl *createRenderControl(int screen);
51
52 //! Draws a background onto a Surface, as specified by a RenderTexture
53 /*!
54 This function will overwrite the entire surface.
55 */
56 virtual void drawBackground(Surface &sf,
57 const RenderTexture &texture) const;
58
59 //! Draws an image onto the surface
60 /*!
61 This function will overwrite the entire surface.<br>
62 The image must be specified in 32-bit packed ARGB format. The current
63 background will be used for applying the alpha.
64 */
65 virtual void drawImage(Surface &sf, int w, int h,
66 unsigned long *data) const;
67
68 //! Draws an image onto the surface
69 virtual void drawImage(Surface &sf, Pixmap pixmap, Pixmap mask) const;
70
71 //! Draws a string onto a Surface
72 virtual void drawString(Surface &sf, const Font &font, int x, int y,
73 const RenderColor &color,
74 const ustring &string) const;
75
76 //! Draws a PixmapMask with a specified color onto a Surface
77 virtual void drawMask(Surface &sf, const RenderColor &color,
78 const PixmapMask &mask) const;
79
80 virtual void allocateColor(XColor *color) const = 0;
81 };
82
83 }
84
85 #endif // __rendercontrol_hh
This page took 0.038858 seconds and 4 git commands to generate.