]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/samples/canvas/simple/simple.cpp
moved MGL initialization to earlier stage (crashes otherwise...) and implemented...
[wxWidgets.git] / contrib / samples / canvas / simple / simple.cpp
index 796339e384727d23484b82d0d4c118aea061a6a0..bc1516c41e8d973d6c72ae2d20f512ffa0f7d53b 100644 (file)
@@ -38,6 +38,7 @@
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
     EVT_MENU(ID_QUIT, MyFrame::OnQuit)
     EVT_CLOSE(MyFrame::OnCloseWindow)
+    EVT_TIMER(-1, MyFrame::OnTimer)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
@@ -47,34 +48,38 @@ MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
     CreateMyMenuBar();
     
     CreateStatusBar(1);
-    SetStatusText( "Welcome!" );
+    SetStatusText( "Welcome to wxCanvas sample!" );
     
     SetIcon(wxICON(mondrian));
 
-    // wxCanvas from here
-    
+    // Create wxCanvasAdmin and wxCanvas.
     m_admin = new wxCanvasAdmin;
     wxCanvas *canvas = new wxCanvas( m_admin, this, -1 );
+    
+    canvas->SetScrollbars( 10, 10, 40, 40 );
+    
+    // The wxCanvasAdmin need to know about all Admin wxCanvas objects.
     m_admin->Append( canvas );
+    
+    // One wxCanvas is the active one (current rendering and current
+    // world coordinates).
     m_admin->SetActive( canvas );
     
-
+    // One object group is the root in every canvas.
     wxCanvasObjectGroup *root = new wxCanvasObjectGroup(0,0);
     root->DeleteContents( TRUE );
 
-    wxCanvasRect *rect;
-    
-    rect = new wxCanvasRect( 120,10,120,140 );
-    rect->SetBrush( *wxRED_BRUSH );
-    root->Append( rect );
-        
-/*
+    // Bunch of rects and images.
     wxBitmap bitmap( smile_xpm );
     wxImage image( bitmap );
 
     m_smile1 = new wxCanvasImage( image, 0,70,32,32 );
     root->Append( m_smile1 );
 
+    wxCanvasCircle *circ = new wxCanvasCircle( 170,70,50 );
+    circ->SetBrush( *wxBLUE_BRUSH );
+    root->Append( circ );
+    
     int i;
     for (i = 10; i < 300; i+=10)
     {
@@ -92,9 +97,21 @@ MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
         r->SetBrush( *wxRED_BRUSH );
         root->Append( r );
     }
-*/
     
+    // This will call all object and children recursivly so
+    // all know what their wxCanvasAdmin is. Call at the end.
+    root->SetAdmin( m_admin );
+    
+    // One object group is the root object.
     canvas->SetRoot( root );
+    
+    m_timer = new wxTimer( this );
+    m_timer->Start( 80, FALSE );
+}
+
+MyFrame::~MyFrame()
+{
+    delete m_timer;
 }
 
 void MyFrame::CreateMyMenuBar()
@@ -122,6 +139,14 @@ void MyFrame::OnCloseWindow( wxCloseEvent &event )
     Destroy();
 }
 
+void MyFrame::OnTimer( wxTimerEvent &event )
+{
+    m_smile1->MoveRelative( 1, 0);
+    m_smile2->MoveRelative( 1, 0);
+    
+    wxWakeUpIdle();
+}
+
 //------------------------------------------------------------------------------
 // MyApp
 //------------------------------------------------------------------------------