]> Dogcows Code - chaz/openbox/commitdiff
*** empty log message ***
authorDana Jansens <danakj@orodu.net>
Sat, 18 Jan 2003 04:06:39 +0000 (04:06 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 18 Jan 2003 04:06:39 +0000 (04:06 +0000)
otk/rendercontrol.hh
otk/surface.hh
otk/truerendercontrol.cc
otk/truerendercontrol.hh

index efa16fd05a7886c0cb29f6c7ae3fe4d5bf8bae60..14c0e92c97afb0d165400e4632da4c38725917a9 100644 (file)
@@ -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;
 };
 
 }
index 7289b14aaebac8bd7a1c13bc987b51f8dd298eed..0c64c6f5b3eed1ab8f2229ca4f1f8807a5f1e1e4 100644 (file)
@@ -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;
 };
 
 }
index 39176a6c4c4cad8d979e02bdf9845c6b33273e41..95a0a41650ca56e4d0bda2dd12f098e948d9d718 100644 (file)
@@ -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);
 }
 
 }
index 574b5272c8accd90698c29062d489d88f6c5ada5..4012a008532e8aed3db3c5efe4f14c2612f36329 100644 (file)
@@ -17,7 +17,7 @@ public:
   TrueRenderControl(const ScreenInfo *screen);
   virtual ~TrueRenderControl();
 
-  virtual void render(Widget *wi);
+  virtual void render(Surface *sf);
 };
 
 }
This page took 0.026091 seconds and 4 git commands to generate.