]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dcclient.cpp
no message
[wxWidgets.git] / src / gtk / dcclient.cpp
index ca39cfbb84ef465c43e10fd48a34195b3f3f59bd..84d0cebf07aecfdb9e36265829d18f9ff460f9f2 100644 (file)
@@ -124,10 +124,12 @@ wxPaintDC::~wxPaintDC(void)
 void wxPaintDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), 
   wxColour *WXUNUSED(col), int WXUNUSED(style) )
 {
+  wxFAIL_MSG( "wxPaintDC::FloodFill not implemented" );
 }
 
 bool wxPaintDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const
 {
+  wxFAIL_MSG( "wxPaintDC::GetPixel not implemented" );
   return FALSE;
 }
 
@@ -135,6 +137,10 @@ void wxPaintDC::DrawLine( long x1, long y1, long x2, long y2 )
 {
   if (!Ok()) return;
   
+  // FIXME: is this right? Causes a segfault on my system and doesn't
+  // seem right: wxPaintDC does not inherit from wxMemoryDC
+  //   if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     gdk_draw_line( m_window, m_penGC, 
@@ -146,6 +152,10 @@ void wxPaintDC::CrossHair( long x, long y )
 {
   if (!Ok()) return;
   
+  // FIXME: is this right? Causes a segfault on my system and doesn't
+  // seem right: wxPaintDC does not inherit from wxMemoryDC
+  // if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     int w = 0;
@@ -164,6 +174,8 @@ void wxPaintDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double y
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   long xx1 = XLOG2DEV(x1); 
   long yy1 = YLOG2DEV(y1);
   long xx2 = XLOG2DEV(x2); 
@@ -212,6 +224,8 @@ void wxPaintDC::DrawEllipticArc( long x, long y, long width, long height, double
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -234,6 +248,8 @@ void wxPaintDC::DrawPoint( long x, long y )
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (m_pen.GetStyle() != wxTRANSPARENT)
     gdk_draw_point( m_window, m_penGC, XLOG2DEV(x), YLOG2DEV(y) );
 }
@@ -242,6 +258,8 @@ void wxPaintDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   for (int i = 0; i < n-1; i++)
@@ -258,6 +276,8 @@ void wxPaintDC::DrawLines( wxList *points, long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   wxNode *node = points->First();
@@ -274,10 +294,12 @@ void wxPaintDC::DrawLines( wxList *points, long xoffset, long yoffset )
   }
 }
 
-void wxPaintDC::DrawPolygon( int n, wxPoint points[], 
-  long xoffset, long yoffset, int WXUNUSED(fillStyle) )
- {
-   if (!Ok()) return;
+void wxPaintDC::DrawPolygon( int n, wxPoint points[], long xoffset, long yoffset, int WXUNUSED(fillStyle) )
+{
+  if (!Ok()) return;
+  
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
    if (!n) return;    // Nothing to draw
    GdkPoint *gdkpoints = new GdkPoint[n+1];
    int i;
@@ -299,12 +321,13 @@ void wxPaintDC::DrawPolygon( int n, wxPoint points[],
    delete[] gdkpoints;
 }
 
-void wxPaintDC::DrawPolygon( wxList *lines, long xoffset, 
-                              long yoffset, int WXUNUSED(fillStyle))
- {
+void wxPaintDC::DrawPolygon( wxList *lines, long xoffset, long yoffset, int WXUNUSED(fillStyle))
+{
+  if (!Ok()) return;
+  
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
    int n = lines->Number();
-   if (!Ok()) return;
    GdkPoint *gdkpoints = new GdkPoint[n];
    wxNode *node = lines->First();
    int cnt=0;
@@ -336,6 +359,8 @@ void wxPaintDC::DrawRectangle( long x, long y, long width, long height )
 {
   if (!Ok()) return;
 
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   long xx = XLOG2DEV(x);
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width);
@@ -359,6 +384,8 @@ void wxPaintDC::DrawRoundedRectangle( long x, long y, long width, long height, d
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   if (radius < 0.0) radius = - radius * ((width < height) ? width : height);
   
   long xx = XLOG2DEV(x);    
@@ -424,6 +451,8 @@ void wxPaintDC::DrawEllipse( long x, long y, long width, long height )
 {
   if (!Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -451,6 +480,8 @@ void wxPaintDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
   
   if (!icon.Ok()) return;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   int xx = XLOG2DEV(x);
   int yy = YLOG2DEV(y);
   
@@ -478,21 +509,22 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
 {
   if (!Ok()) return FALSE;
   
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   // CMB 20/5/98: add blitting of bitmaps
   if (source->IsKindOf(CLASSINFO(wxMemoryDC)))
   {
     wxMemoryDC* srcDC = (wxMemoryDC*)source;
-       GdkBitmap* bmap = srcDC->m_selected.GetBitmap();
+    GdkBitmap* bmap = srcDC->m_selected.GetBitmap();
     if (bmap)
     {
-      gdk_draw_bitmap (
-          m_window,
-          m_textGC,
-          bmap,
-          source->DeviceToLogicalX(xsrc), source->DeviceToLogicalY(ysrc),
-          XLOG2DEV(xdest), YLOG2DEV(ydest),
-          source->DeviceToLogicalXRel(width), source->DeviceToLogicalYRel(height)
-          );
+      gdk_draw_bitmap( m_window, m_textGC, bmap,
+          source->DeviceToLogicalX(xsrc), 
+         source->DeviceToLogicalY(ysrc),
+          XLOG2DEV(xdest), 
+         YLOG2DEV(ydest),
+          source->DeviceToLogicalXRel(width), 
+         source->DeviceToLogicalYRel(height) );
       return TRUE;
     }
   }
@@ -519,6 +551,8 @@ void wxPaintDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(us
 {
   if (!Ok()) return;
 
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
+  
   GdkFont *font = m_font.GetInternalFont( m_scaleY );
 
   x = XLOG2DEV(x);
@@ -588,7 +622,7 @@ void wxPaintDC::Clear(void)
 {
   if (!Ok()) return;
   
-//  DestroyClippingRegion();
+  if (!m_isDrawable) ((wxMemoryDC*)this)->m_selected.DestroyImage();
   
   if (m_isDrawable)
   {
@@ -979,7 +1013,7 @@ static void wx_spline_draw_point_array(wxDC *dc)
   }
 }
 
-void wxPaintDC::DrawOpenSpline( wxList *points )
+void wxPaintDC::DrawSpline( wxList *points )
 {
     wxPoint *p;
     double           cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;