]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/postscrp.cpp
Converted the virtual-methods-callbacks into real events, leaving the
[wxWidgets.git] / src / common / postscrp.cpp
index 4e981b1fd3a7c426a36cfcd1eee1e1325457c7ef..4ec4a8934c4a9136026d092b2d3136f68068cb0b 100644 (file)
 
 #if wxUSE_IOSTREAMH
 #include <iostream.h>
 
 #if wxUSE_IOSTREAMH
 #include <iostream.h>
+#include <fstream.h>
 #else
 #include <iostream>
 #else
 #include <iostream>
+#include <fstream>
+#  ifdef _MSC_VER
+      using namespace std;
+#  endif
 #endif
 
 #endif
 
-#include <fstream.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -161,13 +165,14 @@ static char *fileBuffer = NULL;
 #endif
 
 #if !USE_SHARED_LIBRARY
 #endif
 
 #if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule)
 IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
 #endif
 
 IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
 #endif
 
-wxPostScriptDC::wxPostScriptDC (void)
+wxPostScriptDC::wxPostScriptDC ()
 {
 //  m_yOrigin = 792;                       // For EPS output
   m_yOrigin = 842;                         // For A4 output
 {
 //  m_yOrigin = 792;                       // For EPS output
   m_yOrigin = 842;                         // For A4 output
@@ -231,7 +236,7 @@ bool wxPostScriptDC::Create(const wxString& file, bool interactive, wxWindow *pa
   return m_ok;
 }
 
   return m_ok;
 }
 
-wxPostScriptDC::~wxPostScriptDC (void)
+wxPostScriptDC::~wxPostScriptDC ()
 {
   if (m_pstream)
     delete m_pstream;
 {
   if (m_pstream)
     delete m_pstream;
@@ -294,13 +299,13 @@ void wxPostScriptDC::SetClippingRegion (long cx, long cy, long cw, long ch)
   *m_pstream << "gsave\n";
   *m_pstream << "newpath\n";
   *m_pstream << cx << " " << YSCALE (cy) << " moveto\n";
   *m_pstream << "gsave\n";
   *m_pstream << "newpath\n";
   *m_pstream << cx << " " << YSCALE (cy) << " moveto\n";
-  *m_pstream << cx + cw << " " << YSCALE (cy) << " lineto\n";
+  *m_pstream << (cx + cw) << " " << YSCALE (cy) << " lineto\n";
   *m_pstream << cx + cw << " " << YSCALE (cy + ch) << " lineto\n";
   *m_pstream << cx << " " << YSCALE (cy + ch) << " lineto\n";
   *m_pstream << "closepath clip newpath\n";
 }
 
   *m_pstream << cx + cw << " " << YSCALE (cy + ch) << " lineto\n";
   *m_pstream << cx << " " << YSCALE (cy + ch) << " lineto\n";
   *m_pstream << "closepath clip newpath\n";
 }
 
-void wxPostScriptDC::DestroyClippingRegion (void)
+void wxPostScriptDC::DestroyClippingRegion ()
 {
   if (!m_pstream)
     return;
 {
   if (!m_pstream)
     return;
@@ -311,7 +316,7 @@ void wxPostScriptDC::DestroyClippingRegion (void)
     }
 }
 
     }
 }
 
-void wxPostScriptDC::Clear (void)
+void wxPostScriptDC::Clear ()
 {
 }
 
 {
 }
 
@@ -413,10 +418,10 @@ void wxPostScriptDC::DrawEllipticArc(long x,long y,long w,long h,double sa,doubl
     {
       SetBrush (m_brush);
 
     {
       SetBrush (m_brush);
 
-      *m_pstream << 
+      *m_pstream <<
          "newpath\n" <<
          "newpath\n" <<
-         x+w/2 << " " << YSCALE (y+h/2) << " " <<
-         w/2 << " " << h/2 << " " <<
+         (x+w/2) << " " << YSCALE (y+h/2) << " " <<
+         w/2 << " " << (h/2) << " " <<
          int(sa) <<" "<< int(ea)<<" true ellipticarc\n";
 
       CalcBoundingBox (x , (long)YSCALE (y ));
          int(sa) <<" "<< int(ea)<<" true ellipticarc\n";
 
       CalcBoundingBox (x , (long)YSCALE (y ));
@@ -426,10 +431,10 @@ void wxPostScriptDC::DrawEllipticArc(long x,long y,long w,long h,double sa,doubl
     {
       SetPen (m_pen);
 
     {
       SetPen (m_pen);
 
-      *m_pstream << 
+      *m_pstream <<
          "newpath\n" <<
          "newpath\n" <<
-         x+w/2 << " " << YSCALE (y+h/2) << " " <<
-         w/2 << " " << h/2 << " " <<
+         (x+w/2) << " " << YSCALE (y+h/2) << " " <<
+         (w/2) << " " << (h/2) << " " <<
          int(sa) <<" "<< int(ea)<<" false ellipticarc\n";
 
       CalcBoundingBox (x , (long)YSCALE (y ));
          int(sa) <<" "<< int(ea)<<" false ellipticarc\n";
 
       CalcBoundingBox (x , (long)YSCALE (y ));
@@ -545,8 +550,8 @@ void wxPostScriptDC::DrawRectangle (long x, long y, long width, long height)
 
       *m_pstream << "newpath\n";
       *m_pstream << x << " " << YSCALE (y) << " moveto\n";
 
       *m_pstream << "newpath\n";
       *m_pstream << x << " " << YSCALE (y) << " moveto\n";
-      *m_pstream << x + width << " " << YSCALE (y) << " lineto\n";
-      *m_pstream << x + width << " " << YSCALE (y + height) << " lineto\n";
+      *m_pstream << (x + width) << " " << YSCALE (y) << " lineto\n";
+      *m_pstream << (x + width) << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << x << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << "closepath\n";
       *m_pstream << "fill\n";
       *m_pstream << x << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << "closepath\n";
       *m_pstream << "fill\n";
@@ -560,8 +565,8 @@ void wxPostScriptDC::DrawRectangle (long x, long y, long width, long height)
 
       *m_pstream << "newpath\n";
       *m_pstream << x << " " << YSCALE (y) << " moveto\n";
 
       *m_pstream << "newpath\n";
       *m_pstream << x << " " << YSCALE (y) << " moveto\n";
-      *m_pstream << x + width << " " << YSCALE (y) << " lineto\n";
-      *m_pstream << x + width << " " << YSCALE (y + height) << " lineto\n";
+      *m_pstream << (x + width) << " " << YSCALE (y) << " lineto\n";
+      *m_pstream << (x + width) << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << x << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << "closepath\n";
       *m_pstream << "stroke\n";
       *m_pstream << x << " " << YSCALE (y + height) << " lineto\n";
       *m_pstream << "closepath\n";
       *m_pstream << "stroke\n";
@@ -593,19 +598,19 @@ void wxPostScriptDC::DrawRoundedRectangle (long x, long y, long width, long heig
       SetBrush (m_brush);
       // Draw rectangle anticlockwise
       *m_pstream << "newpath\n";
       SetBrush (m_brush);
       // Draw rectangle anticlockwise
       *m_pstream << "newpath\n";
-      *m_pstream << x + radius << " " << YSCALE (y + radius) << " " << radius << " 90 180 arc\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y + radius) << " " << radius << " 90 180 arc\n";
 
       *m_pstream << x << " " << YSCALE (y + radius) << " moveto\n";
 
 
       *m_pstream << x << " " << YSCALE (y + radius) << " moveto\n";
 
-      *m_pstream << x + radius << " " << YSCALE (y + height - radius) << " " << radius << " 180 270 arc\n";
-      *m_pstream << x + width - radius << " " << YSCALE (y + height) << " lineto\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y + height - radius) << " " << radius << " 180 270 arc\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + height) << " lineto\n";
 
 
-      *m_pstream << x + width - radius << " " << YSCALE (y + height - radius) << " " << radius << " 270 0 arc\n";
-      *m_pstream << x + width << " " << YSCALE (y + radius) << " lineto\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + height - radius) << " " << radius << " 270 0 arc\n";
+      *m_pstream << (x + width) << " " << YSCALE (y + radius) << " lineto\n";
 
 
-      *m_pstream << x + width - radius << " " << YSCALE (y + radius) << " " << radius << " 0 90 arc\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + radius) << " " << radius << " 0 90 arc\n";
 
 
-      *m_pstream << x + radius << " " << YSCALE (y) << " lineto\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y) << " lineto\n";
 
       *m_pstream << "closepath\n";
 
 
       *m_pstream << "closepath\n";
 
@@ -619,19 +624,19 @@ void wxPostScriptDC::DrawRoundedRectangle (long x, long y, long width, long heig
       SetPen (m_pen);
       // Draw rectangle anticlockwise
       *m_pstream << "newpath\n";
       SetPen (m_pen);
       // Draw rectangle anticlockwise
       *m_pstream << "newpath\n";
-      *m_pstream << x + radius << " " << YSCALE (y + radius) << " " << radius << " 90 180 arc\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y + radius) << " " << radius << " 90 180 arc\n";
 
       *m_pstream << x << " " << YSCALE (y + height - radius) << " lineto\n";
 
 
       *m_pstream << x << " " << YSCALE (y + height - radius) << " lineto\n";
 
-      *m_pstream << x + radius << " " << YSCALE (y + height - radius) << " " << radius << " 180 270 arc\n";
-      *m_pstream << x + width - radius << " " << YSCALE (y + height) << " lineto\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y + height - radius) << " " << radius << " 180 270 arc\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + height) << " lineto\n";
 
 
-      *m_pstream << x + width - radius << " " << YSCALE (y + height - radius) << " " << radius << " 270 0 arc\n";
-      *m_pstream << x + width << " " << YSCALE (y + radius) << " lineto\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + height - radius) << " " << radius << " 270 0 arc\n";
+      *m_pstream << (x + width) << " " << YSCALE (y + radius) << " lineto\n";
 
 
-      *m_pstream << x + width - radius << " " << YSCALE (y + radius) << " " << radius << " 0 90 arc\n";
+      *m_pstream << (x + width - radius) << " " << YSCALE (y + radius) << " " << radius << " 0 90 arc\n";
 
 
-      *m_pstream << x + radius << " " << YSCALE (y) << " lineto\n";
+      *m_pstream << (x + radius) << " " << YSCALE (y) << " lineto\n";
 
       *m_pstream << "closepath\n";
 
 
       *m_pstream << "closepath\n";
 
@@ -651,8 +656,8 @@ void wxPostScriptDC::DrawEllipse (long x, long y, long width, long height)
       SetBrush (m_brush);
 
       *m_pstream << "newpath\n";
       SetBrush (m_brush);
 
       *m_pstream << "newpath\n";
-      *m_pstream << x + width / 2 << " " << YSCALE (y + height / 2) << " ";
-      *m_pstream << width / 2 << " " << height / 2 << " 0 360 ellipse\n";
+      *m_pstream << (x + width / 2) << " " << YSCALE (y + height / 2) << " ";
+      *m_pstream << (width / 2) << " " << (height / 2) << " 0 360 ellipse\n";
       *m_pstream << "fill\n";
 
       CalcBoundingBox (x - width, (long)YSCALE (y - height));
       *m_pstream << "fill\n";
 
       CalcBoundingBox (x - width, (long)YSCALE (y - height));
@@ -663,8 +668,8 @@ void wxPostScriptDC::DrawEllipse (long x, long y, long width, long height)
       SetPen (m_pen);
 
       *m_pstream << "newpath\n";
       SetPen (m_pen);
 
       *m_pstream << "newpath\n";
-      *m_pstream << x + width / 2 << " " << YSCALE (y + height / 2) << " ";
-      *m_pstream << width / 2 << " " << height / 2 << " 0 360 ellipse\n";
+      *m_pstream << (x + width / 2) << " " << YSCALE (y + height / 2) << " ";
+      *m_pstream << (width / 2) << " " << (height / 2) << " 0 360 ellipse\n";
       *m_pstream << "stroke\n";
 
       CalcBoundingBox (x - width, (long)YSCALE (y - height));
       *m_pstream << "stroke\n";
 
       CalcBoundingBox (x - width, (long)YSCALE (y - height));
@@ -767,7 +772,7 @@ void wxPostScriptDC::SetFont (const wxFont& the_font)
   strcpy (buf, name);
   strcat (buf, style);
   *m_pstream << buf << " findfont\n";
   strcpy (buf, name);
   strcat (buf, style);
   *m_pstream << buf << " findfont\n";
-  *m_pstream << m_font.GetPointSize() * m_scaleFactor << " scalefont setfont\n";
+  *m_pstream << (m_font.GetPointSize() * m_scaleFactor) << " scalefont setfont\n";
 }
 
 void wxPostScriptDC::SetPen (const wxPen& pen)
 }
 
 void wxPostScriptDC::SetPen (const wxPen& pen)
@@ -976,10 +981,10 @@ void wxPostScriptDC::DrawText (const wxString& text, long x, long y, bool WXUNUS
       *m_pstream << "gsave " << x << " " << YSCALE (y + size - UnderlinePosition)
                << " moveto\n"
                << UnderlineThickness << " setlinewidth "
       *m_pstream << "gsave " << x << " " << YSCALE (y + size - UnderlinePosition)
                << " moveto\n"
                << UnderlineThickness << " setlinewidth "
-               << x + w << " " << YSCALE (y + size - UnderlinePosition)
+               << (x + w) << " " << YSCALE (y + size - UnderlinePosition)
                << " lineto stroke grestore\n";
   }
                << " lineto stroke grestore\n";
   }
-  
+
   CalcBoundingBox (x, (long)YSCALE (y + size));
   CalcBoundingBox (x + size * strlen ((char *)(const char *)text), (long)YSCALE (y));
 }
   CalcBoundingBox (x, (long)YSCALE (y + size));
   CalcBoundingBox (x + size * strlen ((char *)(const char *)text), (long)YSCALE (y));
 }
@@ -1056,7 +1061,7 @@ bool wxPostScriptDC::StartDoc (const wxString& message)
       // VMS is sh*t!
       m_pstream = new ofstream;
       if(fileBuffer) delete[] fileBuffer;
       // VMS is sh*t!
       m_pstream = new ofstream;
       if(fileBuffer) delete[] fileBuffer;
-      fileBuffer = new char[VMS_BUFSIZ]; 
+      fileBuffer = new char[VMS_BUFSIZ];
       m_pstream->setbuf(fileBuffer,VMS_BUFSIZ);
       m_pstream->open(wxThePrintSetupData->GetPrinterFile());
 #else
       m_pstream->setbuf(fileBuffer,VMS_BUFSIZ);
       m_pstream->open(wxThePrintSetupData->GetPrinterFile());
 #else
@@ -1079,7 +1084,7 @@ bool wxPostScriptDC::StartDoc (const wxString& message)
 }
 
 
 }
 
 
-void wxPostScriptDC::EndDoc (void)
+void wxPostScriptDC::EndDoc ()
 {
     static char wxPostScriptHeaderReencodeISO1[] =
     "\n/reencodeISO {\n"
 {
     static char wxPostScriptHeaderReencodeISO1[] =
     "\n/reencodeISO {\n"
@@ -1216,7 +1221,7 @@ void wxPostScriptDC::EndDoc (void)
   *m_pstream << "%%BoundingBox: "
       << floor((double)llx) << " " << floor((double)lly) << " "
       << ceil((double)urx)  << " " << ceil((double)ury)  << "\n";
   *m_pstream << "%%BoundingBox: "
       << floor((double)llx) << " " << floor((double)lly) << " "
       << ceil((double)urx)  << " " << ceil((double)ury)  << "\n";
-  *m_pstream << "%%Pages: " << wxPageNumber - 1 << "\n";
+  *m_pstream << "%%Pages: " << (wxPageNumber - 1) << "\n";
   *m_pstream << "%%EndComments\n\n";
 
   // To check the correctness of the bounding box, postscript commands
   *m_pstream << "%%EndComments\n\n";
 
   // To check the correctness of the bounding box, postscript commands
@@ -1237,7 +1242,7 @@ void wxPostScriptDC::EndDoc (void)
   if (wxThePrintSetupData->GetPrinterOrientation() == PS_LANDSCAPE)
     {
       real_translate_y -= m_maxY;
   if (wxThePrintSetupData->GetPrinterOrientation() == PS_LANDSCAPE)
     {
       real_translate_y -= m_maxY;
-      // The following line can be used instead of the adjustment to 
+      // The following line can be used instead of the adjustment to
       // llx and urx above.
       // real_translate_y -= m_minX;
       *m_pstream << "90 rotate\n";
       // llx and urx above.
       // real_translate_y -= m_minX;
       *m_pstream << "90 rotate\n";
@@ -1247,7 +1252,7 @@ void wxPostScriptDC::EndDoc (void)
  * We should rationalise the scaling code to one place. JACS, October 1995
  * Do we take the next 2 lines out or not?
  */
  * We should rationalise the scaling code to one place. JACS, October 1995
  * Do we take the next 2 lines out or not?
  */
+
   *m_pstream << wx_printer_scale_x << " " << wx_printer_scale_y << " scale\n";
   *m_pstream << wx_printer_translate_x << " " << real_translate_y << " translate\n";
 #endif
   *m_pstream << wx_printer_scale_x << " " << wx_printer_scale_y << " scale\n";
   *m_pstream << wx_printer_translate_x << " " << real_translate_y << " translate\n";
 #endif
@@ -1303,7 +1308,7 @@ void wxPostScriptDC::EndDoc (void)
           char * opts = wxThePrintSetupData->GetPrinterOptions();
           if (opts && *opts)
               argv[argc++] = opts;
           char * opts = wxThePrintSetupData->GetPrinterOptions();
           if (opts && *opts)
               argv[argc++] = opts;
-              
+
           argv[argc++] = wxThePrintSetupData->GetPrinterFile();
           argv[argc++] = (char *) NULL;
          wxExecute (argv, TRUE);
           argv[argc++] = wxThePrintSetupData->GetPrinterFile();
           argv[argc++] = (char *) NULL;
          wxExecute (argv, TRUE);
@@ -1318,11 +1323,11 @@ void wxPostScriptDC::EndDoc (void)
 #endif
 }
 
 #endif
 }
 
-void wxPostScriptDC::StartPage (void)
+void wxPostScriptDC::StartPage ()
 {
   if (!m_pstream)
     return;
 {
   if (!m_pstream)
     return;
-  *m_pstream << "%%Page: " << wxPageNumber++ << "\n";
+  *m_pstream << "%%Page: " << (wxPageNumber++) << "\n";
 //  *m_pstream << "matrix currentmatrix\n";
 
     // Added by Chris Breeze
 //  *m_pstream << "matrix currentmatrix\n";
 
     // Added by Chris Breeze
@@ -1350,7 +1355,7 @@ void wxPostScriptDC::StartPage (void)
        *m_pstream << translate_x << " " << translate_y << " translate\n";
 }
 
        *m_pstream << translate_x << " " << translate_y << " translate\n";
 }
 
-void wxPostScriptDC::EndPage (void)
+void wxPostScriptDC::EndPage ()
 {
   if (!m_pstream)
     return;
 {
   if (!m_pstream)
     return;
@@ -1403,8 +1408,6 @@ void wxPostScriptDC::EndPage (void)
 #endif
 }
 
 #endif
 }
 
-/* MATTHEW: Implement Blit: */
-/* MATTHEW: [4] Re-wrote to use colormap */
 bool wxPostScriptDC::
 Blit (long xdest, long ydest, long fwidth, long fheight,
       wxDC *source, long xsrc, long ysrc, int WXUNUSED(rop), bool WXUNUSED(useMask))
 bool wxPostScriptDC::
 Blit (long xdest, long ydest, long fwidth, long fheight,
       wxDC *source, long xsrc, long ysrc, int WXUNUSED(rop), bool WXUNUSED(useMask))
@@ -1441,7 +1444,7 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
   XImage *image;
   long j, i;
   char s[3];
   XImage *image;
   long j, i;
   char s[3];
-  
+
 #ifdef __WXGTK__
 
   d = gdk_display;
 #ifdef __WXGTK__
 
   d = gdk_display;
@@ -1449,7 +1452,7 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
   GdkWindow *gwin = ((wxClientDC*)source)->GetWindow();
   image = XGetImage(d, ((GdkWindowPrivate*)gwin)->xwindow, x, y, width, height, AllPlanes, ZPixmap);
 
   GdkWindow *gwin = ((wxClientDC*)source)->GetWindow();
   image = XGetImage(d, ((GdkWindowPrivate*)gwin)->xwindow, x, y, width, height, AllPlanes, ZPixmap);
 
-#else  
+#else
 
 #ifdef __WXMOTIF__
   // TODO. for now, use global display
 
 #ifdef __WXMOTIF__
   // TODO. for now, use global display
@@ -1462,7 +1465,7 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
   cm = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) d);
   // TODO - implement GetPixmap() and uncomment this line
   //  image = XGetImage(d, source->GetPixmap(), x, y, width, height, AllPlanes, ZPixmap);
   cm = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) d);
   // TODO - implement GetPixmap() and uncomment this line
   //  image = XGetImage(d, source->GetPixmap(), x, y, width, height, AllPlanes, ZPixmap);
-  
+
 #endif
 
 
 #endif
 
 
@@ -1492,10 +1495,10 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
            pixel = cachedest[k];
            goto install;
          }
            pixel = cachedest[k];
            goto install;
          }
-      
+
       cachesrc[cache_pos] = xcol.pixel = spixel;
       XQueryColor(d, cm, &xcol);
       cachesrc[cache_pos] = xcol.pixel = spixel;
       XQueryColor(d, cm, &xcol);
-      
+
       long r, g, b;
 
       r = (long)((double)(xcol.red) / MAX_COLOR);
       long r, g, b;
 
       r = (long)((double)(xcol.red) / MAX_COLOR);
@@ -1505,13 +1508,13 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
       pixel = (int)(255 * sqrt(((r * r) + (g * g) + (b * b)) / 3));
 
       cachedest[cache_pos] = pixel;
       pixel = (int)(255 * sqrt(((r * r) + (g * g) + (b * b)) / 3));
 
       cachedest[cache_pos] = pixel;
-      
+
       if (++cache_pos >= CM_CACHE_SIZE) {
        cache_pos = 0;
        all_cache = TRUE;
       }
 
       if (++cache_pos >= CM_CACHE_SIZE) {
        cache_pos = 0;
        all_cache = TRUE;
       }
 
-    install:      
+    install:
       int h, l;
 
       h = (pixel >> 4) & 0xF;
       int h, l;
 
       h = (pixel >> 4) & 0xF;
@@ -1525,7 +1528,7 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
        s[1] = '0' + l;
       else
        s[1] = 'a' + (l - 10);
        s[1] = '0' + l;
       else
        s[1] = 'a' + (l - 10);
-      
+
       *m_pstream << s;
     }
     *m_pstream << "\n";
       *m_pstream << s;
     }
     *m_pstream << "\n";
@@ -1542,7 +1545,7 @@ Blit (long xdest, long ydest, long fwidth, long fheight,
   return TRUE;
 }
 
   return TRUE;
 }
 
-long wxPostScriptDC::GetCharHeight (void)
+long wxPostScriptDC::GetCharHeight ()
 {
   if (m_font.Ok())
     return  m_font.GetPointSize ();
 {
   if (m_font.Ok())
     return  m_font.GetPointSize ();
@@ -1578,7 +1581,7 @@ void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y,
     *externalLeading = 0;
 #else
   // +++++ start of contributed code +++++
     *externalLeading = 0;
 #else
   // +++++ start of contributed code +++++
-  
+
   // ************************************************************
   // method for calculating string widths in postscript:
   // read in the AFM (adobe font metrics) file for the
   // ************************************************************
   // method for calculating string widths in postscript:
   // read in the AFM (adobe font metrics) file for the
@@ -1671,16 +1674,16 @@ void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y,
     //
     //   C 63 ; WX 444 ; N question ; B 49 -14 395 676 ;
     //
     //
     //   C 63 ; WX 444 ; N question ; B 49 -14 395 676 ;
     //
-    // that means, we have a character with ascii code 63, and width 
+    // that means, we have a character with ascii code 63, and width
     // (444/1000 * fontSize) points.
     // the other data is ignored for now!
     //
     // when the font has changed, we read in the right AFM file and store the
     // character widths in an array, which is processed below (see point 3.).
     // (444/1000 * fontSize) points.
     // the other data is ignored for now!
     //
     // when the font has changed, we read in the right AFM file and store the
     // character widths in an array, which is processed below (see point 3.).
-    
+
         // new elements JC Sun Aug 25 23:21:44 MET DST 1996
 
         // new elements JC Sun Aug 25 23:21:44 MET DST 1996
 
-    
+
     strcat(afmName,name);
     strcat(afmName,".afm");
     FILE *afmFile = fopen(afmName,"r");
     strcat(afmName,name);
     strcat(afmName,".afm");
     FILE *afmFile = fopen(afmName,"r");
@@ -1797,7 +1800,7 @@ void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y,
   if(lastDescender!=INT_MIN){
     height += (long)(((-lastDescender)/1000.0F) * Size); /* MATTHEW: forgot scale */
   }
   if(lastDescender!=INT_MIN){
     height += (long)(((-lastDescender)/1000.0F) * Size); /* MATTHEW: forgot scale */
   }
-  
+
   // return size values
   *x = widthSum;
   *y = height;
   // return size values
   *x = widthSum;
   *y = height;
@@ -1820,7 +1823,7 @@ void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y,
 #endif
 }
 
 #endif
 }
 
-void wxPostScriptDC::DrawOpenSpline( wxList *points )
+void wxPostScriptDC::DrawSpline( wxList *points )
 {
        double          a, b, c, d, x1, y1, x2, y2, x3, y3;
         wxPoint *p, *q;
 {
        double          a, b, c, d, x1, y1, x2, y2, x3, y3;
         wxPoint *p, *q;
@@ -1836,7 +1839,7 @@ void wxPostScriptDC::DrawOpenSpline( wxList *points )
         x3 = a = (double)(x1 + c) / 2;
         y3 = b = (double)(y1 + d) / 2;
 
         x3 = a = (double)(x1 + c) / 2;
         y3 = b = (double)(y1 + d) / 2;
 
-        *(GetStream()) << "newpath " << x1 << " " << GetYOrigin() - y1 << " moveto " << x3 << " " << GetYOrigin() - y3;
+        *(GetStream()) << "newpath " << x1 << " " << (GetYOrigin() - y1) << " moveto " << x3 << " " << (GetYOrigin() - y3);
         *(GetStream()) << " lineto\n";
         CalcBoundingBox( (long)x1, (long)(GetYOrigin() - y1));
         CalcBoundingBox( (long)x3, (long)(GetYOrigin() - y3));
         *(GetStream()) << " lineto\n";
         CalcBoundingBox( (long)x1, (long)(GetYOrigin() - y1));
         CalcBoundingBox( (long)x3, (long)(GetYOrigin() - y3));
@@ -1850,20 +1853,20 @@ void wxPostScriptDC::DrawOpenSpline( wxList *points )
          c = q->x; d = q->y;
           x3 = (double)(x2 + c) / 2;
           y3 = (double)(y2 + d) / 2;
          c = q->x; d = q->y;
           x3 = (double)(x2 + c) / 2;
           y3 = (double)(y2 + d) / 2;
-          *(GetStream()) << x1 << " " << GetYOrigin() - y1 << " " << x2 << " " << GetYOrigin() - y2 << " ";
-          *(GetStream()) << x3 << " " << GetYOrigin() - y3 << " DrawSplineSection\n";
+          *(GetStream()) << x1 << " " << (GetYOrigin() - y1) << " " << x2 << " " << (GetYOrigin() - y2) << " ";
+          *(GetStream()) << x3 << " " << (GetYOrigin() - y3) << " DrawSplineSection\n";
 
           CalcBoundingBox( (long)x1, (long)(GetYOrigin() - y1));
           CalcBoundingBox( (long)x3, (long)(GetYOrigin() - y3));
         }
        /*
 
           CalcBoundingBox( (long)x1, (long)(GetYOrigin() - y1));
           CalcBoundingBox( (long)x3, (long)(GetYOrigin() - y3));
         }
        /*
-       * At this point, (x2,y2) and (c,d) are the position of the 
+       * At this point, (x2,y2) and (c,d) are the position of the
        * next-to-last and last point respectively, in the point list
        */
        * next-to-last and last point respectively, in the point list
        */
-        *(GetStream()) << c << " " << GetYOrigin() - d << " lineto stroke\n";
+        *(GetStream()) << c << " " << (GetYOrigin() - d) << " lineto stroke\n";
 }
 
 }
 
-long wxPostScriptDC::GetCharWidth (void)
+long wxPostScriptDC::GetCharWidth ()
 {
        // Chris Breeze: reasonable approximation using wxMODERN/Courier
        return (long) (GetCharHeight() * 72.0 / 120.0);
 {
        // Chris Breeze: reasonable approximation using wxMODERN/Courier
        return (long) (GetCharHeight() * 72.0 / 120.0);
@@ -2058,14 +2061,14 @@ wxDialog(parent, -1, title, pos, size, style)
   int yPos = 40;
 
 #if defined(__WXGTK__) || defined (__WXMOTIF__)
   int yPos = 40;
 
 #if defined(__WXGTK__) || defined (__WXMOTIF__)
-  (void) new wxStaticText( this, -1, _("Printer Command: "), 
+  (void) new wxStaticText( this, -1, _("Printer Command: "),
                            wxPoint(5, yPos) );
                            wxPoint(5, yPos) );
-  (void) new wxTextCtrl( this, wxID_PRINTER_COMMAND, wxThePrintSetupData->GetPrinterCommand(), 
+  (void) new wxTextCtrl( this, wxID_PRINTER_COMMAND, wxThePrintSetupData->GetPrinterCommand(),
                          wxPoint(100, yPos), wxSize(100, -1) );
                          wxPoint(100, yPos), wxSize(100, -1) );
-  
-  (void) new wxStaticText( this, -1, _("Printer Options: "), 
+
+  (void) new wxStaticText( this, -1, _("Printer Options: "),
                            wxPoint(210, yPos) );
                            wxPoint(210, yPos) );
-  (void) new wxTextCtrl( this, wxID_PRINTER_OPTIONS, wxThePrintSetupData->GetPrinterOptions(), 
+  (void) new wxTextCtrl( this, wxID_PRINTER_OPTIONS, wxThePrintSetupData->GetPrinterOptions(),
                          wxPoint(305, yPos), wxSize(150, -1) );
 
   yPos += 40;
                          wxPoint(305, yPos), wxSize(150, -1) );
 
   yPos += 40;
@@ -2101,7 +2104,7 @@ wxDialog(parent, -1, title, pos, size, style)
 #endif
 
   radio1->SetSelection((int)wxThePrintSetupData->GetPrinterMode());
 #endif
 
   radio1->SetSelection((int)wxThePrintSetupData->GetPrinterMode());
-  
+
   long wx_printer_translate_x, wx_printer_translate_y;
   double wx_printer_scale_x, wx_printer_scale_y;
   wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y);
   long wx_printer_translate_x, wx_printer_translate_y;
   double wx_printer_scale_x, wx_printer_scale_y;
   wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y);
@@ -2133,7 +2136,7 @@ wxDialog(parent, -1, title, pos, size, style)
   wxEndBusyCursor();
 }
 
   wxEndBusyCursor();
 }
 
-int wxPostScriptPrintDialog::ShowModal (void)
+int wxPostScriptPrintDialog::ShowModal ()
 {
   if ( wxDialog::ShowModal() == wxID_OK )
   {
 {
   if ( wxDialog::ShowModal() == wxID_OK )
   {
@@ -2218,27 +2221,27 @@ void wxSetAFMPath(const char *f)
 }
 
 // Get current values
 }
 
 // Get current values
-char *wxGetPrinterCommand(void)
+char *wxGetPrinterCommand()
 {
   return wxThePrintSetupData->GetPrinterCommand();
 }
 
 {
   return wxThePrintSetupData->GetPrinterCommand();
 }
 
-char *wxGetPrintPreviewCommand(void)
+char *wxGetPrintPreviewCommand()
 {
   return wxThePrintSetupData->GetPrintPreviewCommand();
 }
 
 {
   return wxThePrintSetupData->GetPrintPreviewCommand();
 }
 
-char *wxGetPrinterOptions(void)
+char *wxGetPrinterOptions()
 {
   return wxThePrintSetupData->GetPrinterOptions();
 }
 
 {
   return wxThePrintSetupData->GetPrinterOptions();
 }
 
-char *wxGetPrinterFile(void)
+char *wxGetPrinterFile()
 {
   return wxThePrintSetupData->GetPrinterFile();
 }
 
 {
   return wxThePrintSetupData->GetPrinterFile();
 }
 
-int wxGetPrinterOrientation(void)
+int wxGetPrinterOrientation()
 {
   return wxThePrintSetupData->GetPrinterOrientation();
 }
 {
   return wxThePrintSetupData->GetPrinterOrientation();
 }
@@ -2253,12 +2256,12 @@ void wxGetPrinterTranslation(long *x, long *y)
   wxThePrintSetupData->GetPrinterTranslation(x, y);
 }
 
   wxThePrintSetupData->GetPrinterTranslation(x, y);
 }
 
-int wxGetPrinterMode(void)
+int wxGetPrinterMode()
 {
   return wxThePrintSetupData->GetPrinterMode();
 }
 
 {
   return wxThePrintSetupData->GetPrinterMode();
 }
 
-char *wxGetAFMPath(void)
+char *wxGetAFMPath()
 {
   return wxThePrintSetupData->GetAFMPath();
 }
 {
   return wxThePrintSetupData->GetAFMPath();
 }
@@ -2267,7 +2270,7 @@ char *wxGetAFMPath(void)
  * Print setup data
  */
 
  * Print setup data
  */
 
-wxPrintSetupData::wxPrintSetupData(void)
+wxPrintSetupData::wxPrintSetupData()
 {
   printerCommand = (char *) NULL;
   previewCommand = (char *) NULL;
 {
   printerCommand = (char *) NULL;
   previewCommand = (char *) NULL;
@@ -2285,7 +2288,7 @@ wxPrintSetupData::wxPrintSetupData(void)
   printerFile = (char *) NULL;
 }
 
   printerFile = (char *) NULL;
 }
 
-wxPrintSetupData::~wxPrintSetupData(void)
+wxPrintSetupData::~wxPrintSetupData()
 {
   if (printerCommand)
     delete[] printerCommand;
 {
   if (printerCommand)
     delete[] printerCommand;
@@ -2318,7 +2321,7 @@ void wxPrintSetupData::SetPrintPreviewCommand(const char *cmd)
 {
   if (cmd == previewCommand)
     return;
 {
   if (cmd == previewCommand)
     return;
-    
+
   if (previewCommand)
     delete[] previewCommand;
   if (cmd)
   if (previewCommand)
     delete[] previewCommand;
   if (cmd)
@@ -2344,7 +2347,7 @@ void wxPrintSetupData::SetPrinterOptions(const char *flags)
 {
   if (printerFlags == flags)
     return;
 {
   if (printerFlags == flags)
     return;
-   
+
   if (printerFlags)
     delete[] printerFlags;
   if (flags)
   if (printerFlags)
     delete[] printerFlags;
   if (flags)
@@ -2357,7 +2360,7 @@ void wxPrintSetupData::SetPrinterFile(const char *f)
 {
   if (f == printerFile)
     return;
 {
   if (f == printerFile)
     return;
-    
+
   if (printerFile)
     delete[] printerFile;
   if (f)
   if (printerFile)
     delete[] printerFile;
   if (f)
@@ -2393,7 +2396,7 @@ void wxPrintSetupData::SetAFMPath(const char *f)
 {
   if (f == afmPath)
     return;
 {
   if (f == afmPath)
     return;
-    
+
   if (afmPath)
     delete[] afmPath;
   if (f)
   if (afmPath)
     delete[] afmPath;
   if (f)
@@ -2408,32 +2411,32 @@ void wxPrintSetupData::SetColour(bool col)
 }
 
 // Get current values
 }
 
 // Get current values
-char *wxPrintSetupData::GetPrinterCommand(void)
+char *wxPrintSetupData::GetPrinterCommand()
 {
   return printerCommand;
 }
 
 {
   return printerCommand;
 }
 
-char *wxPrintSetupData::GetPrintPreviewCommand(void)
+char *wxPrintSetupData::GetPrintPreviewCommand()
 {
   return previewCommand;
 }
 
 {
   return previewCommand;
 }
 
-char *wxPrintSetupData::GetPrinterOptions(void)
+char *wxPrintSetupData::GetPrinterOptions()
 {
   return printerFlags;
 }
 
 {
   return printerFlags;
 }
 
-char *wxPrintSetupData::GetPrinterFile(void)
+char *wxPrintSetupData::GetPrinterFile()
 {
   return printerFile;
 }
 
 {
   return printerFile;
 }
 
-char *wxPrintSetupData::GetPaperName(void)
+char *wxPrintSetupData::GetPaperName()
 {
   return paperName;
 }
 
 {
   return paperName;
 }
 
-int wxPrintSetupData::GetPrinterOrientation(void)
+int wxPrintSetupData::GetPrinterOrientation()
 {
   return printerOrient;
 }
 {
   return printerOrient;
 }
@@ -2450,17 +2453,17 @@ void wxPrintSetupData::GetPrinterTranslation(long *x, long *y)
   *y = printerTranslateY;
 }
 
   *y = printerTranslateY;
 }
 
-int wxPrintSetupData::GetPrinterMode(void)
+int wxPrintSetupData::GetPrinterMode()
 {
   return printerMode;
 }
 
 {
   return printerMode;
 }
 
-char *wxPrintSetupData::GetAFMPath(void)
+char *wxPrintSetupData::GetAFMPath()
 {
   return afmPath;
 }
 
 {
   return afmPath;
 }
 
-bool wxPrintSetupData::GetColour(void)
+bool wxPrintSetupData::GetColour()
 {
   return printColour;
 }
 {
   return printColour;
 }
@@ -2535,21 +2538,21 @@ wxPrintPaperType::wxPrintPaperType(const char *name, int wmm, int hmm, int wp, i
   pageName = copystring(name);
 }
 
   pageName = copystring(name);
 }
 
-wxPrintPaperType::~wxPrintPaperType(void)
+wxPrintPaperType::~wxPrintPaperType()
 {
   delete[] pageName;
 }
 
 {
   delete[] pageName;
 }
 
-wxPrintPaperDatabase::wxPrintPaperDatabase(void):wxList(wxKEY_STRING)
+wxPrintPaperDatabase::wxPrintPaperDatabase():wxList(wxKEY_STRING)
 {
   DeleteContents(TRUE);
 }
 
 {
   DeleteContents(TRUE);
 }
 
-wxPrintPaperDatabase::~wxPrintPaperDatabase(void)
+wxPrintPaperDatabase::~wxPrintPaperDatabase()
 {
 }
 
 {
 }
 
-void wxPrintPaperDatabase::CreateDatabase(void)
+void wxPrintPaperDatabase::CreateDatabase()
 {
   // Need correct values for page size in pixels.
   // Each unit is one 'point' = 1/72 of an inch.
 {
   // Need correct values for page size in pixels.
   // Each unit is one 'point' = 1/72 of an inch.
@@ -2560,14 +2563,14 @@ void wxPrintPaperDatabase::CreateDatabase(void)
   // Can't remember where the PostScript origin is by default.
   // Heck, someone will know how to make it hunky-dory...
   // JACS 25/5/95
   // Can't remember where the PostScript origin is by default.
   // Heck, someone will know how to make it hunky-dory...
   // JACS 25/5/95
-  
+
   AddPaperType(_("A4 210 x 297 mm"), 210, 297,         595, 842);
   AddPaperType(_("A3 297 x 420 mm"), 297, 420,         842, 1191);
   AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    612, 791);
   AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     612, 1009);
 }
 
   AddPaperType(_("A4 210 x 297 mm"), 210, 297,         595, 842);
   AddPaperType(_("A3 297 x 420 mm"), 297, 420,         842, 1191);
   AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279,    612, 791);
   AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356,     612, 1009);
 }
 
-void wxPrintPaperDatabase::ClearDatabase(void)
+void wxPrintPaperDatabase::ClearDatabase()
 {
   Clear();
 }
 {
   Clear();
 }
@@ -2586,4 +2589,25 @@ wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name)
     return (wxPrintPaperType *) NULL;
 }
 
     return (wxPrintPaperType *) NULL;
 }
 
+/*
+ * Initialization/cleanup module
+ */
+
+bool wxPostScriptModule::OnInit()
+{
+    wxInitializePrintSetupData();
+    wxThePrintPaperDatabase = new wxPrintPaperDatabase;
+    wxThePrintPaperDatabase->CreateDatabase();
+
+    return TRUE;
+}
+
+void wxPostScriptModule::OnExit()
+{
+    wxInitializePrintSetupData(FALSE);
+    delete wxThePrintPaperDatabase;
+    wxThePrintPaperDatabase = NULL;
+}
+
+
 #endif
 #endif