Author: bfreisen
Date: Tue Jul 7 11:02:30 2015
New Revision: 68366
URL:
http://svn.reactos.org/svn/reactos?rev=68366&view=rev
Log:
[MSPAINT_NEW] split CMainWindow: factor out CImgAreaWindow and CMiniatureWindow (second
batch of git commits)
Added:
trunk/reactos/base/applications/mspaint_new/imgarea.cpp (with props)
trunk/reactos/base/applications/mspaint_new/imgarea.h (with props)
trunk/reactos/base/applications/mspaint_new/miniature.cpp (with props)
trunk/reactos/base/applications/mspaint_new/miniature.h (with props)
Modified:
trunk/reactos/base/applications/mspaint_new/CMakeLists.txt
trunk/reactos/base/applications/mspaint_new/globalvar.h
trunk/reactos/base/applications/mspaint_new/main.cpp
trunk/reactos/base/applications/mspaint_new/precomp.h
trunk/reactos/base/applications/mspaint_new/winproc.cpp
trunk/reactos/base/applications/mspaint_new/winproc.h
Modified: trunk/reactos/base/applications/mspaint_new/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/CMakeLists.txt [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -9,7 +9,9 @@
dib.cpp
drawing.cpp
history.cpp
+ imgarea.cpp
main.cpp
+ miniature.cpp
mouse.cpp
palette.cpp
registry.cpp
Modified: trunk/reactos/base/applications/mspaint_new/globalvar.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/globalvar.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/globalvar.h [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -96,22 +96,24 @@
extern BOOL showMiniature;
class CMainWindow;
+class CMiniatureWindow;
class CToolSettingsWindow;
class CPaletteWindow;
class CScrollboxWindow;
class CSelectionWindow;
+class CImgAreaWindow;
class CSizeboxWindow;
class CTextEditWindow;
extern CMainWindow mainWindow;
-extern CMainWindow miniature;
+extern CMiniatureWindow miniature;
extern CMainWindow toolBoxContainer;
extern CToolSettingsWindow toolSettingsWindow;
extern CPaletteWindow paletteWindow;
extern CScrollboxWindow scrollboxWindow;
extern CScrollboxWindow scrlClientWindow;
extern CSelectionWindow selectionWindow;
-extern CMainWindow imageArea;
+extern CImgAreaWindow imageArea;
extern CSizeboxWindow sizeboxLeftTop;
extern CSizeboxWindow sizeboxCenterTop;
extern CSizeboxWindow sizeboxRightTop;
Added: trunk/reactos/base/applications/mspaint_new/imgarea.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/imgarea.cpp (added)
+++ trunk/reactos/base/applications/mspaint_new/imgarea.cpp [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -0,0 +1,323 @@
+/*
+ * PROJECT: PAINT for ReactOS
+ * LICENSE: LGPL
+ * FILE: base/applications/mspaint_new/imgarea.cpp
+ * PURPOSE: Window procedure of the main window and all children apart from
+ * hPalWin, hToolSettings and hSelection
+ * PROGRAMMERS: Benedikt Freisen
+ */
+
+/* INCLUDES *********************************************************/
+
+#include "precomp.h"
+
+#include "dialogs.h"
+#include "registry.h"
+
+/* FUNCTIONS ********************************************************/
+
+extern void
+zoomTo(int newZoom, int mouseX, int mouseY);
+
+void CImgAreaWindow::drawZoomFrame(int mouseX, int mouseY)
+{
+ HDC hdc;
+ HPEN oldPen;
+ HBRUSH oldBrush;
+ LOGBRUSH logbrush;
+ int rop;
+
+ RECT clientRectScrollbox;
+ RECT clientRectImageArea;
+ int x, y, w, h;
+ scrollboxWindow.GetClientRect(&clientRectScrollbox);
+ GetClientRect(&clientRectImageArea);
+ w = clientRectImageArea.right * clientRectScrollbox.right /
(clientRectImageArea.right * 2);
+ h = clientRectImageArea.bottom * clientRectScrollbox.bottom /
(clientRectImageArea.bottom * 2);
+ x = max(0, min(clientRectImageArea.right - w, mouseX - w / 2));
+ y = max(0, min(clientRectImageArea.bottom - h, mouseY - h / 2));
+
+ hdc = GetDC();
+ oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 0, 0));
+ logbrush.lbStyle = BS_HOLLOW;
+ oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
+ rop = SetROP2(hdc, R2_NOT);
+ Rectangle(hdc, x, y, x + w, y + h);
+ SetROP2(hdc, rop);
+ DeleteObject(SelectObject(hdc, oldBrush));
+ DeleteObject(SelectObject(hdc, oldPen));
+ ReleaseDC(hdc);
+}
+
+LRESULT CImgAreaWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ sizeboxLeftTop.MoveWindow(
+ 0,
+ 0, 3, 3, TRUE);
+ sizeboxCenterTop.MoveWindow(
+ imgXRes * zoom / 2000 + 3 * 3 / 4,
+ 0, 3, 3, TRUE);
+ sizeboxRightTop.MoveWindow(
+ imgXRes * zoom / 1000 + 3,
+ 0, 3, 3, TRUE);
+ sizeboxLeftCenter.MoveWindow(
+ 0,
+ imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE);
+ sizeboxRightCenter.MoveWindow(
+ imgXRes * zoom / 1000 + 3,
+ imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE);
+ sizeboxLeftBottom.MoveWindow(
+ 0,
+ imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
+ sizeboxCenterBottom.MoveWindow(
+ imgXRes * zoom / 2000 + 3 * 3 / 4,
+ imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
+ sizeboxRightBottom.MoveWindow(
+ imgXRes * zoom / 1000 + 3,
+ imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
+ UpdateScrollbox();
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ DefWindowProc(WM_PAINT, wParam, lParam);
+ HDC hdc = imageArea.GetDC();
+ StretchBlt(hdc, 0, 0, imgXRes * zoom / 1000, imgYRes * zoom / 1000, hDrawingDC, 0, 0,
imgXRes,
+ imgYRes, SRCCOPY);
+ if (showGrid && (zoom >= 4000))
+ {
+ HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, 0x00a0a0a0));
+ int counter;
+ for(counter = 0; counter <= imgYRes; counter++)
+ {
+ MoveToEx(hdc, 0, counter * zoom / 1000, NULL);
+ LineTo(hdc, imgXRes * zoom / 1000, counter * zoom / 1000);
+ }
+ for(counter = 0; counter <= imgXRes; counter++)
+ {
+ MoveToEx(hdc, counter * zoom / 1000, 0, NULL);
+ LineTo(hdc, counter * zoom / 1000, imgYRes * zoom / 1000);
+ }
+ DeleteObject(SelectObject(hdc, oldPen));
+ }
+ imageArea.ReleaseDC(hdc);
+ selectionWindow.Invalidate(FALSE);
+ miniature.Invalidate(FALSE);
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ switch (activeTool)
+ {
+ case TOOL_FILL:
+ SetCursor(hCurFill);
+ break;
+ case TOOL_COLOR:
+ SetCursor(hCurColor);
+ break;
+ case TOOL_ZOOM:
+ SetCursor(hCurZoom);
+ break;
+ case TOOL_PEN:
+ SetCursor(hCurPen);
+ break;
+ case TOOL_AIRBRUSH:
+ SetCursor(hCurAirbrush);
+ break;
+ default:
+ SetCursor(LoadCursor(NULL, IDC_CROSS));
+ }
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if ((!drawing) || (activeTool == TOOL_COLOR))
+ {
+ SetCapture();
+ drawing = TRUE;
+ startPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom,
+ fgColor, bgColor);
+ }
+ else
+ {
+ SendMessage(WM_LBUTTONUP, wParam, lParam);
+ undo();
+ }
+ Invalidate(FALSE);
+ if ((activeTool == TOOL_ZOOM) && (zoom < 8000))
+ zoomTo(zoom * 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnRButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if ((!drawing) || (activeTool == TOOL_COLOR))
+ {
+ SetCapture();
+ drawing = TRUE;
+ startPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom,
+ fgColor, bgColor);
+ }
+ else
+ {
+ SendMessage(WM_RBUTTONUP, wParam, lParam);
+ undo();
+ }
+ Invalidate(FALSE);
+ if ((activeTool == TOOL_ZOOM) && (zoom > 125))
+ zoomTo(zoom / 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if (drawing)
+ {
+ ReleaseCapture();
+ drawing = FALSE;
+ endPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam)
* 1000 / zoom, fgColor,
+ bgColor);
+ Invalidate(FALSE);
+ if (activeTool == TOOL_COLOR)
+ {
+ COLORREF tempColor =
+ GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom);
+ if (tempColor != CLR_INVALID)
+ fgColor = tempColor;
+ paletteWindow.Invalidate(FALSE);
+ }
+ SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
+ }
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnRButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if (drawing)
+ {
+ ReleaseCapture();
+ drawing = FALSE;
+ endPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam)
* 1000 / zoom, fgColor,
+ bgColor);
+ Invalidate(FALSE);
+ if (activeTool == TOOL_COLOR)
+ {
+ COLORREF tempColor =
+ GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom);
+ if (tempColor != CLR_INVALID)
+ bgColor = tempColor;
+ paletteWindow.Invalidate(FALSE);
+ }
+ SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
+ }
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ LONG xNow = GET_X_LPARAM(lParam) * 1000 / zoom;
+ LONG yNow = GET_Y_LPARAM(lParam) * 1000 / zoom;
+ if ((!drawing) || (activeTool <= TOOL_AIRBRUSH))
+ {
+ TRACKMOUSEEVENT tme;
+
+ if (activeTool == TOOL_ZOOM)
+ {
+ Invalidate(FALSE);
+ UpdateWindow();
+ drawZoomFrame(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
+ }
+
+ tme.cbSize = sizeof(TRACKMOUSEEVENT);
+ tme.dwFlags = TME_LEAVE;
+ tme.hwndTrack = imageArea.m_hWnd;
+ tme.dwHoverTime = 0;
+ TrackMouseEvent(&tme);
+
+ if (!drawing)
+ {
+ TCHAR coordStr[100];
+ _stprintf(coordStr, _T("%ld, %ld"), xNow, yNow);
+ SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) coordStr);
+ }
+ }
+ if (drawing)
+ {
+ /* values displayed in statusbar */
+ LONG xRel = xNow - start.x;
+ LONG yRel = yNow - start.y;
+ /* freesel, rectsel and text tools always show numbers limited to fit into image
area */
+ if ((activeTool == TOOL_FREESEL) || (activeTool == TOOL_RECTSEL) || (activeTool
== TOOL_TEXT))
+ {
+ if (xRel < 0)
+ xRel = (xNow < 0) ? -start.x : xRel;
+ else if (xNow > imgXRes)
+ xRel = imgXRes-start.x;
+ if (yRel < 0)
+ yRel = (yNow < 0) ? -start.y : yRel;
+ else if (yNow > imgYRes)
+ yRel = imgYRes-start.y;
+ }
+ /* rectsel and shape tools always show non-negative numbers when drawing */
+ if ((activeTool == TOOL_RECTSEL) || (activeTool == TOOL_SHAPE))
+ {
+ if (xRel < 0)
+ xRel = -xRel;
+ if (yRel < 0)
+ yRel = -yRel;
+ }
+ /* while drawing, update cursor coordinates only for tools 3, 7, 8, 9, 14 */
+ switch(activeTool)
+ {
+ case TOOL_RUBBER:
+ case TOOL_PEN:
+ case TOOL_BRUSH:
+ case TOOL_AIRBRUSH:
+ case TOOL_SHAPE:
+ {
+ TCHAR coordStr[100];
+ _stprintf(coordStr, _T("%ld, %ld"), xNow, yNow);
+ SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) coordStr);
+ break;
+ }
+ }
+ if ((wParam & MK_LBUTTON) != 0)
+ {
+ whilePaintingL(hDrawingDC, xNow, yNow, fgColor, bgColor);
+ Invalidate(FALSE);
+ if ((activeTool >= TOOL_TEXT) || (activeTool == TOOL_RECTSEL) ||
(activeTool == TOOL_FREESEL))
+ {
+ TCHAR sizeStr[100];
+ if ((activeTool >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT)
< 0))
+ yRel = xRel;
+ _stprintf(sizeStr, _T("%ld x %ld"), xRel, yRel);
+ SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr);
+ }
+ }
+ if ((wParam & MK_RBUTTON) != 0)
+ {
+ whilePaintingR(hDrawingDC, xNow, yNow, fgColor, bgColor);
+ Invalidate(FALSE);
+ if (activeTool >= TOOL_TEXT)
+ {
+ TCHAR sizeStr[100];
+ if ((activeTool >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT)
< 0))
+ yRel = xRel;
+ _stprintf(sizeStr, _T("%ld x %ld"), xRel, yRel);
+ SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr);
+ }
+ }
+ }
+ return 0;
+}
+
+LRESULT CImgAreaWindow::OnMouseLeave(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) _T(""));
+ if (activeTool == TOOL_ZOOM)
+ imageArea.Invalidate(FALSE);
+ return 0;
+}
Propchange: trunk/reactos/base/applications/mspaint_new/imgarea.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/mspaint_new/imgarea.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/imgarea.h (added)
+++ trunk/reactos/base/applications/mspaint_new/imgarea.h [iso-8859-1] Tue Jul 7 11:02:30
2015
@@ -0,0 +1,41 @@
+/*
+ * PROJECT: PAINT for ReactOS
+ * LICENSE: LGPL
+ * FILE: base/applications/mspaint_new/imgarea.h
+ * PURPOSE: Window procedure of the main window and all children apart from
+ * hPalWin, hToolSettings and hSelection
+ * PROGRAMMERS: Benedikt Freisen
+ */
+
+class CImgAreaWindow : public CWindowImpl<CMainWindow>
+{
+public:
+ DECLARE_WND_CLASS_EX(_T("ImgAreaWindow"), CS_DBLCLKS, COLOR_BTNFACE)
+
+ BEGIN_MSG_MAP(CPaletteWindow)
+ MESSAGE_HANDLER(WM_SIZE, OnSize)
+ MESSAGE_HANDLER(WM_PAINT, OnPaint)
+ MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
+ MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
+ MESSAGE_HANDLER(WM_RBUTTONDOWN, OnRButtonDown)
+ MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
+ MESSAGE_HANDLER(WM_RBUTTONUP, OnRButtonUp)
+ MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
+ MESSAGE_HANDLER(WM_MOUSELEAVE, OnMouseLeave)
+ END_MSG_MAP()
+
+ BOOL drawing;
+
+private:
+ LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnRButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnRButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnMouseLeave(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+ void drawZoomFrame(int mouseX, int mouseY);
+};
Propchange: trunk/reactos/base/applications/mspaint_new/imgarea.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/base/applications/mspaint_new/main.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/main.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/main.cpp [iso-8859-1] Tue Jul 7 11:02:30
2015
@@ -104,14 +104,14 @@
BOOL showMiniature = FALSE;
CMainWindow mainWindow;
-CMainWindow miniature;
+CMiniatureWindow miniature;
CMainWindow toolBoxContainer;
CToolSettingsWindow toolSettingsWindow;
CPaletteWindow paletteWindow;
CScrollboxWindow scrollboxWindow;
CScrollboxWindow scrlClientWindow;
CSelectionWindow selectionWindow;
-CMainWindow imageArea;
+CImgAreaWindow imageArea;
CSizeboxWindow sizeboxLeftTop;
CSizeboxWindow sizeboxCenterTop;
CSizeboxWindow sizeboxRightTop;
Added: trunk/reactos/base/applications/mspaint_new/miniature.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/miniature.cpp (added)
+++ trunk/reactos/base/applications/mspaint_new/miniature.cpp [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -0,0 +1,39 @@
+/*
+ * PROJECT: PAINT for ReactOS
+ * LICENSE: LGPL
+ * FILE: base/applications/mspaint_new/miniature.cpp
+ * PURPOSE: Window procedure of the main window and all children apart from
+ * hPalWin, hToolSettings and hSelection
+ * PROGRAMMERS: Benedikt Freisen
+ */
+
+/* INCLUDES *********************************************************/
+
+#include "precomp.h"
+
+/* FUNCTIONS ********************************************************/
+
+LRESULT CMiniatureWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ miniature.ShowWindow(SW_HIDE);
+ showMiniature = FALSE;
+ return 0;
+}
+
+LRESULT CMiniatureWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ DefWindowProc(WM_PAINT, wParam, lParam);
+ RECT mclient;
+ HDC hdc;
+ miniature.GetClientRect(&mclient);
+ hdc = miniature.GetDC();
+ StretchBlt(hdc, 0, 0, mclient.right, mclient.bottom, hDrawingDC, 0, 0, imgXRes,
imgYRes, SRCCOPY);
+ miniature.ReleaseDC(hdc);
+ return 0;
+}
+
+LRESULT CMiniatureWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ SetCursor(LoadCursor(NULL, IDC_ARROW));
+ return 0;
+}
Propchange: trunk/reactos/base/applications/mspaint_new/miniature.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/mspaint_new/miniature.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/miniature.h (added)
+++ trunk/reactos/base/applications/mspaint_new/miniature.h [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -0,0 +1,24 @@
+/*
+ * PROJECT: PAINT for ReactOS
+ * LICENSE: LGPL
+ * FILE: base/applications/mspaint_new/miniature.h
+ * PURPOSE: Window procedure of the main window and all children apart from
+ * hPalWin, hToolSettings and hSelection
+ * PROGRAMMERS: Benedikt Freisen
+ */
+
+class CMiniatureWindow : public CWindowImpl<CMiniatureWindow>
+{
+public:
+ DECLARE_WND_CLASS_EX(_T("MiniatureWindow"), CS_DBLCLKS, COLOR_BTNFACE)
+
+ BEGIN_MSG_MAP(CPaletteWindow)
+ MESSAGE_HANDLER(WM_CLOSE, OnClose)
+ MESSAGE_HANDLER(WM_PAINT, OnPaint)
+ MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
+ END_MSG_MAP()
+
+ LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+};
Propchange: trunk/reactos/base/applications/mspaint_new/miniature.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/base/applications/mspaint_new/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/precomp.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/precomp.h [iso-8859-1] Tue Jul 7 11:02:30
2015
@@ -23,6 +23,8 @@
#include "dib.h"
#include "globalvar.h"
#include "history.h"
+#include "imgarea.h"
+#include "miniature.h"
#include "mouse.h"
#include "palette.h"
#include "scrollbox.h"
Modified: trunk/reactos/base/applications/mspaint_new/winproc.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/winproc.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/winproc.cpp [iso-8859-1] Tue Jul 7
11:02:30 2015
@@ -16,14 +16,13 @@
/* FUNCTIONS ********************************************************/
-void
-selectTool(int tool)
+void CMainWindow::selectTool(int tool)
{
selectionWindow.ShowWindow(SW_HIDE);
activeTool = tool;
pointSP = 0; // resets the point-buffer of the polygon and bezier
functions
toolSettingsWindow.Invalidate(TRUE);
- ShowWindow(hTrackbarZoom, (tool == TOOL_ZOOM) ? SW_SHOW : SW_HIDE);
+ ::ShowWindow(hTrackbarZoom, (tool == TOOL_ZOOM) ? SW_SHOW : SW_HIDE);
textEditWindow.ShowWindow((tool == TOOL_TEXT) ? SW_SHOW : SW_HIDE);
}
@@ -73,39 +72,7 @@
SendMessage(hTrackbarZoom, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) tbPos);
}
-void
-drawZoomFrame(int mouseX, int mouseY)
-{
- HDC hdc;
- HPEN oldPen;
- HBRUSH oldBrush;
- LOGBRUSH logbrush;
- int rop;
-
- RECT clientRectScrollbox;
- RECT clientRectImageArea;
- int x, y, w, h;
- scrollboxWindow.GetClientRect(&clientRectScrollbox);
- imageArea.GetClientRect(&clientRectImageArea);
- w = clientRectImageArea.right * clientRectScrollbox.right /
(clientRectImageArea.right * 2);
- h = clientRectImageArea.bottom * clientRectScrollbox.bottom /
(clientRectImageArea.bottom * 2);
- x = max(0, min(clientRectImageArea.right - w, mouseX - w / 2));
- y = max(0, min(clientRectImageArea.bottom - h, mouseY - h / 2));
-
- hdc = imageArea.GetDC();
- oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 0, 0));
- logbrush.lbStyle = BS_HOLLOW;
- oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
- rop = SetROP2(hdc, R2_NOT);
- Rectangle(hdc, x, y, x + w, y + h);
- SetROP2(hdc, rop);
- DeleteObject(SelectObject(hdc, oldBrush));
- DeleteObject(SelectObject(hdc, oldPen));
- imageArea.ReleaseDC(hdc);
-}
-
-void
-alignChildrenToMainWindow()
+void CMainWindow::alignChildrenToMainWindow()
{
int x, y, w, h;
RECT clientRect;
@@ -132,12 +99,11 @@
h = clientRect.bottom - 3;
}
- scrollboxWindow.MoveWindow(x, y, w, IsWindowVisible(hStatusBar) ? h - 23 : h, TRUE);
+ scrollboxWindow.MoveWindow(x, y, w, ::IsWindowVisible(hStatusBar) ? h - 23 : h,
TRUE);
paletteWindow.MoveWindow(x, 9, 255, 32, TRUE);
}
-void
-saveImage(BOOL overwrite)
+void CMainWindow::saveImage(BOOL overwrite)
{
if (isAFile && overwrite)
{
@@ -161,8 +127,7 @@
}
}
-void
-UpdateApplicationProperties(HBITMAP bitmap, LPTSTR newfilename, LPTSTR newfilepathname)
+void CMainWindow::UpdateApplicationProperties(HBITMAP bitmap, LPTSTR newfilename, LPTSTR
newfilepathname)
{
TCHAR tempstr[1000];
TCHAR resstr[100];
@@ -172,13 +137,12 @@
CopyMemory(filepathname, newfilepathname, sizeof(filepathname));
LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr));
_stprintf(tempstr, resstr, filename);
- mainWindow.SetWindowText(tempstr);
+ SetWindowText(tempstr);
clearHistory();
isAFile = TRUE;
}
-void
-InsertSelectionFromHBITMAP(HBITMAP bitmap, HWND window)
+void CMainWindow::InsertSelectionFromHBITMAP(HBITMAP bitmap, HWND window)
{
HDC hTempDC;
HBITMAP hTempMask;
@@ -209,8 +173,6 @@
ForceRefreshSelectionContents();
}
-BOOL drawing;
-
LRESULT CMainWindow::OnDropFiles(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
HDROP drophandle;
@@ -247,12 +209,6 @@
LRESULT CMainWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
- if (m_hWnd == miniature.m_hWnd)
- {
- miniature.ShowWindow(SW_HIDE);
- showMiniature = FALSE;
- return 0;
- }
if (!imageSaved)
{
TCHAR programname[20];
@@ -342,37 +298,6 @@
alignChildrenToMainWindow();
Invalidate(TRUE);
}
- if (m_hWnd == imageArea.m_hWnd)
- {
- sizeboxLeftTop.MoveWindow(
- 0,
- 0, 3, 3, TRUE);
- sizeboxCenterTop.MoveWindow(
- imgXRes * zoom / 2000 + 3 * 3 / 4,
- 0, 3, 3, TRUE);
- sizeboxRightTop.MoveWindow(
- imgXRes * zoom / 1000 + 3,
- 0, 3, 3, TRUE);
- sizeboxLeftCenter.MoveWindow(
- 0,
- imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE);
- sizeboxRightCenter.MoveWindow(
- imgXRes * zoom / 1000 + 3,
- imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE);
- sizeboxLeftBottom.MoveWindow(
- 0,
- imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
- sizeboxCenterBottom.MoveWindow(
- imgXRes * zoom / 2000 + 3 * 3 / 4,
- imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
- sizeboxRightBottom.MoveWindow(
- imgXRes * zoom / 1000 + 3,
- imgYRes * zoom / 1000 + 3, 3, 3, TRUE);
- }
- if (m_hWnd == imageArea.m_hWnd)
- {
- UpdateScrollbox();
- }
return 0;
}
@@ -387,163 +312,9 @@
return 0;
}
-LRESULT CMainWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- DefWindowProc(WM_PAINT, wParam, lParam);
- if (m_hWnd == imageArea.m_hWnd)
- {
- HDC hdc = imageArea.GetDC();
- StretchBlt(hdc, 0, 0, imgXRes * zoom / 1000, imgYRes * zoom / 1000, hDrawingDC,
0, 0, imgXRes,
- imgYRes, SRCCOPY);
- if (showGrid && (zoom >= 4000))
- {
- HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, 0x00a0a0a0));
- int counter;
- for(counter = 0; counter <= imgYRes; counter++)
- {
- MoveToEx(hdc, 0, counter * zoom / 1000, NULL);
- LineTo(hdc, imgXRes * zoom / 1000, counter * zoom / 1000);
- }
- for(counter = 0; counter <= imgXRes; counter++)
- {
- MoveToEx(hdc, counter * zoom / 1000, 0, NULL);
- LineTo(hdc, counter * zoom / 1000, imgYRes * zoom / 1000);
- }
- DeleteObject(SelectObject(hdc, oldPen));
- }
- imageArea.ReleaseDC(hdc);
- selectionWindow.Invalidate(FALSE);
- miniature.Invalidate(FALSE);
- }
- else if (m_hWnd == miniature.m_hWnd)
- {
- RECT mclient;
- HDC hdc;
- miniature.GetClientRect(&mclient);
- hdc = miniature.GetDC();
- StretchBlt(hdc, 0, 0, mclient.right, mclient.bottom, hDrawingDC, 0, 0, imgXRes,
imgYRes, SRCCOPY);
- miniature.ReleaseDC(hdc);
- }
- return 0;
-}
-
LRESULT CMainWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
- if (m_hWnd == imageArea.m_hWnd)
- {
- switch (activeTool)
- {
- case TOOL_FILL:
- SetCursor(hCurFill);
- break;
- case TOOL_COLOR:
- SetCursor(hCurColor);
- break;
- case TOOL_ZOOM:
- SetCursor(hCurZoom);
- break;
- case TOOL_PEN:
- SetCursor(hCurPen);
- break;
- case TOOL_AIRBRUSH:
- SetCursor(hCurAirbrush);
- break;
- default:
- SetCursor(LoadCursor(NULL, IDC_CROSS));
- }
- }
- else
- SetCursor(LoadCursor(NULL, IDC_ARROW));
- return 0;
-}
-
-LRESULT CMainWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- if (m_hWnd == imageArea.m_hWnd)
- {
- if ((!drawing) || (activeTool == TOOL_COLOR))
- {
- SetCapture();
- drawing = TRUE;
- startPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom,
- fgColor, bgColor);
- }
- else
- {
- SendMessage(WM_LBUTTONUP, wParam, lParam);
- undo();
- }
- Invalidate(FALSE);
- if ((activeTool == TOOL_ZOOM) && (zoom < 8000))
- zoomTo(zoom * 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
- }
- return 0;
-}
-
-LRESULT CMainWindow::OnRButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- if (m_hWnd == imageArea.m_hWnd)
- {
- if ((!drawing) || (activeTool == TOOL_COLOR))
- {
- SetCapture();
- drawing = TRUE;
- startPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom,
- fgColor, bgColor);
- }
- else
- {
- SendMessage(WM_RBUTTONUP, wParam, lParam);
- undo();
- }
- Invalidate(FALSE);
- if ((activeTool == TOOL_ZOOM) && (zoom > 125))
- zoomTo(zoom / 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
- }
- return 0;
-}
-
-LRESULT CMainWindow::OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- if ((m_hWnd == imageArea.m_hWnd) && drawing)
- {
- ReleaseCapture();
- drawing = FALSE;
- endPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam)
* 1000 / zoom, fgColor,
- bgColor);
- Invalidate(FALSE);
- if (activeTool == TOOL_COLOR)
- {
- COLORREF tempColor =
- GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom);
- if (tempColor != CLR_INVALID)
- fgColor = tempColor;
- paletteWindow.Invalidate(FALSE);
- }
- SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
- }
- return 0;
-}
-
-LRESULT CMainWindow::OnRButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- if ((m_hWnd == imageArea.m_hWnd) && drawing)
- {
- ReleaseCapture();
- drawing = FALSE;
- endPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam)
* 1000 / zoom, fgColor,
- bgColor);
- Invalidate(FALSE);
- if (activeTool == TOOL_COLOR)
- {
- COLORREF tempColor =
- GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom,
GET_Y_LPARAM(lParam) * 1000 / zoom);
- if (tempColor != CLR_INVALID)
- bgColor = tempColor;
- paletteWindow.Invalidate(FALSE);
- }
- SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
- }
+ SetCursor(LoadCursor(NULL, IDC_ARROW));
return 0;
}
@@ -551,7 +322,7 @@
{
if (wParam == VK_ESCAPE)
{
- if (!drawing)
+ if (!imageArea.drawing)
{
/* Deselect */
if ((activeTool == TOOL_RECTSEL) || (activeTool == TOOL_FREESEL))
@@ -564,115 +335,6 @@
}
/* FIXME: also cancel current drawing underway */
}
- return 0;
-}
-
-LRESULT CMainWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- if (m_hWnd == imageArea.m_hWnd)
- {
- LONG xNow = GET_X_LPARAM(lParam) * 1000 / zoom;
- LONG yNow = GET_Y_LPARAM(lParam) * 1000 / zoom;
- if ((!drawing) || (activeTool <= TOOL_AIRBRUSH))
- {
- TRACKMOUSEEVENT tme;
-
- if (activeTool == TOOL_ZOOM)
- {
- Invalidate(FALSE);
- UpdateWindow();
- drawZoomFrame(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
- }
-
- tme.cbSize = sizeof(TRACKMOUSEEVENT);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = imageArea.m_hWnd;
- tme.dwHoverTime = 0;
- TrackMouseEvent(&tme);
-
- if (!drawing)
- {
- TCHAR coordStr[100];
- _stprintf(coordStr, _T("%ld, %ld"), xNow, yNow);
- SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) coordStr);
- }
- }
- if (drawing)
- {
- /* values displayed in statusbar */
- LONG xRel = xNow - start.x;
- LONG yRel = yNow - start.y;
- /* freesel, rectsel and text tools always show numbers limited to fit into
image area */
- if ((activeTool == TOOL_FREESEL) || (activeTool == TOOL_RECTSEL) ||
(activeTool == TOOL_TEXT))
- {
- if (xRel < 0)
- xRel = (xNow < 0) ? -start.x : xRel;
- else if (xNow > imgXRes)
- xRel = imgXRes-start.x;
- if (yRel < 0)
- yRel = (yNow < 0) ? -start.y : yRel;
- else if (yNow > imgYRes)
- yRel = imgYRes-start.y;
- }
- /* rectsel and shape tools always show non-negative numbers when drawing */
- if ((activeTool == TOOL_RECTSEL) || (activeTool == TOOL_SHAPE))
- {
- if (xRel < 0)
- xRel = -xRel;
- if (yRel < 0)
- yRel = -yRel;
- }
- /* while drawing, update cursor coordinates only for tools 3, 7, 8, 9, 14 */
- switch(activeTool)
- {
- case TOOL_RUBBER:
- case TOOL_PEN:
- case TOOL_BRUSH:
- case TOOL_AIRBRUSH:
- case TOOL_SHAPE:
- {
- TCHAR coordStr[100];
- _stprintf(coordStr, _T("%ld, %ld"), xNow, yNow);
- SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) coordStr);
- break;
- }
- }
- if ((wParam & MK_LBUTTON) != 0)
- {
- whilePaintingL(hDrawingDC, xNow, yNow, fgColor, bgColor);
- Invalidate(FALSE);
- if ((activeTool >= TOOL_TEXT) || (activeTool == TOOL_RECTSEL) ||
(activeTool == TOOL_FREESEL))
- {
- TCHAR sizeStr[100];
- if ((activeTool >= TOOL_LINE) &&
(GetAsyncKeyState(VK_SHIFT) < 0))
- yRel = xRel;
- _stprintf(sizeStr, _T("%ld x %ld"), xRel, yRel);
- SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr);
- }
- }
- if ((wParam & MK_RBUTTON) != 0)
- {
- whilePaintingR(hDrawingDC, xNow, yNow, fgColor, bgColor);
- Invalidate(FALSE);
- if (activeTool >= TOOL_TEXT)
- {
- TCHAR sizeStr[100];
- if ((activeTool >= TOOL_LINE) &&
(GetAsyncKeyState(VK_SHIFT) < 0))
- yRel = xRel;
- _stprintf(sizeStr, _T("%ld x %ld"), xRel, yRel);
- SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr);
- }
- }
- }
- }
- return 0;
-}
-
-LRESULT CMainWindow::OnMouseLeave(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
-{
- SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) _T(""));
- if (activeTool == TOOL_ZOOM)
- imageArea.Invalidate(FALSE);
return 0;
}
Modified: trunk/reactos/base/applications/mspaint_new/winproc.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint_…
==============================================================================
--- trunk/reactos/base/applications/mspaint_new/winproc.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint_new/winproc.h [iso-8859-1] Tue Jul 7 11:02:30
2015
@@ -20,15 +20,8 @@
MESSAGE_HANDLER(WM_INITMENUPOPUP, OnInitMenuPopup)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
- MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
- MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
- MESSAGE_HANDLER(WM_RBUTTONDOWN, OnRButtonDown)
- MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
- MESSAGE_HANDLER(WM_RBUTTONUP, OnRButtonUp)
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
- MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
- MESSAGE_HANDLER(WM_MOUSELEAVE, OnMouseLeave)
MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysColorChange)
MESSAGE_HANDLER(WM_COMMAND, OnCommand)
END_MSG_MAP()
@@ -40,15 +33,14 @@
LRESULT OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
- LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnRButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnRButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnMouseLeave(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSysColorChange(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+ void selectTool(int tool);
+ void alignChildrenToMainWindow();
+ void saveImage(BOOL overwrite);
+ void UpdateApplicationProperties(HBITMAP bitmap, LPTSTR newfilename, LPTSTR
newfilepathname);
+ void InsertSelectionFromHBITMAP(HBITMAP bitmap, HWND window);
};