#define WM_PALETTEMODELPALETTECHANGED (WM_APP + 4)
#define WM_IMAGEMODELDIMENSIONSCHANGED (WM_APP + 5)
#define WM_IMAGEMODELIMAGECHANGED (WM_APP + 6)
+#define WM_SELECTIONMODELREFRESHNEEDED (WM_APP + 7)
LRESULT CPaletteWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (GET_X_LPARAM(lParam) >= 31)
- {
paletteModel.SetFgColor(paletteModel.GetColor((GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14));
- if (toolsModel.GetActiveTool() == 10)
- ForceRefreshSelectionContents();
- }
return 0;
}
LRESULT CPaletteWindow::OnRButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (GET_X_LPARAM(lParam) >= 31)
- {
paletteModel.SetBgColor(paletteModel.GetColor((GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14));
- if (toolsModel.GetActiveTool() == 10)
- ForceRefreshSelectionContents();
- }
return 0;
}
paletteModel.SetColor((GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14,
choosecolor.rgbResult);
paletteModel.SetFgColor(choosecolor.rgbResult);
- if (toolsModel.GetActiveTool() == 10)
- ForceRefreshSelectionContents();
}
return 0;
}
paletteModel.SetColor((GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14,
choosecolor.rgbResult);
paletteModel.SetBgColor(choosecolor.rgbResult);
- if (toolsModel.GetActiveTool() == 10)
- ForceRefreshSelectionContents();
}
return 0;
}
void PaletteModel::NotifyColorChanged()
{
paletteWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
+ selectionWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
}
void PaletteModel::NotifyPaletteChanged()
}
return 0;
}
+
+LRESULT CSelectionWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+ if (toolsModel.GetActiveTool() == TOOL_TEXT)
+ ForceRefreshSelectionContents();
+ return 0;
+}
+
+LRESULT CSelectionWindow::OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+ if (toolsModel.GetActiveTool() == TOOL_FREESEL ||
+ toolsModel.GetActiveTool() == TOOL_RECTSEL ||
+ toolsModel.GetActiveTool() == TOOL_TEXT)
+ ForceRefreshSelectionContents();
+ return 0;
+}
+
+LRESULT CSelectionWindow::OnSelectionModelRefreshNeeded(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+ ForceRefreshSelectionContents();
+ return 0;
+}
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
+ MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
+ MESSAGE_HANDLER(WM_TOOLSMODELSETTINGSCHANGED, OnToolsModelSettingsChanged)
+ MESSAGE_HANDLER(WM_SELECTIONMODELREFRESHNEEDED, OnSelectionModelRefreshNeeded)
END_MSG_MAP()
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSelectionModelRefreshNeeded(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
private:
static const LPCTSTR m_lpszCursorLUT[9];
SelectObject(m_hDC, m_hBm);
StretchBlt(m_hDC, RECT_WIDTH(m_rcDest) - 1, 0, -RECT_WIDTH(m_rcDest), RECT_HEIGHT(m_rcDest), m_hDC,
0, 0, RECT_WIDTH(m_rcDest), RECT_HEIGHT(m_rcDest), SRCCOPY);
+ NotifyRefreshNeeded();
}
void SelectionModel::FlipVertically()
SelectObject(m_hDC, m_hBm);
StretchBlt(m_hDC, 0, RECT_HEIGHT(m_rcDest) - 1, RECT_WIDTH(m_rcDest), -RECT_HEIGHT(m_rcDest), m_hDC,
0, 0, RECT_WIDTH(m_rcDest), RECT_HEIGHT(m_rcDest), SRCCOPY);
+ NotifyRefreshNeeded();
}
void SelectionModel::RotateNTimes90Degrees(int iN)
StretchBlt(m_hDC, RECT_WIDTH(m_rcDest) - 1, RECT_HEIGHT(m_rcDest) - 1, -RECT_WIDTH(m_rcDest), -RECT_HEIGHT(m_rcDest), m_hDC,
0, 0, RECT_WIDTH(m_rcDest), RECT_HEIGHT(m_rcDest), SRCCOPY);
}
+ NotifyRefreshNeeded();
}
HBITMAP SelectionModel::GetBitmap()
{
Text(hDCImage, m_rcDest.left, m_rcDest.top, m_rcDest.right, m_rcDest.bottom, crFg, crBg, textToolText, hfontTextFont, bBgTransparent);
}
+
+void SelectionModel::NotifyRefreshNeeded()
+{
+ selectionWindow.SendMessage(WM_SELECTIONMODELREFRESHNEEDED);
+}
// void NotifySelectionChanging();
// void NotifySelectionChanged();
+ void NotifyRefreshNeeded();
public:
SelectionModel();
case TOOL_RECTSEL:
case TOOL_TEXT:
if ((y > 1) && (y < 64))
- {
toolsModel.SetBackgroundTransparent((y - 2) / 31);
-
- ForceRefreshSelectionContents();
- }
break;
case TOOL_RUBBER:
if ((y > 1) && (y < 62))
void ToolsModel::NotifyToolSettingsChanged()
{
toolSettingsWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED);
+ selectionWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED);
}
void ToolsModel::NotifyZoomChanged()
{
case 1: /* flip horizontally */
if (selectionWindow.IsWindowVisible())
- {
selectionModel.FlipHorizontally();
- ForceRefreshSelectionContents();
- }
else
{
imageModel.CopyPrevious();
break;
case 2: /* flip vertically */
if (selectionWindow.IsWindowVisible())
- {
selectionModel.FlipVertically();
- ForceRefreshSelectionContents();
- }
else
{
imageModel.CopyPrevious();
break;
case 4: /* rotate 180 degrees */
if (selectionWindow.IsWindowVisible())
- {
selectionModel.RotateNTimes90Degrees(2);
- ForceRefreshSelectionContents();
- }
else
{
imageModel.CopyPrevious();