// event handlers (these functions should _not_ be virtual)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
+ void OnClip(wxCommandEvent& event);
void OnShow(wxCommandEvent &event);
void OnOption(wxCommandEvent &event);
void Show(ScreenToShow show) { m_show = show; Refresh(); }
+ // set or remove the clipping region
+ void Clip(bool clip) { m_clip = clip; Refresh(); }
+
protected:
void DrawTestLines( int x, int y, int width, wxDC &dc );
void DrawTestPoly(wxDC& dc);
ScreenToShow m_show;
wxBitmap m_smile_bmp;
wxIcon m_std_icon;
+ bool m_clip;
DECLARE_EVENT_TABLE()
};
File_ShowCircles,
MenuShow_Last = File_ShowCircles,
+ File_Clip,
+
MenuOption_First,
MapMode_Text = MenuOption_First,
{
// mark the origin
dc.DrawCircle(0, 0, 10);
-#if !(defined __WXGTK__) && !(defined __WXX11__) && !(defined __WXMOTIF__) && !(defined __WXMGL__)
- // not implemented in wxGTK or wxMOTIF or wxX11 :-(
- dc.FloodFill(0, 0, wxColour(255, 0, 0));
-#endif //
+
+ //flood fill using brush, starting at 1,1 and replacing whatever colour we find there
+ dc.SetBrush(wxBrush(wxColour(128,128,0), wxSOLID));
+ wxColour tmpColour ;
+ dc.GetPixel(1,1, &tmpColour);
+ dc.FloodFill(1,1, tmpColour, wxFLOOD_SURFACE);
dc.DrawCheckMark(5, 80, 15, 15);
dc.DrawCheckMark(25, 80, 30, 30);
dc.DestroyClippingRegion();
wxRegion region(x + 110, y + 20, 100, 270);
+#if !defined(__WXMOTIF__) && !defined(__WXMAC__)
if ( !firstTime )
region.Offset(10, 10);
-
+#endif
dc.SetClippingRegion(region);
dc.SetBrush( *wxGREY_BRUSH );
}
}
+ if ( m_clip )
+ dc.SetClippingRegion(100, 100, 100, 100);
+
dc.Clear();
- if ( m_owner->m_textureBackground) {
+ if ( m_owner->m_textureBackground )
+ {
dc.SetPen(*wxMEDIUM_GREY_PEN);
- for (int i=0; i<200; i++)
+ for ( int i = 0; i < 200; i++ )
dc.DrawLine(0, i*10, i*10, 0);
}
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU (File_Quit, MyFrame::OnQuit)
EVT_MENU (File_About, MyFrame::OnAbout)
+ EVT_MENU (File_Clip, MyFrame::OnClip)
EVT_MENU_RANGE(MenuShow_First, MenuShow_Last, MyFrame::OnShow)
menuFile->Append(File_ShowRegions, "Re&gions screen\tF8");
menuFile->Append(File_ShowCircles, "&Circles screen\tF9");
menuFile->AppendSeparator();
+ menuFile->AppendCheckItem(File_Clip, "&Clip\tCtrl-C", "Clip/unclip drawing");
+ menuFile->AppendSeparator();
menuFile->Append(File_About, "&About...\tCtrl-A", "Show about dialog");
menuFile->AppendSeparator();
menuFile->Append(File_Quit, "E&xit\tAlt-X", "Quit this program");
wxMessageBox(msg, "About Drawing", wxOK | wxICON_INFORMATION, this);
}
+void MyFrame::OnClip(wxCommandEvent& event)
+{
+ m_canvas->Clip(event.IsChecked());
+}
+
void MyFrame::OnShow(wxCommandEvent& event)
{
m_canvas->Show((ScreenToShow)(event.GetId() - MenuShow_First));