From 25a5b729090f48d27f754016280b4a54de9eef21 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 20 Jan 2003 08:44:17 +0000 Subject: [PATCH] add textures, render the textures color for now too! --- otk/Makefile.am | 2 +- otk/renderstyle.hh | 4 +- otk/rendertest.cc | 13 +++++- otk/rendertexture.cc | 11 ----- otk/rendertexture.hh | 98 ++++++++++++++++++++++++++++++++++++++++ otk/truerendercontrol.cc | 8 ++-- 6 files changed, 115 insertions(+), 21 deletions(-) delete mode 100644 otk/rendertexture.cc diff --git a/otk/Makefile.am b/otk/Makefile.am index 643f4d2f..906a35c0 100644 --- a/otk/Makefile.am +++ b/otk/Makefile.am @@ -9,7 +9,7 @@ INCLUDES= -I../src noinst_LTLIBRARIES=libotk.la libotk_la_SOURCES=rendercontrol.cc truerendercontrol.cc surface.cc \ - rendertexture.cc renderstyle.cc rendercolor.cc \ + renderstyle.cc rendercolor.cc \ color.cc display.cc font.cc gccache.cc image.cc \ property.cc imagecontrol.cc rect.cc screeninfo.cc \ texture.cc timer.cc style.cc \ diff --git a/otk/renderstyle.hh b/otk/renderstyle.hh index 111149e0..920dc1fa 100644 --- a/otk/renderstyle.hh +++ b/otk/renderstyle.hh @@ -2,10 +2,10 @@ #ifndef __renderstyle_hh #define __renderstyle_hh -namespace otk { - #include "rendertexture.hh" +namespace otk { + class RenderStyle { }; diff --git a/otk/rendertest.cc b/otk/rendertest.cc index fcdad6fd..33b1db36 100644 --- a/otk/rendertest.cc +++ b/otk/rendertest.cc @@ -12,8 +12,17 @@ int main(int argc, char **argv) otk::Application app(argc, argv); otk::AppWidget foo(&app); foo.resize(600, 500); - - otk::RenderTexture tex; + + otk::RenderColor color(0, 0xff, 0x20, 0x20); + otk::RenderTexture tex(false, + otk::RenderTexture::Flat, + false, + otk::RenderTexture::Solid, + false, + &color, + 0, + 0, + 0); foo.setTexture(&tex); foo.show(); diff --git a/otk/rendertexture.cc b/otk/rendertexture.cc deleted file mode 100644 index f6f2108f..00000000 --- a/otk/rendertexture.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- - -#ifdef HAVE_CONFIG_H -# include "../config.h" -#endif // HAVE_CONFIG_H - -#include "rendertexture.hh" - -namespace otk { - -} diff --git a/otk/rendertexture.hh b/otk/rendertexture.hh index 68f935dc..3b9d4baa 100644 --- a/otk/rendertexture.hh +++ b/otk/rendertexture.hh @@ -2,9 +2,107 @@ #ifndef __rendertexture_hh #define __rendertexture_hh +#include "rendercolor.hh" + namespace otk { +//! Superclass for all the Textures class RenderTexture { +public: + enum ReliefType { + Flat, + Raised, + Sunken + }; + enum BevelType { + Bevel1, + Bevel2 + }; + enum GradientType { + Solid, + Horizontal, + Vertical, + Diagonal, + CrossDiagonal, + PipeCross, + Rectangle, + Pyramid, + Elliptic + }; + +private: + //! If true, the texture is not rendered at all, so all options are ignored + bool _parent_relative; + //! The relief type of the texture + ReliefType _relief; + //! If a flat border is drawn on the outside, ignored for all ReliefType + //! values except ReliefType::Flat + bool _border; + //! The type of gradient to fill the texture with (if any) + GradientType _gradient; + //! If interlace lines should be drawn over the texture + bool _interlaced; + + //! The base color for the texture, the only color when the texture is solid. + //! This must always be defined + const RenderColor *_color; + //! The shadow color for the bevel. This must be defined if + //! RenderTexture::relief is not RenderTexture::ReliefType::Flat + const RenderColor *_bevel_dark_color; + //! The light color for the bevel. This must be defined if + //! RenderTexture::relief is not RenderTexture::ReliefType::Flat + const RenderColor *_bevel_light_color; + //! The color for the flat border if RenderTexture::border is true. This must + //! be defined if it is true + const RenderColor *_border_color; + +public: + RenderTexture(bool parent_relative, ReliefType relief, bool border, + GradientType gradient, bool interlaced, + const RenderColor *color, const RenderColor *bevel_dark_color, + const RenderColor *bevel_light_color, + const RenderColor *border_color) + : _parent_relative(parent_relative), + _relief(relief), + _border(border), + _gradient(gradient), + _interlaced(interlaced), + _color(color), + _bevel_dark_color(bevel_dark_color), + _bevel_light_color(bevel_light_color), + _border_color(border_color) + { + assert(_relief == Flat || (_bevel_dark_color && _bevel_light_color)); + assert(!_border || _border_color); + assert(_color); + } + + //! If true, the texture is not rendered at all, so all options are ignored + inline bool parentRelative() const { return _parent_relative; } + //! The relief type of the texture + inline ReliefType relief() const { return _relief; } + //! If a flat border is drawn on the outside, ignored for all ReliefType + //! values except ReliefType::Flat + inline bool border() const { return _border; } + //! The type of gradient to fill the texture with (if any) + inline GradientType gradient() const { return _gradient; } + //! If interlace lines should be drawn over the texture + inline bool interlaced() const { return _interlaced; } + + //! The base color for the texture, the only color when the texture is solid. + //! This must always be defined + inline const RenderColor& color() const { return *_color; } + //! The shadow color for the bevel. This must be defined if + //! RenderTexture::relief is not RenderTexture::ReliefType::Flat + inline const RenderColor& bevelDarkColor() const + { return *_bevel_dark_color; } + //! The light color for the bevel. This must be defined if + //! RenderTexture::relief is not RenderTexture::ReliefType::Flat + inline const RenderColor& bevelLightColor() const + { return *_bevel_light_color; } + //! The color for the flat border if RenderTexture::border is true. This must + //! be defined if it is true + inline const RenderColor& borderColor() const { return *_border_color; } }; } diff --git a/otk/truerendercontrol.cc b/otk/truerendercontrol.cc index dc52bc37..786a3b09 100644 --- a/otk/truerendercontrol.cc +++ b/otk/truerendercontrol.cc @@ -8,8 +8,7 @@ #include "display.hh" #include "screeninfo.hh" #include "surface.hh" - -#include "rendercolor.hh" +#include "rendertexture.hh" extern "C" { #ifdef HAVE_STDLIB_H @@ -103,8 +102,6 @@ static inline void renderPixel(XImage *im, unsigned char *dp, void TrueRenderControl::drawBackground(Surface& sf, const RenderTexture &texture) const { - (void)texture; - assert(sf._screen == _screen); int w = sf.width(), h = sf.height(); @@ -130,7 +127,8 @@ void TrueRenderControl::drawBackground(Surface& sf, im->data = (char*) data; // sf.setPixmap(im); - sf.setPixmap(RenderColor(_screen, 0xff, 0xff, 0)); + sf.setPixmap(texture.color()); +// sf.setPixmap(RenderColor(_screen, 0xff, 0xff, 0)); delete [] im->data; im->data = NULL; -- 2.45.2