diff options
| author | Manolo Gouy <Manolo> | 2010-03-16 15:17:33 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2010-03-16 15:17:33 +0000 |
| commit | 7f001d1fb95273b59b5ccf6a6db5bd98a4ad802b (patch) | |
| tree | a354e31a7e880e7395ac9f0cec8c09042aaefb74 | |
| parent | b5e2d38b2fbabcf37637cd857fc70d8567978b17 (diff) | |
Added Fl_PSfile_Device::start_job() with user-given filename.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7277 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | FL/Fl_Printer.H | 24 | ||||
| -rw-r--r-- | src/Fl_PS_Printer.cxx | 15 |
2 files changed, 28 insertions, 11 deletions
diff --git a/FL/Fl_Printer.H b/FL/Fl_Printer.H index a6d7848f3..b175e99d2 100644 --- a/FL/Fl_Printer.H +++ b/FL/Fl_Printer.H @@ -66,9 +66,6 @@ public: /** @brief Starts a print job. * - Fully implemented for Mac OS X and MSWindows. For other platforms, temporarily - implemented as an Fl_PSfile_Device, that is, graphics go to an A4-sized local PostScript file, - and frompage/topage arguments are ignored. @param[in] pagecount the total number of pages of the job @param[out] frompage if non-null, *frompage is set to the first page the user wants printed @param[out] topage if non-null, *topage is set to the last page the user wants printed @@ -511,16 +508,26 @@ public: @return 0 iff OK */ int start_job(int pagecount, enum Page_Format format = A4, enum Page_Layout layout = PORTRAIT); + + /** + @brief Begins the session where all graphics will go to named PostScript file. + * + @param fname The name of the output local PostScript file. + @param pagecount The total number of pages to be created. + @param format Desired page format. + @param layout Desired page layout. + @return 0 iff OK + */ + int start_job(const char *fname, int pagecount, enum Page_Format format = A4, enum Page_Layout layout = PORTRAIT); + }; #ifndef FL_DOXYGEN #ifdef __APPLE__ -class Fl_Printer : public Fl_Quartz_Printer { -}; +typedef Fl_Quartz_Printer Fl_Printer; #elif defined(WIN32) -class Fl_Printer : public Fl_GDI_Printer { -}; +typedef Fl_GDI_Printer Fl_Printer; #else class Fl_PS_Printer : public Fl_PSfile_Device { public: @@ -528,8 +535,7 @@ public: ~Fl_PS_Printer(void) {}; int start_job(int pages, int *firstpage = NULL, int *lastpage = NULL); }; -class Fl_Printer : public Fl_PS_Printer { -}; +typedef Fl_PS_Printer Fl_Printer; #endif // __APPLE__ diff --git a/src/Fl_PS_Printer.cxx b/src/Fl_PS_Printer.cxx index 8504b28b7..82f0bd921 100644 --- a/src/Fl_PS_Printer.cxx +++ b/src/Fl_PS_Printer.cxx @@ -178,8 +178,11 @@ static const char * prolog = // width (string) x y show_pos_width "/show_pos_width {GS moveto dup stringwidth pop 3 2 roll exch div -1 matrix scale concat " "show GR } bind def\n" -//"/show_pos_width {GS moveto dup stringwidth pop 3 2 roll exch div dup /sx exch def -1 matrix scale concat " -//"show 6 FS sx 10 string cvs show GR } bind def\n" // displays also scaling value + +//"/show_pos_width {GS moveto dup stringwidth pop 3 2 roll exch div " +//"dup 0.85 lt {pop 0.85} if " +//"dup /sx exch def -1 matrix scale concat " +//"show 8 FS sx 10 string cvs 0 4 getinterval 0 -3 rmoveto show GR } bind def\n" // displays also scaling value ; @@ -1186,6 +1189,14 @@ int Fl_PSfile_Device::start_job (int pagecount, enum Page_Format format, enum Pa return start_postscript(pagecount, format, layout); } +int Fl_PSfile_Device::start_job (const char *fname, int pagecount, enum Page_Format format, enum Page_Layout layout) +{ + output = fopen(fname, "w"); + if(output == NULL) return 1; + ps_filename_ = strdup(fname); + return start_postscript(pagecount, format, layout); +} + void Fl_PSfile_Device::end_job (void) // finishes PostScript & closes file { |
