X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Frendercontrol.hh;h=52d80c526d1a76cc1c78403615e2eb54e8593f06;hb=72ff846dbb56ec36231fb761b864da09885d3690;hp=14c0e92c97afb0d165400e4632da4c38725917a9;hpb=9f705c02b9c412c053fc12a2ebdc5cebe83400c8;p=chaz%2Fopenbox diff --git a/otk/rendercontrol.hh b/otk/rendercontrol.hh index 14c0e92c..52d80c52 100644 --- a/otk/rendercontrol.hh +++ b/otk/rendercontrol.hh @@ -7,25 +7,29 @@ extern "C" { #include } +#include "surface.hh" + namespace otk { class ScreenInfo; -class Surface; +class RenderTexture; +class Font; +class RenderColor; +class ustring; +class PixmapMask; class RenderControl { protected: - const ScreenInfo *_screen; - - int _red_bits; - int _green_bits; - int _blue_bits; + int _screen; + /* // 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]; + */ /* Bool _dither; @@ -59,14 +63,50 @@ protected: int _ncolors; */ - RenderControl(const ScreenInfo *screen); + RenderControl(int screen); + + virtual void reduceDepth(Surface &sf, XImage *im) const = 0; + + inline void highlight(pixel32 *x, pixel32 *y, bool raised) const; + void verticalGradient(Surface &sf, const RenderTexture &texture) const; + void diagonalGradient(Surface &sf, const RenderTexture &texture) const; + void crossDiagonalGradient(Surface &sf, const RenderTexture &texture) const; + virtual void drawGradientBackground(Surface &sf, + const RenderTexture &texture) const; + virtual void drawSolidBackground(Surface& sf, + const RenderTexture& texture) const; public: virtual ~RenderControl(); static RenderControl *getRenderControl(int screen); - virtual void render(Surface *sf) = 0; + virtual void drawRoot(const RenderColor &color) const; + + //! Draws a background onto a Surface, as specified by a RenderTexture + /*! + This function will overwrite the entire surface. + */ + virtual void drawBackground(Surface &sf, + const RenderTexture &texture) const; + + //! Draws an image onto the surface + /*! + This function will overwrite the entire surface.
+ The image must be specified in 32-bit packed ARGB format. The current + background will be used for applying the alpha. + */ + virtual void drawImage(Surface &sf, int w, int h, + unsigned long *data) const; + + //! Draws a string onto a Surface + virtual void drawString(Surface &sf, const Font &font, int x, int y, + const RenderColor &color, + const ustring &string) const; + + //! Draws a PixmapMask with a specified color onto a Surface + virtual void drawMask(Surface &sf, const RenderColor &color, + const PixmapMask &mask) const; }; }