summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2020-07-11 12:21:25 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2020-07-11 12:21:25 +0200
commit2984fe638cefe617f749950622ee58a31c6b3ca1 (patch)
treec8963fd87eace84d693db111d4b4457de8d3b4bc
parent8d5eed3c82fa6f59c4f9d860f1d5c6bbdd837d80 (diff)
Fix for building without print support (GitHub issue #98).
-rw-r--r--FL/Fl_PostScript.H2
-rw-r--r--src/Fl_Printer.cxx13
-rw-r--r--test/device.cxx6
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);
}