summaryrefslogtreecommitdiff
path: root/otk
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-18 04:06:39 +0000
committerDana Jansens <danakj@orodu.net>2003-01-18 04:06:39 +0000
commit9f705c02b9c412c053fc12a2ebdc5cebe83400c8 (patch)
tree6d5dd7e82f351e74233b8f23e9ccdd05e40e5e0b /otk
parent2005c344bdb4b59611972bc37e194d2e14cdf911 (diff)
*** empty log message ***
Diffstat (limited to 'otk')
-rw-r--r--otk/rendercontrol.hh4
-rw-r--r--otk/surface.hh3
-rw-r--r--otk/truerendercontrol.cc25
-rw-r--r--otk/truerendercontrol.hh2
4 files changed, 19 insertions, 15 deletions
diff --git a/otk/rendercontrol.hh b/otk/rendercontrol.hh
index efa16fd0..14c0e92c 100644
--- a/otk/rendercontrol.hh
+++ b/otk/rendercontrol.hh
@@ -10,7 +10,7 @@ extern "C" {
namespace otk {
class ScreenInfo;
-class Widget;
+class Surface;
class RenderControl {
protected:
@@ -66,7 +66,7 @@ public:
static RenderControl *getRenderControl(int screen);
- virtual void render(Widget *wi) = 0;
+ virtual void render(Surface *sf) = 0;
};
}
diff --git a/otk/surface.hh b/otk/surface.hh
index 7289b14a..0c64c6f5 100644
--- a/otk/surface.hh
+++ b/otk/surface.hh
@@ -3,6 +3,7 @@
#define __surface_hh
#include "point.hh"
+#include "truerendercontrol.hh"
extern "C" {
#include <X11/Xlib.h>
@@ -26,6 +27,8 @@ public:
virtual const Point& size() const { return _size; }
virtual int width() const { return _size.x(); }
virtual int height() const { return _size.y(); }
+
+ friend class TrueRenderControl;
};
}
diff --git a/otk/truerendercontrol.cc b/otk/truerendercontrol.cc
index 39176a6c..95a0a416 100644
--- a/otk/truerendercontrol.cc
+++ b/otk/truerendercontrol.cc
@@ -7,7 +7,7 @@
#include "truerendercontrol.hh"
#include "display.hh"
#include "screeninfo.hh"
-#include "widget.hh"
+#include "surface.hh"
extern "C" {
#ifdef HAVE_STDLIB_H
@@ -21,7 +21,10 @@ extern "C" {
namespace otk {
TrueRenderControl::TrueRenderControl(const ScreenInfo *screen)
- : RenderControl(screen)
+ : RenderControl(screen),
+ _red_offset(0),
+ _green_offset(0),
+ _blue_offset(0)
{
printf("Initializing TrueColor RenderControl\n");
@@ -99,12 +102,12 @@ static inline void renderPixel(XImage *im, unsigned char *dp,
}
}
-void TrueRenderControl::render(Widget *wi)
+void TrueRenderControl::render(Surface *sf)
{
- assert(wi);
+ assert(sf);
- int w = wi->width(), h = wi->height();
- Pixmap p = XCreatePixmap(**display, wi->window(), w, h, _screen->depth());
+ int w = sf->width(), h = sf->height();
+
XImage *im = XCreateImage(**display, _screen->visual(), _screen->depth(),
ZPixmap, 0, NULL, w, h, 32, 0);
@@ -125,17 +128,15 @@ void TrueRenderControl::render(Widget *wi)
im->data = (char*) data;
- XPutImage(**display, p, DefaultGC(**display, _screen->screen()),
+ if (!sf->_pm)
+ sf->_pm = XCreatePixmap(**display, _screen->rootWindow(), w, h,
+ _screen->depth());
+ XPutImage(**display, sf->_pm, DefaultGC(**display, _screen->screen()),
im, 0, 0, 0, 0, w, h);
//delete [] image->data;
//image->data = NULL;
XDestroyImage(im);
-
- XSetWindowBackgroundPixmap(**display, wi->window(), p);
- XClearWindow(**display, wi->window());
-
- XFreePixmap(**display, p);
}
}
diff --git a/otk/truerendercontrol.hh b/otk/truerendercontrol.hh
index 574b5272..4012a008 100644
--- a/otk/truerendercontrol.hh
+++ b/otk/truerendercontrol.hh
@@ -17,7 +17,7 @@ public:
TrueRenderControl(const ScreenInfo *screen);
virtual ~TrueRenderControl();
- virtual void render(Widget *wi);
+ virtual void render(Surface *sf);
};
}