// Author: Robert Roebling
// Modified by:
// Created: 04/01/98
-// RCS-ID: $Id$
// Copyright: (c) Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/app.h"
#include "wx/menu.h"
#include "wx/dcclient.h"
+#include "wx/wfstream.h"
+#if wxUSE_ZLIB
+#include "wx/zstream.h"
+#endif
#include "wx/glcanvas.h"
-extern "C" {
-#include "lw.h"
+extern "C"
+{
#include "trackball.h"
}
-/* information needed to display lightwave mesh */
-typedef struct
+#include "dxfrenderer.h"
+
+
+// OpenGL view data
+struct GLData
{
-// gint do_init; /* true if initgl not yet called */
- int do_init;
- lwObject *lwobject; /* lightwave object mesh */
- float beginx,beginy; /* position of mouse */
- float quat[4]; /* orientation of object */
- float zoom; /* field of view in degrees */
-} mesh_info;
+ bool initialized; // have OpenGL been initialized?
+ float beginx, beginy; // position of mouse
+ float quat[4]; // orientation of object
+ float zoom; // field of view in degrees
+};
-/* Define a new application type */
-class MyApp: public wxApp
+// Define a new application type
+class MyApp : public wxApp
{
public:
- bool OnInit(void);
+ virtual bool OnInit();
};
-/* Define a new frame type */
+
+// Define a new frame type
class TestGLCanvas;
-class MyFrame: public wxFrame
+
+
+class MyFrame : public wxFrame
{
public:
- MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size,
- long style = wxDEFAULT_FRAME_STYLE);
+ MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos,
+ const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
- void OnExit(wxCommandEvent& event);
-public:
- TestGLCanvas* m_canvas;
+ void OnMenuFileOpen(wxCommandEvent& event);
+ void OnMenuFileExit(wxCommandEvent& event);
+ void OnMenuHelpAbout(wxCommandEvent& event);
+
+ void SetCanvas(TestGLCanvas *canvas) { m_canvas = canvas; }
+ TestGLCanvas *GetCanvas() { return m_canvas; }
+
+private:
+ TestGLCanvas *m_canvas;
-DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
-class TestGLCanvas: public wxGLCanvas
+
+class TestGLCanvas : public wxGLCanvas
{
- public:
- TestGLCanvas(wxWindow *parent, const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "TestGLCanvas");
- ~TestGLCanvas(void);
-
- void OnPaint(wxPaintEvent& event);
- void OnSize(wxSizeEvent& event);
- void OnEraseBackground(wxEraseEvent& event);
- void LoadLWO( const wxString &filename);
- void OnMouse( wxMouseEvent& event );
- void InitGL(void);
-
- mesh_info info;
- bool block;
-
-DECLARE_EVENT_TABLE()
-};
+public:
+ TestGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0,
+ const wxString& name = wxT("TestGLCanvas"));
-#endif
+ virtual ~TestGLCanvas();
+
+ void LoadDXF(const wxString& filename);
+
+protected:
+ void OnPaint(wxPaintEvent& event);
+ void OnSize(wxSizeEvent& event);
+ void OnEraseBackground(wxEraseEvent& event);
+ void OnMouse(wxMouseEvent& event);
+
+private:
+ void InitGL();
+ void ResetProjectionMode();
+
+ wxGLContext* m_glRC;
+ GLData m_gldata;
+ DXFRenderer m_renderer;
+
+ wxDECLARE_NO_COPY_CLASS(TestGLCanvas);
+ DECLARE_EVENT_TABLE()
+};
+#endif // #ifndef _WX_PENGUIN_H_