]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/drawing/drawing.cpp
make the length of string proportional to the parameter to study test time dependency...
[wxWidgets.git] / samples / drawing / drawing.cpp
index 200e5aeee9453cfe7c1bd5539fa7da9fc38d3856..39427761247c62ded36329ef4947a4950265f652 100644 (file)
@@ -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
 
     #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
 // ----------------------------------------------------------------------------
@@ -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,20 +783,20 @@ 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
@@ -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)