48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
// 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 <QObject>
|
|
#include <QStringList>
|
|
#include <QMap>
|
|
|
|
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<QString, QString> m_dimensionPropertyNames;
|
|
};
|
|
|
|
#endif // SKETCHTOOL_H
|