diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-01-22 22:20:26 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-01-22 22:20:26 +0000 |
| commit | 75e8fc2705d9c606a702eb7057e9e503be90618b (patch) | |
| tree | b69381a6f72496b1b9f3add6a5b8bcee1173948b /otk/rendertexture.hh | |
| parent | c487295c75094be3858b76b23fc9863ec9d46b59 (diff) | |
hardcoded renderstyle
Diffstat (limited to 'otk/rendertexture.hh')
| -rw-r--r-- | otk/rendertexture.hh | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/otk/rendertexture.hh b/otk/rendertexture.hh index 6afd6209..3a80a45e 100644 --- a/otk/rendertexture.hh +++ b/otk/rendertexture.hh @@ -31,6 +31,8 @@ public: }; private: + int _screen; + //! If true, the texture is not rendered at all, so all options are ignored bool _parent_relative; //! The relief type of the texture @@ -65,27 +67,47 @@ private: const RenderColor *_interlace_color; public: - RenderTexture(bool parent_relative, ReliefType relief, BevelType bevel, + RenderTexture(int screen, + bool parent_relative, ReliefType relief, BevelType bevel, bool border, GradientType gradient, bool interlaced, const RenderColor::RGB &color, const RenderColor::RGB &secondary_color, - const RenderColor::RGB &bevel_dark_color, - const RenderColor::RGB &bevel_light_color, const RenderColor::RGB &border_color, const RenderColor::RGB &interlace_color) - : _parent_relative(parent_relative), + : _screen(screen), + _parent_relative(parent_relative), _relief(relief), _bevel(bevel), _border(border), _gradient(gradient), _interlaced(interlaced), - _color(new RenderColor(color)), - _secondary_color(new RenderColor(secondary_color)), - _bevel_dark_color(new RenderColor(bevel_dark_color)), - _bevel_light_color(new RenderColor(bevel_light_color)), - _border_color(new RenderColor(border_color)), - _interlace_color(new RenderColor(interlace_color)) + _color(new RenderColor(screen, color)), + _secondary_color(new RenderColor(screen, secondary_color)), + _bevel_dark_color(0), + _bevel_light_color(0), + _border_color(new RenderColor(screen, border_color)), + _interlace_color(new RenderColor(screen, interlace_color)) { + if (_relief != Flat) { + unsigned char r, g, b; + + // calculate the light bevel color + r = _color->red() + _color->red() / 2; + g = _color->green() + _color->green() / 2; + b = _color->blue() + _color->blue() / 2; + // watch for wraparound + if (r < _color->red()) r = 0xff; + if (g < _color->green()) g = 0xff; + if (b < _color->blue()) b = 0xff; + _bevel_dark_color = new RenderColor(screen, r, g, b); + + // calculate the dark bevel color + r = _color->red() / 4 + _color->red() / 2; + g = _color->green() / 4 + _color->green() / 2; + b = _color->blue() / 4 + _color->blue() / 2; + _bevel_light_color = new RenderColor(screen, r, g, b); + } + assert(_relief == Flat || (_bevel_dark_color && _bevel_light_color)); assert(!_border || _border_color); assert(!_interlaced || _interlace_color); @@ -95,8 +117,8 @@ public: virtual ~RenderTexture() { delete _color; delete _secondary_color; - delete _bevel_dark_color; - delete _bevel_light_color; + if (_bevel_dark_color) delete _bevel_dark_color; + if (_bevel_dark_color) delete _bevel_light_color; delete _border_color; delete _interlace_color; } |
