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:
Ron Lee
2000-03-06 04:40:01 +00:00
parent a059bcd21c
commit f547e9bb27
2 changed files with 16 additions and 21 deletions

View File

@@ -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; }

View File

@@ -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()