00001 #ifndef _WX_OPENGL_H_
00002 #define _WX_OPENGL_H_
00003
00004 #include "wx/thread.h"
00005 #include "wx/glcanvas.h"
00006 #include "fv_timer.h"
00007
00008 namespace FemViewer {
00009 class ViewManager;
00010 class ModelCtrl;
00011
00012 namespace WxGUI {
00013
00014
00015 #define EVT_MY_REFRESH_CANVAS 20000
00016
00017 enum {
00018 MY_RENDER_THREAD_UPDATE = wxID_HIGHEST + 2000,
00019 MY_RENDER_THREAD_COMPLETE,
00020 };
00021
00022 class wxMainWindow;
00023 class wxRenderCanvas;
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 class wxRenderCanvas : public wxGLCanvas
00046 {
00047 friend class RenderThread;
00048 public:
00049 wxRenderCanvas(wxFrame* parent,
00050 wxWindowID id = wxID_ANY,
00051 int* gl_attrib = NULL,
00052 const wxPoint& pos = wxDefaultPosition,
00053 const wxSize& size = wxDefaultSize,
00054 long style = 0,
00055 const wxString& name = wxT("FemViewer"));
00056 ~wxRenderCanvas();
00057 void CleanUp();
00058 void InitGL();
00059 int GetWidth();
00060 int GetHeight();
00061 wxBitmap GetScreenShots();
00062 void PaintNow();
00063
00064
00065 void OnRefresh(wxCommandEvent& event);
00066 void OnThreadUpdate(wxThreadEvent& event);
00067 void OnThreadComplete(wxThreadEvent& event);
00068 void OnPaint(wxPaintEvent& event);
00069 void OnIdle(wxIdleEvent& event);
00070 int Modifires(wxMouseEvent& event);
00071 void OnSize(wxSizeEvent& event);
00072 void OnEraseBackground(wxEraseEvent& event);
00073 void OnMouseMove(wxMouseEvent& event);
00074 void OnLeftBtnDown(wxMouseEvent& event);
00075 void OnLeftBtnUp(wxMouseEvent& event);
00076 void OnMiddleBtnDown(wxMouseEvent& event);
00077 void OnMiddleBtnUp(wxMouseEvent& event);
00078 void OnRightBtnDown(wxMouseEvent& event);
00079 void OnRightBtnUp(wxMouseEvent& event);
00080
00081 void OnMouseWheel(wxMouseEvent& event);
00082
00083
00084 void OnEnterWindow(wxMouseEvent& event);
00085 void OnWindowCreate(wxWindowCreateEvent& event);
00086
00087
00088
00089
00090 private:
00091 bool m_rendering;
00092 bool m_binitGL;
00093 int m_ndraging;
00094 wxGLContext *m_context, *m_dummyconetxt;
00095 ModelCtrl *m_modelCtr;
00096 ViewManager *m_viewCtr;
00097 int m_frame_cnt;
00098 fv_timer m_timer;
00099
00100 wxDECLARE_NO_COPY_CLASS(wxRenderCanvas);
00101 wxDECLARE_EVENT_TABLE();
00102
00103 };
00104
00105 }
00106 }
00107
00108
00109 #endif
00110
00111