From e11677bfaf1f7d36aae359ed394b611c2d933140 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Tue, 4 Jan 2011 21:42:02 +0000 Subject: Better position of the Fl_Printer class in the Fl_Device class hierarchy. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8188 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_GDI_Printer.cxx | 28 +++++++++--------- src/Fl_PostScript.cxx | 2 +- src/Fl_Printer.cxx | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ src/Fl_Quartz_Printer.mm | 22 +++++++------- 4 files changed, 100 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/Fl_GDI_Printer.cxx b/src/Fl_GDI_Printer.cxx index d2f9d1d59..d65efaddd 100644 --- a/src/Fl_GDI_Printer.cxx +++ b/src/Fl_GDI_Printer.cxx @@ -34,13 +34,13 @@ extern HWND fl_window; -Fl_Printer::Fl_System_Printer(void) : Fl_Paged_Device() { +Fl_System_Printer::Fl_System_Printer(void) : Fl_Paged_Device() { hPr = NULL; type_ = device_type; driver(fl_graphics_driver); } -Fl_Printer::~Fl_System_Printer(void) { +Fl_System_Printer::~Fl_System_Printer(void) { if (hPr) end_job(); } @@ -61,7 +61,7 @@ static void WIN_SetupPrinterDeviceContext(HDC prHDC) } -int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) +int Fl_System_Printer::start_job (int pagecount, int *frompage, int *topage) // returns 0 iff OK { DWORD commdlgerr; @@ -116,7 +116,7 @@ int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) return err; } -void Fl_Printer::end_job (void) +void Fl_System_Printer::end_job (void) { Fl_Display_Device::display_device()->set_current(); if (hPr != NULL) { @@ -137,7 +137,7 @@ void Fl_Printer::end_job (void) hPr = NULL; } -void Fl_Printer::absolute_printable_rect(int *x, int *y, int *w, int *h) +void Fl_System_Printer::absolute_printable_rect(int *x, int *y, int *w, int *h) { POINT physPageSize; POINT pixelsPerInch; @@ -163,7 +163,7 @@ void Fl_Printer::absolute_printable_rect(int *x, int *y, int *w, int *h) origin(x_offset, y_offset); } -void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) +void Fl_System_Printer::margins(int *left, int *top, int *right, int *bottom) { int x, y, w, h; absolute_printable_rect(&x, &y, &w, &h); @@ -173,14 +173,14 @@ void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) if (bottom) *bottom = y; } -int Fl_Printer::printable_rect(int *w, int *h) +int Fl_System_Printer::printable_rect(int *w, int *h) { int x, y; absolute_printable_rect(&x, &y, w, h); return 0; } -int Fl_Printer::start_page (void) +int Fl_System_Printer::start_page (void) { int rsult, w, h; @@ -201,14 +201,14 @@ int Fl_Printer::start_page (void) return rsult; } -void Fl_Printer::origin (int deltax, int deltay) +void Fl_System_Printer::origin (int deltax, int deltay) { SetWindowOrgEx(fl_gc, - left_margin - deltax, - top_margin - deltay, NULL); x_offset = deltax; y_offset = deltay; } -void Fl_Printer::scale (float scalex, float scaley) +void Fl_System_Printer::scale (float scalex, float scaley) { int w, h; SetWindowExtEx(fl_gc, (int)(720 / scalex + 0.5), (int)(720 / scaley + 0.5), NULL); @@ -216,7 +216,7 @@ void Fl_Printer::scale (float scalex, float scaley) origin(0, 0); } -void Fl_Printer::rotate (float rot_angle) +void Fl_System_Printer::rotate (float rot_angle) { XFORM mat; float angle; @@ -229,7 +229,7 @@ void Fl_Printer::rotate (float rot_angle) SetWorldTransform(fl_gc, &mat); } -int Fl_Printer::end_page (void) +int Fl_System_Printer::end_page (void) { int rsult; @@ -261,7 +261,7 @@ static void do_translate(int x, int y) ModifyWorldTransform(fl_gc, &tr, MWT_LEFTMULTIPLY); } -void Fl_Printer::translate (int x, int y) +void Fl_System_Printer::translate (int x, int y) { do_translate(x, y); if (translate_stack_depth < translate_stack_max) { @@ -271,7 +271,7 @@ void Fl_Printer::translate (int x, int y) } } -void Fl_Printer::untranslate (void) +void Fl_System_Printer::untranslate (void) { if (translate_stack_depth > 0) { translate_stack_depth--; diff --git a/src/Fl_PostScript.cxx b/src/Fl_PostScript.cxx index 01fb5c07f..5e98e899e 100644 --- a/src/Fl_PostScript.cxx +++ b/src/Fl_PostScript.cxx @@ -1471,7 +1471,7 @@ void Fl_PostScript_File_Device::end_job (void) } #if ! (defined(__APPLE__) || defined(WIN32) ) -int Fl_Printer::start_job(int pages, int *firstpage, int *lastpage) { +int Fl_PostScript_Printer::start_job(int pages, int *firstpage, int *lastpage) { enum Fl_Paged_Device::Page_Format format; enum Fl_Paged_Device::Page_Layout layout; diff --git a/src/Fl_Printer.cxx b/src/Fl_Printer.cxx index 94d53e280..a1c33a661 100644 --- a/src/Fl_Printer.cxx +++ b/src/Fl_Printer.cxx @@ -77,6 +77,11 @@ const char *Fl_Printer::property_save = "Save"; const char *Fl_Printer::property_cancel = "Cancel"; const char *Fl_Printer::device_type = "Fl_Printer"; +#if defined(__APPLE__) || defined(WIN32) +const char *Fl_System_Printer::device_type = "Fl_Printer"; +#elif !defined(FL_DOXYGEN) +const char *Fl_PostScript_Printer::device_type = "Fl_Printer"; +#endif #if defined(__APPLE__) || defined(WIN32) void Fl_System_Printer::set_current(void) @@ -90,6 +95,75 @@ void Fl_System_Printer::set_current(void) } #endif +Fl_Printer::Fl_Printer(void) { +#if defined(WIN32) || defined(__APPLE__) + printer = new Fl_System_Printer(); +#else + printer = new Fl_PostScript_Printer(); +#endif +} + +int Fl_Printer::start_job(int pagecount, int *frompage, int *topage) +{ + return printer->start_job(pagecount, frompage, topage); +} + +int Fl_Printer::start_page(void) +{ + return printer->start_page(); +} + +int Fl_Printer::printable_rect(int *w, int *h) +{ + return printer->printable_rect(w, h); +} + +void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) +{ + printer->margins(left, top, right, bottom); +} + +void Fl_Printer::origin(int x, int y) +{ + printer->origin(x, y); +} + +void Fl_Printer::scale(float scale_x, float scale_y) +{ + printer->scale(scale_x, scale_y); +} + +void Fl_Printer::rotate(float angle) +{ + printer->rotate(angle); +} + +void Fl_Printer::translate(int x, int y) +{ + printer->translate(x, y); +} + +void Fl_Printer::untranslate(void) +{ + printer->untranslate(); +} + +int Fl_Printer::end_page (void) +{ + return printer->end_page(); +} + +void Fl_Printer::end_job (void) +{ + printer->end_job(); +} + +Fl_Printer::~Fl_Printer(void) +{ + delete printer; +} + + // // End of "$Id$". // diff --git a/src/Fl_Quartz_Printer.mm b/src/Fl_Quartz_Printer.mm index e531fa706..31de4137a 100644 --- a/src/Fl_Quartz_Printer.mm +++ b/src/Fl_Quartz_Printer.mm @@ -47,7 +47,7 @@ Fl_System_Printer::Fl_System_Printer(void) Fl_System_Printer::~Fl_System_Printer(void) {} -int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) +int Fl_System_Printer::start_job (int pagecount, int *frompage, int *topage) //printing using a Quartz graphics context //returns 0 iff OK { @@ -139,7 +139,7 @@ int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) return 0; } -void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) +void Fl_System_Printer::margins(int *left, int *top, int *right, int *bottom) { PMPaper paper; PMGetPageFormatPaper(pageFormat, &paper); @@ -161,7 +161,7 @@ void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) } } -int Fl_Printer::printable_rect(int *w, int *h) +int Fl_System_Printer::printable_rect(int *w, int *h) //returns 0 iff OK { OSStatus status; @@ -178,7 +178,7 @@ int Fl_Printer::printable_rect(int *w, int *h) return 0; } -void Fl_Printer::origin(int x, int y) +void Fl_System_Printer::origin(int x, int y) { x_offset = x; y_offset = y; @@ -191,7 +191,7 @@ void Fl_Printer::origin(int x, int y) CGContextSaveGState(fl_gc); } -void Fl_Printer::scale (float s_x, float s_y) +void Fl_System_Printer::scale (float s_x, float s_y) { scale_x = s_x; scale_y = s_y; @@ -204,7 +204,7 @@ void Fl_Printer::scale (float s_x, float s_y) CGContextSaveGState(fl_gc); } -void Fl_Printer::rotate (float rot_angle) +void Fl_System_Printer::rotate (float rot_angle) { angle = - rot_angle * M_PI / 180.; CGContextRestoreGState(fl_gc); @@ -216,20 +216,20 @@ void Fl_Printer::rotate (float rot_angle) CGContextSaveGState(fl_gc); } -void Fl_Printer::translate(int x, int y) +void Fl_System_Printer::translate(int x, int y) { CGContextSaveGState(fl_gc); CGContextTranslateCTM(fl_gc, x, y ); CGContextSaveGState(fl_gc); } -void Fl_Printer::untranslate(void) +void Fl_System_Printer::untranslate(void) { CGContextRestoreGState(fl_gc); CGContextRestoreGState(fl_gc); } -int Fl_Printer::start_page (void) +int Fl_System_Printer::start_page (void) { OSStatus status = PMSessionBeginPageNoDialog(printSession, pageFormat, NULL); #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 @@ -278,7 +278,7 @@ int Fl_Printer::start_page (void) return status != noErr; } -int Fl_Printer::end_page (void) +int Fl_System_Printer::end_page (void) { CGContextFlush(fl_gc); CGContextRestoreGState(fl_gc); @@ -289,7 +289,7 @@ int Fl_Printer::end_page (void) return status != noErr; } -void Fl_Printer::end_job (void) +void Fl_System_Printer::end_job (void) { OSStatus status; -- cgit v1.2.3