From 2984fe638cefe617f749950622ee58a31c6b3ca1 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 11 Jul 2020 12:21:25 +0200 Subject: Fix for building without print support (GitHub issue #98). --- FL/Fl_PostScript.H | 2 +- src/Fl_Printer.cxx | 13 +++++++++++-- test/device.cxx | 6 ++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/FL/Fl_PostScript.H b/FL/Fl_PostScript.H index b5b84e422..489916d6b 100644 --- a/FL/Fl_PostScript.H +++ b/FL/Fl_PostScript.H @@ -357,7 +357,7 @@ public: ~Fl_EPS_File_Surface(); virtual int printable_rect(int *w, int *h); /** Returns the underlying FILE pointer */ - FILE *file() { return driver()->output; } + FILE *file() { return driver() ? driver()->output : NULL; } virtual void origin(int x, int y); virtual void origin(int *px, int *py); virtual void translate(int x, int y); diff --git a/src/Fl_Printer.cxx b/src/Fl_Printer.cxx index 22b2a891e..4c88607b7 100644 --- a/src/Fl_Printer.cxx +++ b/src/Fl_Printer.cxx @@ -27,7 +27,7 @@ Fl_Printer::Fl_Printer(void) { Fl_Paged_Device* Fl_Printer::newPrinterDriver(void) { return NULL; } -int Fl_Printer::begin_job(int pagecount, int *frompage, int *topage) {return 1;} +int Fl_Printer::begin_job(int pagecount, int *frompage, int *topage, char **perr_message) {return 2;} int Fl_Printer::begin_page(void) {return 1;} int Fl_Printer::printable_rect(int *w, int *h) {return 1;} void Fl_Printer::margins(int *left, int *top, int *right, int *bottom) {} @@ -41,6 +41,7 @@ int Fl_Printer::end_page (void) {return 1;} void Fl_Printer::end_job (void) {} void Fl_Printer::draw_decorated_window(Fl_Window* win, int delta_x, int delta_y) {} void Fl_Printer::set_current(void) {} +bool Fl_Printer::is_current(void) {return false;} Fl_Printer::~Fl_Printer(void) {} const char *Fl_Printer::dialog_title = NULL; @@ -64,7 +65,7 @@ const char *Fl_Printer::property_save = NULL; const char *Fl_Printer::property_cancel = NULL; Fl_PostScript_File_Device::Fl_PostScript_File_Device(void) {} -int Fl_PostScript_File_Device::begin_job(int pagecount, int* from, int* to) {return 1;} +int Fl_PostScript_File_Device::begin_job(int pagecount, int* from, int* to, char **perr_message) {return 2;} int Fl_PostScript_File_Device::begin_job(int pagecount, enum Fl_Paged_Device::Page_Format format, enum Fl_Paged_Device::Page_Layout layout) {return 1;} int Fl_PostScript_File_Device::begin_job(FILE *ps_output, int pagecount, enum Fl_Paged_Device::Page_Format format, @@ -82,6 +83,14 @@ int Fl_PostScript_File_Device::end_page (void) {return 1;} void Fl_PostScript_File_Device::end_job(void) {} Fl_PostScript_File_Device::~Fl_PostScript_File_Device(void) {} +Fl_EPS_File_Surface::Fl_EPS_File_Surface(int width, int height, FILE *eps, Fl_Color background) : Fl_Widget_Surface(NULL) {} +Fl_EPS_File_Surface::~Fl_EPS_File_Surface() {} +void Fl_EPS_File_Surface::origin(int, int) {} +void Fl_EPS_File_Surface::origin(int*, int*) {} +int Fl_EPS_File_Surface::printable_rect(int*, int*) {return 1;} +void Fl_EPS_File_Surface::translate(int, int) {} +void Fl_EPS_File_Surface::untranslate() {} + #else // print dialog customization strings diff --git a/test/device.cxx b/test/device.cxx index e922a77cd..e5e827073 100644 --- a/test/device.cxx +++ b/test/device.cxx @@ -643,9 +643,11 @@ void copy(Fl_Widget *, void *data) { wh = target->h(); } Fl_EPS_File_Surface p(ww, wh, eps); - if (target->as_window()) p.draw_decorated_window(target->as_window()); - else p.draw(target); + if (p.file()) { + if (target->as_window()) p.draw_decorated_window(target->as_window()); + else p.draw(target); //p.close(); + } } fclose(eps); } -- cgit v1.2.3