]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed bug in dc::blit()
authorRobert Roebling <robert@roebling.de>
Mon, 16 Nov 1998 08:31:32 +0000 (08:31 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 16 Nov 1998 08:31:32 +0000 (08:31 +0000)
  Redid fix in fileconf

  FortyThieves works now..

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/forty/game.cpp
src/common/fileconf.cpp
src/gtk/dcclient.cpp
src/gtk1/dcclient.cpp

index c121d8dd06e09472d3a61162ed2d1447eb18e612..90bfc194c03908f243c705362832c59c2325cae3 100644 (file)
@@ -288,11 +288,12 @@ void Game::Redraw(wxDC& dc)
 
                // Initialise the card bitmap to the background colour
                wxMemoryDC memoryDC;
-               memoryDC.SelectObject(m_bmapCard);
+               memoryDC.SelectObject(*m_bmapCard);
                memoryDC.SetBrush(FortyApp::BackgroundBrush());
                memoryDC.DrawRectangle(0, 0, CardWidth, CardHeight);
-               memoryDC.SelectObject(m_bmap);
+               memoryDC.SelectObject(*m_bmap);
                memoryDC.DrawRectangle(0, 0, CardWidth, CardHeight);
+               memoryDC.SelectObject(wxNullBitmap);
        }
 }
 
index 873515cc508e25bace48e3446731b6d3ab862651..f518ec1f589dbebb300f1a77402f9789c9b64281 100644 (file)
@@ -113,9 +113,12 @@ wxString wxFileConfig::GetLocalDir()
   wxString strDir;
   
   wxGetHomeDir(&strDir);
-
-  if (strDir.Last() != '/' && strDir.Last() != '\\')
-    strDir += "/";
+  
+#ifdef  __UNIX__
+  if (strDir.Last() != '/') strDir << '/';
+#else
+  if (strDir.Last() != '\\') strDir << '\\';
+#endif
 
   return strDir;
 }
@@ -149,7 +152,7 @@ wxString wxFileConfig::GetLocalFileName(const char *szFile)
     if ( strchr(szFile, '.') == NULL )
       str << ".ini";
   #endif
-
+  
   return str;
 }
 
index 9587269a0dcb4828beaf3a1e3faec54a9f282bfb..8fdd39e4ce4c830546bf5e52891405fa01dd7d42 100644 (file)
@@ -532,7 +532,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
        wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool useMask )
 {
     if (!Ok()) return FALSE;
-  
+    
     CalcBoundingBox( xdest, ydest );
     CalcBoundingBox( xdest + width, ydest + height );
     
@@ -541,7 +541,39 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
     if (csrc->m_isMemDC)
     {
         wxMemoryDC* srcDC = (wxMemoryDC*)source;
-        GdkPixmap* bmap = srcDC->m_selected.GetPixmap();
+        GdkPixmap* pmap = srcDC->m_selected.GetPixmap();
+        if (pmap)
+        {
+            long xx = XLOG2DEV(xdest);
+            long yy = YLOG2DEV(ydest);
+    
+            GdkBitmap *mask = (GdkBitmap *) NULL;
+            if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap();
+    
+            if (useMask && mask) 
+            {
+                gdk_gc_set_clip_mask( m_penGC, mask );
+                gdk_gc_set_clip_origin( m_penGC, xx, yy );
+            }
+  
+            gdk_draw_pixmap( m_window, m_penGC, pmap,
+                             source->DeviceToLogicalX(xsrc), 
+                            source->DeviceToLogicalY(ysrc),
+                             xx, 
+                            yy,
+                             source->DeviceToLogicalXRel(width), 
+                            source->DeviceToLogicalYRel(height) );
+         
+            if (useMask && mask) 
+            {
+                gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL );
+                gdk_gc_set_clip_origin( m_penGC, 0, 0 );
+            }
+      
+            return TRUE;
+        }
+       
+        GdkBitmap* bmap = srcDC->m_selected.GetBitmap();
         if (bmap)
         {
             long xx = XLOG2DEV(xdest);
@@ -556,7 +588,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
                 gdk_gc_set_clip_origin( m_penGC, xx, yy );
             }
   
-            gdk_draw_pixmap( m_window, m_penGC, bmap,
+            gdk_draw_bitmap( m_window, m_penGC, bmap,
                              source->DeviceToLogicalX(xsrc), 
                             source->DeviceToLogicalY(ysrc),
                              xx, 
index 9587269a0dcb4828beaf3a1e3faec54a9f282bfb..8fdd39e4ce4c830546bf5e52891405fa01dd7d42 100644 (file)
@@ -532,7 +532,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
        wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool useMask )
 {
     if (!Ok()) return FALSE;
-  
+    
     CalcBoundingBox( xdest, ydest );
     CalcBoundingBox( xdest + width, ydest + height );
     
@@ -541,7 +541,39 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
     if (csrc->m_isMemDC)
     {
         wxMemoryDC* srcDC = (wxMemoryDC*)source;
-        GdkPixmap* bmap = srcDC->m_selected.GetPixmap();
+        GdkPixmap* pmap = srcDC->m_selected.GetPixmap();
+        if (pmap)
+        {
+            long xx = XLOG2DEV(xdest);
+            long yy = YLOG2DEV(ydest);
+    
+            GdkBitmap *mask = (GdkBitmap *) NULL;
+            if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap();
+    
+            if (useMask && mask) 
+            {
+                gdk_gc_set_clip_mask( m_penGC, mask );
+                gdk_gc_set_clip_origin( m_penGC, xx, yy );
+            }
+  
+            gdk_draw_pixmap( m_window, m_penGC, pmap,
+                             source->DeviceToLogicalX(xsrc), 
+                            source->DeviceToLogicalY(ysrc),
+                             xx, 
+                            yy,
+                             source->DeviceToLogicalXRel(width), 
+                            source->DeviceToLogicalYRel(height) );
+         
+            if (useMask && mask) 
+            {
+                gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL );
+                gdk_gc_set_clip_origin( m_penGC, 0, 0 );
+            }
+      
+            return TRUE;
+        }
+       
+        GdkBitmap* bmap = srcDC->m_selected.GetBitmap();
         if (bmap)
         {
             long xx = XLOG2DEV(xdest);
@@ -556,7 +588,7 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
                 gdk_gc_set_clip_origin( m_penGC, xx, yy );
             }
   
-            gdk_draw_pixmap( m_window, m_penGC, bmap,
+            gdk_draw_bitmap( m_window, m_penGC, bmap,
                              source->DeviceToLogicalX(xsrc), 
                             source->DeviceToLogicalY(ysrc),
                              xx,