]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dc.cpp
applying patch, fixes #10523
[wxWidgets.git] / src / msw / dc.cpp
index fcb7e822812745901bb8608f0685b2bf1115da40..b47befb24ee5f9935a863fe8caa6884165034c11 100644 (file)
@@ -785,11 +785,16 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1,
                      wxCoord x2, wxCoord y2,
                      wxCoord xc, wxCoord yc)
 {
+    double dx = xc - x1;
+    double dy = yc - y1;
+    wxCoord r = (wxCoord)sqrt(dx*dx + dy*dy);
+
+
 #ifdef __WXWINCE__
     // 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
+    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
@@ -798,11 +803,6 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1,
 
     wxBrushAttrsSetter cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
 
-    double dx = xc - x1;
-    double dy = yc - y1;
-    double radius = (double)sqrt(dx*dx+dy*dy);
-    wxCoord r = (wxCoord)radius;
-
     // treat the special case of full circle separately
     if ( x1 == x2 && y1 == y2 )
     {
@@ -816,7 +816,9 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1,
     wxCoord yy2 = YLOG2DEV(y2);
     wxCoord xxc = XLOG2DEV(xc);
     wxCoord yyc = YLOG2DEV(yc);
-    wxCoord ray = (wxCoord) sqrt(double((xxc-xx1)*(xxc-xx1)+(yyc-yy1)*(yyc-yy1)));
+    dx = xxc - xx1;
+    dy = yyc - yy1;
+    wxCoord ray = (wxCoord)sqrt(dx*dx + dy*dy);
 
     wxCoord xxx1 = (wxCoord) (xxc-ray);
     wxCoord yyy1 = (wxCoord) (yyc-ray);
@@ -1722,7 +1724,7 @@ void wxMSWDCImpl::SetRop(WXHDC dc)
     if ( !dc || m_logicalFunction < 0 )
         return;
 
-    int rop wxDUMMY_INITIALIZE(0);
+    int rop;
 
     switch (m_logicalFunction)
     {
@@ -1742,6 +1744,9 @@ void wxMSWDCImpl::SetRop(WXHDC dc)
         case wxNAND:         rop = R2_NOTMASKPEN;    break;
         case wxOR:           rop = R2_MERGEPEN;      break;
         case wxSET:          rop = R2_WHITE;         break;
+        default:
+            wxFAIL_MSG( wxS("unknown logical function") );
+            return;
     }
 
     SetROP2(GetHdc(), rop);
@@ -2287,7 +2292,7 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
                 if ( hDIB > 0 )
                 {
                     // reflect ysrc
-                    ysrc = hDIB - (ysrc + dstHeight);
+                    ysrc = hDIB - (ysrc + srcHeight);
                 }
 
                 if ( ::StretchDIBits(GetHdc(),