// Unnamed CAD Software // // License: GPLv3, see LICENSE.txt // Language: C++17 // Notes: // - use a right-handed, Z-up coordinate system to match Open CASCADE #ifndef SKETCHTOOL_H #define SKETCHTOOL_H #include #include #include class QMouseEvent; class QKeyEvent; class ViewportWidget; class QOpenGLShaderProgram; class QPainter; class QMatrix4x4; class SketchTool : public QObject { Q_OBJECT public: explicit SketchTool(ViewportWidget* viewport); virtual ~SketchTool() = default; virtual void mousePressEvent(QMouseEvent *event) = 0; virtual void mouseMoveEvent(QMouseEvent *event) = 0; virtual void keyPressEvent(QKeyEvent *event); virtual void paintGL() = 0; virtual void paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMatrix4x4& projection) = 0; virtual void activate(); virtual void deactivate(); protected: virtual void finalizeCreation() = 0; ViewportWidget* m_viewport; bool m_isDefining = false; QStringList m_dimensionModes; QMap m_dimensionPropertyNames; }; #endif // SKETCHTOOL_H