]>
git.saurik.com Git - wxWidgets.git/blob - contrib/samples/canvas/test/test.cpp
a812ff6eb1538f3706c16ad372a0bcd7fc4e9d0e
   4  * Author: Robert Roebling 
   6  * Copyright: (C) 1998, Robert Roebling 
   9 // For compilers that support precompilation, includes "wx/wx.h". 
  10 #include "wx/wxprec.h" 
  28 #include "wx/canvas/canvas.h" 
  37 class MyFrame
: public wxFrame
 
  43     void OnAbout( wxCommandEvent 
&event 
); 
  44     void OnNewFrame( wxCommandEvent 
&event 
); 
  45     void OnQuit( wxCommandEvent 
&event 
); 
  46     void OnTimer( wxTimerEvent 
&event 
); 
  49     wxCanvasObject   
*m_sm1
; 
  50     wxCanvasObject   
*m_sm2
; 
  51     wxCanvasObject   
*m_sm3
; 
  52     wxCanvasObject   
*m_sm4
; 
  57     DECLARE_DYNAMIC_CLASS(MyFrame
) 
  63 class MyApp
: public wxApp
 
  66     virtual bool OnInit(); 
  68     const wxString
& GetFontPath() const { return m_fontpath
; } 
  80 const int ID_QUIT  
= 108; 
  81 const int ID_ABOUT 
= 109; 
  83 IMPLEMENT_DYNAMIC_CLASS( MyFrame
, wxFrame 
) 
  85 BEGIN_EVENT_TABLE(MyFrame
,wxFrame
) 
  86   EVT_MENU    (ID_ABOUT
, MyFrame::OnAbout
) 
  87   EVT_MENU    (ID_QUIT
,  MyFrame::OnQuit
) 
  88   EVT_TIMER   (-1,       MyFrame::OnTimer
) 
  92        : wxFrame( (wxFrame 
*)NULL
, -1, "wxCanvas sample", 
  93                   wxPoint(20,20), wxSize(470,460) ) 
  95     wxMenu 
*file_menu 
= new wxMenu(); 
  96     file_menu
->Append( ID_ABOUT
, "&About..."); 
  97     file_menu
->AppendSeparator(); 
  98     file_menu
->Append( ID_QUIT
, "E&xit"); 
 100     wxMenuBar 
*menu_bar 
= new wxMenuBar(); 
 101     menu_bar
->Append(file_menu
, "&File"); 
 103     SetMenuBar( menu_bar 
); 
 106     int widths
[] = { -1, 100 }; 
 107     SetStatusWidths( 2, widths 
); 
 109     m_canvas 
= new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) ); 
 113     m_canvas
->SetArea( 400, 600 ); 
 114     m_canvas
->SetColour( 255, 255, 255 ); 
 116     wxBitmap 
bitmap( smile_xpm 
); 
 117     wxImage 
image( bitmap 
); 
 119     m_sm1 
= new wxCanvasImage( image
, 0,70,16,16 ); 
 120     m_canvas
->Append( m_sm1 
); 
 123     for (i 
= 10; i 
< 300; i
+=10) 
 124         m_canvas
->Append( new wxCanvasRect( i
,50,3,140, 255,0,0 ) ); 
 126     m_sm2 
= new wxCanvasImage( image
, 0,140,24,24 ); 
 127     m_canvas
->Append( m_sm2 
); 
 129     for (i 
= 15; i 
< 300; i
+=10) 
 130         m_canvas
->Append( new wxCanvasRect( i
,50,3,140, 255,0,0 ) ); 
 132     wxButton 
*button 
= new wxButton( m_canvas
, -1, "Hello", wxPoint(80,50) ); 
 133     m_canvas
->Append( new wxCanvasControl( button 
) ); 
 135     m_canvas
->Append( new wxCanvasText( "Hello", 180, 50, 
 136                       wxGetApp().GetFontPath() + "/times.ttf", 20 ) ); 
 138     m_sm3 
= new wxCanvasImage( image
, 0,210,32,32 ); 
 139     m_canvas
->Append( m_sm3 
); 
 141     for (i 
= 10; i 
< 300; i
+=10) 
 142         m_canvas
->Append( new wxCanvasLine( 10,150,i
,300, 0,255,0 ) ); 
 144     m_sm4 
= new wxCanvasImage( image
, 0,270,64,32 ); 
 145     m_canvas
->Append( m_sm4 
); 
 149     m_log 
= new wxTextCtrl( this, -1, "", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE 
); 
 150     wxLog 
*old_log 
= wxLog::SetActiveTarget( new wxLogTextCtrl( m_log 
) ); 
 153     wxBoxSizer 
*topsizer 
= new wxBoxSizer( wxVERTICAL 
); 
 155     topsizer
->Add( m_canvas
, 1, wxEXPAND 
); 
 156     topsizer
->Add( m_log
, 0, wxEXPAND 
); 
 158     SetAutoLayout( TRUE 
); 
 159     SetSizer( topsizer 
); 
 161     m_timer 
= new wxTimer( this ); 
 162     m_timer
->Start( 100, FALSE 
); 
 170 void MyFrame::OnQuit( wxCommandEvent 
&WXUNUSED(event
) ) 
 175 void MyFrame::OnTimer( wxTimerEvent 
&WXUNUSED(event
) ) 
 177     m_sm1
->Move( m_sm1
->GetX()+1, m_sm1
->GetY() ); 
 178     m_sm2
->Move( m_sm2
->GetX()+1, m_sm2
->GetY() ); 
 179     m_sm3
->Move( m_sm3
->GetX()+1, m_sm3
->GetY() ); 
 180     m_sm4
->Move( m_sm4
->GetX()+1, m_sm4
->GetY() ); 
 184 void MyFrame::OnAbout( wxCommandEvent 
&WXUNUSED(event
) ) 
 186    (void)wxMessageBox( "wxCanvas demo\n" 
 187                       "Robert Roebling (c) 1998,2000", 
 188                       "About wxCanvas Demo", wxICON_INFORMATION 
| wxOK 
); 
 191 //----------------------------------------------------------------------------- 
 193 //----------------------------------------------------------------------------- 
 197   m_fontpath 
= getenv("TRUETYPE"); 
 200       wxLogError("Please set env var TRUETYPE to the path where times.ttf lives."); 
 207   wxImage::AddHandler( new wxPNGHandler 
); 
 210   wxFrame 
*frame 
= new MyFrame();