2000-02-28 03:22:57 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: cube.h
|
|
|
|
// Purpose: wxGLCanvas demo program
|
|
|
|
// Author: Julian Smart
|
|
|
|
// Modified by:
|
|
|
|
// Created: 04/01/98
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Copyright: (c) Julian Smart
|
2002-03-17 09:16:03 -05:00
|
|
|
// Licence: wxWindows licence
|
2000-02-28 03:22:57 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _WX_CUBE_H_
|
|
|
|
#define _WX_CUBE_H_
|
|
|
|
|
2001-11-16 02:17:37 -05:00
|
|
|
#include "wx/glcanvas.h"
|
2000-02-28 03:22:57 -05:00
|
|
|
|
|
|
|
// Define a new application type
|
|
|
|
class MyApp: public wxApp
|
|
|
|
{
|
|
|
|
public:
|
2003-11-14 23:21:10 -05:00
|
|
|
bool OnInit();
|
2000-02-28 03:22:57 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
// Define a new frame type
|
|
|
|
class TestGLCanvas;
|
2003-11-14 23:21:10 -05:00
|
|
|
|
2000-02-28 03:22:57 -05:00
|
|
|
class MyFrame: public wxFrame
|
|
|
|
{
|
|
|
|
public:
|
2003-11-14 23:21:10 -05:00
|
|
|
static MyFrame *Create(MyFrame *parentFrame, bool isCloneWindow = false);
|
2000-02-28 03:22:57 -05:00
|
|
|
|
|
|
|
void OnExit(wxCommandEvent& event);
|
2001-10-10 12:37:33 -04:00
|
|
|
void OnNewWindow(wxCommandEvent& event);
|
|
|
|
void OnDefRotateLeftKey(wxCommandEvent& event);
|
|
|
|
void OnDefRotateRightKey(wxCommandEvent& event);
|
2000-02-28 03:22:57 -05:00
|
|
|
|
2003-11-14 23:21:10 -05:00
|
|
|
private:
|
|
|
|
|
|
|
|
MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,
|
|
|
|
const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
|
|
|
|
|
|
|
|
|
|
|
|
TestGLCanvas *m_canvas;
|
|
|
|
|
|
|
|
DECLARE_EVENT_TABLE()
|
2000-02-28 03:22:57 -05:00
|
|
|
};
|
|
|
|
|
2003-09-11 03:20:55 -04:00
|
|
|
#if wxUSE_GLCANVAS
|
|
|
|
|
2000-02-28 03:22:57 -05:00
|
|
|
class TestGLCanvas: public wxGLCanvas
|
|
|
|
{
|
2003-11-14 23:21:10 -05:00
|
|
|
friend class MyFrame;
|
2000-02-28 03:22:57 -05:00
|
|
|
public:
|
2003-11-14 23:21:10 -05:00
|
|
|
TestGLCanvas( wxWindow *parent, wxWindowID id = wxID_ANY,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = 0, const wxString& name = _T("TestGLCanvas") );
|
|
|
|
|
|
|
|
TestGLCanvas( wxWindow *parent, const TestGLCanvas &other,
|
|
|
|
wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize, long style = 0,
|
|
|
|
const wxString& name = _T("TestGLCanvas") );
|
|
|
|
|
|
|
|
~TestGLCanvas();
|
|
|
|
|
|
|
|
void OnPaint(wxPaintEvent& event);
|
|
|
|
void OnSize(wxSizeEvent& event);
|
|
|
|
void OnEraseBackground(wxEraseEvent& event);
|
|
|
|
void OnKeyDown(wxKeyEvent& event);
|
|
|
|
void OnKeyUp(wxKeyEvent& event);
|
|
|
|
void OnEnterWindow(wxMouseEvent& event);
|
|
|
|
|
|
|
|
void Render();
|
|
|
|
void InitGL();
|
|
|
|
void Rotate(GLfloat deg);
|
|
|
|
static GLfloat CalcRotateSpeed(unsigned long acceltime);
|
|
|
|
static GLfloat CalcRotateAngle( unsigned long lasttime,
|
|
|
|
unsigned long acceltime );
|
|
|
|
void Action( long code, unsigned long lasttime,
|
|
|
|
unsigned long acceltime );
|
|
|
|
|
2000-02-28 03:22:57 -05:00
|
|
|
private:
|
2003-11-14 23:21:10 -05:00
|
|
|
bool m_init;
|
|
|
|
GLuint m_gllist;
|
|
|
|
long m_rleft;
|
|
|
|
long m_rright;
|
|
|
|
|
|
|
|
static unsigned long m_secbase;
|
|
|
|
static int m_TimeInitialized;
|
|
|
|
static unsigned long m_xsynct;
|
|
|
|
static unsigned long m_gsynct;
|
|
|
|
|
|
|
|
long m_Key;
|
|
|
|
unsigned long m_StartTime;
|
|
|
|
unsigned long m_LastTime;
|
|
|
|
unsigned long m_LastRedraw;
|
2000-02-28 03:22:57 -05:00
|
|
|
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
|
|
};
|
|
|
|
|
2003-11-14 23:21:10 -05:00
|
|
|
#endif // #if wxUSE_GLCANVAS
|
2000-02-28 03:22:57 -05:00
|
|
|
|
2003-11-14 23:21:10 -05:00
|
|
|
#endif // #ifndef _WX_CUBE_H_
|
2003-09-11 03:20:55 -04:00
|
|
|
|