1 /* 2 3 Pencil2D - Traditional Animation Software 4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon 5 Copyright (C) 2012-2020 Matthew Chiawen Chang 6 7 This program is free software; you can redistribute it and/or 8 modify it under the terms of the GNU General Public License 9 as published by the Free Software Foundation; version 2 of the License. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 */ 17 18 #ifndef TOOLMANAGER_H 19 #define TOOLMANAGER_H 20 21 #include <QObject> 22 #include <QHash> 23 #include "basetool.h" 24 #include "basemanager.h" 25 26 class ScribbleArea; 27 28 class ToolManager : public BaseManager 29 { 30 Q_OBJECT 31 public: 32 explicit ToolManager(Editor* editor); 33 34 bool init() override; 35 Status load(Object*) override; 36 Status save(Object*) override; 37 currentTool()38 BaseTool* currentTool() { return mCurrentTool; } 39 BaseTool* getTool(ToolType eToolType); 40 void setDefaultTool(); 41 void setCurrentTool(ToolType eToolType); 42 void cleanupAllToolsData(); 43 bool leavingThisTool(); 44 45 void tabletSwitchToEraser(); 46 void tabletRestorePrevTool(); 47 int propertySwitch(bool condition, int property); 48 49 signals: 50 void penWidthValueChanged(float); 51 void penFeatherValueChanged(float); 52 void toleranceValueChanged(qreal); 53 54 void toolChanged(ToolType); 55 void toolPropertyChanged(ToolType, ToolPropertyType); 56 57 public slots: 58 void resetAllTools(); 59 60 void setWidth(float); 61 void setFeather(float); 62 void setUseFeather(bool); 63 void setInvisibility(bool); 64 void setPreserveAlpha(bool); 65 void setVectorMergeEnabled(bool); 66 void setBezier(bool); 67 void setPressure(bool); 68 void setAA(int); 69 void setStabilizerLevel(int); 70 void setTolerance(int); 71 void setUseFillContour(bool); 72 73 private: 74 BaseTool* mCurrentTool = nullptr; 75 ToolType meTabletBackupTool = PENCIL; 76 bool mIsSwitchedToEraser = false; 77 QHash<ToolType, BaseTool*> mToolSetHash; 78 79 int mOldValue = 0; 80 81 }; 82 83 #endif // TOOLMANAGER_H 84