| #pragma once |
| |
| #ifndef EDITTOOL_INCLUDED |
| #define EDITTOOL_INCLUDED |
| |
| #include "tool.h" |
| #include "tproperty.h" |
| #include "edittoolgadgets.h" |
| |
| |
| #include <QCoreApplication> |
| |
| using EditToolGadgets::DragTool; |
| |
| |
| |
| |
| |
| class EditTool final : public QObject, public TTool { |
| Q_OBJECT |
| |
| DragTool* m_dragTool; |
| |
| bool m_firstTime; |
| |
| enum { |
| None = -1, |
| Translation = 1, |
| Rotation, |
| Scale, |
| ScaleX, |
| ScaleY, |
| ScaleXY, |
| Center, |
| ZTranslation, |
| Shear, |
| }; |
| |
| |
| |
| TPointD m_lastPos; |
| TPointD m_curPos; |
| TPointD m_firstPos; |
| TPointD m_curCenter; |
| |
| bool m_active; |
| bool m_keyFrameAdded; |
| int m_what; |
| int m_highlightedDevice; |
| |
| double m_oldValues[2]; |
| |
| double m_currentScaleFactor; |
| FxGadgetController* m_fxGadgetController; |
| |
| bool m_isAltPressed; |
| |
| TEnumProperty m_scaleConstraint; |
| TEnumProperty m_autoSelect; |
| TBoolProperty m_globalKeyframes; |
| |
| TBoolProperty m_lockCenterX; |
| TBoolProperty m_lockCenterY; |
| TBoolProperty m_lockPositionX; |
| TBoolProperty m_lockPositionY; |
| TBoolProperty m_lockRotation; |
| TBoolProperty m_lockShearH; |
| TBoolProperty m_lockShearV; |
| TBoolProperty m_lockScaleH; |
| TBoolProperty m_lockScaleV; |
| TBoolProperty m_lockGlobalScale; |
| |
| TBoolProperty m_showEWNSposition; |
| TBoolProperty m_showZposition; |
| TBoolProperty m_showSOposition; |
| TBoolProperty m_showRotation; |
| TBoolProperty m_showGlobalScale; |
| TBoolProperty m_showHVscale; |
| TBoolProperty m_showShear; |
| TBoolProperty m_showCenterPosition; |
| |
| TEnumProperty m_activeAxis; |
| |
| TPropertyGroup m_prop; |
| |
| void drawMainHandle(); |
| void onEditAllLeftButtonDown(TPointD& pos, const TMouseEvent& e); |
| |
| public: |
| EditTool(); |
| ~EditTool(); |
| |
| ToolType getToolType() const override { return TTool::ColumnTool; } |
| |
| bool doesApply() const; |
| void saveOldValues(); |
| bool transformEnabled() const; |
| |
| const TStroke* getSpline() const; |
| |
| void rotate(); |
| void move(); |
| void moveCenter(); |
| void scale(); |
| void isoScale(); |
| void squeeze(); |
| void shear(const TPointD& pos, bool single); |
| |
| void updateTranslation() override; |
| |
| void leftButtonDown(const TPointD& pos, const TMouseEvent&) override; |
| void leftButtonDrag(const TPointD& pos, const TMouseEvent&) override; |
| void leftButtonUp(const TPointD& pos, const TMouseEvent&) override; |
| |
| void mouseMove(const TPointD&, const TMouseEvent& e) override; |
| |
| void draw() override; |
| |
| void transform(const TAffine& aff); |
| |
| void onActivate() override; |
| void onDeactivate() override; |
| bool onPropertyChanged(std::string propertyName) override; |
| |
| void computeBBox(); |
| |
| int getCursorId() const override; |
| |
| TPropertyGroup* getProperties(int targetType) override { return &m_prop; } |
| |
| void updateMatrix() override { |
| setMatrix( |
| getCurrentObjectParentMatrix2()); |
| } |
| |
| void drawText(const TPointD& p, double unit, std::string text); |
| |
| QString updateEnabled(int rowIndex, int columnIndex) override; |
| |
| signals: |
| void clickFlipHorizontal(); |
| void clickFlipVertical(); |
| void clickRotateLeft(); |
| void clickRotateRight(); |
| }; |
| |
| #endif |