X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/42d11c8e66149da692edaddcffc4c67cfa7ca496..f0f4301209cc58eb5562be289f49bf0fb9e7d6b8:/src/msw/dc.cpp diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index f4e01a72a1..f7200155db 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -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);