]>
git.saurik.com Git - wxWidgets.git/blob - contrib/samples/canvas/test/test.cpp
6f109d3f2c497b71c73c878c045d16caf9ce0b01
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 );
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 );
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 );
139 m_canvas
->Append( m_sm3
);
141 for (i
= 10; i
< 300; i
+=10)
142 m_canvas
->Append( new wxCanvasLine( 10,150,i
,200, 0,255,0 ) );
144 m_sm4
= new wxCanvasImage( image
, 0, 270 );
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();