COLORREF m_oldColFg,
m_oldColBg;
- DECLARE_NO_COPY_CLASS(wxTextColoursChanger)
+ wxDECLARE_NO_COPY_CLASS(wxTextColoursChanger);
};
// background mode
const HDC m_hdc;
int m_oldMode;
- DECLARE_NO_COPY_CLASS(wxBkModeChanger)
+ wxDECLARE_NO_COPY_CLASS(wxBkModeChanger);
};
// instead of duplicating the same code which sets and then restores text
wxBrushAttrsSetter(wxMSWDCImpl& dc);
private:
- DECLARE_NO_COPY_CLASS(wxBrushAttrsSetter)
+ wxDECLARE_NO_COPY_CLASS(wxBrushAttrsSetter);
};
-// this class saves the old stretch blit mode during its life time
+#ifdef __WXWINCE__
+
+#define SET_STRETCH_BLT_MODE(hdc)
+
+#else // !__WXWINCE__
+
+// this class sets the stretch blit mode to COLORONCOLOR during its lifetime
+//
+// don't use it directly, use SET_STRETCH_BLT_MODE() macro instead as it
+// expands to nothing under WinCE which doesn't have SetStretchBltMode()
class StretchBltModeChanger
{
public:
- StretchBltModeChanger(HDC hdc,
- int WXUNUSED_IN_WINCE(mode))
+ StretchBltModeChanger(HDC hdc)
: m_hdc(hdc)
{
-#ifndef __WXWINCE__
- m_modeOld = ::SetStretchBltMode(m_hdc, mode);
+ m_modeOld = ::SetStretchBltMode(m_hdc, COLORONCOLOR);
if ( !m_modeOld )
wxLogLastError(_T("SetStretchBltMode"));
-#endif
}
~StretchBltModeChanger()
{
-#ifndef __WXWINCE__
if ( !::SetStretchBltMode(m_hdc, m_modeOld) )
wxLogLastError(_T("SetStretchBltMode"));
-#endif
}
private:
int m_modeOld;
- DECLARE_NO_COPY_CLASS(StretchBltModeChanger)
+ wxDECLARE_NO_COPY_CLASS(StretchBltModeChanger);
};
+#define SET_STRETCH_BLT_MODE(hdc) \
+ StretchBltModeChanger wxMAKE_UNIQUE_NAME(stretchModeChanger)(hdc)
+
+#endif // __WXWINCE__/!__WXWINCE__
+
#if wxUSE_DYNLIB_CLASS
// helper class to cache dynamically loaded libraries and not attempt reloading
if (m_oldBitmap)
{
::SelectObject((HDC) dc, (HBITMAP) m_oldBitmap);
-#ifdef __WXDEBUG__
if (m_selectedBitmap.IsOk())
{
m_selectedBitmap.SetSelectedInto(NULL);
}
-#endif
}
m_oldBitmap = 0;
if (m_oldPen)
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
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 )
{
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);
return;
}
+ SET_STRETCH_BLT_MODE(GetHdc());
+
if ( useMask )
{
wxMask *mask = bmp.GetMask();
if ( !dc || m_logicalFunction < 0 )
return;
- int rop wxDUMMY_INITIALIZE(0);
+ int rop;
switch (m_logicalFunction)
{
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);
wxLogLastError(wxT("BitBlt"));
}
-#ifndef __WXWINCE__
- StretchBltModeChanger changeMode(dc_buffer, COLORONCOLOR);
-#endif
+ SET_STRETCH_BLT_MODE(GetHdc());
// copy src to buffer using selected raster op
if ( !::StretchBlt(dc_buffer, 0, 0, dstWidth, dstHeight,
sizeof(ds),
&ds) == sizeof(ds) )
{
- StretchBltModeChanger changeMode(GetHdc(), COLORONCOLOR);
+ SET_STRETCH_BLT_MODE(GetHdc());
// Figure out what co-ordinate system we're supposed to specify
// ysrc in.
if ( hDIB > 0 )
{
// reflect ysrc
- ysrc = hDIB - (ysrc + dstHeight);
+ ysrc = hDIB - (ysrc + srcHeight);
}
if ( ::StretchDIBits(GetHdc(),
#endif
// __WXWINCE__
{
-#ifndef __WXWINCE__
- StretchBltModeChanger changeMode(GetHdc(), COLORONCOLOR);
-#endif
+ SET_STRETCH_BLT_MODE(GetHdc());
if ( !::StretchBlt
(