#pragma once class lcViewWidget : public QOpenGLWidget { Q_OBJECT public: lcViewWidget(QWidget* Parent, lcView* View); ~lcViewWidget(); lcView* GetView() const; void SetView(lcView* View); void UpdateMousePosition(); void UpdateModelEditingPath(); void SetFindReplaceWidget(QWidget* Widget); QSize sizeHint() const override; float GetDeviceScale() const { #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) return devicePixelRatioF(); #else return devicePixelRatio(); #endif } protected: void initializeGL() override; void resizeGL(int Width, int Height) override; void paintGL() override; bool event(QEvent* Event) override; bool eventFilter(QObject* Object, QEvent* Event) override; void resizeEvent(QResizeEvent* Event) override; void focusInEvent(QFocusEvent* FocusEvent) override; void focusOutEvent(QFocusEvent* FocusEvent) override; void keyPressEvent(QKeyEvent* KeyEvent) override; void keyReleaseEvent(QKeyEvent* KeyEvent) override; void mousePressEvent(QMouseEvent* MouseEvent) override; void mouseReleaseEvent(QMouseEvent* MouseEvent) override; void mouseDoubleClickEvent(QMouseEvent* MouseEvent) override; void mouseMoveEvent(QMouseEvent* MouseEvent) override; void wheelEvent(QWheelEvent* WheelEvent) override; void leaveEvent(QEvent* Event) override; void dragEnterEvent(QDragEnterEvent* DragEnterEvent) override; void dragLeaveEvent(QDragLeaveEvent* DragLeaveEvent) override; void dragMoveEvent(QDragMoveEvent* DragMoveEvent) override; void dropEvent(QDropEvent* DropEvent) override; void UpdateOverlayGeometry(); void UpdateModelEditingLabel(); std::unique_ptr mView; QWidget* mOverlay = nullptr; QVBoxLayout* mOverlayLayout = nullptr; QWidget* mModelEditingBar = nullptr; QLabel* mModelEditingLabel = nullptr; QToolButton* mEndEditingButton = nullptr; QPointer mFindReplaceWidget; QStringList mModelEditingNames; QSize mPreferredSize; int mWheelAccumulator = 0; };