1 #include "ContextWX.hh"
3 #include <Utils/GlewInitWrapper.hh>
8 #define TIMER_ID 1967735
20 EVT_RIGHT_DCLICK(
ContextWX::OnRightDClick)
27 EVT_ERASE_BACKGROUND(
ContextWX::OnEraseBG)
28 EVT_ENTER_WINDOW (
ContextWX::OnEnterWindow)
29 EVT_LEAVE_WINDOW (
ContextWX::OnLeaveWindow)
40 WX_GL_DOUBLEBUFFER, 1 ,
53 const wxSize& size,
long style,
54 const wxString& name,
int* attribList,
const wxPalette& palette) :
55 #if wxCHECK_VERSION(2, 9, 0)
56 #ifdef GL_USE_DEFAULT_ATTRIBS
57 wxGLCanvas(parent, id, defaultAttribs, pos, size, style, name, palette),
59 wxGLCanvas(parent, id, attribList, pos, size, style, name, palette),
62 #ifdef GL_USE_DEFAULT_ATTRIBS
63 wxGLCanvas(parent, id, pos, size, style, name, defaultAttribs, palette),
65 wxGLCanvas(parent, id, pos, size, style, name, attribList, palette),
71 #if wxCHECK_VERSION(2, 9, 0)
72 context_ =
new wxGLContext(
this);
78 Timer_.SetOwner(
this, TIMER_ID);
116 #if wxCHECK_VERSION(2, 9, 0)
117 SetCurrent(*context_);
122 static bool firstCall =
true;
123 if (_FirstPaint && firstCall)
136 void ContextWX::OnTimer(wxTimerEvent & )
144 void ContextWX::OnLeftUp(wxMouseEvent& event)
150 void ContextWX::OnLeftDown(wxMouseEvent& event)
157 void ContextWX::OnMiddleUp(wxMouseEvent& event)
163 void ContextWX::OnMiddleDown(wxMouseEvent& event)
170 void ContextWX::OnRightUp(wxMouseEvent& event)
177 void ContextWX::OnRightDown(wxMouseEvent& event)
184 void ContextWX::OnLeftDClick(wxMouseEvent& event)
187 if (event.MetaDown()) m=ALT;
188 if (event.ShiftDown()) m=SHIFT;
193 void ContextWX::OnRightDClick(wxMouseEvent & event)
199 void ContextWX::OnLeaveWindow(wxMouseEvent& event)
205 void ContextWX::OnEnterWindow(wxMouseEvent& event)
210 void ContextWX::OnMotion(wxMouseEvent& event)
214 if( event.LeftIsDown() &&
event.RightIsDown() ) {
219 if (event.LeftIsDown())
221 caught =
LeftMouseMoved(_OldMouseX, event.GetX(), _OldMouseY,
event.GetY());
225 if (event.RightIsDown())
227 caught =
RightMouseMoved(_OldMouseX, event.GetX(), _OldMouseY,
event.GetY());
231 if (event.MiddleIsDown())
233 caught =
MiddleMouseMoved(_OldMouseX, event.GetX(), _OldMouseY,
event.GetY());
237 caught =
MouseMoved(event.GetX(),
event.GetY());
241 _OldMouseX =
event.GetX();
242 _OldMouseY =
event.GetY();
247 void ContextWX::OnSize(wxSizeEvent& event)
249 if (_FirstPaint)
return;
250 WindowReshape(event.GetSize().GetWidth(),
event.GetSize().GetHeight());
255 void ContextWX::OnKeyDown(wxKeyEvent& event)
258 event.ResumePropagation(wxEVENT_PROPAGATE_MAX);
263 void ContextWX::OnKey(wxKeyEvent& event)
266 int key =
event.GetKeyCode();
315 event.ResumePropagation(wxEVENT_PROPAGATE_MAX);
319 void ContextWX::OnKeyUp(wxKeyEvent& event)
322 int key =
event.GetKeyCode();
371 event.ResumePropagation(wxEVENT_PROPAGATE_MAX);
379 BIASERR(
"Timer smaller then 10ms are prohibited");
394 if (this->GetParent() && this->GetParent()->IsShown()) {
395 #if wxCHECK_VERSION(2, 9, 0)
396 SetCurrent(*context_);
401 if (this->GetParent()){
402 BIASWARN(
"trying to make hidden context current!");
404 BIASWARN(
"trying to make context without parent current!");
409 void ContextWX::OnEraseBG(wxEraseEvent& event)
bool LeftMouseDoubleClicked(int x, int y, int m)
virtual void OnPaint(wxPaintEvent &event)
bool MiddleMouseDown(int x, int y)
bool StandardKeyUp(unsigned char, int, int)
bool RightMouseDoubleClicked(int x, int y)
virtual void SetTimer(unsigned int interval)
activate timer with intervall in ms
bool LeftMouseDown(int x, int y)
virtual int Render()
Simple rendering routine.
bool LeftMouseMoved(int x1, int x2, int y1, int y2)
virtual void MakeGLContextCurrent()
try to make this OpenGl context current
bool TimerExpired()
Always informs both camera and scenes!
bool SpecialKeyUp(int key)
bool MiddleMouseUp(int x, int y)
Context implementation for wxWidgets.
static GlewInitWrapper * GetInstance()
bool StandardKeyPressed(unsigned char, int, int)
int FindWorkingDisplayConfiguration()
bool RightMouseSingleClicked(int x, int y)
bool LeftMouseUp(int x, int y)
unsigned int TimerInterval_
bool RightMouseDown(int x, int y)
bool LeftAndRightMouseMoved(int x1, int x2, int y1, int y2)
bool RightMouseUp(int x, int y)
bool WindowReshape(int width, int height)
bool MiddleMouseMoved(int x1, int x2, int y1, int y2)
bool MouseMoved(int x, int y)
ContextWX(wxWindow *parent, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxT("GLCanvas"), int *attribList=defaultAttribs, const wxPalette &palette=wxNullPalette)
bool SpecialKeyPressed(int key)
bool RightMouseMoved(int x1, int x2, int y1, int y2)
virtual void DeactivateTimer()
deactivate timer