#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" // For Qt translation support #include 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 //============================================================================= // // PinchTool (private data) // //============================================================================= 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(); // viene usato?? void update(const TGlobalChange &); void onImageChanged(); int getCursorId() const { return updateCursor(); } TPropertyGroup *getProperties(int targetType) { return &m_prop; } }; #endif //PINCHTOOL_H