]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dc.cpp
Filter index wasn't being set for multiple file dialog
[wxWidgets.git] / src / msw / dc.cpp
index f4e01a72a17d7287521fafcbbd2d806f5d83051b..f7200155db24ffded446ed38990df16195398767 100644 (file)
@@ -17,7 +17,7 @@
 // headers
 // ---------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "dc.h"
 #endif
 
@@ -158,6 +158,8 @@ private:
     COLORREF m_colFgOld, m_colBgOld;
 
     bool m_changed;
+
+    DECLARE_NO_COPY_CLASS(wxColourChanger)
 };
 
 // this class saves the old stretch blit mode during its life time
@@ -186,6 +188,8 @@ private:
     const HDC m_hdc;
 
     int m_modeOld;
+
+    DECLARE_NO_COPY_CLASS(StretchBltModeChanger)
 };
 
 // ===========================================================================
@@ -568,7 +572,7 @@ bool wxDC::DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style)
     }
 
     CalcBoundingBox(x, y);
-    
+
     return success;
 #endif
 }
@@ -626,7 +630,12 @@ void wxDC::DoDrawArc(wxCoord x1, wxCoord y1,
                      wxCoord xc, wxCoord yc)
 {
 #ifdef __WXWINCE__
-    // FIXME: emulate Arc
+    // Slower emulation since WinCE doesn't support Pie and Arc
+    double r = sqrt( (x1-xc)*(x1-xc) + (y1-yc)*(y1-yc) );
+    double sa = acos((x1-xc)/r)/M_PI*180; // between 0 and 180
+    if( y1>yc ) sa = -sa; // below center
+    double ea = atan2(yc-y2, x2-xc)/M_PI*180;
+    DoDrawEllipticArcRot( xc-r, yc-r, 2*r, 2*r, sa, ea );
 #else
 
 #ifdef __WXMICROWIN__
@@ -869,11 +878,7 @@ void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord h
 
     if (radius < 0.0)
     {
-        double smallest = 0.0;
-        if (width < height)
-            smallest = width;
-        else
-            smallest = height;
+        double smallest = (width < height) ? width : height;
         radius = (- radius * smallest);
     }
 
@@ -917,7 +922,7 @@ void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
 void wxDC::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea)
 {
 #ifdef __WXWINCE__
-    // FIXME
+    DoDrawEllipticArcRot( x, y, w, h, sa, ea );
 #else
 
 #ifdef __WXMICROWIN__
@@ -1423,8 +1428,7 @@ void wxDC::SetBrush(const wxBrush& brush)
 
         if ( m_brush.GetResourceHandle() )
         {
-            HBRUSH b = 0;
-            b = (HBRUSH) ::SelectObject(GetHdc(), (HBRUSH)m_brush.GetResourceHandle());
+            HBRUSH b = (HBRUSH) ::SelectObject(GetHdc(), (HBRUSH)m_brush.GetResourceHandle());
             if (!m_oldBrush)
                 m_oldBrush = (WXHBRUSH) b;
         }
@@ -1860,7 +1864,7 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest,
         ::SetBkColor(GetHdc(), m_textBackgroundColour.GetPixel() );
     }
 
-    DWORD dwRop = SRCCOPY;
+    DWORD dwRop;
     switch (rop)
     {
         case wxXOR:          dwRop = SRCINVERT;        break;
@@ -2038,8 +2042,12 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest,
         }
 
         if ( !success && (caps & RC_STRETCHBLT) )
+#endif
+        // __WXWINCE__
         {
+#ifndef __WXWINCE__
             StretchBltModeChanger changeMode(GetHdc(), COLORONCOLOR);
+#endif
 
             if ( !::StretchBlt
                     (
@@ -2077,8 +2085,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest,
                 success = TRUE;
             }
         }
-#endif
-        // __WXWINCE__
     }
 
     ::SetTextColor(GetHdc(), old_textground);