X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/795b5a8bf6ab75dbbefcdaeaab03380bdf6582fb..3c01c5951189e13b8b4a5d7b288b54d4a57a30f8:/samples/drawing/drawing.cpp diff --git a/samples/drawing/drawing.cpp b/samples/drawing/drawing.cpp index 200e5aeee9..9b288944fb 100644 --- a/samples/drawing/drawing.cpp +++ b/samples/drawing/drawing.cpp @@ -36,6 +36,7 @@ #include "wx/dcgraph.h" #include "wx/overlay.h" #include "wx/graphics.h" +#include "wx/filename.h" #define TEST_CAIRO_EVERYWHERE 0 @@ -48,33 +49,6 @@ #include "mondrian.xpm" #endif -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// what do we show on screen (there are too many shapes to put them all on -// screen simultaneously) -enum ScreenToShow -{ - Show_Default, - Show_Text, - Show_Lines, - Show_Brushes, - Show_Polygons, - Show_Mask, - Show_Mask_Stretch, - Show_Ops, - Show_Regions, - Show_Circles, - Show_Splines, -#if wxUSE_GRAPHICS_CONTEXT - Show_Alpha, - Show_Graphics, -#endif - Show_Gradient, - Show_Max -}; - // ---------------------------------------------------------------------------- // global variables // ---------------------------------------------------------------------------- @@ -137,7 +111,7 @@ public: int m_backgroundMode; int m_textureBackground; - int m_mapMode; + wxMappingMode m_mapMode; double m_xUserScale; double m_yUserScale; int m_xLogicalOrigin; @@ -165,7 +139,7 @@ public: void OnMouseDown(wxMouseEvent &event); void OnMouseUp(wxMouseEvent &event); - void ToShow(ScreenToShow show) { m_show = show; Refresh(); } + void ToShow(int show) { m_show = show; Refresh(); } // set or remove the clipping region void Clip(bool clip) { m_clip = clip; Refresh(); } @@ -201,7 +175,7 @@ protected: private: MyFrame *m_owner; - ScreenToShow m_show; + int m_show; wxBitmap m_smile_bmp; wxIcon m_std_icon; bool m_clip; @@ -317,6 +291,9 @@ bool MyApp::LoadImages() gs_bmp36 = new wxBitmap; wxPathList pathList; + // special hack for Unix in-tree sample build, don't do this in real + // programs, use wxStandardPaths instead + pathList.Add(wxFileName(argv[0]).GetPath()); pathList.Add(_T(".")); pathList.Add(_T("..")); pathList.Add(_T("../..")); @@ -380,13 +357,10 @@ bool MyApp::OnInit() wxT("for this sample from the current or parent ") wxT("directory, please copy them there.")); - // stop here - DeleteBitmaps(); - - return false; + // still continue, the sample can be used without images too if they're + // missing for whatever reason } - // ok, continue return true; } @@ -429,7 +403,7 @@ MyCanvas::MyCanvas(MyFrame *parent) wxHSCROLL | wxVSCROLL | wxNO_FULL_REPAINT_ON_RESIZE) { m_owner = parent; - m_show = Show_Default; + m_show = File_ShowDefault; m_smile_bmp = wxBitmap(smile_xpm); m_std_icon = wxArtProvider::GetIcon(wxART_INFORMATION); m_clip = false; @@ -809,26 +783,26 @@ void MyCanvas::DrawText(wxDC& dc) // test the logical function effect wxCoord y = 150; dc.SetLogicalFunction(wxINVERT); - dc.DrawText( _T("There should be no text below"), 110, 150 ); + // text drawing should ignore logical function + dc.DrawText( _T("There should be a text below"), 110, 150 ); dc.DrawRectangle( 110, y, 100, height ); - // twice drawn inverted should result in invisible y += height; - dc.DrawText( _T("Invisible text"), 110, y ); + dc.DrawText( _T("Visible text"), 110, y ); dc.DrawRectangle( 110, y, 100, height ); - dc.DrawText( _T("Invisible text"), 110, y ); + dc.DrawText( _T("Visible text"), 110, y ); dc.DrawRectangle( 110, y, 100, height ); dc.SetLogicalFunction(wxCOPY); y += height; dc.DrawRectangle( 110, y, 100, height ); - dc.DrawText( _T("Visible text"), 110, y ); + dc.DrawText( _T("Another visible text"), 110, y ); } static const struct { const wxChar *name; - int rop; + wxRasterOperationMode rop; } rasterOperations[] = { { wxT("wxAND"), wxAND }, @@ -1420,63 +1394,63 @@ void MyCanvas::OnPaint(wxPaintEvent &WXUNUSED(event)) switch ( m_show ) { - case Show_Default: + case File_ShowDefault: DrawDefault(dc); break; - case Show_Circles: + case File_ShowCircles: DrawCircles(dc); break; - case Show_Splines: + case File_ShowSplines: DrawSplines(dc); break; - case Show_Regions: + case File_ShowRegions: DrawRegions(dc); break; - case Show_Text: + case File_ShowText: DrawText(dc); break; - case Show_Lines: + case File_ShowLines: DrawTestLines( 0, 100, 0, dc ); DrawTestLines( 0, 320, 1, dc ); DrawTestLines( 0, 540, 2, dc ); DrawTestLines( 0, 760, 6, dc ); break; - case Show_Brushes: + case File_ShowBrushes: DrawTestBrushes(dc); break; - case Show_Polygons: + case File_ShowPolygons: DrawTestPoly(dc); break; - case Show_Mask: + case File_ShowMask: DrawImages(dc, Draw_Normal); break; - case Show_Mask_Stretch: + case File_ShowMaskStretch: DrawImages(dc, Draw_Stretch); break; - case Show_Ops: + case File_ShowOps: DrawWithLogicalOps(dc); break; #if wxUSE_GRAPHICS_CONTEXT - case Show_Alpha: + case File_ShowAlpha: DrawAlpha(dc); break; - case Show_Graphics: + case File_ShowGraphics: DrawGraphics(gdc.GetGraphicsContext()); break; #endif - case Show_Gradient: + case File_ShowGradients: DrawGradients(dc); break; @@ -1601,7 +1575,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) menuFile->Append(File_ShowPolygons, _T("&Polygons screen\tF5")); menuFile->Append(File_ShowMask, _T("&Mask screen\tF6")); menuFile->Append(File_ShowMaskStretch, _T("1/&2 scaled mask\tShift-F6")); - menuFile->Append(File_ShowOps, _T("&ROP screen\tF7")); + menuFile->Append(File_ShowOps, _T("&Raster operations screen\tF7")); menuFile->Append(File_ShowRegions, _T("Re&gions screen\tF8")); menuFile->Append(File_ShowCircles, _T("&Circles screen\tF9")); #if wxUSE_GRAPHICS_CONTEXT @@ -1726,7 +1700,7 @@ void MyFrame::OnGraphicContext(wxCommandEvent& event) void MyFrame::OnShow(wxCommandEvent& event) { - m_canvas->ToShow((ScreenToShow)(event.GetId() - MenuShow_First)); + m_canvas->ToShow(event.GetId()); } void MyFrame::OnOption(wxCommandEvent& event)