Some fine tuning after introduction of Fl_Gl_Window-capable Fl_Printer::print_widget()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7281 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
762d02fb62
commit
8e4d054650
@ -45,13 +45,6 @@ void Fl_Virtual_Printer::print_widget(Fl_Widget* widget, int delta_x, int delta_
|
||||
}
|
||||
// if widget is a window, clip all drawings to the window area
|
||||
if (is_window) fl_push_clip(0, 0, widget->w(), widget->h() );
|
||||
#ifdef __APPLE__
|
||||
CGContextRef save_gc = fl_gc;
|
||||
#elif defined(WIN32) // && !defined(__CYGWIN__)
|
||||
HDC save_gc = fl_gc;
|
||||
#else
|
||||
_XGC *save_gc = fl_gc; // FIXME
|
||||
#endif
|
||||
// we do some trickery to recognize OpenGL windows and draw them via a plugin
|
||||
int drawn_by_plugin = 0;
|
||||
if (widget->as_gl_window()) {
|
||||
@ -59,10 +52,9 @@ void Fl_Virtual_Printer::print_widget(Fl_Widget* widget, int delta_x, int delta_
|
||||
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 (!drawn_by_plugin)
|
||||
widget->draw();
|
||||
|
||||
fl_gc = save_gc;
|
||||
if (!drawn_by_plugin) {
|
||||
widget->draw();
|
||||
}
|
||||
if (is_window) fl_pop_clip();
|
||||
// find subwindows of widget and print them
|
||||
traverse(widget);
|
||||
|
@ -91,8 +91,8 @@ void Fl_Gl_Printer::print_gl_window(Fl_Gl_Window *glw, int x, int y)
|
||||
}
|
||||
|
||||
/*
|
||||
This class will make sure that OpenGL printing is availbale if fltk_gl
|
||||
was linked to the programm.
|
||||
This class will make sure that OpenGL printing is available if fltk_gl
|
||||
was linked to the program.
|
||||
*/
|
||||
class Fl_Gl_Device_Plugin : public Fl_Device_Plugin {
|
||||
public:
|
||||
|
@ -170,8 +170,6 @@ void print_cb(Fl_Widget *w, void *data)
|
||||
if( printer.start_page() ) return;
|
||||
printer.scale(0.5,0.5);
|
||||
printer.print_widget( win );
|
||||
printer.print_gl_window( cube, cube->x(), cube->y() );
|
||||
printer.print_gl_window( cube2, cube2->x(), cube2->y() );
|
||||
printer.end_page();
|
||||
printer.end_job();
|
||||
}
|
||||
|
@ -1420,38 +1420,9 @@ menu(int choice)
|
||||
}
|
||||
}
|
||||
|
||||
// added to demo printing
|
||||
#include <FL/Fl_Sys_Menu_Bar.H>
|
||||
#include <FL/Fl_Gl_Printer.H>
|
||||
|
||||
void print_cb(Fl_Widget *w, void *data)
|
||||
{
|
||||
Fl_Gl_Printer printer;
|
||||
Fl_Window *win = Fl::first_window();
|
||||
if(!win) return;
|
||||
if( printer.start_job(1) ) return;
|
||||
if( printer.start_page() ) return;
|
||||
printer.scale(0.68,0.68);
|
||||
printer.print_gl_window( (Fl_Gl_Window*)win );
|
||||
printer.end_page();
|
||||
printer.end_job();
|
||||
}
|
||||
// end of printing demo
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
// added to demo printing
|
||||
static Fl_Menu_Item items[] = {
|
||||
{ "Menu", 0, 0, 0, FL_SUBMENU },
|
||||
{ "Print", 0, print_cb, 0, 0 },
|
||||
{ 0 },
|
||||
{ 0 }
|
||||
};
|
||||
Fl_Sys_Menu_Bar *menubar_;
|
||||
menubar_ = new Fl_Sys_Menu_Bar(0, 0, 1, 25);
|
||||
menubar_->menu(items);
|
||||
// end of printing demo
|
||||
long i;
|
||||
|
||||
glutInit(&argc, argv);
|
||||
|
Loading…
Reference in New Issue
Block a user