summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-20 08:44:17 +0000
committerDana Jansens <danakj@orodu.net>2003-01-20 08:44:17 +0000
commit25a5b729090f48d27f754016280b4a54de9eef21 (patch)
tree6b6abdbfa6039494b17f680c4b5b7f648013f75d
parent0348a2f3abd2334f5f5812c5fb45c1b4fffb46a5 (diff)
add textures, render the textures color for now too!
-rw-r--r--otk/Makefile.am2
-rw-r--r--otk/renderstyle.hh4
-rw-r--r--otk/rendertest.cc13
-rw-r--r--otk/rendertexture.cc11
-rw-r--r--otk/rendertexture.hh98
-rw-r--r--otk/truerendercontrol.cc8
6 files changed, 115 insertions, 21 deletions
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;