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 27extern "C" 28{ 29#include "trackball.h" 30} 31 32#include "dxfrenderer.h" 33 34// OpenGL view data 35struct 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 44class MyApp: public wxApp 45{ 46public: 47 bool OnInit(); 48}; 49 50// Define a new frame type 51class TestGLCanvas; 52 53class MyFrame: public wxFrame 54{ 55public: 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 64 void SetCanvas( TestGLCanvas *canvas ) { m_canvas = canvas; } 65 TestGLCanvas *GetCanvas() { return m_canvas; } 66 67private: 68 TestGLCanvas *m_canvas; 69#endif 70 71 DECLARE_EVENT_TABLE() 72}; 73 74#if wxUSE_GLCANVAS 75 76class TestGLCanvas: public wxGLCanvas 77{ 78public: 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 88protected: 89 void OnPaint(wxPaintEvent& event); 90 void OnSize(wxSizeEvent& event); 91 void OnEraseBackground(wxEraseEvent& event); 92 void OnMouse(wxMouseEvent& event); 93 94private: 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