mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 09:42:07 +00:00
[MSPAINT] Establish Undo/Redo management (#5347)
- Painting the canvas is done by overlaying the multiple layers. - Drawing each overlay is implemented as polymorphism of OOP. - Refine the Undo/Redo mechanism. - Some adjustments. CORE-17969
This commit is contained in:
parent
b7071f67a8
commit
e8c7e30030
25 changed files with 721 additions and 504 deletions
|
@ -39,34 +39,27 @@ struct ToolBase
|
|||
static INT pointSP;
|
||||
static POINT pointStack[256];
|
||||
|
||||
ToolBase(TOOLTYPE tool) : m_tool(tool), m_hdc(NULL)
|
||||
{
|
||||
}
|
||||
ToolBase(TOOLTYPE tool) : m_tool(tool), m_hdc(NULL) { }
|
||||
virtual ~ToolBase() { }
|
||||
|
||||
virtual ~ToolBase()
|
||||
{
|
||||
}
|
||||
|
||||
virtual void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void OnMouseMove(BOOL bLeftButton, LONG x, LONG y)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void OnButtonUp(BOOL bLeftButton, LONG x, LONG y)
|
||||
{
|
||||
}
|
||||
virtual void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) { }
|
||||
virtual void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) { }
|
||||
virtual void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) { }
|
||||
|
||||
virtual void OnCancelDraw();
|
||||
virtual void OnFinishDraw();
|
||||
|
||||
virtual void OnDrawOverlayOnImage(HDC hdc) { }
|
||||
virtual void OnDrawOverlayOnCanvas(HDC hdc) { }
|
||||
|
||||
void beginEvent();
|
||||
void endEvent();
|
||||
void reset();
|
||||
|
||||
static ToolBase* createToolObject(TOOLTYPE type);
|
||||
|
||||
protected:
|
||||
void OnDrawSelectionOnCanvas(HDC hdc);
|
||||
};
|
||||
|
||||
class ToolsModel
|
||||
|
@ -112,6 +105,8 @@ public:
|
|||
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y);
|
||||
void OnCancelDraw();
|
||||
void OnFinishDraw();
|
||||
void OnDrawOverlayOnImage(HDC hdc);
|
||||
void OnDrawOverlayOnCanvas(HDC hdc);
|
||||
|
||||
void resetTool();
|
||||
void selectAll();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue