ReactOS 0.4.17-dev-243-g1369312
canvas.h
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4 * PURPOSE: Providing the canvas window class
5 * COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
6 * Copyright 2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
7 */
8
9#pragma once
10
11enum BrushStyle : int;
12
14{
15public:
17 {
18 if (m_hCursor)
20 }
21
22 void SetStyle(BrushStyle style, INT radius, COLORREF color, BOOL is_rubber);
23
24 void SetCursor()
25 {
26 if (m_hCursor)
28 }
29
30 operator HCURSOR() const { return m_hCursor; }
31
32protected:
38
39 static HCURSOR CreateStyledCursor(BrushStyle style, INT radius, COLORREF color, BOOL is_rubber);
40};
41
42class CCanvasWindow : public CWindowImpl<CCanvasWindow>
43{
44public:
47
71
73 virtual ~CCanvasWindow();
74
76
77 VOID OnEndDraw(BOOL bCancel);
79 VOID updateScrollPos(INT x = 0, INT y = 0);
80
86 VOID getNewZoomRect(CRect& rcView, INT newZoom, CPoint ptTarget);
87 VOID zoomTo(INT newZoom, LONG left = 0, LONG top = 0);
88
93 POINT m_ptOrig; // The origin of drag start
94 CRect m_rcResizing; // Resizing rectagle
95
98 BOOL DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint);
100
101 LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
102 LRESULT OnHScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
103 LRESULT OnVScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
105 LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
107 LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
114
119};
static HDC hDC
Definition: 3dtext.c:33
Arabic default style
Definition: afstyles.h:94
#define WM_PALETTEMODELCOLORCHANGED
Definition: precomp.h:52
HITTEST
Definition: precomp.h:55
VOID OnHVScroll(WPARAM wParam, INT fnBar)
Definition: canvas.cpp:397
BOOL m_drawing
Definition: canvas.h:75
VOID OnEndDraw(BOOL bCancel)
Definition: canvas.cpp:868
LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:838
LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:803
CStyledCursor m_hRubberCursor
Definition: canvas.h:92
CStyledCursor m_hBrushCursor
Definition: canvas.h:91
LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:832
LRESULT OnVScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:433
LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:718
HITTEST m_hitCanvasSizeBox
Definition: canvas.h:90
LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:882
VOID ImageToCanvas(POINT &pt)
Definition: canvas.cpp:167
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:389
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:843
LRESULT OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:818
VOID CanvasToImage(POINT &pt)
Definition: canvas.cpp:180
VOID updateScrollPos(INT x=0, INT y=0)
Definition: canvas.cpp:383
CRect m_rcResizing
Definition: canvas.h:94
UINT m_nMouseDownMsg
Definition: canvas.h:115
DECLARE_WND_CLASS_EX(L"ReactOSPaintCanvas", CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW, COLOR_APPWORKSPACE) CCanvasWindow()
HITTEST CanvasHitTest(POINT pt)
Definition: canvas.cpp:198
LRESULT OnButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:652
LRESULT OnHScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:427
LRESULT OnButtonDblClk(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:511
BOOL DoDraw(HDC hDC, RECT &rcClient, RECT &rcPaint)
Definition: canvas.cpp:249
VOID GetImageRect(RECT &rc)
Definition: canvas.cpp:193
POINT m_ptOrig
Definition: canvas.h:93
VOID updateScrollRange()
Definition: canvas.cpp:352
LRESULT OnButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:439
LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:526
VOID getNewZoomRect(CRect &rcView, INT newZoom, CPoint ptTarget)
Definition: canvas.cpp:206
RECT GetBaseRect()
Definition: canvas.cpp:158
LRESULT OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:875
VOID zoomTo(INT newZoom, LONG left=0, LONG top=0)
Definition: canvas.cpp:234
LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: canvas.cpp:827
~CStyledCursor()
Definition: canvas.h:16
COLORREF m_color
Definition: canvas.h:36
HCURSOR m_hCursor
Definition: canvas.h:33
static HCURSOR CreateStyledCursor(BrushStyle style, INT radius, COLORREF color, BOOL is_rubber)
Definition: canvas.cpp:16
void SetCursor()
Definition: canvas.h:24
BOOL m_is_rubber
Definition: canvas.h:37
BrushStyle m_style
Definition: canvas.h:34
void SetStyle(BrushStyle style, INT radius, COLORREF color, BOOL is_rubber)
Definition: canvas.cpp:128
INT m_radius
Definition: canvas.h:35
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define pt(x, y)
Definition: drawing.c:79
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint color
Definition: glext.h:6243
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLint left
Definition: glext.h:7726
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1926
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1898
#define END_MSG_MAP()
Definition: atlwin.h:1917
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
static HDC
Definition: imagelist.c:88
static BOOL protected
Definition: protectdata.c:33
unsigned int UINT
Definition: ndis.h:50
long LONG
Definition: pedump.c:60
BrushStyle
Definition: toolsmodel.h:32
#define WM_MOUSEWHEEL
Definition: treelist.c:96
int32_t INT
Definition: typedefs.h:58
DWORD COLORREF
Definition: windef.h:100
HICON HCURSOR
Definition: windef.h:99
#define CLR_INVALID
Definition: wingdi.h:883
#define WM_PAINT
Definition: winuser.h:1648
#define WM_ERASEBKGND
Definition: winuser.h:1653
#define CS_VREDRAW
Definition: winuser.h:666
#define WM_HSCROLL
Definition: winuser.h:1771
BOOL WINAPI DestroyCursor(_In_ HCURSOR)
Definition: cursoricon.c:3083
#define WM_CAPTURECHANGED
Definition: winuser.h:1836
#define WM_VSCROLL
Definition: winuser.h:1772
#define WM_SIZE
Definition: winuser.h:1639
#define WM_CANCELMODE
Definition: winuser.h:1663
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1806
#define CS_HREDRAW
Definition: winuser.h:661
#define WM_RBUTTONUP
Definition: winuser.h:1808
#define WM_RBUTTONDBLCLK
Definition: winuser.h:1809
#define WM_MOUSEMOVE
Definition: winuser.h:1803
#define CS_DBLCLKS
Definition: winuser.h:659
#define WM_LBUTTONDOWN
Definition: winuser.h:1804
#define WM_RBUTTONDOWN
Definition: winuser.h:1807
#define COLOR_APPWORKSPACE
Definition: winuser.h:936
#define WM_LBUTTONUP
Definition: winuser.h:1805
#define WM_SETCURSOR
Definition: winuser.h:1664
#define WM_KEYDOWN
Definition: winuser.h:1743
#define WM_MBUTTONUP
Definition: winuser.h:1811
#define WM_CTLCOLOREDIT
Definition: winuser.h:1795
#define WM_MBUTTONDOWN
Definition: winuser.h:1810