[MSPAINT] Commonize OnFinishDraw and OnCancelDraw (#5875)

Reduce code and binary size a bit. This will reduce 1024 bytes in binary.
Unify ToolBase::OnFinishDraw and ToolBase::OnCancelDraw to ToolBase::OnEndDraw.
CORE-19094
This commit is contained in:
Katayama Hirofumi MZ 2023-11-03 16:20:03 +09:00 committed by GitHub
parent 32b883ef2f
commit 37f56d2448
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 107 deletions

View file

@ -357,13 +357,13 @@ LRESULT CCanvasWindow::OnButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOO
{ {
case TOOL_BEZIER: case TOOL_BEZIER:
case TOOL_SHAPE: case TOOL_SHAPE:
toolsModel.OnCancelDraw(); toolsModel.OnEndDraw(TRUE);
Invalidate(); Invalidate();
break; break;
case TOOL_FREESEL: case TOOL_FREESEL:
case TOOL_RECTSEL: case TOOL_RECTSEL:
toolsModel.OnFinishDraw(); toolsModel.OnEndDraw(FALSE);
Invalidate(); Invalidate();
break; break;
@ -814,13 +814,13 @@ VOID CCanvasWindow::cancelDrawing()
selectionModel.ClearMaskImage(); selectionModel.ClearMaskImage();
m_hitSelection = HIT_NONE; m_hitSelection = HIT_NONE;
m_drawing = FALSE; m_drawing = FALSE;
toolsModel.OnCancelDraw(); toolsModel.OnEndDraw(TRUE);
Invalidate(FALSE); Invalidate(FALSE);
} }
VOID CCanvasWindow::finishDrawing() VOID CCanvasWindow::finishDrawing()
{ {
toolsModel.OnFinishDraw(); toolsModel.OnEndDraw(FALSE);
m_drawing = FALSE; m_drawing = FALSE;
Invalidate(FALSE); Invalidate(FALSE);
} }

View file

@ -62,13 +62,7 @@ void ToolBase::reset()
} }
} }
void ToolBase::OnCancelDraw() void ToolBase::OnEndDraw(BOOL bCancel)
{
reset();
imageModel.NotifyImageChanged();
}
void ToolBase::OnFinishDraw()
{ {
reset(); reset();
imageModel.NotifyImageChanged(); imageModel.NotifyImageChanged();
@ -175,16 +169,13 @@ struct FreeSelTool : ToolBase
return TRUE; return TRUE;
} }
void OnFinishDraw() override void OnEndDraw(BOOL bCancel) override
{ {
selectionModel.Landing(); if (bCancel)
ToolBase::OnFinishDraw(); selectionModel.HideSelection();
} else
selectionModel.Landing();
void OnCancelDraw() override ToolBase::OnEndDraw(bCancel);
{
selectionModel.HideSelection();
ToolBase::OnCancelDraw();
} }
void OnSpecialTweak(BOOL bMinus) override void OnSpecialTweak(BOOL bMinus) override
@ -260,16 +251,13 @@ struct RectSelTool : ToolBase
return TRUE; return TRUE;
} }
void OnFinishDraw() override void OnEndDraw(BOOL bCancel) override
{ {
selectionModel.Landing(); if (bCancel)
ToolBase::OnFinishDraw(); selectionModel.HideSelection();
} else
selectionModel.Landing();
void OnCancelDraw() override ToolBase::OnEndDraw(bCancel);
{
selectionModel.HideSelection();
ToolBase::OnCancelDraw();
} }
void OnSpecialTweak(BOOL bMinus) override void OnSpecialTweak(BOOL bMinus) override
@ -309,16 +297,10 @@ struct TwoPointDrawTool : ToolBase
return TRUE; return TRUE;
} }
void OnFinishDraw() override void OnEndDraw(BOOL bCancel) override
{ {
m_bDrawing = FALSE; m_bDrawing = FALSE;
ToolBase::OnFinishDraw(); ToolBase::OnEndDraw(bCancel);
}
void OnCancelDraw() override
{
m_bDrawing = FALSE;
ToolBase::OnCancelDraw();
} }
void OnSpecialTweak(BOOL bMinus) override void OnSpecialTweak(BOOL bMinus) override
@ -471,21 +453,19 @@ struct SmoothDrawTool : ToolBase
} }
draw(bLeftButton, x, y); draw(bLeftButton, x, y);
OnFinishDraw(); OnEndDraw(FALSE);
return TRUE; return TRUE;
} }
void OnFinishDraw() override void OnEndDraw(BOOL bCancel) override
{ {
ToolBase::OnFinishDraw(); if (bCancel)
} {
LONG x = 0, y = 0;
void OnCancelDraw() override OnButtonUp(FALSE, x, y);
{ imageModel.Undo(TRUE);
LONG x = 0, y = 0; }
OnButtonUp(FALSE, x, y); ToolBase::OnEndDraw(bCancel);
imageModel.Undo(TRUE);
ToolBase::OnCancelDraw();
} }
}; };
@ -799,22 +779,19 @@ struct TextTool : ToolBase
return TRUE; return TRUE;
} }
void OnFinishDraw() override void OnEndDraw(BOOL bCancel) override
{ {
if (::IsWindowVisible(textEditWindow) && if (!bCancel)
textEditWindow.GetWindowTextLength() > 0)
{ {
imageModel.PushImageForUndo(); if (::IsWindowVisible(textEditWindow) &&
draw(m_hdc); textEditWindow.GetWindowTextLength() > 0)
{
imageModel.PushImageForUndo();
draw(m_hdc);
}
} }
quit(); quit();
ToolBase::OnFinishDraw(); ToolBase::OnEndDraw(bCancel);
}
void OnCancelDraw() override
{
quit();
ToolBase::OnCancelDraw();
} }
}; };
@ -902,25 +879,22 @@ struct BezierTool : ToolBase
s_pointStack[s_pointSP].y = y; s_pointStack[s_pointSP].y = y;
if (s_pointSP >= 3) if (s_pointSP >= 3)
{ {
OnFinishDraw(); OnEndDraw(FALSE);
return TRUE; return TRUE;
} }
imageModel.NotifyImageChanged(); imageModel.NotifyImageChanged();
return TRUE; return TRUE;
} }
void OnCancelDraw() override void OnEndDraw(BOOL bCancel) override
{ {
if (!bCancel)
{
imageModel.PushImageForUndo();
OnDrawOverlayOnImage(m_hdc);
}
m_bDrawing = FALSE; m_bDrawing = FALSE;
ToolBase::OnCancelDraw(); ToolBase::OnEndDraw(bCancel);
}
void OnFinishDraw() override
{
imageModel.PushImageForUndo();
OnDrawOverlayOnImage(m_hdc);
m_bDrawing = FALSE;
ToolBase::OnFinishDraw();
} }
void OnSpecialTweak(BOOL bMinus) override void OnSpecialTweak(BOOL bMinus) override
@ -983,7 +957,7 @@ struct ShapeTool : ToolBase
if (s_pointSP && bDoubleClick) if (s_pointSP && bDoubleClick)
{ {
OnFinishDraw(); OnEndDraw(FALSE);
return; return;
} }
@ -1017,7 +991,7 @@ struct ShapeTool : ToolBase
m_bClosed = FALSE; m_bClosed = FALSE;
if (nearlyEqualPoints(x, y, s_pointStack[0].x, s_pointStack[0].y)) if (nearlyEqualPoints(x, y, s_pointStack[0].x, s_pointStack[0].y))
{ {
OnFinishDraw(); OnEndDraw(FALSE);
return TRUE; return TRUE;
} }
else else
@ -1034,26 +1008,22 @@ struct ShapeTool : ToolBase
return TRUE; return TRUE;
} }
void OnCancelDraw() override void OnEndDraw(BOOL bCancel) override
{ {
ToolBase::OnCancelDraw(); if (!bCancel)
}
void OnFinishDraw() override
{
if (s_pointSP)
{ {
--s_pointSP; if (s_pointSP)
m_bClosed = TRUE; {
--s_pointSP;
m_bClosed = TRUE;
imageModel.PushImageForUndo(); imageModel.PushImageForUndo();
OnDrawOverlayOnImage(m_hdc); OnDrawOverlayOnImage(m_hdc);
}
m_bClosed = FALSE;
s_pointSP = 0;
} }
ToolBase::OnEndDraw(bCancel);
m_bClosed = FALSE;
s_pointSP = 0;
ToolBase::OnFinishDraw();
} }
void OnSpecialTweak(BOOL bMinus) override void OnSpecialTweak(BOOL bMinus) override

View file

@ -104,7 +104,7 @@ LRESULT CTextEditWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
{ {
if (wParam == VK_ESCAPE) if (wParam == VK_ESCAPE)
{ {
toolsModel.OnCancelDraw(); toolsModel.OnEndDraw(TRUE);
return 0; return 0;
} }

View file

@ -145,7 +145,7 @@ TOOLTYPE ToolsModel::GetOldActiveTool() const
void ToolsModel::SetActiveTool(TOOLTYPE nActiveTool) void ToolsModel::SetActiveTool(TOOLTYPE nActiveTool)
{ {
OnFinishDraw(); OnEndDraw(FALSE);
selectionModel.Landing(); selectionModel.Landing();
@ -288,19 +288,11 @@ void ToolsModel::OnButtonUp(BOOL bLeftButton, LONG x, LONG y)
m_pToolObject->endEvent(); m_pToolObject->endEvent();
} }
void ToolsModel::OnCancelDraw() void ToolsModel::OnEndDraw(BOOL bCancel)
{ {
ATLTRACE("ToolsModel::OnCancelDraw()\n"); ATLTRACE("ToolsModel::OnEndDraw(%d)\n", bCancel);
m_pToolObject->beginEvent(); m_pToolObject->beginEvent();
m_pToolObject->OnCancelDraw(); m_pToolObject->OnEndDraw(bCancel);
m_pToolObject->endEvent();
}
void ToolsModel::OnFinishDraw()
{
ATLTRACE("ToolsModel::OnFinishDraw()\n");
m_pToolObject->beginEvent();
m_pToolObject->OnFinishDraw();
m_pToolObject->endEvent(); m_pToolObject->endEvent();
} }

View file

@ -53,14 +53,13 @@ struct ToolBase
virtual BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; } virtual BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
virtual BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; } virtual BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
virtual void OnCancelDraw();
virtual void OnFinishDraw();
virtual void OnDrawOverlayOnImage(HDC hdc) { } virtual void OnDrawOverlayOnImage(HDC hdc) { }
virtual void OnDrawOverlayOnCanvas(HDC hdc) { } virtual void OnDrawOverlayOnCanvas(HDC hdc) { }
virtual void OnSpecialTweak(BOOL bMinus) { } virtual void OnSpecialTweak(BOOL bMinus) { }
virtual void OnEndDraw(BOOL bCancel);
void beginEvent(); void beginEvent();
void endEvent(); void endEvent();
void reset(); void reset();
@ -135,8 +134,7 @@ public:
void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick); void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick);
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y); void OnMouseMove(BOOL bLeftButton, LONG x, LONG y);
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y); void OnButtonUp(BOOL bLeftButton, LONG x, LONG y);
void OnCancelDraw(); void OnEndDraw(BOOL bCancel);
void OnFinishDraw();
void OnDrawOverlayOnImage(HDC hdc); void OnDrawOverlayOnImage(HDC hdc);
void OnDrawOverlayOnCanvas(HDC hdc); void OnDrawOverlayOnCanvas(HDC hdc);