#define DFCS_HOT 0x1000
#endif
-// When we're using GDI+, the DC might have transforms applied to it,
-// but the renderer APIs don't respect them. So we need to apply
-// the transforms to the rect ourselves.
-inline
-wxRect applyGDIPlusTransformsToRect(wxDC& dc, const wxRect& r)
-{
- wxRect rect = r;
-#if wxUSE_GRAPHICS_CONTEXT
- wxGCDC* gcdc = dynamic_cast<wxGCDC*>(&dc);
- if (gcdc)
- {
- double xtrans = 0;
- double ytrans = 0;
- wxGraphicsContext* gc = gcdc->GetGraphicsContext();
- gc->GetTransform().TransformPoint(&xtrans, &ytrans);
- rect.x = rect.x + (int)xtrans;
- rect.y = rect.y + (int)ytrans;
- }
-#endif
- return rect;
-}
-
// ----------------------------------------------------------------------------
// methods common to wxRendererMSW and wxRendererXP
// ----------------------------------------------------------------------------
const wxRect& rect,
int flags)
{
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_RET( dc.GetImpl(), wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);
const wxRect& rect,
int flags)
{
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_RET( dc.GetImpl(), wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);
style |= DFCS_PUSHED;
if ( flags & wxCONTROL_CURRENT )
style |= DFCS_HOT;
+ if ( flags & wxCONTROL_UNDETERMINED )
+ // Using DFCS_BUTTON3STATE here doesn't work (as might be expected),
+ // use the following two styles to get the same look of a check box
+ // in the undetermined state.
+ style |= DFCS_INACTIVE | DFCS_CHECKED;
::DrawFrameControl(GetHdcOf(dc.GetTempHDC()), &r, type, style);
}
return;
}
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_RET( dc.GetImpl(), wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);
return m_rendererNative.DrawHeaderButton(win, dc, rect, flags, sortArrow, params);
}
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_MSG( dc.GetImpl(), -1, wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);
return;
}
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_RET( dc.GetImpl(), wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);
const wxRect& rect,
int flags)
{
- wxRect adjustedRect = applyGDIPlusTransformsToRect(dc, rect);
+ wxCHECK_RET( dc.GetImpl(), wxT("Invalid wxDC") );
+
+ wxRect adjustedRect = dc.GetImpl()->MSWApplyGDIPlusTransform(rect);
RECT r;
wxCopyRectToRECT(adjustedRect, r);