summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2010-03-16 15:17:33 +0000
committerManolo Gouy <Manolo>2010-03-16 15:17:33 +0000
commit7f001d1fb95273b59b5ccf6a6db5bd98a4ad802b (patch)
treea354e31a7e880e7395ac9f0cec8c09042aaefb74
parentb5e2d38b2fbabcf37637cd857fc70d8567978b17 (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.H24
-rw-r--r--src/Fl_PS_Printer.cxx15
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
{