#pragma once #include "lc_context.h" enum LC_CURSOR_TYPE { LC_CURSOR_DEFAULT, LC_CURSOR_BRICK, LC_CURSOR_LIGHT, LC_CURSOR_SPOTLIGHT, LC_CURSOR_CAMERA, LC_CURSOR_SELECT, LC_CURSOR_SELECT_ADD, LC_CURSOR_SELECT_REMOVE, LC_CURSOR_MOVE, LC_CURSOR_ROTATE, LC_CURSOR_ROTATEX, LC_CURSOR_ROTATEY, LC_CURSOR_DELETE, LC_CURSOR_PAINT, LC_CURSOR_ZOOM, LC_CURSOR_ZOOM_REGION, LC_CURSOR_PAN, LC_CURSOR_ROLL, LC_CURSOR_ROTATE_VIEW, LC_CURSOR_COUNT }; struct lcInputState { int x; int y; Qt::KeyboardModifiers Modifiers; }; class lcGLWidget { public: lcGLWidget() { mCursorType = LC_CURSOR_DEFAULT; mWidget = nullptr; mInputState.x = 0; mInputState.y = 0; mInputState.Modifiers = Qt::NoModifier; mWidth = 1; mHeight = 1; mContext = new lcContext(); mDeleteContext = true; } virtual ~lcGLWidget() { if (mDeleteContext) delete mContext; } void SetContext(lcContext* Context) { if (mDeleteContext) delete mContext; mContext = Context; mDeleteContext = false; } void MakeCurrent(); void Redraw(); void SetCursor(LC_CURSOR_TYPE Cursor); virtual void OnDraw() { } virtual void OnInitialUpdate() { } virtual void OnUpdateCursor() { } virtual void OnLeftButtonDown() { } virtual void OnLeftButtonUp() { } virtual void OnLeftButtonDoubleClick() { } virtual void OnMiddleButtonDown() { } virtual void OnMiddleButtonUp() { } virtual void OnRightButtonDown() { } virtual void OnRightButtonUp() { } virtual void OnBackButtonDown() { } virtual void OnBackButtonUp() { } virtual void OnForwardButtonDown() { } virtual void OnForwardButtonUp() { } virtual void OnMouseMove() { } virtual void OnMouseWheel(float Direction) { Q_UNUSED(Direction); } lcInputState mInputState; int mWidth; int mHeight; int mCursorType; void* mWidget; lcContext* mContext; bool mDeleteContext; };