]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/drawing/drawing.cpp
[ 1505048 ] wxHtml rendering of underlined text
[wxWidgets.git] / samples / drawing / drawing.cpp
index 31f673167beaca1cf9aa8ae3ade00d1b12828187..cdf7de58765db328ae1d98c521a0a80ea2de589a 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(__APPLE__)
-    #pragma implementation
-    #pragma interface
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
@@ -65,7 +60,9 @@ enum ScreenToShow
     Show_Ops,
     Show_Regions,
     Show_Circles,
-    Show_Splines
+    Show_Splines,
+    Show_Gradient,
+    Show_Max
 };
 
 // ----------------------------------------------------------------------------
@@ -169,6 +166,7 @@ protected:
     void DrawCircles(wxDC& dc);
     void DrawSplines(wxDC& dc);
     void DrawDefault(wxDC& dc);
+    void DrawGradients(wxDC& dc);
 
     void DrawRegionsHelper(wxDC& dc, wxCoord x, bool firstTime);
 
@@ -205,7 +203,8 @@ enum
     File_ShowRegions,
     File_ShowCircles,
     File_ShowSplines,
-    MenuShow_Last = File_ShowSplines,
+    File_ShowGradients,
+    MenuShow_Last = File_ShowGradients,
 
     File_Clip,
 
@@ -516,7 +515,7 @@ void MyCanvas::DrawDefault(wxDC& dc)
     // mark the origin
     dc.DrawCircle(0, 0, 10);
 
-#if !wxMAC_USE_CORE_GRAPHICS
+#if !defined(wxMAC_USE_CORE_GRAPHICS) || !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
@@ -864,6 +863,9 @@ void MyCanvas::DrawCircles(wxDC& dc)
         y = 100,
         r = 20;
 
+    dc.SetPen( *wxRED_PEN );
+    dc.SetBrush( *wxGREEN_BRUSH );
+
     dc.DrawText(_T("Some circles"), 0, y);
     dc.DrawCircle(x, y, r);
     dc.DrawCircle(x + 2*r, y, r);
@@ -886,6 +888,36 @@ void MyCanvas::DrawCircles(wxDC& dc)
     dc.DrawEllipticArc(x + r, y, 2*r, r, 90, 180);
     dc.DrawEllipticArc(x + 3*r, y, 2*r, r, 180, 270);
     dc.DrawEllipticArc(x + 5*r, y, 2*r, r, 270, 360);
+    
+    // same as above, just transparent brush
+    
+    dc.SetPen( *wxRED_PEN );
+    dc.SetBrush( *wxTRANSPARENT_BRUSH );
+
+    y += 2*r;
+    dc.DrawText(_T("Some circles"), 0, y);
+    dc.DrawCircle(x, y, r);
+    dc.DrawCircle(x + 2*r, y, r);
+    dc.DrawCircle(x + 4*r, y, r);
+
+    y += 2*r;
+    dc.DrawText(_T("And ellipses"), 0, y);
+    dc.DrawEllipse(x - r, y, 2*r, r);
+    dc.DrawEllipse(x + r, y, 2*r, r);
+    dc.DrawEllipse(x + 3*r, y, 2*r, r);
+
+    y += 2*r;
+    dc.DrawText(_T("And arcs"), 0, y);
+    dc.DrawArc(x - r, y, x + r, y, x, y);
+    dc.DrawArc(x + 4*r, y, x + 2*r, y, x + 3*r, y);
+    dc.DrawArc(x + 5*r, y, x + 5*r, y, x + 6*r, y);
+
+    y += 2*r;
+    dc.DrawEllipticArc(x - r, y, 2*r, r, 0, 90);
+    dc.DrawEllipticArc(x + r, y, 2*r, r, 90, 180);
+    dc.DrawEllipticArc(x + 3*r, y, 2*r, r, 180, 270);
+    dc.DrawEllipticArc(x + 5*r, y, 2*r, r, 270, 360);
+    
 }
 
 void MyCanvas::DrawSplines(wxDC& dc)
@@ -976,6 +1008,36 @@ void MyCanvas::DrawSplines(wxDC& dc)
 #endif
 }
 
+void MyCanvas::DrawGradients(wxDC& dc)
+{
+    // LHS: linear
+    wxRect r(10, 10, 100, 100);
+    dc.GradientFillLinear(r, *wxWHITE, *wxBLUE, wxRIGHT);
+
+    r.Offset(0, 110);
+    dc.GradientFillLinear(r, *wxWHITE, *wxBLUE, wxLEFT);
+
+    r.Offset(0, 110);
+    dc.GradientFillLinear(r, *wxWHITE, *wxBLUE, wxDOWN);
+
+    r.Offset(0, 110);
+    dc.GradientFillLinear(r, *wxWHITE, *wxBLUE, wxUP);
+
+
+    // RHS: concentric
+    r = wxRect(200, 10, 100, 100);
+    dc.GradientFillConcentric(r, *wxBLUE, *wxWHITE);
+
+    r.Offset(0, 110);
+    dc.GradientFillConcentric(r, *wxWHITE, *wxBLUE);
+
+    r.Offset(0, 110);
+    dc.GradientFillConcentric(r, *wxBLUE, *wxWHITE, wxPoint(0, 0));
+
+    r.Offset(0, 110);
+    dc.GradientFillConcentric(r, *wxBLUE, *wxWHITE, wxPoint(100, 100));
+}
+
 void MyCanvas::DrawRegions(wxDC& dc)
 {
     dc.DrawText(_T("You should see a red rect partly covered by a cyan one ")
@@ -1110,6 +1172,13 @@ void MyCanvas::OnPaint(wxPaintEvent &WXUNUSED(event))
         case Show_Ops:
             DrawWithLogicalOps(dc);
             break;
+
+        case Show_Gradient:
+            DrawGradients(dc);
+            break;
+
+        default:
+            break;
     }
 }
 
@@ -1166,7 +1235,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     menuFile->Append(File_ShowOps, _T("&ROP screen\tF7"));
     menuFile->Append(File_ShowRegions, _T("Re&gions screen\tF8"));
     menuFile->Append(File_ShowCircles, _T("&Circles screen\tF9"));
-    menuFile->Append(File_ShowSplines, _T("&Splines screen"));
+    menuFile->Append(File_ShowSplines, _T("&Splines screen\tF11"));
+    menuFile->Append(File_ShowGradients, _T("&Gradients screen\tF12"));
     menuFile->AppendSeparator();
     menuFile->AppendCheckItem(File_Clip, _T("&Clip\tCtrl-C"), _T("Clip/unclip drawing"));
     menuFile->AppendSeparator();