mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 06:27:38 +00:00
[MSPAINT] Simplify RECT/CRect handling
Refactoring. CORE-19094
This commit is contained in:
parent
f935132fbe
commit
1aeebfdacb
|
@ -18,7 +18,7 @@ CCanvasWindow::CCanvasWindow()
|
||||||
, m_ptOrig { -1, -1 }
|
, m_ptOrig { -1, -1 }
|
||||||
{
|
{
|
||||||
m_ahbmCached[0] = m_ahbmCached[1] = NULL;
|
m_ahbmCached[0] = m_ahbmCached[1] = NULL;
|
||||||
::SetRectEmpty(&m_rcResizing);
|
m_rcResizing.SetRectEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
CCanvasWindow::~CCanvasWindow()
|
CCanvasWindow::~CCanvasWindow()
|
||||||
|
@ -34,7 +34,7 @@ RECT CCanvasWindow::GetBaseRect()
|
||||||
CRect rcBase;
|
CRect rcBase;
|
||||||
GetImageRect(rcBase);
|
GetImageRect(rcBase);
|
||||||
ImageToCanvas(rcBase);
|
ImageToCanvas(rcBase);
|
||||||
::InflateRect(&rcBase, GRIP_SIZE, GRIP_SIZE);
|
rcBase.InflateRect(GRIP_SIZE, GRIP_SIZE);
|
||||||
return rcBase;
|
return rcBase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ VOID CCanvasWindow::getNewZoomRect(CRect& rcView, INT newZoom, CPoint ptTarget)
|
||||||
INT oldZoom = toolsModel.GetZoom();
|
INT oldZoom = toolsModel.GetZoom();
|
||||||
GetClientRect(rcView);
|
GetClientRect(rcView);
|
||||||
LONG cxView = rcView.right * oldZoom / newZoom, cyView = rcView.bottom * oldZoom / newZoom;
|
LONG cxView = rcView.right * oldZoom / newZoom, cyView = rcView.bottom * oldZoom / newZoom;
|
||||||
::SetRect(&rcView, ptTarget.x - cxView / 2, ptTarget.y - cyView / 2,
|
rcView.SetRect(ptTarget.x - cxView / 2, ptTarget.y - cyView / 2,
|
||||||
ptTarget.x + cxView / 2, ptTarget.y + cyView / 2);
|
ptTarget.x + cxView / 2, ptTarget.y + cyView / 2);
|
||||||
|
|
||||||
// Shift the rectangle if necessary
|
// Shift the rectangle if necessary
|
||||||
|
@ -199,7 +199,7 @@ VOID CCanvasWindow::DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint)
|
||||||
toolsModel.OnDrawOverlayOnCanvas(hdcMem0);
|
toolsModel.OnDrawOverlayOnCanvas(hdcMem0);
|
||||||
|
|
||||||
// Draw new frame on hdcMem0 if any
|
// Draw new frame on hdcMem0 if any
|
||||||
if (m_hitCanvasSizeBox != HIT_NONE && !::IsRectEmpty(&m_rcResizing))
|
if (m_hitCanvasSizeBox != HIT_NONE && !m_rcResizing.IsRectEmpty())
|
||||||
DrawXorRect(hdcMem0, &m_rcResizing);
|
DrawXorRect(hdcMem0, &m_rcResizing);
|
||||||
|
|
||||||
// Transfer the bits (hDC <-- hdcMem0)
|
// Transfer the bits (hDC <-- hdcMem0)
|
||||||
|
@ -434,11 +434,11 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||||
|
|
||||||
if (!m_drawing)
|
if (!m_drawing)
|
||||||
{
|
{
|
||||||
RECT rcImage;
|
CRect rcImage;
|
||||||
GetImageRect(rcImage);
|
GetImageRect(rcImage);
|
||||||
|
|
||||||
CStringW strCoord;
|
CStringW strCoord;
|
||||||
if (::PtInRect(&rcImage, pt))
|
if (rcImage.PtInRect(pt))
|
||||||
strCoord.Format(L"%ld, %ld", pt.x, pt.y);
|
strCoord.Format(L"%ld, %ld", pt.x, pt.y);
|
||||||
::SendMessageW(g_hStatusBar, SB_SETTEXT, 1, (LPARAM)(LPCWSTR)strCoord);
|
::SendMessageW(g_hStatusBar, SB_SETTEXT, 1, (LPARAM)(LPCWSTR)strCoord);
|
||||||
}
|
}
|
||||||
|
@ -507,19 +507,19 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||||
switch (m_hitCanvasSizeBox)
|
switch (m_hitCanvasSizeBox)
|
||||||
{
|
{
|
||||||
case HIT_UPPER_LEFT:
|
case HIT_UPPER_LEFT:
|
||||||
::OffsetRect(&rcResizing, cxDelta, cyDelta);
|
rcResizing.OffsetRect(cxDelta, cyDelta);
|
||||||
break;
|
break;
|
||||||
case HIT_UPPER_CENTER:
|
case HIT_UPPER_CENTER:
|
||||||
::OffsetRect(&rcResizing, 0, cyDelta);
|
rcResizing.OffsetRect(0, cyDelta);
|
||||||
break;
|
break;
|
||||||
case HIT_UPPER_RIGHT:
|
case HIT_UPPER_RIGHT:
|
||||||
::OffsetRect(&rcResizing, 0, cyDelta);
|
rcResizing.OffsetRect(0, cyDelta);
|
||||||
break;
|
break;
|
||||||
case HIT_MIDDLE_LEFT:
|
case HIT_MIDDLE_LEFT:
|
||||||
::OffsetRect(&rcResizing, cxDelta, 0);
|
rcResizing.OffsetRect(cxDelta, 0);
|
||||||
break;
|
break;
|
||||||
case HIT_LOWER_LEFT:
|
case HIT_LOWER_LEFT:
|
||||||
::OffsetRect(&rcResizing, cxDelta, 0);
|
rcResizing.OffsetRect(cxDelta, 0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -591,7 +591,7 @@ LRESULT CCanvasWindow::OnButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
::SetRectEmpty(&m_rcResizing);
|
m_rcResizing.SetRectEmpty();
|
||||||
|
|
||||||
g_imageSaved = FALSE;
|
g_imageSaved = FALSE;
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||||
CRect rcClient;
|
CRect rcClient;
|
||||||
GetClientRect(&rcClient);
|
GetClientRect(&rcClient);
|
||||||
|
|
||||||
if (!::PtInRect(&rcClient, pt))
|
if (!rcClient.PtInRect(pt))
|
||||||
{
|
{
|
||||||
bHandled = FALSE;
|
bHandled = FALSE;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -641,7 +641,7 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||||
GetImageRect(rcImage);
|
GetImageRect(rcImage);
|
||||||
ImageToCanvas(rcImage);
|
ImageToCanvas(rcImage);
|
||||||
|
|
||||||
if (::PtInRect(&rcImage, pt))
|
if (rcImage.PtInRect(pt))
|
||||||
{
|
{
|
||||||
switch (toolsModel.GetActiveTool())
|
switch (toolsModel.GetActiveTool())
|
||||||
{
|
{
|
||||||
|
@ -680,7 +680,7 @@ LRESULT CCanvasWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||||
::ReleaseCapture();
|
::ReleaseCapture();
|
||||||
m_nMouseDownMsg = 0;
|
m_nMouseDownMsg = 0;
|
||||||
m_hitCanvasSizeBox = HIT_NONE;
|
m_hitCanvasSizeBox = HIT_NONE;
|
||||||
::SetRectEmpty(&m_rcResizing);
|
m_rcResizing.SetRectEmpty();
|
||||||
Invalidate(TRUE);
|
Invalidate(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,7 +691,7 @@ LRESULT CCanvasWindow::OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOO
|
||||||
{
|
{
|
||||||
// Cancel dragging
|
// Cancel dragging
|
||||||
m_hitCanvasSizeBox = HIT_NONE;
|
m_hitCanvasSizeBox = HIT_NONE;
|
||||||
::SetRectEmpty(&m_rcResizing);
|
m_rcResizing.SetRectEmpty();
|
||||||
Invalidate(TRUE);
|
Invalidate(TRUE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,8 +257,7 @@ Text(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCW
|
||||||
{
|
{
|
||||||
INT iSaveDC = ::SaveDC(hdc); // We will modify the clipping region. Save now.
|
INT iSaveDC = ::SaveDC(hdc); // We will modify the clipping region. Save now.
|
||||||
|
|
||||||
RECT rc;
|
CRect rc = { x1, y1, x2, y2 };
|
||||||
::SetRect(&rc, x1, y1, x2, y2);
|
|
||||||
|
|
||||||
if (style == 0) // Transparent
|
if (style == 0) // Transparent
|
||||||
{
|
{
|
||||||
|
|
|
@ -354,7 +354,7 @@ void ImageModel::UnlockBitmap(HBITMAP hbmLocked)
|
||||||
|
|
||||||
void ImageModel::SelectionClone(BOOL bUndoable)
|
void ImageModel::SelectionClone(BOOL bUndoable)
|
||||||
{
|
{
|
||||||
if (!selectionModel.m_bShow || ::IsRectEmpty(&selectionModel.m_rc))
|
if (!selectionModel.m_bShow || selectionModel.m_rc.IsRectEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (bUndoable)
|
if (bUndoable)
|
||||||
|
|
|
@ -229,8 +229,8 @@ struct RectSelTool : ToolBase
|
||||||
|
|
||||||
if (canvasWindow.m_drawing)
|
if (canvasWindow.m_drawing)
|
||||||
{
|
{
|
||||||
RECT rc = selectionModel.m_rc;
|
CRect& rc = selectionModel.m_rc;
|
||||||
if (!::IsRectEmpty(&rc))
|
if (!rc.IsRectEmpty())
|
||||||
RectSel(hdc, rc.left, rc.top, rc.right, rc.bottom);
|
RectSel(hdc, rc.left, rc.top, rc.right, rc.bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -727,8 +727,8 @@ struct TextTool : ToolBase
|
||||||
{
|
{
|
||||||
if (canvasWindow.m_drawing)
|
if (canvasWindow.m_drawing)
|
||||||
{
|
{
|
||||||
RECT rc = selectionModel.m_rc;
|
CRect& rc = selectionModel.m_rc;
|
||||||
if (!::IsRectEmpty(&rc))
|
if (!rc.IsRectEmpty())
|
||||||
RectSel(hdc, rc.left, rc.top, rc.right, rc.bottom);
|
RectSel(hdc, rc.left, rc.top, rc.right, rc.bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -760,10 +760,10 @@ struct TextTool : ToolBase
|
||||||
CStringW szText;
|
CStringW szText;
|
||||||
textEditWindow.GetWindowText(szText);
|
textEditWindow.GetWindowText(szText);
|
||||||
|
|
||||||
RECT rc;
|
CRect rc;
|
||||||
textEditWindow.InvalidateEditRect();
|
textEditWindow.InvalidateEditRect();
|
||||||
textEditWindow.GetEditRect(&rc);
|
textEditWindow.GetEditRect(&rc);
|
||||||
::InflateRect(&rc, -GRIP_SIZE / 2, -GRIP_SIZE / 2);
|
rc.InflateRect(-GRIP_SIZE / 2, -GRIP_SIZE / 2);
|
||||||
|
|
||||||
// Draw the text
|
// Draw the text
|
||||||
INT style = (toolsModel.IsBackgroundTransparent() ? 0 : 1);
|
INT style = (toolsModel.IsBackgroundTransparent() ? 0 : 1);
|
||||||
|
@ -792,7 +792,7 @@ struct TextTool : ToolBase
|
||||||
imageModel.PushImageForUndo();
|
imageModel.PushImageForUndo();
|
||||||
draw(m_hdc);
|
draw(m_hdc);
|
||||||
}
|
}
|
||||||
if (::IsRectEmpty(&selectionModel.m_rc))
|
if (selectionModel.m_rc.IsRectEmpty())
|
||||||
{
|
{
|
||||||
quit();
|
quit();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -807,13 +807,13 @@ struct TextTool : ToolBase
|
||||||
fontsDialog.ShowWindow(SW_SHOWNOACTIVATE);
|
fontsDialog.ShowWindow(SW_SHOWNOACTIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
RECT rc = selectionModel.m_rc;
|
CRect rc = selectionModel.m_rc;
|
||||||
|
|
||||||
// Enlarge if tool small
|
// Enlarge if tool small
|
||||||
INT cxMin = CX_MINTEXTEDIT, cyMin = CY_MINTEXTEDIT;
|
INT cxMin = CX_MINTEXTEDIT, cyMin = CY_MINTEXTEDIT;
|
||||||
if (selectionModel.m_rc.IsRectEmpty())
|
if (selectionModel.m_rc.IsRectEmpty())
|
||||||
{
|
{
|
||||||
SetRect(&rc, x, y, x + cxMin, y + cyMin);
|
rc.SetRect(x, y, x + cxMin, y + cyMin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -93,7 +93,7 @@ LRESULT CPaletteWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
||||||
::FillRect(hMemDC, &rcClient, (HBRUSH)(COLOR_3DFACE + 1));
|
::FillRect(hMemDC, &rcClient, (HBRUSH)(COLOR_3DFACE + 1));
|
||||||
|
|
||||||
/* Draw the big box that contains the black box and the white box */
|
/* Draw the big box that contains the black box and the white box */
|
||||||
::SetRect(&rc, X_MARGIN, Y_MARGIN, X_MARGIN + CXY_BIGBOX, Y_MARGIN + CXY_BIGBOX);
|
rc = { X_MARGIN, Y_MARGIN, X_MARGIN + CXY_BIGBOX, Y_MARGIN + CXY_BIGBOX };
|
||||||
::DrawEdge(hMemDC, &rc, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
::DrawEdge(hMemDC, &rc, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
||||||
COLORREF rgbLight = ::GetSysColor(COLOR_3DHIGHLIGHT);
|
COLORREF rgbLight = ::GetSysColor(COLOR_3DHIGHLIGHT);
|
||||||
for (INT y = rc.top; y < rc.bottom; ++y)
|
for (INT y = rc.top; y < rc.bottom; ++y)
|
||||||
|
|
|
@ -21,8 +21,8 @@ SelectionModel::SelectionModel()
|
||||||
, m_bShow(FALSE)
|
, m_bShow(FALSE)
|
||||||
, m_bContentChanged(FALSE)
|
, m_bContentChanged(FALSE)
|
||||||
{
|
{
|
||||||
::SetRectEmpty(&m_rc);
|
m_rc.SetRectEmpty();
|
||||||
::SetRectEmpty(&m_rcOld);
|
m_rcOld.SetRectEmpty();
|
||||||
m_ptHit = { -1, -1 };
|
m_ptHit = { -1, -1 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ void SelectionModel::BuildMaskFromPtStack()
|
||||||
|
|
||||||
void SelectionModel::DrawBackgroundPoly(HDC hDCImage, COLORREF crBg)
|
void SelectionModel::DrawBackgroundPoly(HDC hDCImage, COLORREF crBg)
|
||||||
{
|
{
|
||||||
if (::IsRectEmpty(&m_rcOld))
|
if (m_rcOld.IsRectEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HGDIOBJ hPenOld = ::SelectObject(hDCImage, ::GetStockObject(NULL_PEN));
|
HGDIOBJ hPenOld = ::SelectObject(hDCImage, ::GetStockObject(NULL_PEN));
|
||||||
|
@ -109,7 +109,7 @@ void SelectionModel::DrawBackgroundPoly(HDC hDCImage, COLORREF crBg)
|
||||||
|
|
||||||
void SelectionModel::DrawBackgroundRect(HDC hDCImage, COLORREF crBg)
|
void SelectionModel::DrawBackgroundRect(HDC hDCImage, COLORREF crBg)
|
||||||
{
|
{
|
||||||
if (::IsRectEmpty(&m_rcOld))
|
if (m_rcOld.IsRectEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Rect(hDCImage, m_rcOld.left, m_rcOld.top, m_rcOld.right, m_rcOld.bottom, crBg, crBg, 0, 1);
|
Rect(hDCImage, m_rcOld.left, m_rcOld.top, m_rcOld.right, m_rcOld.bottom, crBg, crBg, 0, 1);
|
||||||
|
@ -126,7 +126,7 @@ void SelectionModel::DrawBackground(HDC hDCImage)
|
||||||
void SelectionModel::DrawSelection(HDC hDCImage, COLORREF crBg, BOOL bBgTransparent)
|
void SelectionModel::DrawSelection(HDC hDCImage, COLORREF crBg, BOOL bBgTransparent)
|
||||||
{
|
{
|
||||||
CRect rc = m_rc;
|
CRect rc = m_rc;
|
||||||
if (::IsRectEmpty(&rc))
|
if (rc.IsRectEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BITMAP bm;
|
BITMAP bm;
|
||||||
|
@ -161,7 +161,7 @@ BOOL SelectionModel::IsLanded() const
|
||||||
|
|
||||||
BOOL SelectionModel::TakeOff()
|
BOOL SelectionModel::TakeOff()
|
||||||
{
|
{
|
||||||
if (!IsLanded() || ::IsRectEmpty(&m_rc))
|
if (!IsLanded() || m_rc.IsRectEmpty())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
// The background color is needed for transparency of selection
|
// The background color is needed for transparency of selection
|
||||||
|
@ -204,7 +204,7 @@ void SelectionModel::Landing()
|
||||||
m_bShow = FALSE;
|
m_bShow = FALSE;
|
||||||
|
|
||||||
if (m_bContentChanged ||
|
if (m_bContentChanged ||
|
||||||
(!::EqualRect(m_rc, m_rcOld) && !::IsRectEmpty(m_rc) && !::IsRectEmpty(m_rcOld)))
|
(!m_rc.EqualRect(m_rcOld) && !m_rc.IsRectEmpty() && !m_rcOld.IsRectEmpty()))
|
||||||
{
|
{
|
||||||
imageModel.PushImageForUndo();
|
imageModel.PushImageForUndo();
|
||||||
|
|
||||||
|
@ -410,10 +410,8 @@ void SelectionModel::DrawFramePoly(HDC hDCImage)
|
||||||
|
|
||||||
void SelectionModel::SetRectFromPoints(const POINT& ptFrom, const POINT& ptTo)
|
void SelectionModel::SetRectFromPoints(const POINT& ptFrom, const POINT& ptTo)
|
||||||
{
|
{
|
||||||
m_rc.left = min(ptFrom.x, ptTo.x);
|
m_rc = CRect(ptFrom, ptTo);
|
||||||
m_rc.top = min(ptFrom.y, ptTo.y);
|
m_rc.NormalizeRect();
|
||||||
m_rc.right = max(ptFrom.x, ptTo.x);
|
|
||||||
m_rc.bottom = max(ptFrom.y, ptTo.y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectionModel::Dragging(HITTEST hit, POINT pt)
|
void SelectionModel::Dragging(HITTEST hit, POINT pt)
|
||||||
|
@ -452,7 +450,7 @@ void SelectionModel::Dragging(HITTEST hit, POINT pt)
|
||||||
break;
|
break;
|
||||||
case HIT_BORDER:
|
case HIT_BORDER:
|
||||||
case HIT_INNER:
|
case HIT_INNER:
|
||||||
OffsetRect(&m_rc, pt.x - m_ptHit.x, pt.y - m_ptHit.y);
|
m_rc.OffsetRect(pt.x - m_ptHit.x, pt.y - m_ptHit.y);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_ptHit = pt;
|
m_ptHit = pt;
|
||||||
|
@ -481,8 +479,8 @@ void SelectionModel::HideSelection()
|
||||||
m_bShow = m_bContentChanged = FALSE;
|
m_bShow = m_bContentChanged = FALSE;
|
||||||
ClearColorImage();
|
ClearColorImage();
|
||||||
ClearMaskImage();
|
ClearMaskImage();
|
||||||
::SetRectEmpty(&m_rc);
|
m_rc.SetRectEmpty();
|
||||||
::SetRectEmpty(&m_rcOld);
|
m_rcOld.SetRectEmpty();
|
||||||
imageModel.NotifyImageChanged();
|
imageModel.NotifyImageChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,9 +531,9 @@ HITTEST SelectionModel::hitTest(POINT ptCanvas)
|
||||||
if (!m_bShow)
|
if (!m_bShow)
|
||||||
return HIT_NONE;
|
return HIT_NONE;
|
||||||
|
|
||||||
RECT rcSelection = m_rc;
|
CRect rcSelection = m_rc;
|
||||||
canvasWindow.ImageToCanvas(rcSelection);
|
canvasWindow.ImageToCanvas(rcSelection);
|
||||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
rcSelection.InflateRect(GRIP_SIZE, GRIP_SIZE);
|
||||||
return getSizeBoxHitTest(ptCanvas, &rcSelection);
|
return getSizeBoxHitTest(ptCanvas, &rcSelection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,10 +542,9 @@ void SelectionModel::drawFrameOnCanvas(HDC hCanvasDC)
|
||||||
if (!m_bShow)
|
if (!m_bShow)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RECT rcSelection = m_rc;
|
CRect rcSelection = m_rc;
|
||||||
canvasWindow.ImageToCanvas(rcSelection);
|
canvasWindow.ImageToCanvas(rcSelection);
|
||||||
|
rcSelection.InflateRect(GRIP_SIZE, GRIP_SIZE);
|
||||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
|
||||||
drawSizeBoxes(hCanvasDC, &rcSelection, TRUE);
|
drawSizeBoxes(hCanvasDC, &rcSelection, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +554,7 @@ void SelectionModel::moveSelection(INT xDelta, INT yDelta)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TakeOff();
|
TakeOff();
|
||||||
::OffsetRect(&m_rc, xDelta, yDelta);
|
m_rc.OffsetRect(xDelta, yDelta);
|
||||||
canvasWindow.Invalidate();
|
canvasWindow.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,21 +79,21 @@ BOOL getSizeBoxRect(LPRECT prc, HITTEST hit, LPCRECT prcBase)
|
||||||
|
|
||||||
HITTEST getSizeBoxHitTest(POINT pt, LPCRECT prcBase)
|
HITTEST getSizeBoxHitTest(POINT pt, LPCRECT prcBase)
|
||||||
{
|
{
|
||||||
RECT rc;
|
CRect rc;
|
||||||
|
|
||||||
if (!::PtInRect(prcBase, pt))
|
if (!::PtInRect(prcBase, pt))
|
||||||
return HIT_NONE;
|
return HIT_NONE;
|
||||||
|
|
||||||
rc = *prcBase;
|
rc = *prcBase;
|
||||||
::InflateRect(&rc, -GRIP_SIZE, -GRIP_SIZE);
|
rc.InflateRect(-GRIP_SIZE, -GRIP_SIZE);
|
||||||
if (::PtInRect(&rc, pt))
|
if (rc.PtInRect(pt))
|
||||||
return HIT_INNER;
|
return HIT_INNER;
|
||||||
|
|
||||||
for (INT i = HIT_UPPER_LEFT; i <= HIT_LOWER_RIGHT; ++i)
|
for (INT i = HIT_UPPER_LEFT; i <= HIT_LOWER_RIGHT; ++i)
|
||||||
{
|
{
|
||||||
HITTEST hit = (HITTEST)i;
|
HITTEST hit = (HITTEST)i;
|
||||||
getSizeBoxRect(&rc, hit, prcBase);
|
getSizeBoxRect(&rc, hit, prcBase);
|
||||||
if (::PtInRect(&rc, pt))
|
if (rc.PtInRect(pt))
|
||||||
return hit;
|
return hit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ VOID drawSizeBoxes(HDC hdc, LPCRECT prcBase, BOOL bDrawFrame, LPCRECT prcPaint)
|
||||||
if (bDrawFrame)
|
if (bDrawFrame)
|
||||||
{
|
{
|
||||||
rc = *prcBase;
|
rc = *prcBase;
|
||||||
::InflateRect(&rc, -GRIP_SIZE / 2, -GRIP_SIZE / 2);
|
rc.InflateRect(-GRIP_SIZE / 2, -GRIP_SIZE / 2);
|
||||||
|
|
||||||
LOGBRUSH logBrush = { BS_HOLLOW, 0, 0 };
|
LOGBRUSH logBrush = { BS_HOLLOW, 0, 0 };
|
||||||
COLORREF rgbHighlight = ::GetSysColor(COLOR_HIGHLIGHT);
|
COLORREF rgbHighlight = ::GetSysColor(COLOR_HIGHLIGHT);
|
||||||
|
|
|
@ -52,7 +52,7 @@ void CTextEditWindow::FixEditPos(LPCWSTR pszOldText)
|
||||||
RECT rcParent;
|
RECT rcParent;
|
||||||
::GetWindowRect(m_hwndParent, &rcParent);
|
::GetWindowRect(m_hwndParent, &rcParent);
|
||||||
|
|
||||||
RECT rc, rcWnd, rcText;
|
CRect rc, rcWnd, rcText;
|
||||||
GetWindowRect(&rcWnd);
|
GetWindowRect(&rcWnd);
|
||||||
rcText = rcWnd;
|
rcText = rcWnd;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ void CTextEditWindow::FixEditPos(LPCWSTR pszOldText)
|
||||||
|
|
||||||
rcWnd = rc;
|
rcWnd = rc;
|
||||||
::GetClientRect(m_hwndParent, &rcParent);
|
::GetClientRect(m_hwndParent, &rcParent);
|
||||||
IntersectRect(&rc, &rcParent, &rcWnd);
|
rc.IntersectRect(&rcParent, &rcWnd);
|
||||||
|
|
||||||
MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, FALSE);
|
MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, FALSE);
|
||||||
|
|
||||||
|
@ -158,13 +158,13 @@ LRESULT CTextEditWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||||
|
|
||||||
LRESULT CTextEditWindow::OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CTextEditWindow::OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
RECT rc;
|
CRect rc;
|
||||||
GetWindowRect(&rc);
|
GetWindowRect(&rc);
|
||||||
|
|
||||||
HDC hDC = GetDCEx(NULL, DCX_WINDOW | DCX_PARENTCLIP);
|
HDC hDC = GetDCEx(NULL, DCX_WINDOW | DCX_PARENTCLIP);
|
||||||
if (hDC)
|
if (hDC)
|
||||||
{
|
{
|
||||||
OffsetRect(&rc, -rc.left, -rc.top);
|
rc.OffsetRect(-rc.left, -rc.top);
|
||||||
DrawGrip(hDC, rc);
|
DrawGrip(hDC, rc);
|
||||||
ReleaseDC(hDC);
|
ReleaseDC(hDC);
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,8 +169,8 @@ VOID CToolSettingsWindow::drawLine(HDC hdc, LPCRECT prc)
|
||||||
for (INT i = 0; i < 5; i++)
|
for (INT i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
INT penWidth = i + 1;
|
INT penWidth = i + 1;
|
||||||
RECT rcLine = rects[i];
|
CRect rcLine = rects[i];
|
||||||
::InflateRect(&rcLine, -2, 0);
|
rcLine.InflateRect(-2, 0);
|
||||||
rcLine.top = (rcLine.top + rcLine.bottom - penWidth) / 2;
|
rcLine.top = (rcLine.top + rcLine.bottom - penWidth) / 2;
|
||||||
rcLine.bottom = rcLine.top + penWidth;
|
rcLine.bottom = rcLine.top + penWidth;
|
||||||
if (toolsModel.GetLineWidth() == penWidth)
|
if (toolsModel.GetLineWidth() == penWidth)
|
||||||
|
@ -242,17 +242,17 @@ static inline INT getBoxRects(RECT rects[3], LPCRECT prc, LPPOINT ppt = NULL)
|
||||||
|
|
||||||
VOID CToolSettingsWindow::drawBox(HDC hdc, LPCRECT prc)
|
VOID CToolSettingsWindow::drawBox(HDC hdc, LPCRECT prc)
|
||||||
{
|
{
|
||||||
RECT rects[3];
|
CRect rects[3];
|
||||||
getBoxRects(rects, prc);
|
getBoxRects(rects, prc);
|
||||||
|
|
||||||
for (INT iItem = 0; iItem < 3; ++iItem)
|
for (INT iItem = 0; iItem < 3; ++iItem)
|
||||||
{
|
{
|
||||||
RECT& rcItem = rects[iItem];
|
CRect& rcItem = rects[iItem];
|
||||||
|
|
||||||
if (toolsModel.GetShapeStyle() == iItem)
|
if (toolsModel.GetShapeStyle() == iItem)
|
||||||
::FillRect(hdc, &rcItem, ::GetSysColorBrush(COLOR_HIGHLIGHT));
|
::FillRect(hdc, &rcItem, ::GetSysColorBrush(COLOR_HIGHLIGHT));
|
||||||
|
|
||||||
::InflateRect(&rcItem, -5, -5);
|
rcItem.InflateRect(-5, -5);
|
||||||
|
|
||||||
if (iItem <= 1)
|
if (iItem <= 1)
|
||||||
{
|
{
|
||||||
|
@ -289,9 +289,9 @@ LRESULT CToolSettingsWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, B
|
||||||
m_hTranspIcon = (HICON)LoadImageW(g_hinstExe, MAKEINTRESOURCEW(IDI_TRANSPARENT),
|
m_hTranspIcon = (HICON)LoadImageW(g_hinstExe, MAKEINTRESOURCEW(IDI_TRANSPARENT),
|
||||||
IMAGE_ICON, CX_TRANS_ICON, CY_TRANS_ICON, LR_DEFAULTCOLOR);
|
IMAGE_ICON, CX_TRANS_ICON, CY_TRANS_ICON, LR_DEFAULTCOLOR);
|
||||||
|
|
||||||
RECT trackbarZoomPos, rect2;
|
CRect trackbarZoomPos, rect2;
|
||||||
calculateTwoBoxes(trackbarZoomPos, rect2);
|
calculateTwoBoxes(trackbarZoomPos, rect2);
|
||||||
::InflateRect(&trackbarZoomPos, -1, -1);
|
trackbarZoomPos.InflateRect(-1, -1);
|
||||||
|
|
||||||
trackbarZoom.Create(TRACKBAR_CLASS, m_hWnd, trackbarZoomPos, NULL, WS_CHILD | TBS_VERT | TBS_AUTOTICKS);
|
trackbarZoom.Create(TRACKBAR_CLASS, m_hWnd, trackbarZoomPos, NULL, WS_CHILD | TBS_VERT | TBS_AUTOTICKS);
|
||||||
trackbarZoom.SendMessage(TBM_SETRANGE, TRUE, MAKELPARAM(MIN_ZOOM_TRACK, MAX_ZOOM_TRACK));
|
trackbarZoom.SendMessage(TBM_SETRANGE, TRUE, MAKELPARAM(MIN_ZOOM_TRACK, MAX_ZOOM_TRACK));
|
||||||
|
@ -336,23 +336,23 @@ LRESULT CToolSettingsWindow::OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, B
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID CToolSettingsWindow::calculateTwoBoxes(RECT& rect1, RECT& rect2)
|
VOID CToolSettingsWindow::calculateTwoBoxes(CRect& rect1, CRect& rect2)
|
||||||
{
|
{
|
||||||
RECT rcClient;
|
CRect rcClient;
|
||||||
GetClientRect(&rcClient);
|
GetClientRect(&rcClient);
|
||||||
::InflateRect(&rcClient, -MARGIN1, -MARGIN1);
|
rcClient.InflateRect(-MARGIN1, -MARGIN1);
|
||||||
|
|
||||||
INT yCenter = (rcClient.top + rcClient.bottom) / 2;
|
INT yCenter = (rcClient.top + rcClient.bottom) / 2;
|
||||||
::SetRect(&rect1, rcClient.left, rcClient.top, rcClient.right, yCenter);
|
rect1.SetRect(rcClient.left, rcClient.top, rcClient.right, yCenter);
|
||||||
::SetRect(&rect2, rcClient.left, yCenter, rcClient.right, rcClient.bottom);
|
rect2.SetRect(rcClient.left, yCenter, rcClient.right, rcClient.bottom);
|
||||||
|
|
||||||
::InflateRect(&rect1, -MARGIN2, -MARGIN2);
|
rect1.InflateRect(-MARGIN2, -MARGIN2);
|
||||||
::InflateRect(&rect2, -MARGIN2, -MARGIN2);
|
rect2.InflateRect(-MARGIN2, -MARGIN2);
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT CToolSettingsWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CToolSettingsWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
RECT rect1, rect2;
|
CRect rect1, rect2;
|
||||||
calculateTwoBoxes(rect1, rect2);
|
calculateTwoBoxes(rect1, rect2);
|
||||||
|
|
||||||
PAINTSTRUCT ps;
|
PAINTSTRUCT ps;
|
||||||
|
@ -364,8 +364,8 @@ LRESULT CToolSettingsWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BO
|
||||||
if (toolsModel.GetActiveTool() >= TOOL_RECT)
|
if (toolsModel.GetActiveTool() >= TOOL_RECT)
|
||||||
::DrawEdge(hdc, &rect2, BDR_SUNKENOUTER, BF_RECT | BF_MIDDLE);
|
::DrawEdge(hdc, &rect2, BDR_SUNKENOUTER, BF_RECT | BF_MIDDLE);
|
||||||
|
|
||||||
::InflateRect(&rect1, -MARGIN2, -MARGIN2);
|
rect1.InflateRect(-MARGIN2, -MARGIN2);
|
||||||
::InflateRect(&rect2, -MARGIN2, -MARGIN2);
|
rect2.InflateRect(-MARGIN2, -MARGIN2);
|
||||||
switch (toolsModel.GetActiveTool())
|
switch (toolsModel.GetActiveTool())
|
||||||
{
|
{
|
||||||
case TOOL_FREESEL:
|
case TOOL_FREESEL:
|
||||||
|
@ -407,7 +407,7 @@ LRESULT CToolSettingsWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lPar
|
||||||
{
|
{
|
||||||
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
||||||
|
|
||||||
RECT rect1, rect2;
|
CRect rect1, rect2;
|
||||||
calculateTwoBoxes(rect1, rect2);
|
calculateTwoBoxes(rect1, rect2);
|
||||||
RECT rects[12];
|
RECT rects[12];
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ private:
|
||||||
VOID drawLine(HDC hdc, LPCRECT prc);
|
VOID drawLine(HDC hdc, LPCRECT prc);
|
||||||
VOID drawBox(HDC hdc, LPCRECT prc);
|
VOID drawBox(HDC hdc, LPCRECT prc);
|
||||||
VOID drawAirBrush(HDC hdc, LPCRECT prc);
|
VOID drawAirBrush(HDC hdc, LPCRECT prc);
|
||||||
VOID calculateTwoBoxes(RECT& rect1, RECT& rect2);
|
VOID calculateTwoBoxes(CRect& rect1, CRect& rect2);
|
||||||
|
|
||||||
LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||||
LRESULT OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
LRESULT OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||||
|
|
Loading…
Reference in a new issue