1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        penguin.h
3 // Purpose:     wxGLCanvas demo program
4 // Author:      Robert Roebling
5 // Modified by:
6 // Created:     04/01/98
7 // RCS-ID:      $Id: penguin.h 36174 2005-11-14 17:38:24Z JS $
8 // Copyright:   (c) Robert Roebling
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_PENGUIN_H_
13 #define _WX_PENGUIN_H_
14 
15 
16 #include "wx/defs.h"
17 #include "wx/app.h"
18 #include "wx/menu.h"
19 #include "wx/dcclient.h"
20 #include "wx/wfstream.h"
21 #if wxUSE_ZLIB
22 #include "wx/zstream.h"
23 #endif
24 
25 #include "wx/glcanvas.h"
26 
27 extern "C"
28 {
29 #include "trackball.h"
30 }
31 
32 #include "dxfrenderer.h"
33 
34 // OpenGL view data
35 struct GLData
36 {
37     bool initialized;           // have OpenGL been initialized?
38     float beginx, beginy;       // position of mouse
39     float quat[4];              // orientation of object
40     float zoom;                 // field of view in degrees
41 };
42 
43 // Define a new application type
44 class MyApp: public wxApp
45 {
46 public:
47     bool OnInit();
48 };
49 
50 // Define a new frame type
51 class TestGLCanvas;
52 
53 class MyFrame: public wxFrame
54 {
55 public:
56     MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos,
57         const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
58 
59     void OnMenuFileOpen(wxCommandEvent& event);
60     void OnMenuFileExit(wxCommandEvent& event);
61     void OnMenuHelpAbout(wxCommandEvent& event);
62 
63 #if wxUSE_GLCANVAS
SetCanvas(TestGLCanvas * canvas)64     void SetCanvas( TestGLCanvas *canvas ) { m_canvas = canvas; }
GetCanvas()65     TestGLCanvas *GetCanvas() { return m_canvas; }
66 
67 private:
68     TestGLCanvas *m_canvas;
69 #endif
70 
71     DECLARE_EVENT_TABLE()
72 };
73 
74 #if wxUSE_GLCANVAS
75 
76 class TestGLCanvas: public wxGLCanvas
77 {
78 public:
79     TestGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY,
80         const wxPoint& pos = wxDefaultPosition,
81         const wxSize& size = wxDefaultSize, long style = 0,
82         const wxString& name = wxT("TestGLCanvas"));
83 
84     ~TestGLCanvas();
85 
86     void LoadDXF(const wxString& filename);
87 
88 protected:
89     void OnPaint(wxPaintEvent& event);
90     void OnSize(wxSizeEvent& event);
91     void OnEraseBackground(wxEraseEvent& event);
92     void OnMouse(wxMouseEvent& event);
93 
94 private:
95     void InitGL();
96     void ResetProjectionMode();
97 
98     GLData m_gldata;
99     DXFRenderer m_renderer;
100 
101     DECLARE_EVENT_TABLE()
102 };
103 
104 #endif // #if wxUSE_GLCANVAS
105 
106 #endif // #ifndef _WX_PENGUIN_H_
107 
108