Author: manolo
Date: 2010-04-06 10:38:27 -0700 (Tue, 06 Apr 2010)
New Revision: 7458
Log:
Fl_Gl_Device_Plugin: more device-independant API

Modified:
   branches/branch-1.3/FL/Fl_Printer.H
   branches/branch-1.3/src/Fl_Abstract_Printer.cxx
   branches/branch-1.3/src/Fl_Gl_Device_Plugin.cxx

Modified: branches/branch-1.3/FL/Fl_Printer.H
===================================================================
--- branches/branch-1.3/FL/Fl_Printer.H 2010-04-06 17:26:58 UTC (rev 7457)
+++ branches/branch-1.3/FL/Fl_Printer.H 2010-04-06 17:38:27 UTC (rev 7458)
@@ -206,11 +206,11 @@
   /** \brief Returns the plugin name */
   virtual const char *name() = 0;
   /** \brief Prints a widget 
-   \param p the printer
    \param w the widget
    \param x,y offsets where to print relatively to coordinates origin
+   \param height height of the current drawing area
    */
-  virtual int print(Fl_Abstract_Printer* p, Fl_Widget* w, int x, int y) { 
return 0; }
+  virtual int print(Fl_Widget* w, int x, int y, int height) { return 0; }
 };
 
 #endif // Fl_Printer_H

Modified: branches/branch-1.3/src/Fl_Abstract_Printer.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Abstract_Printer.cxx     2010-04-06 17:26:58 UTC 
(rev 7457)
+++ branches/branch-1.3/src/Fl_Abstract_Printer.cxx     2010-04-06 17:38:27 UTC 
(rev 7458)
@@ -66,7 +66,11 @@
   if (widget->as_gl_window()) {
     Fl_Plugin_Manager pm("fltk:device");  
     Fl_Device_Plugin *pi = 
(Fl_Device_Plugin*)pm.plugin("opengl.device.fltk.org");
-    if (pi) drawn_by_plugin = pi->print(this, widget, 0, 0);
+    if (pi) {
+      int width, height;
+      this->printable_rect(&width, &height);
+      drawn_by_plugin = pi->print(widget, 0, 0, height);
+    }
   }
   if (!drawn_by_plugin) {
     widget->draw();

Modified: branches/branch-1.3/src/Fl_Gl_Device_Plugin.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Gl_Device_Plugin.cxx     2010-04-06 17:26:58 UTC 
(rev 7457)
+++ branches/branch-1.3/src/Fl_Gl_Device_Plugin.cxx     2010-04-06 17:38:27 UTC 
(rev 7458)
@@ -40,7 +40,7 @@
 }
 #endif
 
-static void print_gl_window(Fl_Abstract_Printer *printer, Fl_Gl_Window *glw, 
int x, int y)
+static void print_gl_window(Fl_Gl_Window *glw, int x, int y, int height)
 {
 #ifdef WIN32
   HDC save_gc = fl_gc;
@@ -105,11 +105,9 @@
    , provider, NULL, false, kCGRenderingIntentDefault);
   if(image == NULL) return;
   CGContextSaveGState(fl_gc);
-  int w, h;
-  printer->printable_rect(&w, &h);
-  CGContextTranslateCTM(fl_gc, 0, h);
+  CGContextTranslateCTM(fl_gc, 0, height);
   CGContextScaleCTM(fl_gc, 1.0f, -1.0f);
-  CGRect rect = { { x, h - y - glw->h() }, { glw->w(), glw->h() } };
+  CGRect rect = { { x, height - y - glw->h() }, { glw->w(), glw->h() } };
   Fl_X::q_begin_image(rect, 0, 0, glw->w(), glw->h());
   CGContextDrawImage(fl_gc, rect, image);
   Fl_X::q_end_image();
@@ -130,17 +128,11 @@
 class Fl_Gl_Device_Plugin : public Fl_Device_Plugin {
 public:
   Fl_Gl_Device_Plugin() : Fl_Device_Plugin(name()) { }
-  /** \brief Returns the plugin name */
   virtual const char *name() { return "opengl.device.fltk.org"; }
-  /** \brief Prints a widget 
-   \param p the printer
-   \param w the widget
-   \param x,y offsets where to print relatively to coordinates origin
-   */
-  virtual int print(Fl_Abstract_Printer *p, Fl_Widget *w, int x, int y) {
+  virtual int print(Fl_Widget *w, int x, int y, int height) {
     Fl_Gl_Window *glw = w->as_gl_window();
     if (!glw) return 0;
-    print_gl_window(p, glw, x, y);
+    print_gl_window(glw, x, y, height);
     return 1; 
   }
 };

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to