]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mgl/dc.cpp
Implemented forceTrueColour in SetBestVisual.
[wxWidgets.git] / src / mgl / dc.cpp
index c10d8b692b667026c7cd7dd15ae00b36cbc93335..8eabf0631045e50fb649bed27efea3a0082f4d37 100644 (file)
@@ -1091,15 +1091,16 @@ void wxDC::SetPalette(const wxPalette& palette)
 {
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
 {
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
-    if ( palette == wxNullPalette )
+    if ( !palette.Ok() )
     {
         if ( m_oldPalette.Ok() )
             SetPalette(m_oldPalette);
         return;
     }
 
     {
         if ( m_oldPalette.Ok() )
             SetPalette(m_oldPalette);
         return;
     }
 
-    if ( !palette.Ok() ) return;
-    if ( m_palette == palette ) return;
+    if ( palette.IsSameAs(m_palette) )
+        return;
+
     m_oldPalette = m_palette;
     m_palette = palette;
 
     m_oldPalette = m_palette;
     m_palette = palette;
 
@@ -1433,17 +1434,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest,
     /* scale/translate size and position */
     wxCoord xx = XLOG2DEV(xdest);
     wxCoord yy = YLOG2DEV(ydest);
     /* scale/translate size and position */
     wxCoord xx = XLOG2DEV(xdest);
     wxCoord yy = YLOG2DEV(ydest);
-    wxCoord ww = XLOG2DEVREL(width);
-    wxCoord hh = YLOG2DEVREL(height);
 
     if ( source->m_isMemDC )
     {
         wxMemoryDC *memDC = (wxMemoryDC*) source;
 
     if ( source->m_isMemDC )
     {
         wxMemoryDC *memDC = (wxMemoryDC*) source;
-        DoDrawSubBitmap(memDC->GetSelectedObject(), xsrc, ysrc, ww, hh,
+        DoDrawSubBitmap(memDC->GetSelectedObject(),
+                        xsrc, ysrc, width, height,
                         xdest, ydest, rop, useMask);
     }
     else
     {
                         xdest, ydest, rop, useMask);
     }
     else
     {
+        wxCoord ww = XLOG2DEVREL(width);
+        wxCoord hh = YLOG2DEVREL(height);
+
         m_MGLDC->makeCurrent(); // will go away with MGL6.0
         m_MGLDC->bitBlt(*source->GetMGLDC(),
                         xsrc, ysrc, xsrc + ww, ysrc + hh,
         m_MGLDC->makeCurrent(); // will go away with MGL6.0
         m_MGLDC->bitBlt(*source->GetMGLDC(),
                         xsrc, ysrc, xsrc + ww, ysrc + hh,
@@ -1545,7 +1548,7 @@ void wxDC::DoDrawSubBitmap(const wxBitmap &bmp,
         // This sequence of operations ensures that the source's transparent
         // area need not be black, and logical functions are supported.
 
         // This sequence of operations ensures that the source's transparent
         // area need not be black, and logical functions are supported.
 
-        wxBitmap *mask = bmp.GetMask()->GetBitmap();
+        wxBitmap mask = bmp.GetMask()->GetBitmap();
 
         MGLMemoryDC *temp;
 
 
         MGLMemoryDC *temp;
 
@@ -1570,10 +1573,10 @@ void wxDC::DoDrawSubBitmap(const wxBitmap &bmp,
         DoBitBlt(bmp, temp, x, y, w, h, 0, 0, dw, dh, mglRop,
                  useStretching, putSection);
 
         DoBitBlt(bmp, temp, x, y, w, h, 0, 0, dw, dh, mglRop,
                  useStretching, putSection);
 
-        mask->SetMonoPalette(wxColour(0,0,0), wxColour(255,255,255));
-        DoBitBlt(*mask, temp, x, y, w, h, 0, 0, dw, dh, MGL_R2_MASKSRC,
+        mask.SetMonoPalette(wxColour(0,0,0), wxColour(255,255,255));
+        DoBitBlt(mask, temp, x, y, w, h, 0, 0, dw, dh, MGL_R2_MASKSRC,
                  useStretching, putSection);
                  useStretching, putSection);
-        DoBitBlt(*mask, m_MGLDC, x, y, w, h, dx, dy, dw, dh, MGL_R2_MASKNOTSRC,
+        DoBitBlt(mask, m_MGLDC, x, y, w, h, dx, dy, dw, dh, MGL_R2_MASKNOTSRC,
                  useStretching, putSection);
 
         m_MGLDC->bitBlt(*temp, 0, 0, dw, dh, dx, dy, MGL_OR_MODE);
                  useStretching, putSection);
 
         m_MGLDC->bitBlt(*temp, 0, 0, dw, dh, dx, dy, MGL_OR_MODE);