]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dcpsg.cpp
fix bug with adding entries to a root group containing only subgroups (as shown by...
[wxWidgets.git] / src / generic / dcpsg.cpp
index e978a7dba0d76ccdb62976b6329b11f274915dfe..777796b782eb87640fae80d1118faec963e8a04d 100644 (file)
@@ -252,7 +252,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
 
 //-------------------------------------------------------------------------------
 
 
 //-------------------------------------------------------------------------------
 
-void wxPostScriptDC::SetResolution(int ppi)
+void wxPostScriptDC::SetResolution(int WXUNUSED(ppi))
 {
 }
 
 {
 }
 
@@ -297,7 +297,7 @@ wxPostScriptDC::wxPostScriptDC (const wxPrintData& printData)
     // this calculates m_pageHeight required for
     // taking the inverted Y axis into account
     SetPrintData( printData );
     // this calculates m_pageHeight required for
     // taking the inverted Y axis into account
     SetPrintData( printData );
-    
+
     m_ok = true;
 }
 
     m_ok = true;
 }
 
@@ -446,8 +446,8 @@ void wxPostScriptDC::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
                        "%f %f lineto\n"
                        "closepath\n"
                        "fill\n",
                        "%f %f lineto\n"
                        "closepath\n"
                        "fill\n",
-                XLOG2DEV(xc), YLOG2DEV(yc), 
-                XLOG2DEVREL(i_radius), YLOG2DEVREL(i_radius), 
+                XLOG2DEV(xc), YLOG2DEV(yc),
+                XLOG2DEVREL(i_radius), YLOG2DEVREL(i_radius),
                 alpha1, alpha2,
                 XLOG2DEV(xc), YLOG2DEV(yc) );
         buffer.Replace( ",", "." );
                 alpha1, alpha2,
                 XLOG2DEV(xc), YLOG2DEV(yc) );
         buffer.Replace( ",", "." );
@@ -460,15 +460,15 @@ void wxPostScriptDC::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
     if (m_pen.GetStyle() != wxTRANSPARENT)
     {
         SetPen( m_pen );
     if (m_pen.GetStyle() != wxTRANSPARENT)
     {
         SetPen( m_pen );
-        
+
         wxString buffer;
         buffer.Printf( "newpath\n"
                        "%f %f %f %f %f %f ellipse\n"
                        "%f %f lineto\n"
                        "closepath\n"
                        "stroke\n",
         wxString buffer;
         buffer.Printf( "newpath\n"
                        "%f %f %f %f %f %f ellipse\n"
                        "%f %f lineto\n"
                        "closepath\n"
                        "stroke\n",
-                XLOG2DEV(xc), YLOG2DEV(yc), 
-                XLOG2DEVREL(i_radius), YLOG2DEVREL(i_radius), 
+                XLOG2DEV(xc), YLOG2DEV(yc),
+                XLOG2DEVREL(i_radius), YLOG2DEVREL(i_radius),
                 alpha1, alpha2,
                 XLOG2DEV(xc), YLOG2DEV(yc) );
         buffer.Replace( ",", "." );
                 alpha1, alpha2,
                 XLOG2DEV(xc), YLOG2DEV(yc) );
         buffer.Replace( ",", "." );
@@ -721,7 +721,7 @@ void wxPostScriptDC::DoDrawLines (int n, wxPoint points[], wxCoord xoffset, wxCo
               YLOG2DEV(points[0].y+yoffset) );
     buffer.Replace( ",", "." );
     PsPrint( buffer );
               YLOG2DEV(points[0].y+yoffset) );
     buffer.Replace( ",", "." );
     PsPrint( buffer );
-    
+
     for (i = 1; i < n; i++)
     {
         buffer.Printf( "%f %f lineto\n",
     for (i = 1; i < n; i++)
     {
         buffer.Printf( "%f %f lineto\n",
@@ -738,6 +738,9 @@ void wxPostScriptDC::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, wxCoo
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
+    width--;
+    height--;
+
     if (m_brush.GetStyle () != wxTRANSPARENT)
     {
         SetBrush( m_brush );
     if (m_brush.GetStyle () != wxTRANSPARENT)
     {
         SetBrush( m_brush );
@@ -789,6 +792,9 @@ void wxPostScriptDC::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord width
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
+    width--;
+    height--;
+
     if (radius < 0.0)
     {
         // Now, a negative radius is interpreted to mean
     if (radius < 0.0)
     {
         // Now, a negative radius is interpreted to mean
@@ -868,6 +874,9 @@ void wxPostScriptDC::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxCoord
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
+    width--;
+    height--;
+
     if (m_brush.GetStyle () != wxTRANSPARENT)
     {
         SetBrush (m_brush);
     if (m_brush.GetStyle () != wxTRANSPARENT)
     {
         SetBrush (m_brush);
@@ -970,7 +979,7 @@ void wxPostScriptDC::DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y,
         }
         *(bufferindex++) = '\n';
         *bufferindex = 0;
         }
         *(bufferindex++) = '\n';
         *bufferindex = 0;
-        
+
         if (m_pstream)
             fwrite( charbuffer, 1, strlen( charbuffer ), m_pstream );
         else
         if (m_pstream)
             fwrite( charbuffer, 1, strlen( charbuffer ), m_pstream );
         else
@@ -1067,7 +1076,7 @@ void wxPostScriptDC::SetFont( const wxFont& font )
     PsPrint( name );
     PsPrint( " findfont\n" );
 
     PsPrint( name );
     PsPrint( " findfont\n" );
 
-    
+
     double size = (double) m_font.GetPointSize();
     wxString buffer;
     buffer.Printf( "%f scalefont setfont\n", size * DEV2PS * m_scaleX );
     double size = (double) m_font.GetPointSize();
     wxString buffer;
     buffer.Printf( "%f scalefont setfont\n", size * DEV2PS * m_scaleX );
@@ -1086,7 +1095,7 @@ void wxPostScriptDC::SetPen( const wxPen& pen )
     m_pen = pen;
 
     double width;
     m_pen = pen;
 
     double width;
-    
+
     if (m_pen.GetWidth() <= 0)
         width = 0.1;
     else
     if (m_pen.GetWidth() <= 0)
         width = 0.1;
     else
@@ -1232,9 +1241,9 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y )
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
     const wxWX2MBbuf textbuf = text.mb_str();
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
     const wxWX2MBbuf textbuf = text.mb_str();
-    if (textbuf.data() == NULL)
+    if ( !textbuf )
         return;
         return;
-    
+
     if (m_textForegroundColour.Ok())
     {
         unsigned char red = m_textForegroundColour.Red();
     if (m_textForegroundColour.Ok())
     {
         unsigned char red = m_textForegroundColour.Red();
@@ -1317,7 +1326,7 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y )
     if (m_font.GetUnderlined())
     {
         wxCoord uy = (wxCoord)(y + size - m_underlinePosition);
     if (m_font.GetUnderlined())
     {
         wxCoord uy = (wxCoord)(y + size - m_underlinePosition);
-        
+
         buffer.Printf( "gsave\n"
                        "%f %f moveto\n"
                        "%f setlinewidth\n"
         buffer.Printf( "gsave\n"
                        "%f %f moveto\n"
                        "%f setlinewidth\n"
@@ -1377,7 +1386,7 @@ void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord
             buffer.Printf( "%f %f %f setrgbcolor\n", redPS, greenPS, bluePS );
             buffer.Replace( ",", "." );
             PsPrint( buffer );
             buffer.Printf( "%f %f %f setrgbcolor\n", redPS, greenPS, bluePS );
             buffer.Replace( ",", "." );
             PsPrint( buffer );
-            
+
             m_currentRed = red;
             m_currentBlue = blue;
             m_currentGreen = green;
             m_currentRed = red;
             m_currentBlue = blue;
             m_currentGreen = green;
@@ -1432,7 +1441,7 @@ void wxPostScriptDC::DoDrawRotatedText( const wxString& text, wxCoord x, wxCoord
         wxCoord w, h;
         GetTextExtent(text, &w, &h);
 
         wxCoord w, h;
         GetTextExtent(text, &w, &h);
 
-        buffer.Printf( 
+        buffer.Printf(
                 "gsave\n"
                 "%f %f moveto\n"
                 "%f setlinewidth\n"
                 "gsave\n"
                 "%f %f moveto\n"
                 "%f setlinewidth\n"
@@ -1461,7 +1470,7 @@ void wxPostScriptDC::SetLogicalFunction (int WXUNUSED(function))
 }
 
 #if wxUSE_SPLINES
 }
 
 #if wxUSE_SPLINES
-void wxPostScriptDC::DoDrawSpline( wxList *points )
+void wxPostScriptDC::DoDrawSpline( const wxPointList *points )
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
 {
     wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
 
@@ -1472,13 +1481,13 @@ void wxPostScriptDC::DoDrawSpline( wxList *points )
     double c, d, x1, y1, x2, y2, x3, y3;
     wxPoint *p, *q;
 
     double c, d, x1, y1, x2, y2, x3, y3;
     wxPoint *p, *q;
 
-    wxList::compatibility_iterator node = points->GetFirst();
-    p = (wxPoint *)node->GetData();
+    wxPointList::compatibility_iterator node = points->GetFirst();
+    p = node->GetData();
     x1 = p->x;
     y1 = p->y;
 
     node = node->GetNext();
     x1 = p->x;
     y1 = p->y;
 
     node = node->GetNext();
-    p = (wxPoint *)node->GetData();
+    p = node->GetData();
     c = p->x;
     d = p->y;
     x3 =
     c = p->x;
     d = p->y;
     x3 =
@@ -1507,7 +1516,7 @@ void wxPostScriptDC::DoDrawSpline( wxList *points )
     node = node->GetNext();
     while (node)
     {
     node = node->GetNext();
     while (node)
     {
-        q = (wxPoint *)node->GetData();
+        q = node->GetData();
 
         x1 = x3;
         y1 = y3;
 
         x1 = x3;
         y1 = y3;
@@ -1550,7 +1559,7 @@ wxCoord wxPostScriptDC::GetCharWidth() const
 
 void wxPostScriptDC::SetPrintData(const wxPrintData& data)
 {
 
 void wxPostScriptDC::SetPrintData(const wxPrintData& data)
 {
-    m_printData = data;    
+    m_printData = data;
 
     wxPaperSize id = m_printData.GetPaperId();
     wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(id);
 
     wxPaperSize id = m_printData.GetPaperId();
     wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(id);
@@ -1644,10 +1653,10 @@ void wxPostScriptDC::DoGetSize(int* width, int* height) const
         h = tmp;
     }
 
         h = tmp;
     }
 
-    if (width) 
+    if (width)
         *width = wxRound( w * PS2DEV );
         *width = wxRound( w * PS2DEV );
-        
-    if (height) 
+
+    if (height)
         *height = wxRound( h * PS2DEV );
 }
 
         *height = wxRound( h * PS2DEV );
 }
 
@@ -1713,14 +1722,14 @@ bool wxPostScriptDC::StartDoc( const wxString& message )
     wxString buffer;
 
     PsPrint( "%!PS-Adobe-2.0\n" );
     wxString buffer;
 
     PsPrint( "%!PS-Adobe-2.0\n" );
-    
+
     buffer.Printf( "%%%%Title: %s\n", m_title );
     PsPrint( buffer );
     PsPrint( "%%Creator: wxWidgets PostScript renderer\n" );
     buffer.Printf( "%%%%Title: %s\n", m_title );
     PsPrint( buffer );
     PsPrint( "%%Creator: wxWidgets PostScript renderer\n" );
-    
+
     buffer.Printf( "%%%%CreationDate: %s\n", wxNow() );
     PsPrint( buffer );
     buffer.Printf( "%%%%CreationDate: %s\n", wxNow() );
     PsPrint( buffer );
-    
+
     if (m_printData.GetOrientation() == wxLANDSCAPE)
         PsPrint( "%%Orientation: Landscape\n" );
     else
     if (m_printData.GetOrientation() == wxLANDSCAPE)
         PsPrint( "%%Orientation: Landscape\n" );
     else
@@ -1745,10 +1754,10 @@ bool wxPostScriptDC::StartDoc( const wxString& message )
        case wxPAPER_10X14: paper = wxT("10x14"); break;         // 10-by-14-inch sheet
        default: paper = wxT("A4");
     }
        case wxPAPER_10X14: paper = wxT("10x14"); break;         // 10-by-14-inch sheet
        default: paper = wxT("A4");
     }
-    
+
     buffer.Printf( "%%%%DocumentPaperSizes: %s\n", paper );
     PsPrint( buffer );
     buffer.Printf( "%%%%DocumentPaperSizes: %s\n", paper );
     PsPrint( buffer );
-    
+
     PsPrint( "%%EndComments\n\n" );
 
     PsPrint( "%%BeginProlog\n" );
     PsPrint( "%%EndComments\n\n" );
 
     PsPrint( "%%BeginProlog\n" );
@@ -1891,23 +1900,23 @@ void wxPostScriptDC::StartPage()
 
     buffer.Printf( "%d %d translate\n", translate_x, translate_y );
     PsPrint( buffer );
 
     buffer.Printf( "%d %d translate\n", translate_x, translate_y );
     PsPrint( buffer );
-    
+
     double scale_x = data->GetPrinterScaleX();
     double scale_y = data->GetPrinterScaleY();
     double scale_x = data->GetPrinterScaleX();
     double scale_y = data->GetPrinterScaleY();
-    
+
     buffer.Printf( "%f %f scale\n", scale_x, scale_y );
     buffer.Replace( ",", "." );
     PsPrint( buffer );
     buffer.Printf( "%f %f scale\n", scale_x, scale_y );
     buffer.Replace( ",", "." );
     PsPrint( buffer );
-    
+
 #endif
 
     // Each page starts with an "initgraphics" which resets the
 #endif
 
     // Each page starts with an "initgraphics" which resets the
-    // transformation and so we need to rotate the page for 
+    // transformation and so we need to rotate the page for
     // landscape printing)
 
     // I copied this one from a PostScript tutorial, but to no avail. RR.
     // PsPrint( "90 rotate llx neg ury nef translate\n" );
     // landscape printing)
 
     // I copied this one from a PostScript tutorial, but to no avail. RR.
     // PsPrint( "90 rotate llx neg ury nef translate\n" );
-    
+
     if (m_printData.GetOrientation() == wxLANDSCAPE)
         PsPrint( "90 rotate\n" );
 }
     if (m_printData.GetOrientation() == wxLANDSCAPE)
         PsPrint( "90 rotate\n" );
 }
@@ -2000,9 +2009,9 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
    // GTK 2.0
 
     const wxWX2MBbuf strbuf = string.mb_str();
    // GTK 2.0
 
     const wxWX2MBbuf strbuf = string.mb_str();
-    
+
     // conversion failed (non e.g. ISO characters)
     // conversion failed (non e.g. ISO characters)
-    if (strbuf.data() == NULL)
+    if ( !strbuf )
         return;
 
 #if !wxUSE_AFM_FOR_POSTSCRIPT
         return;
 
 #if !wxUSE_AFM_FOR_POSTSCRIPT