]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dcpsg.cpp
reSWIGged
[wxWidgets.git] / src / generic / dcpsg.cpp
index 2c78950e71afb1c885c083928c96e6fc486bbbc0..01abae542144fc230b077baade51d558c283f32b 100644 (file)
@@ -5,11 +5,11 @@
 // Modified by:
 // Created:     04/01/98
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
+// Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "dcpsg.h"
 #endif
 
@@ -1479,11 +1479,8 @@ void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord
 
     int size = m_font.GetPointSize();
 
-    long by = y + (long)floor( double(size) * 2.0 / 3.0 ); // approximate baseline
-
-    // FIXME only correct for 90 degrees
     fprintf(m_pstream, "%d %d moveto\n",
-            LogicalToDeviceX((wxCoord)(x + size)), LogicalToDeviceY((wxCoord)by) );
+            LogicalToDeviceX(x), LogicalToDeviceY(y));
 
     char buffer[100];
     sprintf(buffer, "%.8f rotate\n", angle);
@@ -1567,7 +1564,7 @@ void wxPostScriptDC::DoDrawSpline( wxList *points )
     double a, b, c, d, x1, y1, x2, y2, x3, y3;
     wxPoint *p, *q;
 
-    wxNode *node = points->GetFirst();
+    wxList::compatibility_iterator node = points->GetFirst();
     p = (wxPoint *)node->GetData();
     x1 = p->x;
     y1 = p->y;
@@ -1589,7 +1586,7 @@ void wxPostScriptDC::DoDrawSpline( wxList *points )
     CalcBoundingBox( (wxCoord)x1, (wxCoord)y1 );
     CalcBoundingBox( (wxCoord)x3, (wxCoord)y3 );
 
-    while ((node = node->GetNext()) != NULL)
+    while ((node = node->GetNext()))
     {
         q = (wxPoint *)node->GetData();
 
@@ -1748,7 +1745,7 @@ bool wxPostScriptDC::StartDoc( const wxString& message )
     
     // fprintf( m_pstream, "%%%%Pages: %d\n", (wxPageNumber - 1) );
     
-    char *paper = "A4";
+    const char *paper;
     switch (m_printData.GetPaperId())
     {
        case wxPAPER_LETTER: paper = "Letter"; break;             // Letter: paper ""; 8 1/2 by 11 inches
@@ -1884,6 +1881,8 @@ void wxPostScriptDC::EndDoc ()
         wxString command;
         command += m_printData.GetPrinterCommand();
         command += wxT(" ");
+        command += m_printData.GetPrinterOptions();
+        command += wxT(" ");
         command += m_printData.GetFilename();
 
         wxExecute( command, TRUE );
@@ -1991,6 +1990,8 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
     {
         if (x) (*x) = 0;
         if (y) (*y) = 0;
+        if (descent) (*descent) = 0;
+        if (externalLeading) (*externalLeading) = 0;
         return;
     }
     
@@ -2285,13 +2286,15 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
            /  the correct way would be to map the character names
            /  like 'adieresis' to corresp. positions of ISOEnc and read
            /  these values from AFM files, too. Maybe later ... */
-        lastWidths[196] = lastWidths['A'];  // Ä
-        lastWidths[228] = lastWidths['a'];  // ä
-        lastWidths[214] = lastWidths['O'];  // Ö
-        lastWidths[246] = lastWidths['o'];  // ö
-        lastWidths[220] = lastWidths['U'];  // Ü
-        lastWidths[252] = lastWidths['u'];  // ü
-        lastWidths[223] = lastWidths[251];  // ß
+
+        // NB: casts to int are needed to suppress gcc 3.3 warnings
+        lastWidths[196] = lastWidths[(int)'A'];  // Ä
+        lastWidths[228] = lastWidths[(int)'a'];  // ä
+        lastWidths[214] = lastWidths[(int)'O'];  // Ö
+        lastWidths[246] = lastWidths[(int)'o'];  // ö
+        lastWidths[220] = lastWidths[(int)'U'];  // Ü
+        lastWidths[252] = lastWidths[(int)'u'];  // ü
+        lastWidths[223] = lastWidths[(int)251];  // ß
 
         /* JC: calculate UnderlineThickness/UnderlinePosition */
 
@@ -2317,7 +2320,7 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
         if(lastWidths[*p]== INT_MIN)
         {
             wxLogDebug(wxT("GetTextExtent: undefined width for character '%c' (%d)"), *p,*p);
-            sum += lastWidths[' ']; /* assume space */
+            sum += lastWidths[(unsigned char)' ']; /* assume space */
         }
         else
         {