1 /*
2    Drawpile - a collaborative drawing program.
3 
4    Copyright (C) 2006-2018 Calle Laakkonen
5 
6    Drawpile is free software: you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation, either version 3 of the License, or
9    (at your option) any later version.
10 
11    Drawpile 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    You should have received a copy of the GNU General Public License
17    along with Drawpile.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 #ifndef TOOLS_FREEHAND_H
20 #define TOOLS_FREEHAND_H
21 
22 #include "tool.h"
23 #include "brushes/brushengine.h"
24 
25 namespace tools {
26 
27 //! Freehand brush tool
28 class Freehand : public Tool
29 {
30 public:
31 	Freehand(ToolController &owner, bool isEraser);
32 
33 	void begin(const paintcore::Point& point, bool right, float zoom) override;
34 	void motion(const paintcore::Point& point, bool constrain, bool center) override;
35 	void end() override;
36 
allowSmoothing()37 	bool allowSmoothing() const override { return true; }
38 
39 	void offsetActiveTool(int x, int y) override;
40 
41 private:
42 	brushes::BrushEngine m_brushengine;
43 	bool m_drawing;
44 	bool m_firstPoint;
45 	paintcore::Point m_start;
46 };
47 
48 }
49 
50 #endif
51 
52