summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-03 07:06:45 +0000
committerDana Jansens <danakj@orodu.net>2003-02-03 07:06:45 +0000
commite6bfddf849009bef7bbb75be5147b4a533fa1ad2 (patch)
tree2b7c84efc4b26477289b07816217b270d9c897cc
parente0eaee86ded5ae63eaaf82da22df5c8845eb3724 (diff)
add pseudorendercontrol
-rw-r--r--otk/.cvsignore1
-rw-r--r--otk/Makefile.am2
-rw-r--r--otk/pseudorendercontrol.cc58
-rw-r--r--otk/pseudorendercontrol.hh38
-rw-r--r--otk/rendercontrol.cc3
-rw-r--r--otk/surface.hh2
-rw-r--r--otk/truerendercontrol.hh16
7 files changed, 110 insertions, 10 deletions
diff --git a/otk/.cvsignore b/otk/.cvsignore
index 217aecc7..8be6a174 100644
--- a/otk/.cvsignore
+++ b/otk/.cvsignore
@@ -29,6 +29,7 @@ texture.lo
timer.lo
timerqueuemanager.lo
truerendercontrol.lo
+pseudorendercontrol.lo
util.lo
widget.lo
ustring.lo
diff --git a/otk/Makefile.am b/otk/Makefile.am
index 1e812765..794d18e8 100644
--- a/otk/Makefile.am
+++ b/otk/Makefile.am
@@ -12,7 +12,7 @@ CXXFLAGS=$(XFT_CFLAGS) $(PYTHON_CFLAGS) @CXXFLAGS@ \
lib_LTLIBRARIES=libotk.la
libotk_la_SOURCES=rendercontrol.cc truerendercontrol.cc surface.cc \
- renderstyle.cc rendercolor.cc \
+ renderstyle.cc rendercolor.cc pseudorendercontrol.cc \
display.cc font.cc \
property.cc rect.cc screeninfo.cc \
timer.cc \
diff --git a/otk/pseudorendercontrol.cc b/otk/pseudorendercontrol.cc
new file mode 100644
index 00000000..9759dc70
--- /dev/null
+++ b/otk/pseudorendercontrol.cc
@@ -0,0 +1,58 @@
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+
+#ifdef HAVE_CONFIG_H
+# include "../config.h"
+#endif // HAVE_CONFIG_H
+
+#include "pseudorendercontrol.hh"
+#include "display.hh"
+#include "screeninfo.hh"
+#include "surface.hh"
+#include "rendertexture.hh"
+
+extern "C" {
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif // HAVE_STDLIB_H
+
+#include "../src/gettext.h"
+#define _(str) gettext(str)
+}
+
+namespace otk {
+
+PseudoRenderControl::PseudoRenderControl(int screen)
+ : RenderControl(screen)
+{
+ const ScreenInfo *info = display->screenInfo(_screen);
+
+ printf("Initializing PseudoColor RenderControl\n");
+
+}
+
+PseudoRenderControl::~PseudoRenderControl()
+{
+ printf("Destroying PseudoColor RenderControl\n");
+
+
+}
+
+void PseudoRenderControl::drawGradientBackground(
+ Surface &sf, const RenderTexture &texture) const
+{
+}
+
+void PseudoRenderControl::drawBackground(Surface& sf,
+ const RenderTexture &texture) const
+{
+ assert(_screen == sf._screen);
+ assert(_screen == texture.color().screen());
+
+ if (texture.gradient() == RenderTexture::Solid) {
+ drawSolidBackground(sf, texture);
+ } else {
+ drawGradientBackground(sf, texture);
+ }
+}
+
+}
diff --git a/otk/pseudorendercontrol.hh b/otk/pseudorendercontrol.hh
new file mode 100644
index 00000000..6d3255ee
--- /dev/null
+++ b/otk/pseudorendercontrol.hh
@@ -0,0 +1,38 @@
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+#ifndef __pseudorendercontrol_hh
+#define __pseudorendercontrol_hh
+
+#include "rendercontrol.hh"
+
+extern "C" {
+
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#else
+# ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+# endif
+#endif
+
+}
+
+#include <vector>
+
+namespace otk {
+
+class PseudoRenderControl : public RenderControl {
+private:
+
+ virtual void drawGradientBackground(Surface &sf,
+ const RenderTexture &texture) const;
+
+public:
+ PseudoRenderControl(int screen);
+ virtual ~PseudoRenderControl();
+
+ virtual void drawBackground(Surface& sf, const RenderTexture &texture) const;
+};
+
+}
+
+#endif // __pseudorendercontrol_hh
diff --git a/otk/rendercontrol.cc b/otk/rendercontrol.cc
index 8046398e..ebd2cfc8 100644
--- a/otk/rendercontrol.cc
+++ b/otk/rendercontrol.cc
@@ -6,6 +6,7 @@
#include "rendercontrol.hh"
#include "truerendercontrol.hh"
+#include "pseudorendercontrol.hh"
#include "rendertexture.hh"
#include "rendercolor.hh"
#include "display.hh"
@@ -34,7 +35,7 @@ RenderControl *RenderControl::getRenderControl(int screen)
return new TrueRenderControl(screen);
case PseudoColor:
case StaticColor:
-// return new PseudoRenderControl(screen);
+ return new PseudoRenderControl(screen);
case GrayScale:
case StaticGray:
// return new GrayRenderControl(screen);
diff --git a/otk/surface.hh b/otk/surface.hh
index 18733517..112bb392 100644
--- a/otk/surface.hh
+++ b/otk/surface.hh
@@ -4,6 +4,7 @@
#include "point.hh"
#include "truerendercontrol.hh"
+#include "pseudorendercontrol.hh"
extern "C" {
#include <X11/Xlib.h>
@@ -45,6 +46,7 @@ public:
// to it. Noone else needs them tho, so they are private.
friend class RenderControl;
friend class TrueRenderControl;
+ friend class PseudoRenderControl;
};
}
diff --git a/otk/truerendercontrol.hh b/otk/truerendercontrol.hh
index b44969aa..e733a148 100644
--- a/otk/truerendercontrol.hh
+++ b/otk/truerendercontrol.hh
@@ -53,14 +53,6 @@ private:
int _green_offset;
int _blue_offset;
-public:
- TrueRenderControl(int screen);
- virtual ~TrueRenderControl();
-
- virtual void drawBackground(Surface& sf, const RenderTexture &texture) const;
- virtual void drawGradientBackground(Surface &sf,
- const RenderTexture &texture) const;
-
inline void highlight(pixel32 *x, pixel32 *y, bool raised) const;
void reduceDepth(XImage *im, pixel32 *data) const;
void verticalGradient(Surface &sf, const RenderTexture &texture,
@@ -69,6 +61,14 @@ public:
pixel32 *data) const;
void crossDiagonalGradient(Surface &sf, const RenderTexture &texture,
pixel32 *data) const;
+ virtual void drawGradientBackground(Surface &sf,
+ const RenderTexture &texture) const;
+
+public:
+ TrueRenderControl(int screen);
+ virtual ~TrueRenderControl();
+
+ virtual void drawBackground(Surface& sf, const RenderTexture &texture) const;
};
}