set m_clipXX so dc.GetClippingBox returns real bounding box
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -125,7 +125,6 @@ public:
|
|||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
virtual void SetRop(WXHDC cdc);
|
virtual void SetRop(WXHDC cdc);
|
||||||
virtual void DoClipping(WXHDC cdc);
|
|
||||||
virtual void SelectOldObjects(WXHDC dc);
|
virtual void SelectOldObjects(WXHDC dc);
|
||||||
|
|
||||||
wxWindow *GetWindow() const { return m_canvas; }
|
wxWindow *GetWindow() const { return m_canvas; }
|
||||||
|
@@ -175,43 +175,39 @@ void wxDC::SelectOldObjects(WXHDC dc)
|
|||||||
// clipping
|
// clipping
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define DO_SET_CLIPPING_BOX() \
|
||||||
|
{ \
|
||||||
|
RECT rect; \
|
||||||
|
\
|
||||||
|
GetClipBox(GetHdc(), &rect); \
|
||||||
|
\
|
||||||
|
m_clipX1 = (wxCoord) XDEV2LOG(rect.left); \
|
||||||
|
m_clipY1 = (wxCoord) YDEV2LOG(rect.top); \
|
||||||
|
m_clipX2 = (wxCoord) XDEV2LOG(rect.right); \
|
||||||
|
m_clipY2 = (wxCoord) YDEV2LOG(rect.bottom); \
|
||||||
|
}
|
||||||
|
|
||||||
void wxDC::DoSetClippingRegion(wxCoord cx, wxCoord cy, wxCoord cw, wxCoord ch)
|
void wxDC::DoSetClippingRegion(wxCoord cx, wxCoord cy, wxCoord cw, wxCoord ch)
|
||||||
{
|
{
|
||||||
m_clipping = TRUE;
|
m_clipping = TRUE;
|
||||||
m_clipX1 = (int)cx;
|
IntersectClipRect(GetHdc(), XLOG2DEV(cx), YLOG2DEV(cy),
|
||||||
m_clipY1 = (int)cy;
|
XLOG2DEV(cx + cw), YLOG2DEV(cy + ch));
|
||||||
m_clipX2 = (int)(cx + cw);
|
DO_SET_CLIPPING_BOX()
|
||||||
m_clipY2 = (int)(cy + ch);
|
|
||||||
|
|
||||||
DoClipping((WXHDC) m_hDC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::DoSetClippingRegionAsRegion(const wxRegion& region)
|
void wxDC::DoSetClippingRegionAsRegion(const wxRegion& region)
|
||||||
{
|
{
|
||||||
wxCHECK_RET( region.GetHRGN(), wxT("invalid clipping region") );
|
wxCHECK_RET( region.GetHRGN(), wxT("invalid clipping region") );
|
||||||
|
|
||||||
wxRect box = region.GetBox();
|
|
||||||
|
|
||||||
m_clipping = TRUE;
|
m_clipping = TRUE;
|
||||||
m_clipX1 = box.x;
|
|
||||||
m_clipY1 = box.y;
|
|
||||||
m_clipX2 = box.x + box.width;
|
|
||||||
m_clipY2 = box.y + box.height;
|
|
||||||
|
|
||||||
#ifdef __WIN16__
|
#ifdef __WIN16__
|
||||||
SelectClipRgn(GetHdc(), (HRGN) region.GetHRGN());
|
SelectClipRgn(GetHdc(), (HRGN) region.GetHRGN());
|
||||||
#else
|
#else
|
||||||
ExtSelectClipRgn(GetHdc(), (HRGN) region.GetHRGN(), RGN_AND);
|
ExtSelectClipRgn(GetHdc(), (HRGN) region.GetHRGN(), RGN_AND);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
void wxDC::DoClipping(WXHDC dc)
|
DO_SET_CLIPPING_BOX()
|
||||||
{
|
|
||||||
if (m_clipping && dc)
|
|
||||||
{
|
|
||||||
IntersectClipRect((HDC) dc, XLOG2DEV(m_clipX1), YLOG2DEV(m_clipY1),
|
|
||||||
XLOG2DEV(m_clipX2), YLOG2DEV(m_clipY2));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::DestroyClippingRegion()
|
void wxDC::DestroyClippingRegion()
|
||||||
|
Reference in New Issue
Block a user