| #pragma once |
| |
| #ifndef PINCHTOOL_H |
| #define PINCHTOOL_H |
| |
| #include "tools/tool.h" |
| #include "tproperty.h" |
| #include "toonz/observer.h" |
| #include "ext/ContextStatus.h" |
| #include "ext/Selector.h" |
| |
| |
| #include <QCoreApplication> |
| |
| class TUndo; |
| |
| namespace ToonzExt { |
| class StrokeDeformation; |
| } |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TNZTOOLS_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| |
| |
| |
| |
| |
| |
| class DVAPI PinchTool : public TTool { |
| Q_DECLARE_TR_FUNCTIONS(PinchTool) |
| |
| TMouseEvent m_lastMouseEvent; |
| ToonzExt::StrokeDeformation *m_deformation; |
| ToonzExt::ContextStatus m_status; |
| ToonzExt::Selector m_selector; |
| TUndo *m_undo; |
| bool m_draw, m_active, m_cursorEnabled; |
| TThickPoint m_cursor; |
| TPointD m_prev, m_curr, m_down; |
| unsigned int m_n; |
| |
| bool m_showSelector; |
| |
| TDoubleProperty m_toolRange; |
| TDoubleProperty m_toolCornerSize; |
| TBoolProperty m_autoOrManual; |
| TPropertyGroup m_prop; |
| |
| void updateInterfaceStatus(const TMouseEvent &); |
| void updateStrokeStatus(TStroke *stroke, double w); |
| int updateCursor() const; |
| TStroke *getClosestStroke(const TPointD &pos, double &w) const; |
| |
| public: |
| PinchTool(); |
| virtual ~PinchTool(); |
| |
| ToolType getToolType() const { return TTool::LevelWriteTool; } |
| |
| void setShowSelector(bool show) { m_showSelector = show; } |
| |
| void onEnter(); |
| void onLeave(); |
| |
| void updateTranslation(); |
| |
| void draw(); |
| |
| void leftButtonDown(const TPointD &pos, const TMouseEvent &); |
| |
| void leftButtonDrag(const TPointD &pos, const TMouseEvent &e); |
| |
| void leftButtonUp(const TPointD &pos, const TMouseEvent &e); |
| |
| void invalidateCursorArea(); |
| |
| void mouseMove(const TPointD &pos, const TMouseEvent &e); |
| |
| bool moveCursor(const TPointD &pos); |
| |
| bool keyDown(int key, TUINT32 flags, const TPoint &pos); |
| |
| void onActivate(); |
| void onDeactivate(); |
| |
| |
| void update(const TGlobalChange &); |
| |
| void onImageChanged(); |
| |
| int getCursorId() const { return updateCursor(); } |
| TPropertyGroup *getProperties(int targetType) { return &m_prop; } |
| }; |
| |
| #endif |