X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9da8feef2363386c092af561c9e125d999392557..da98e15760bfcad41a5579e64955caadc2e535f3:/samples/drawing/drawing.cpp diff --git a/samples/drawing/drawing.cpp b/samples/drawing/drawing.cpp index 0af06101ab..b462b1370d 100644 --- a/samples/drawing/drawing.cpp +++ b/samples/drawing/drawing.cpp @@ -18,8 +18,8 @@ // ---------------------------------------------------------------------------- #if defined(__GNUG__) && !defined(__APPLE__) - #pragma implementation "drawing.cpp" - #pragma interface "drawing.cpp" + #pragma implementation + #pragma interface #endif // For compilers that support precompilation, includes "wx/wx.h". @@ -30,7 +30,7 @@ #endif // for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers +// need because it includes almost all "standard" wxWidgets headers #ifndef WX_PRECOMP #include "wx/wx.h" #endif @@ -119,7 +119,9 @@ public: void OnShow(wxCommandEvent &event); void OnOption(wxCommandEvent &event); +#if wxUSE_COLOURDLG wxColour SelectColour(); +#endif // wxUSE_COLOURDLG void PrepareDC(wxDC& dc); int m_backgroundMode; @@ -137,7 +139,7 @@ public: MyCanvas *m_canvas; private: - // any class wishing to process wxWindows events must use this macro + // any class wishing to process wxWidgets events must use this macro DECLARE_EVENT_TABLE() }; @@ -228,9 +230,11 @@ enum LogicalOrigin_Set, LogicalOrigin_Restore, +#if wxUSE_COLOURDLG Colour_TextForeground, Colour_TextBackground, Colour_Background, +#endif // wxUSE_COLOURDLG Colour_BackgroundMode, Colour_TextureBackgound, @@ -238,11 +242,11 @@ enum }; // ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows +// event tables and other macros for wxWidgets // ---------------------------------------------------------------------------- -// Create a new application object: this macro will allow wxWindows to create +// Create a new application object: this macro will allow wxWidgets to create // the application object during program execution (it's better than using a // static object for many reasons) and also declares the accessor function // wxGetApp() which will return the reference of the right type (i.e. MyApp and @@ -360,7 +364,7 @@ void MyApp::DeleteBitmaps() // MyCanvas // ---------------------------------------------------------------------------- -// the event tables connect the wxWindows events with the functions (event +// the event tables connect the wxWidgets events with the functions (event // handlers) which process them. BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT (MyCanvas::OnPaint) @@ -509,11 +513,16 @@ void MyCanvas::DrawDefault(wxDC& dc) // mark the origin dc.DrawCircle(0, 0, 10); +#if !wxMAC_USE_CORE_GRAPHICS + // GetPixel and FloodFill not supported by Mac OS X CoreGraphics + // (FloodFill uses Blit from a non-wxMemoryDC) //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); +#endif dc.DrawCheckMark(5, 80, 15, 15); dc.DrawCheckMark(25, 80, 30, 30); @@ -660,7 +669,7 @@ void MyCanvas::DrawDefault(wxDC& dc) // Added by JACS to demonstrate bizarre behaviour. // With a size of 70, we get a missing red RHS, - // and the hight is too small, so we get yellow + // and the height is too small, so we get yellow // showing. With a size of 40, it draws as expected: // it just shows a white rectangle with red outline. int totalWidth = 70; @@ -670,11 +679,12 @@ void MyCanvas::DrawDefault(wxDC& dc) wxMemoryDC memdc2; memdc2.SelectObject(bitmap2); - wxBrush yellowBrush(wxColour(255, 255, 0), wxSOLID); + wxColour clr(255, 255, 0); + wxBrush yellowBrush(clr, wxSOLID); memdc2.SetBackground(yellowBrush); memdc2.Clear(); - wxPen yellowPen(wxColour(255, 255, 0), 1, wxSOLID); + wxPen yellowPen(clr, 1, wxSOLID); // Now draw a white rectangle with red outline. It should // entirely eclipse the yellow background. @@ -947,7 +957,8 @@ void MyCanvas::OnPaint(wxPaintEvent &WXUNUSED(event)) if ( m_owner->m_textureBackground) { if ( ! m_owner->m_backgroundBrush.Ok() ) { - wxBrush b(wxColour(0,128,0), wxSOLID); + wxColour clr(0,128,0); + wxBrush b(clr, wxSOLID); dc.SetBackground(b); } } @@ -1009,6 +1020,7 @@ void MyCanvas::OnPaint(wxPaintEvent &WXUNUSED(event)) void MyCanvas::OnMouseMove(wxMouseEvent &event) { +#if wxUSE_STATUSBAR wxClientDC dc(this); PrepareDC(dc); m_owner->PrepareDC(dc); @@ -1019,13 +1031,16 @@ void MyCanvas::OnMouseMove(wxMouseEvent &event) wxString str; str.Printf( wxT("Current mouse position: %d,%d"), (int)x, (int)y ); m_owner->SetStatusText( str ); +#else + wxUnusedVar(event); +#endif // wxUSE_STATUSBAR } // ---------------------------------------------------------------------------- // MyFrame // ---------------------------------------------------------------------------- -// the event tables connect the wxWindows events with the functions (event +// the event tables connect the wxWidgets events with the functions (event // handlers) which process them. It can be also done at run-time, but for the // simple menu events like this the static method is much simpler. BEGIN_EVENT_TABLE(MyFrame, wxFrame) @@ -1079,8 +1094,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) menuUserScale->Append( UserScale_Restore, _T("&Restore to normal\tCtrl-0") ); wxMenu *menuAxis = new wxMenu; - menuAxis->Append( AxisMirror_Horiz, _T("Mirror horizontally\tCtrl-M"), _T(""), true ); - menuAxis->Append( AxisMirror_Vertic, _T("Mirror vertically\tCtrl-N"), _T(""), true ); + menuAxis->AppendCheckItem( AxisMirror_Horiz, _T("Mirror horizontally\tCtrl-M") ); + menuAxis->AppendCheckItem( AxisMirror_Vertic, _T("Mirror vertically\tCtrl-N") ); wxMenu *menuLogical = new wxMenu; menuLogical->Append( LogicalOrigin_MoveDown, _T("Move &down\tCtrl-D") ); @@ -1092,11 +1107,13 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) menuLogical->Append( LogicalOrigin_Restore, _T("&Restore to normal\tShift-Ctrl-0") ); wxMenu *menuColour = new wxMenu; +#if wxUSE_COLOURDLG menuColour->Append( Colour_TextForeground, _T("Text &foreground...") ); menuColour->Append( Colour_TextBackground, _T("Text &background...") ); menuColour->Append( Colour_Background, _T("Background &colour...") ); - menuColour->Append( Colour_BackgroundMode, _T("&Opaque/transparent\tCtrl-B"), _T(""), true ); - menuColour->Append( Colour_TextureBackgound, _T("Draw textured back&ground\tCtrl-T"), _T(""), true); +#endif // wxUSE_COLOURDLG + menuColour->AppendCheckItem( Colour_BackgroundMode, _T("&Opaque/transparent\tCtrl-B") ); + menuColour->AppendCheckItem( Colour_TextureBackgound, _T("Draw textured back&ground\tCtrl-T") ); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; @@ -1110,9 +1127,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... and attach this menu bar to the frame SetMenuBar(menuBar); - // create a status bar just for fun (by default with 1 pane only) +#if wxUSE_STATUSBAR CreateStatusBar(2); - SetStatusText(_T("Welcome to wxWindows!")); + SetStatusText(_T("Welcome to wxWidgets!")); +#endif // wxUSE_STATUSBAR m_mapMode = wxMM_TEXT; m_xUserScale = 1.0; @@ -1225,6 +1243,7 @@ void MyFrame::OnOption(wxCommandEvent& event) m_xAxisReversed = !m_xAxisReversed; break; +#if wxUSE_COLOURDLG case Colour_TextForeground: m_colourForeground = SelectColour(); break; @@ -1240,6 +1259,8 @@ void MyFrame::OnOption(wxCommandEvent& event) } } break; +#endif // wxUSE_COLOURDLG + case Colour_BackgroundMode: m_backgroundMode = m_backgroundMode == wxSOLID ? wxTRANSPARENT : wxSOLID; @@ -1265,6 +1286,7 @@ void MyFrame::PrepareDC(wxDC& dc) dc.SetMapMode( m_mapMode ); } +#if wxUSE_COLOURDLG wxColour MyFrame::SelectColour() { wxColour col; @@ -1278,4 +1300,5 @@ wxColour MyFrame::SelectColour() return col; } +#endif // wxUSE_COLOURDLG