From 4cbcae1637045a75d2e897e551008c68616653f1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 1 Feb 2002 00:25:07 +0000 Subject: [PATCH] test wxRegion::Offset() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/drawing/drawing.cpp | 53 ++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/samples/drawing/drawing.cpp b/samples/drawing/drawing.cpp index 93c4b6df2f..8e53e2d480 100644 --- a/samples/drawing/drawing.cpp +++ b/samples/drawing/drawing.cpp @@ -161,7 +161,7 @@ protected: void DrawCircles(wxDC& dc); void DrawDefault(wxDC& dc); - void DrawRegionsHelper(wxDC& dc, wxCoord x); + void DrawRegionsHelper(wxDC& dc, wxCoord x, bool firstTime); private: MyFrame *m_owner; @@ -841,50 +841,53 @@ void MyCanvas::DrawRegions(wxDC& dc) { dc.DrawText("You should see a red rect partly covered by a cyan one " "on the left", 10, 5); - dc.DrawText("and 5 smileys from which 4 are partially clipped on the " - "right (2 copies should be identical)", + dc.DrawText("and 5 smileys from which 4 are partially clipped on the right", 10, 5 + dc.GetCharHeight()); + dc.DrawText("The second copy should be identical but right part of it " + "should be offset by 10 pixels.", + 10, 5 + 2*dc.GetCharHeight()); - DrawRegionsHelper(dc, 10); - DrawRegionsHelper(dc, 350); + DrawRegionsHelper(dc, 10, TRUE); + DrawRegionsHelper(dc, 350, FALSE); } -void MyCanvas::DrawRegionsHelper(wxDC& dc, wxCoord x) +void MyCanvas::DrawRegionsHelper(wxDC& dc, wxCoord x, bool firstTime) { + wxCoord y = 100; + dc.DestroyClippingRegion(); dc.SetBrush( *wxWHITE_BRUSH ); dc.SetPen( *wxTRANSPARENT_PEN ); - dc.DrawRectangle( x,50,310,310 ); + dc.DrawRectangle( x, y, 310, 310 ); - dc.SetClippingRegion( x+10,60,100,270 ); + dc.SetClippingRegion( x + 10, y + 10, 100, 270 ); dc.SetBrush( *wxRED_BRUSH ); - dc.DrawRectangle( x,50,310,310 ); + dc.DrawRectangle( x, y, 310, 310 ); - dc.SetClippingRegion( x+10,60,100,100 ); + dc.SetClippingRegion( x + 10, y + 10, 100, 100 ); dc.SetBrush( *wxCYAN_BRUSH ); - dc.DrawRectangle( x,50,310,310 ); + dc.DrawRectangle( x, y, 310, 310 ); + + dc.DestroyClippingRegion(); + + wxRegion region(x + 110, y + 20, 100, 270); + if ( !firstTime ) + region.Offset(10, 10); - // when drawing the left half, destroy the clipping region, when drawing - // the right one - leave it - // - // normally it shouldn't make any difference as SetClippingRegion() - // replaces the old clipping region - if ( x < 300 ) - dc.DestroyClippingRegion(); - dc.SetClippingRegion( x+110,70,100,270 ); + dc.SetClippingRegion(region); dc.SetBrush( *wxGREY_BRUSH ); - dc.DrawRectangle( x,50,310,310 ); + dc.DrawRectangle( x, y, 310, 310 ); if (m_smile_bmp.Ok()) { - dc.DrawBitmap( m_smile_bmp, x+150, 200, TRUE ); - dc.DrawBitmap( m_smile_bmp, x+130, 60, TRUE ); - dc.DrawBitmap( m_smile_bmp, x+130, 330, TRUE ); - dc.DrawBitmap( m_smile_bmp, x+100, 120, TRUE ); - dc.DrawBitmap( m_smile_bmp, x+200, 120, TRUE ); + dc.DrawBitmap( m_smile_bmp, x + 150, y + 150, TRUE ); + dc.DrawBitmap( m_smile_bmp, x + 130, y + 10, TRUE ); + dc.DrawBitmap( m_smile_bmp, x + 130, y + 280, TRUE ); + dc.DrawBitmap( m_smile_bmp, x + 100, y + 70, TRUE ); + dc.DrawBitmap( m_smile_bmp, x + 200, y + 70, TRUE ); } } -- 2.47.2