ReactOS 0.4.17-dev-243-g1369312
toolsmodel.h
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4 * PURPOSE: Keep track of tool parameters, notify listeners
5 * COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
6 */
7
8#pragma once
9
11{
29};
30
31enum BrushStyle : int
32{
37};
38
39/* CLASSES **********************************************************/
40
42{
45
47 virtual ~ToolBase() { }
48
49 virtual void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) { }
50 virtual BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
51 virtual BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
52
53 virtual void OnDrawOverlayOnImage(HDC hdc) { }
54 virtual void OnDrawOverlayOnCanvas(HDC hdc) { }
55
56 virtual void OnSpecialTweak(BOOL bMinus) { }
57
58 virtual void OnEndDraw(BOOL bCancel);
59
60 void beginEvent();
61 void endEvent();
62 void reset();
63
65};
66
68{
69private:
80 int m_zoom;
82
84 void SendSetCursor();
85
86public:
87 ToolsModel();
89
90 BOOL IsSelection() const;
91
92 int GetLineWidth() const;
93 void SetLineWidth(int nLineWidth);
94 void MakeLineThickerOrThinner(BOOL bThinner);
95
96 INT GetPenWidth() const;
97 void SetPenWidth(INT nPenWidth);
98 void MakePenThickerOrThinner(BOOL bThinner);
99
100 int GetShapeStyle() const;
101 void SetShapeStyle(int nShapeStyle);
102
103 INT GetBrushWidth() const;
104 void SetBrushWidth(INT nBrushWidth);
105 void MakeBrushThickerOrThinner(BOOL bThinner);
106
108 void SetBrushStyle(BrushStyle nBrushStyle);
109
110 TOOLTYPE GetActiveTool() const;
112 void SetActiveTool(TOOLTYPE nActiveTool);
113
114 INT GetAirBrushRadius() const;
115 void SetAirBrushRadius(INT nAirBrushRadius);
116 void MakeAirBrushThickerOrThinner(BOOL bThinner);
117
118 int GetRubberRadius() const;
119 void SetRubberRadius(int nRubberRadius);
120 void MakeRubberThickerOrThinner(BOOL bThinner);
121
122 SIZE GetToolSize() const;
123
125 void SetBackgroundTransparent(BOOL bTransparent);
126
127 int GetZoom() const;
128 void SetZoom(int nZoom);
129
130 void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick);
131 void OnMouseMove(BOOL bLeftButton, LONG x, LONG y);
132 void OnButtonUp(BOOL bLeftButton, LONG x, LONG y);
133 void OnEndDraw(BOOL bCancel);
136
137 void resetTool();
138 void selectAll();
139
140 void NotifyToolChanged();
142 void NotifyZoomChanged();
143
144 void SpecialTweak(BOOL bMinus);
145
147};
148
150
151static inline int Zoomed(int xy)
152{
153 return xy * toolsModel.GetZoom() / 1000;
154}
155
156static inline int UnZoomed(int xy)
157{
158 return xy * 1000 / toolsModel.GetZoom();
159}
160
161static inline void Zoomed(POINT& pt)
162{
163 pt = { Zoomed(pt.x), Zoomed(pt.y) };
164}
165
166static inline void Zoomed(RECT& rc)
167{
168 rc = { Zoomed(rc.left), Zoomed(rc.top), Zoomed(rc.right), Zoomed(rc.bottom) };
169}
170
171static inline void UnZoomed(POINT& pt)
172{
173 pt = { UnZoomed(pt.x), UnZoomed(pt.y) };
174}
175
176static inline void UnZoomed(RECT& rc)
177{
178 rc = { UnZoomed(rc.left), UnZoomed(rc.top), UnZoomed(rc.right), UnZoomed(rc.bottom) };
179}
void MakeAirBrushThickerOrThinner(BOOL bThinner)
Definition: toolsmodel.cpp:107
void OnDrawOverlayOnCanvas(HDC hdc)
Definition: mouse.cpp:1191
void OnDrawOverlayOnImage(HDC hdc)
Definition: mouse.cpp:1186
void OnEndDraw(BOOL bCancel)
Definition: mouse.cpp:1178
void SetBrushStyle(BrushStyle nBrushStyle)
Definition: toolsmodel.cpp:135
void MakeBrushThickerOrThinner(BOOL bThinner)
Definition: toolsmodel.cpp:101
int GetZoom() const
Definition: toolsmodel.cpp:270
TOOLTYPE m_oldActiveTool
Definition: toolsmodel.h:76
int GetLineWidth() const
Definition: toolsmodel.cpp:46
INT m_airBrushRadius
Definition: toolsmodel.h:77
INT m_brushWidth
Definition: toolsmodel.h:72
BOOL IsSelection() const
Definition: toolsmodel.cpp:41
int GetShapeStyle() const
Definition: toolsmodel.cpp:119
void SendSetCursor()
Definition: toolsmodel.cpp:75
int m_rubberRadius
Definition: toolsmodel.h:78
int m_lineWidth
Definition: toolsmodel.h:70
void SetAirBrushRadius(INT nAirBrushRadius)
Definition: toolsmodel.cpp:196
void resetTool()
Definition: toolsmodel.cpp:311
BOOL m_transpBg
Definition: toolsmodel.h:79
int m_shapeStyle
Definition: toolsmodel.h:73
TOOLTYPE GetOldActiveTool() const
Definition: toolsmodel.cpp:147
void SetShapeStyle(int nShapeStyle)
Definition: toolsmodel.cpp:124
void SetActiveTool(TOOLTYPE nActiveTool)
Definition: toolsmodel.cpp:152
void DrawWithMouseTool(POINT pt, WPARAM wParam)
Definition: mouse.cpp:1201
void SetRubberRadius(int nRubberRadius)
Definition: toolsmodel.cpp:207
void NotifyToolChanged()
Definition: toolsmodel.cpp:281
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y)
Definition: mouse.cpp:1160
BrushStyle m_brushStyle
Definition: toolsmodel.h:74
INT GetPenWidth() const
Definition: toolsmodel.cpp:58
int m_zoom
Definition: toolsmodel.h:80
BrushStyle GetBrushStyle() const
Definition: toolsmodel.cpp:130
void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
Definition: mouse.cpp:1152
void MakeRubberThickerOrThinner(BOOL bThinner)
Definition: toolsmodel.cpp:113
BOOL IsBackgroundTransparent() const
Definition: toolsmodel.cpp:258
void SetZoom(int nZoom)
Definition: toolsmodel.cpp:275
void SetBackgroundTransparent(BOOL bTransparent)
Definition: toolsmodel.cpp:263
TOOLTYPE m_activeTool
Definition: toolsmodel.h:75
int GetRubberRadius() const
Definition: toolsmodel.cpp:202
ToolBase * m_pToolObject
Definition: toolsmodel.h:81
void NotifyToolSettingsChanged()
Definition: toolsmodel.cpp:293
ToolBase * GetOrCreateTool(TOOLTYPE nTool)
Definition: toolsmodel.cpp:34
void MakeLineThickerOrThinner(BOOL bThinner)
Definition: toolsmodel.cpp:89
TOOLTYPE GetActiveTool() const
Definition: toolsmodel.cpp:142
void MakePenThickerOrThinner(BOOL bThinner)
Definition: toolsmodel.cpp:95
void SpecialTweak(BOOL bMinus)
Definition: mouse.cpp:1196
void selectAll()
Definition: toolsmodel.cpp:316
void NotifyZoomChanged()
Definition: toolsmodel.cpp:301
void SetPenWidth(INT nPenWidth)
Definition: toolsmodel.cpp:63
void SetBrushWidth(INT nBrushWidth)
Definition: toolsmodel.cpp:81
INT GetAirBrushRadius() const
Definition: toolsmodel.cpp:191
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y)
Definition: mouse.cpp:1169
void SetLineWidth(int nLineWidth)
Definition: toolsmodel.cpp:51
INT GetBrushWidth() const
Definition: toolsmodel.cpp:70
SIZE GetToolSize() const
Definition: toolsmodel.cpp:214
INT m_penWidth
Definition: toolsmodel.h:71
WPARAM wParam
Definition: combotst.c:138
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define pt(x, y)
Definition: drawing.c:79
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
UINT_PTR WPARAM
Definition: minwindef.h:174
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
long LONG
Definition: pedump.c:60
void endEvent()
Definition: mouse.cpp:138
virtual BOOL OnMouseMove(BOOL bLeftButton, LONG &x, LONG &y)
Definition: toolsmodel.h:50
virtual void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
Definition: toolsmodel.h:49
HDC m_hdc
Definition: toolsmodel.h:43
virtual void OnEndDraw(BOOL bCancel)
Definition: mouse.cpp:125
virtual void OnSpecialTweak(BOOL bMinus)
Definition: toolsmodel.h:56
void reset()
Definition: mouse.cpp:106
static ToolBase * createToolObject(TOOLTYPE type)
Definition: mouse.cpp:1127
COLORREF m_fg
Definition: toolsmodel.h:44
virtual void OnDrawOverlayOnImage(HDC hdc)
Definition: toolsmodel.h:53
void beginEvent()
Definition: mouse.cpp:131
ToolBase()
Definition: toolsmodel.h:46
virtual void OnDrawOverlayOnCanvas(HDC hdc)
Definition: toolsmodel.h:54
virtual BOOL OnButtonUp(BOOL bLeftButton, LONG &x, LONG &y)
Definition: toolsmodel.h:51
virtual ~ToolBase()
Definition: toolsmodel.h:47
COLORREF m_bg
Definition: toolsmodel.h:44
LONG right
Definition: windef.h:108
LONG bottom
Definition: windef.h:109
LONG top
Definition: windef.h:107
LONG left
Definition: windef.h:106
ToolsModel toolsModel
Definition: toolsmodel.cpp:10
static int UnZoomed(int xy)
Definition: toolsmodel.h:156
TOOLTYPE
Definition: toolsmodel.h:11
@ TOOL_AIRBRUSH
Definition: toolsmodel.h:20
@ TOOL_COLOR
Definition: toolsmodel.h:16
@ TOOL_SHAPE
Definition: toolsmodel.h:25
@ TOOL_RUBBER
Definition: toolsmodel.h:14
@ TOOL_MAX
Definition: toolsmodel.h:28
@ TOOL_BRUSH
Definition: toolsmodel.h:19
@ TOOL_RECT
Definition: toolsmodel.h:24
@ TOOL_BEZIER
Definition: toolsmodel.h:23
@ TOOL_FILL
Definition: toolsmodel.h:15
@ TOOL_TEXT
Definition: toolsmodel.h:21
@ TOOL_PEN
Definition: toolsmodel.h:18
@ TOOL_LINE
Definition: toolsmodel.h:22
@ TOOL_FREESEL
Definition: toolsmodel.h:12
@ TOOL_ZOOM
Definition: toolsmodel.h:17
@ TOOL_ELLIPSE
Definition: toolsmodel.h:26
@ TOOL_RRECT
Definition: toolsmodel.h:27
@ TOOL_RECTSEL
Definition: toolsmodel.h:13
static int Zoomed(int xy)
Definition: toolsmodel.h:151
BrushStyle
Definition: toolsmodel.h:32
@ BrushStyleForeSlash
Definition: toolsmodel.h:35
@ BrushStyleRound
Definition: toolsmodel.h:33
@ BrushStyleBackSlash
Definition: toolsmodel.h:36
@ BrushStyleSquare
Definition: toolsmodel.h:34
int32_t INT
Definition: typedefs.h:58
DWORD COLORREF
Definition: windef.h:100