From 6a06cb8af80879e6b1175019247e879f56f5f5fd Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Sat, 25 Oct 2008 11:03:06 +0900 Subject: [PATCH] [8/19] paint: Add TOOL_FILL --- programs/paint/canvas.c | 33 +++++++++++++++++++++++++++++++++ programs/paint/flood.cur | Bin 0 -> 326 bytes programs/paint/main.c | 3 ++- programs/paint/main.h | 1 + programs/paint/rsrc.rc | 2 ++ 5 files changed, 38 insertions(+), 1 deletions(-) create mode 100644 programs/paint/flood.cur diff --git a/programs/paint/canvas.c b/programs/paint/canvas.c index 64c7733..2936be8 100644 --- a/programs/paint/canvas.c +++ b/programs/paint/canvas.c @@ -562,6 +562,32 @@ VOID Canvas_OnButtonDown(HWND hWnd, INT x, INT y, BOOL fRight) } break; + case TOOL_FILL: + SetCursor(Globals.hcurFill); + CanvasToImage(&pt); + PrepareForUndo(); + hDC = GetDC(hWnd); + hMemDC = CreateCompatibleDC(hDC); + if (hMemDC != NULL) + { + hbr = CreateSolidBrush(fRight ? Globals.rgbBack : + Globals.rgbFore); + hbmOld = SelectObject(hMemDC, Globals.hbmImage); + hbrOld = SelectObject(hMemDC, hbr); + ExtFloodFill(hMemDC, pt.x, pt.y, + GetPixel(hMemDC, pt.x, pt.y), + FLOODFILLSURFACE); + SelectObject(hMemDC, hbrOld); + SelectObject(hMemDC, hbmOld); + DeleteObject(hbr); + DeleteDC(hMemDC); + Globals.fModified = TRUE; + } + ReleaseDC(hWnd, hDC); + InvalidateRect(hWnd, NULL, FALSE); + UpdateWindow(hWnd); + break; + case TOOL_PENCIL: SetCursor(Globals.hcurPencil); Globals.mode = MODE_CANVAS; @@ -1013,6 +1039,13 @@ VOID Canvas_OnMouseMove(HWND hWnd, INT x, INT y, BOOL fLeftDown, BOOL fRightDown UpdateWindow(hWnd); break; + case TOOL_FILL: + SetCursor(Globals.hcurFill); + CanvasToImage(&pt); + ShowPos(pt); + ShowNoSize(); + break; + case TOOL_PENCIL: SetCursor(Globals.hcurPencil); CanvasToImage(&pt); diff --git a/programs/paint/flood.cur b/programs/paint/flood.cur new file mode 100644 index 0000000000000000000000000000000000000000..cf7783ae98def00424c053e76ca282801ecd44f5 GIT binary patch literal 326 zcmaivFAl_cGAuvoL5%}#m++u@-WD@}}{ zUfZOF9)T=_0V8Gs_b_$3MBxl>Z+ye2_<2dc;$OC`2&;my-eGl%Z5G&mj-AKYHpLDJ zcB~1P7H%1&4I~v9o$wpF@hqiBF5M^6bts+sQe#pT{Da7tM=kc^OzyL#@2C?mQ0al> literal 0 HcmV?d00001 diff --git a/programs/paint/main.c b/programs/paint/main.c index 0f0dcc8..4f58dc9 100644 --- a/programs/paint/main.c +++ b/programs/paint/main.c @@ -289,6 +289,7 @@ static VOID PAINT_InitData(VOID) Globals.hcurBDiagonal = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(3)); Globals.hcurFDiagonal = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(4)); Globals.hcurPencil = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(5)); + Globals.hcurFill = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(6)); Globals.hcurZoom = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(9)); Globals.hcurCross2 = LoadCursor(Globals.hInstance, MAKEINTRESOURCE(12)); @@ -705,7 +706,6 @@ void ToolBox_OnLButton(HWND hWnd, int x, int y, BOOL fDown) case TOOL_TEXT: case TOOL_BRUSH: case TOOL_AIRBRUSH: - case TOOL_FILL: NotSupportedYet(); break; @@ -947,6 +947,7 @@ VOID PAINT_OnDestroy(HWND hWnd) DestroyCursor(Globals.hcurHorizontal); DestroyCursor(Globals.hcurVertical); DestroyCursor(Globals.hcurPencil); + DestroyCursor(Globals.hcurFill); DestroyCursor(Globals.hcurZoom); DestroyCursor(Globals.hcurCross2); KillTimer(Globals.hCanvasWnd, Globals.idTimer); diff --git a/programs/paint/main.h b/programs/paint/main.h index 4e1a537..59afb8f 100644 --- a/programs/paint/main.h +++ b/programs/paint/main.h @@ -100,6 +100,7 @@ typedef struct HCURSOR hcurHorizontal; HCURSOR hcurVertical; HCURSOR hcurPencil; + HCURSOR hcurFill; HCURSOR hcurZoom; HCURSOR hcurCross2; diff --git a/programs/paint/rsrc.rc b/programs/paint/rsrc.rc index 87e10ec..b819049 100644 --- a/programs/paint/rsrc.rc +++ b/programs/paint/rsrc.rc @@ -80,6 +80,8 @@ IDB_FILL BITMAP "fill.bmp" 4 CURSOR "fdiagon.cur" /* @makedep: pencil.cur */ 5 CURSOR "pencil.cur" +/* @makedep: flood.cur */ +6 CURSOR "flood.cur" /* @makedep: zoom.cur */ 9 CURSOR "zoom.cur" /* @makedep: cross2.cur */ -- 1.6.0.2