[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_SHAPE:
toolsModel.OnCancelDraw();
toolsModel.OnEndDraw(TRUE);
Invalidate();
break;
case TOOL_FREESEL:
case TOOL_RECTSEL:
toolsModel.OnFinishDraw();
toolsModel.OnEndDraw(FALSE);
Invalidate();
break;
@ -814,13 +814,13 @@ VOID CCanvasWindow::cancelDrawing()
selectionModel.ClearMaskImage();
m_hitSelection = HIT_NONE;
m_drawing = FALSE;
toolsModel.OnCancelDraw();
toolsModel.OnEndDraw(TRUE);
Invalidate(FALSE);
}
VOID CCanvasWindow::finishDrawing()
{
toolsModel.OnFinishDraw();
toolsModel.OnEndDraw(FALSE);
m_drawing = FALSE;
Invalidate(FALSE);
}

View file

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

View file

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

View file

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