From 998564ee3c200c9def045973e38b5d722479d3c3 Mon Sep 17 00:00:00 2001 From: Benedikt Freisen Date: Mon, 17 Aug 2015 14:47:51 +0000 Subject: [PATCH] [MSPAINT] May thou rest in peace! (...or rather live on in MSPAINT_NEW's commit history) [MSPAINT_NEW] I hereby pronounce thee MSPAINT! svn path=/trunk/; revision=68741 --- reactos/base/applications/CMakeLists.txt | 1 - .../base/applications/mspaint/CMakeLists.txt | 25 - .../base/applications/mspaint/definitions.h | 222 ---- reactos/base/applications/mspaint/dialogs.c | 270 ----- reactos/base/applications/mspaint/dialogs.h | 13 - reactos/base/applications/mspaint/dib.c | 175 --- reactos/base/applications/mspaint/dib.h | 20 - reactos/base/applications/mspaint/drawing.c | 295 ----- reactos/base/applications/mspaint/drawing.h | 35 - reactos/base/applications/mspaint/globalvar.h | 124 -- .../base/applications/mspaint/help/Paint.chm | Bin 52858 -> 0 bytes .../base/applications/mspaint/help/Paint.hhp | 15 - .../mspaint/help/Table of Contents.hhc | 24 - .../applications/mspaint/help/airbrush.png | Bin 556 -> 0 bytes .../applications/mspaint/help/appwindow.png | Bin 17648 -> 0 bytes .../base/applications/mspaint/help/bezier.png | Bin 283 -> 0 bytes .../base/applications/mspaint/help/brush.png | Bin 567 -> 0 bytes .../base/applications/mspaint/help/color.png | Bin 497 -> 0 bytes .../applications/mspaint/help/ellipse.png | Bin 561 -> 0 bytes .../base/applications/mspaint/help/fill.png | Bin 651 -> 0 bytes .../applications/mspaint/help/freesel.png | Bin 401 -> 0 bytes .../base/applications/mspaint/help/line.png | Bin 181 -> 0 bytes .../applications/mspaint/help/palette.png | Bin 1646 -> 0 bytes .../base/applications/mspaint/help/pen.png | Bin 591 -> 0 bytes .../base/applications/mspaint/help/rect.png | Bin 370 -> 0 bytes .../applications/mspaint/help/rectsel.png | Bin 377 -> 0 bytes .../base/applications/mspaint/help/rrect.png | Bin 414 -> 0 bytes .../base/applications/mspaint/help/rubber.png | Bin 569 -> 0 bytes .../applications/mspaint/help/settings.html | 46 - .../applications/mspaint/help/settings1.png | Bin 3284 -> 0 bytes .../applications/mspaint/help/settings2.png | Bin 850 -> 0 bytes .../applications/mspaint/help/settings3.png | Bin 967 -> 0 bytes .../applications/mspaint/help/settings4.png | Bin 1219 -> 0 bytes .../applications/mspaint/help/settings5.png | Bin 834 -> 0 bytes .../applications/mspaint/help/settings6.png | Bin 864 -> 0 bytes .../base/applications/mspaint/help/shape.png | Bin 455 -> 0 bytes .../base/applications/mspaint/help/text.png | Bin 621 -> 0 bytes .../applications/mspaint/help/toolbox.png | Bin 6512 -> 0 bytes .../base/applications/mspaint/help/tools.html | 104 -- .../base/applications/mspaint/help/usage.html | 38 - .../base/applications/mspaint/help/zoom.png | Bin 674 -> 0 bytes reactos/base/applications/mspaint/history.c | 132 -- reactos/base/applications/mspaint/history.h | 21 - .../mspaint/icons/airbrush_cur.ico | Bin 2238 -> 0 bytes .../applications/mspaint/icons/color_cur.ico | Bin 2238 -> 0 bytes .../applications/mspaint/icons/fill_cur.ico | Bin 2238 -> 0 bytes .../applications/mspaint/icons/horzskew.ico | Bin 766 -> 0 bytes .../mspaint/icons/horzstretch.ico | Bin 766 -> 0 bytes .../applications/mspaint/icons/iconbar.bmp | Bin 12342 -> 0 bytes .../mspaint/icons/nontransparent.ico | Bin 2526 -> 0 bytes .../base/applications/mspaint/icons/paint.ico | Bin 18718 -> 0 bytes .../base/applications/mspaint/icons/paint.svg | 611 ---------- .../applications/mspaint/icons/pen_cur.ico | Bin 2238 -> 0 bytes .../mspaint/icons/transparency.xcf | Bin 5975 -> 0 bytes .../mspaint/icons/transparent.ico | Bin 2526 -> 0 bytes .../applications/mspaint/icons/vertskew.ico | Bin 766 -> 0 bytes .../mspaint/icons/vertstretch.ico | Bin 766 -> 0 bytes .../applications/mspaint/icons/zoom_cur.ico | Bin 2238 -> 0 bytes .../base/applications/mspaint/lang/bg-BG.rc | 217 ---- .../base/applications/mspaint/lang/cs-CZ.rc | 217 ---- .../base/applications/mspaint/lang/de-DE.rc | 217 ---- .../base/applications/mspaint/lang/en-GB.rc | 217 ---- .../base/applications/mspaint/lang/en-US.rc | 217 ---- .../base/applications/mspaint/lang/es-ES.rc | 218 ---- .../base/applications/mspaint/lang/eu-ES.rc | 209 ---- .../base/applications/mspaint/lang/fr-FR.rc | 209 ---- .../base/applications/mspaint/lang/he-IL.rc | 209 ---- .../base/applications/mspaint/lang/hu-HU.rc | 209 ---- .../base/applications/mspaint/lang/it-IT.rc | 217 ---- .../base/applications/mspaint/lang/ja-JP.rc | 217 ---- .../base/applications/mspaint/lang/nl-NL.rc | 217 ---- .../base/applications/mspaint/lang/no-NO.rc | 217 ---- .../base/applications/mspaint/lang/pl-PL.rc | 218 ---- .../base/applications/mspaint/lang/pt-BR.rc | 217 ---- .../base/applications/mspaint/lang/pt-PT.rc | 217 ---- .../base/applications/mspaint/lang/ro-RO.rc | 217 ---- .../base/applications/mspaint/lang/ru-RU.rc | 209 ---- .../base/applications/mspaint/lang/sk-SK.rc | 218 ---- .../base/applications/mspaint/lang/sq-AL.rc | 217 ---- .../base/applications/mspaint/lang/sv-SE.rc | 209 ---- .../base/applications/mspaint/lang/tr-TR.rc | 217 ---- .../base/applications/mspaint/lang/uk-UA.rc | 217 ---- .../base/applications/mspaint/lang/zh-CN.rc | 217 ---- .../base/applications/mspaint/lang/zh-TW.rc | 217 ---- reactos/base/applications/mspaint/main.c | 460 ------- reactos/base/applications/mspaint/mouse.c | 592 --------- reactos/base/applications/mspaint/mouse.h | 21 - .../mspaint/mspaint.exe.amd64.manifest | 23 - .../applications/mspaint/mspaint.exe.manifest | 23 - reactos/base/applications/mspaint/palette.c | 134 --- reactos/base/applications/mspaint/palette.h | 11 - reactos/base/applications/mspaint/precomp.h | 26 - reactos/base/applications/mspaint/registry.c | 44 - reactos/base/applications/mspaint/registry.h | 9 - reactos/base/applications/mspaint/rsrc.rc | 124 -- reactos/base/applications/mspaint/scrollbox.c | 142 --- reactos/base/applications/mspaint/scrollbox.h | 13 - reactos/base/applications/mspaint/selection.c | 330 ----- reactos/base/applications/mspaint/selection.h | 13 - reactos/base/applications/mspaint/sizebox.c | 122 -- reactos/base/applications/mspaint/sizebox.h | 11 - reactos/base/applications/mspaint/textedit.c | 70 -- reactos/base/applications/mspaint/textedit.h | 11 - .../base/applications/mspaint/toolsettings.c | 277 ----- .../base/applications/mspaint/toolsettings.h | 11 - reactos/base/applications/mspaint/winproc.c | 1065 ----------------- reactos/base/applications/mspaint/winproc.h | 12 - .../applications/mspaint_new/CMakeLists.txt | 18 +- 108 files changed, 9 insertions(+), 11321 deletions(-) delete mode 100644 reactos/base/applications/mspaint/CMakeLists.txt delete mode 100644 reactos/base/applications/mspaint/definitions.h delete mode 100644 reactos/base/applications/mspaint/dialogs.c delete mode 100644 reactos/base/applications/mspaint/dialogs.h delete mode 100644 reactos/base/applications/mspaint/dib.c delete mode 100644 reactos/base/applications/mspaint/dib.h delete mode 100644 reactos/base/applications/mspaint/drawing.c delete mode 100644 reactos/base/applications/mspaint/drawing.h delete mode 100644 reactos/base/applications/mspaint/globalvar.h delete mode 100644 reactos/base/applications/mspaint/help/Paint.chm delete mode 100644 reactos/base/applications/mspaint/help/Paint.hhp delete mode 100644 reactos/base/applications/mspaint/help/Table of Contents.hhc delete mode 100644 reactos/base/applications/mspaint/help/airbrush.png delete mode 100644 reactos/base/applications/mspaint/help/appwindow.png delete mode 100644 reactos/base/applications/mspaint/help/bezier.png delete mode 100644 reactos/base/applications/mspaint/help/brush.png delete mode 100644 reactos/base/applications/mspaint/help/color.png delete mode 100644 reactos/base/applications/mspaint/help/ellipse.png delete mode 100644 reactos/base/applications/mspaint/help/fill.png delete mode 100644 reactos/base/applications/mspaint/help/freesel.png delete mode 100644 reactos/base/applications/mspaint/help/line.png delete mode 100644 reactos/base/applications/mspaint/help/palette.png delete mode 100644 reactos/base/applications/mspaint/help/pen.png delete mode 100644 reactos/base/applications/mspaint/help/rect.png delete mode 100644 reactos/base/applications/mspaint/help/rectsel.png delete mode 100644 reactos/base/applications/mspaint/help/rrect.png delete mode 100644 reactos/base/applications/mspaint/help/rubber.png delete mode 100644 reactos/base/applications/mspaint/help/settings.html delete mode 100644 reactos/base/applications/mspaint/help/settings1.png delete mode 100644 reactos/base/applications/mspaint/help/settings2.png delete mode 100644 reactos/base/applications/mspaint/help/settings3.png delete mode 100644 reactos/base/applications/mspaint/help/settings4.png delete mode 100644 reactos/base/applications/mspaint/help/settings5.png delete mode 100644 reactos/base/applications/mspaint/help/settings6.png delete mode 100644 reactos/base/applications/mspaint/help/shape.png delete mode 100644 reactos/base/applications/mspaint/help/text.png delete mode 100644 reactos/base/applications/mspaint/help/toolbox.png delete mode 100644 reactos/base/applications/mspaint/help/tools.html delete mode 100644 reactos/base/applications/mspaint/help/usage.html delete mode 100644 reactos/base/applications/mspaint/help/zoom.png delete mode 100644 reactos/base/applications/mspaint/history.c delete mode 100644 reactos/base/applications/mspaint/history.h delete mode 100644 reactos/base/applications/mspaint/icons/airbrush_cur.ico delete mode 100644 reactos/base/applications/mspaint/icons/color_cur.ico delete mode 100644 reactos/base/applications/mspaint/icons/fill_cur.ico delete mode 100644 reactos/base/applications/mspaint/icons/horzskew.ico delete mode 100644 reactos/base/applications/mspaint/icons/horzstretch.ico delete mode 100644 reactos/base/applications/mspaint/icons/iconbar.bmp delete mode 100644 reactos/base/applications/mspaint/icons/nontransparent.ico delete mode 100644 reactos/base/applications/mspaint/icons/paint.ico delete mode 100644 reactos/base/applications/mspaint/icons/paint.svg delete mode 100644 reactos/base/applications/mspaint/icons/pen_cur.ico delete mode 100644 reactos/base/applications/mspaint/icons/transparency.xcf delete mode 100644 reactos/base/applications/mspaint/icons/transparent.ico delete mode 100644 reactos/base/applications/mspaint/icons/vertskew.ico delete mode 100644 reactos/base/applications/mspaint/icons/vertstretch.ico delete mode 100644 reactos/base/applications/mspaint/icons/zoom_cur.ico delete mode 100644 reactos/base/applications/mspaint/lang/bg-BG.rc delete mode 100644 reactos/base/applications/mspaint/lang/cs-CZ.rc delete mode 100644 reactos/base/applications/mspaint/lang/de-DE.rc delete mode 100644 reactos/base/applications/mspaint/lang/en-GB.rc delete mode 100644 reactos/base/applications/mspaint/lang/en-US.rc delete mode 100644 reactos/base/applications/mspaint/lang/es-ES.rc delete mode 100644 reactos/base/applications/mspaint/lang/eu-ES.rc delete mode 100644 reactos/base/applications/mspaint/lang/fr-FR.rc delete mode 100644 reactos/base/applications/mspaint/lang/he-IL.rc delete mode 100644 reactos/base/applications/mspaint/lang/hu-HU.rc delete mode 100644 reactos/base/applications/mspaint/lang/it-IT.rc delete mode 100644 reactos/base/applications/mspaint/lang/ja-JP.rc delete mode 100644 reactos/base/applications/mspaint/lang/nl-NL.rc delete mode 100644 reactos/base/applications/mspaint/lang/no-NO.rc delete mode 100644 reactos/base/applications/mspaint/lang/pl-PL.rc delete mode 100644 reactos/base/applications/mspaint/lang/pt-BR.rc delete mode 100644 reactos/base/applications/mspaint/lang/pt-PT.rc delete mode 100644 reactos/base/applications/mspaint/lang/ro-RO.rc delete mode 100644 reactos/base/applications/mspaint/lang/ru-RU.rc delete mode 100644 reactos/base/applications/mspaint/lang/sk-SK.rc delete mode 100644 reactos/base/applications/mspaint/lang/sq-AL.rc delete mode 100644 reactos/base/applications/mspaint/lang/sv-SE.rc delete mode 100644 reactos/base/applications/mspaint/lang/tr-TR.rc delete mode 100644 reactos/base/applications/mspaint/lang/uk-UA.rc delete mode 100644 reactos/base/applications/mspaint/lang/zh-CN.rc delete mode 100644 reactos/base/applications/mspaint/lang/zh-TW.rc delete mode 100644 reactos/base/applications/mspaint/main.c delete mode 100644 reactos/base/applications/mspaint/mouse.c delete mode 100644 reactos/base/applications/mspaint/mouse.h delete mode 100644 reactos/base/applications/mspaint/mspaint.exe.amd64.manifest delete mode 100644 reactos/base/applications/mspaint/mspaint.exe.manifest delete mode 100644 reactos/base/applications/mspaint/palette.c delete mode 100644 reactos/base/applications/mspaint/palette.h delete mode 100644 reactos/base/applications/mspaint/precomp.h delete mode 100644 reactos/base/applications/mspaint/registry.c delete mode 100644 reactos/base/applications/mspaint/registry.h delete mode 100644 reactos/base/applications/mspaint/rsrc.rc delete mode 100644 reactos/base/applications/mspaint/scrollbox.c delete mode 100644 reactos/base/applications/mspaint/scrollbox.h delete mode 100644 reactos/base/applications/mspaint/selection.c delete mode 100644 reactos/base/applications/mspaint/selection.h delete mode 100644 reactos/base/applications/mspaint/sizebox.c delete mode 100644 reactos/base/applications/mspaint/sizebox.h delete mode 100644 reactos/base/applications/mspaint/textedit.c delete mode 100644 reactos/base/applications/mspaint/textedit.h delete mode 100644 reactos/base/applications/mspaint/toolsettings.c delete mode 100644 reactos/base/applications/mspaint/toolsettings.h delete mode 100644 reactos/base/applications/mspaint/winproc.c delete mode 100644 reactos/base/applications/mspaint/winproc.h diff --git a/reactos/base/applications/CMakeLists.txt b/reactos/base/applications/CMakeLists.txt index dc9c295d31b..6c0673e37c1 100644 --- a/reactos/base/applications/CMakeLists.txt +++ b/reactos/base/applications/CMakeLists.txt @@ -19,7 +19,6 @@ add_subdirectory(mmc) add_subdirectory(mplay32) add_subdirectory(msconfig) add_subdirectory(mscutils) -add_subdirectory(mspaint) add_subdirectory(mspaint_new) add_subdirectory(mstsc) add_subdirectory(network) diff --git a/reactos/base/applications/mspaint/CMakeLists.txt b/reactos/base/applications/mspaint/CMakeLists.txt deleted file mode 100644 index 3469a8c95e1..00000000000 --- a/reactos/base/applications/mspaint/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ - -list(APPEND SOURCE - dialogs.c - dib.c - drawing.c - history.c - main.c - mouse.c - palette.c - registry.c - scrollbox.c - selection.c - sizebox.c - textedit.c - toolsettings.c - winproc.c - precomp.h) - -file(GLOB mspaint_rc_deps icons/*.*) -add_rc_deps(rsrc.rc ${mspaint_rc_deps}) -add_executable(mspaint ${SOURCE} rsrc.rc) -set_module_type(mspaint win32gui UNICODE) -add_importlibs(mspaint hhctrl comdlg32 shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32) -add_pch(mspaint precomp.h SOURCE) -add_cd_file(TARGET mspaint DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/mspaint/definitions.h b/reactos/base/applications/mspaint/definitions.h deleted file mode 100644 index 6a0ed6c4fa6..00000000000 --- a/reactos/base/applications/mspaint/definitions.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/definitions.h - * PURPOSE: Defines the resource ids and other stuff - * PROGRAMMERS: Benedikt Freisen - */ - -/* DEFINES **********************************************************/ - -#define HISTORYSIZE 11 -/* HISTORYSIZE = number of possible undo-steps + 1 */ - -#define SIZEOF(a) (sizeof(a) / sizeof((a)[0])) -/* sizeof for string constants; equals max. number of characters */ - -#define RECT_WIDTH(a) ((a).right - (a).left) -/* width of the rectangle defined by a RECT structure */ - -#define RECT_HEIGHT(a) ((a).bottom - (a).top) -/* height of the rectangle defined by a RECT structure */ - -#define CHECKED_IF(a) ((a) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND)) -/* simplifies checking and unchecking menu items */ -#define ENABLED_IF(a) ((a) ? (MF_ENABLED | MF_BYCOMMAND) : (MF_GRAYED | MF_BYCOMMAND)) -/* simplifies enabling or graying menu items */ - -#define IDI_APPICON 500 - -#define IDB_TOOLBARICONS 510 - -#define IDI_TRANSPARENT 526 -#define IDI_NONTRANSPARENT 527 - -#define IDC_FILL 530 -#define IDC_COLOR 531 -#define IDC_ZOOM 532 -#define IDC_PEN 533 -#define IDC_AIRBRUSH 534 - -#define IDI_HORZSTRETCH 535 -#define IDI_VERTSTRETCH 536 -#define IDI_HORZSKEW 537 -#define IDI_VERTSKEW 538 - -#define ID_MENU 501 - -#define IDM_FILENEW 201 -#define IDM_FILEOPEN 202 -#define IDM_FILESAVE 203 -#define IDM_FILESAVEAS 204 - -#define IDM_FILEASWALLPAPERPLANE 210 -#define IDM_FILEASWALLPAPERCENTERED 211 -#define IDM_FILEASWALLPAPERSTRETCHED 212 - -#define IDM_FILEEXIT 205 - -#define IDM_EDITUNDO 220 -#define IDM_EDITREDO 221 -#define IDM_EDITCUT 222 -#define IDM_EDITCOPY 223 -#define IDM_EDITPASTE 224 -#define IDM_EDITDELETESELECTION 225 -#define IDM_EDITINVERTSELECTION 226 -#define IDM_EDITSELECTALL 227 -#define IDM_EDITCOPYTO 228 -#define IDM_EDITPASTEFROM 229 - -#define IDM_VIEWTOOLBOX 230 -#define IDM_VIEWCOLORPALETTE 231 -#define IDM_VIEWSTATUSBAR 232 -#define IDM_FORMATICONBAR 233 -#define IDM_VIEWZOOM125 234 -#define IDM_VIEWZOOM25 235 -#define IDM_VIEWZOOM50 236 -#define IDM_VIEWZOOM100 237 -#define IDM_VIEWZOOM200 238 -#define IDM_VIEWZOOM400 239 -#define IDM_VIEWZOOM800 240 -#define IDM_VIEWFULLSCREEN 241 -#define IDM_VIEWSHOWGRID 242 -#define IDM_VIEWSHOWMINIATURE 243 - -#define IDM_IMAGEROTATEMIRROR 250 -#define IDM_IMAGESTRETCHSKEW 251 -#define IDM_IMAGECROP 252 -#define IDM_IMAGEINVERTCOLORS 253 -#define IDM_IMAGEATTRIBUTES 254 -#define IDM_IMAGEDELETEIMAGE 255 -#define IDM_IMAGEDRAWOPAQUE 256 - -#define IDM_COLORSEDITPALETTE 260 -#define IDM_COLORSMODERNPALETTE 261 -#define IDM_COLORSOLDPALETTE 262 - -#define IDM_HELPHELPTOPICS 270 -#define IDM_HELPINFO 271 - -/* the following 16 numbers need to be in order, increasing by 1 */ -#define ID_FREESEL 600 -#define ID_RECTSEL 601 -#define ID_RUBBER 602 -#define ID_FILL 603 -#define ID_COLOR 604 -#define ID_ZOOM 605 -#define ID_PEN 606 -#define ID_BRUSH 607 -#define ID_AIRBRUSH 608 -#define ID_TEXT 609 -#define ID_LINE 610 -#define ID_BEZIER 611 -#define ID_RECT 612 -#define ID_SHAPE 613 -#define ID_ELLIPSE 614 -#define ID_RRECT 615 - -/* the following 16 numbers need to be in order, increasing by 1 */ -#define TOOL_FREESEL 1 -#define TOOL_RECTSEL 2 -#define TOOL_RUBBER 3 -#define TOOL_FILL 4 -#define TOOL_COLOR 5 -#define TOOL_ZOOM 6 -#define TOOL_PEN 7 -#define TOOL_BRUSH 8 -#define TOOL_AIRBRUSH 9 -#define TOOL_TEXT 10 -#define TOOL_LINE 11 -#define TOOL_BEZIER 12 -#define TOOL_RECT 13 -#define TOOL_SHAPE 14 -#define TOOL_ELLIPSE 15 -#define TOOL_RRECT 16 - -#define ID_ACCELERATORS 800 - -#define IDD_MIRRORROTATE 700 -#define IDD_MIRRORROTATEGROUP 701 -#define IDD_MIRRORROTATERB1 702 -#define IDD_MIRRORROTATERB2 703 -#define IDD_MIRRORROTATERB3 704 -#define IDD_MIRRORROTATERB4 705 -#define IDD_MIRRORROTATERB5 706 -#define IDD_MIRRORROTATERB6 707 - -#define IDD_ATTRIBUTES 710 -#define IDD_ATTRIBUTESEDIT1 711 -#define IDD_ATTRIBUTESEDIT2 712 -#define IDD_ATTRIBUTESTEXT1 715 -#define IDD_ATTRIBUTESTEXT2 716 -#define IDD_ATTRIBUTESTEXT3 717 -#define IDD_ATTRIBUTESTEXT4 718 -#define IDD_ATTRIBUTESTEXT5 719 -#define IDD_ATTRIBUTESTEXT6 720 -#define IDD_ATTRIBUTESTEXT7 721 -#define IDD_ATTRIBUTESTEXT8 722 -#define IDD_ATTRIBUTESSTANDARD 723 -#define IDD_ATTRIBUTESGROUP1 724 -#define IDD_ATTRIBUTESGROUP2 725 -#define IDD_ATTRIBUTESRB1 726 -#define IDD_ATTRIBUTESRB2 727 -#define IDD_ATTRIBUTESRB3 728 -#define IDD_ATTRIBUTESRB4 729 -#define IDD_ATTRIBUTESRB5 730 - -#define IDD_STRETCHSKEW 740 -#define IDD_STRETCHSKEWGROUPSTRETCH 741 -#define IDD_STRETCHSKEWICONHSTRETCH 742 -#define IDD_STRETCHSKEWTEXTHSTRETCH 743 -#define IDD_STRETCHSKEWEDITHSTRETCH 744 -#define IDD_STRETCHSKEWTEXTHPERCENT 745 -#define IDD_STRETCHSKEWICONVSTRETCH 746 -#define IDD_STRETCHSKEWTEXTVSTRETCH 747 -#define IDD_STRETCHSKEWEDITVSTRETCH 748 -#define IDD_STRETCHSKEWTEXTVPERCENT 749 -#define IDD_STRETCHSKEWGROUPSKEW 750 -#define IDD_STRETCHSKEWICONHSKEW 751 -#define IDD_STRETCHSKEWTEXTHSKEW 752 -#define IDD_STRETCHSKEWEDITHSKEW 753 -#define IDD_STRETCHSKEWTEXTHDEG 754 -#define IDD_STRETCHSKEWICONVSKEW 755 -#define IDD_STRETCHSKEWTEXTVSKEW 756 -#define IDD_STRETCHSKEWEDITVSKEW 757 -#define IDD_STRETCHSKEWTEXTVDEG 758 - -#define IDS_PROGRAMNAME 900 -#define IDS_WINDOWTITLE 901 -#define IDS_INFOTITLE 902 -#define IDS_INFOTEXT 903 - -#define IDS_SAVEPROMPTTEXT 904 -#define IDS_DEFAULTFILENAME 905 -#define IDS_MINIATURETITLE 906 - -#define IDS_TOOLTIP1 910 -#define IDS_TOOLTIP2 911 -#define IDS_TOOLTIP3 912 -#define IDS_TOOLTIP4 913 -#define IDS_TOOLTIP5 914 -#define IDS_TOOLTIP6 915 -#define IDS_TOOLTIP7 916 -#define IDS_TOOLTIP8 917 -#define IDS_TOOLTIP9 918 -#define IDS_TOOLTIP10 919 -#define IDS_TOOLTIP11 920 -#define IDS_TOOLTIP12 921 -#define IDS_TOOLTIP13 922 -#define IDS_TOOLTIP14 923 -#define IDS_TOOLTIP15 924 -#define IDS_TOOLTIP16 925 - -#define IDS_OPENFILTER 926 -#define IDS_SAVEFILTER 927 -#define IDS_FILESIZE 928 -#define IDS_PRINTRES 929 - -#define IDS_INTNUMBERS 930 -#define IDS_PERCENTAGE 931 -#define IDS_ANGLE 932 - -#define IDS_LOADERRORTEXT 933 diff --git a/reactos/base/applications/mspaint/dialogs.c b/reactos/base/applications/mspaint/dialogs.c deleted file mode 100644 index c0844dd8d9e..00000000000 --- a/reactos/base/applications/mspaint/dialogs.c +++ /dev/null @@ -1,270 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/dialogs.c - * PURPOSE: Window procedures of the dialog windows plus launching functions - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -#include - -/* FUNCTIONS ********************************************************/ - -INT_PTR CALLBACK -MRDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_INITDIALOG: - CheckDlgButton(hwnd, IDD_MIRRORROTATERB1, BST_CHECKED); - CheckDlgButton(hwnd, IDD_MIRRORROTATERB4, BST_CHECKED); - return TRUE; - case WM_CLOSE: - EndDialog(hwnd, 0); - break; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - if (IsDlgButtonChecked(hwnd, IDD_MIRRORROTATERB1)) - EndDialog(hwnd, 1); - else if (IsDlgButtonChecked(hwnd, IDD_MIRRORROTATERB2)) - EndDialog(hwnd, 2); - else if (IsDlgButtonChecked(hwnd, IDD_MIRRORROTATERB4)) - EndDialog(hwnd, 3); - else if (IsDlgButtonChecked(hwnd, IDD_MIRRORROTATERB5)) - EndDialog(hwnd, 4); - else if (IsDlgButtonChecked(hwnd, IDD_MIRRORROTATERB6)) - EndDialog(hwnd, 5); - break; - case IDCANCEL: - EndDialog(hwnd, 0); - break; - case IDD_MIRRORROTATERB3: - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB4), TRUE); - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB5), TRUE); - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB6), TRUE); - break; - case IDD_MIRRORROTATERB1: - case IDD_MIRRORROTATERB2: - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB4), FALSE); - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB5), FALSE); - EnableWindow(GetDlgItem(hwnd, IDD_MIRRORROTATERB6), FALSE); - break; - } - break; - default: - return FALSE; - } - return TRUE; -} - -int -mirrorRotateDlg() -{ - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_MIRRORROTATE), hMainWnd, MRDlgWinProc); -} - -INT_PTR CALLBACK -ATTDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_INITDIALOG: - { - TCHAR strrc[100]; - TCHAR res[100]; - - widthSetInDlg = imgXRes; - heightSetInDlg = imgYRes; - - CheckDlgButton(hwnd, IDD_ATTRIBUTESRB3, BST_CHECKED); - CheckDlgButton(hwnd, IDD_ATTRIBUTESRB5, BST_CHECKED); - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE); - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE); - - if (isAFile) - { - TCHAR date[100]; - TCHAR size[100]; - TCHAR temp[100]; - GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, SIZEOF(date)); - GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, SIZEOF(temp)); - _tcscat(date, _T(" ")); - _tcscat(date, temp); - LoadString(hProgInstance, IDS_FILESIZE, strrc, SIZEOF(strrc)); - _stprintf(size, strrc, fileSize); - SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT6, date); - SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT7, size); - } - LoadString(hProgInstance, IDS_PRINTRES, strrc, SIZEOF(strrc)); - _stprintf(res, strrc, fileHPPM, fileVPPM); - SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT8, res); - return TRUE; - } - case WM_CLOSE: - EndDialog(hwnd, 0); - break; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - EndDialog(hwnd, 1); - break; - case IDCANCEL: - EndDialog(hwnd, 0); - break; - case IDD_ATTRIBUTESSTANDARD: - widthSetInDlg = imgXRes; - heightSetInDlg = imgYRes; - CheckDlgButton(hwnd, IDD_ATTRIBUTESRB3, BST_CHECKED); - CheckDlgButton(hwnd, IDD_ATTRIBUTESRB5, BST_CHECKED); - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE); - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE); - break; - case IDD_ATTRIBUTESRB1: - { - TCHAR number[100]; - _stprintf(number, _T("%.3lf"), widthSetInDlg / (0.0254 * fileHPPM)); - SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, number); - _stprintf(number, _T("%.3lf"), heightSetInDlg / (0.0254 * fileVPPM)); - SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, number); - break; - } - case IDD_ATTRIBUTESRB2: - { - TCHAR number[100]; - _stprintf(number, _T("%.3lf"), widthSetInDlg * 100.0 / fileHPPM); - SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, number); - _stprintf(number, _T("%.3lf"), heightSetInDlg * 100.0 / fileVPPM); - SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, number); - break; - } - case IDD_ATTRIBUTESRB3: - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE); - SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE); - break; - case IDD_ATTRIBUTESEDIT1: - if (Edit_GetModify((HWND)lParam)) - { - TCHAR tempS[100]; - if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB1)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); - widthSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM * 0.0254)); - } - else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB2)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); - widthSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM / 100)); - } - else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB3)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); - widthSetInDlg = max(1, _tstoi(tempS)); - } - Edit_SetModify((HWND)lParam, FALSE); - } - break; - case IDD_ATTRIBUTESEDIT2: - if (Edit_GetModify((HWND)lParam)) - { - TCHAR tempS[100]; - if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB1)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); - heightSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM * 0.0254)); - } - else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB2)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); - heightSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM / 100)); - } - else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB3)) - { - GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); - heightSetInDlg = max(1, _tstoi(tempS)); - } - Edit_SetModify((HWND)lParam, FALSE); - } - break; - } - break; - default: - return FALSE; - } - return TRUE; -} - -int -attributesDlg() -{ - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_ATTRIBUTES), hMainWnd, ATTDlgWinProc); -} - -INT_PTR CALLBACK -CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_INITDIALOG: - SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSTRETCH, 100, FALSE); - SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSTRETCH, 100, FALSE); - SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSKEW, 0, FALSE); - SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSKEW, 0, FALSE); - return TRUE; - case WM_CLOSE: - EndDialog(hwnd, 0); - break; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - { - TCHAR strrcIntNumbers[100]; - TCHAR strrcPercentage[100]; - TCHAR strrcAngle[100]; - BOOL tr1, tr2, tr3, tr4; - - LoadString(hProgInstance, IDS_INTNUMBERS, strrcIntNumbers, SIZEOF(strrcIntNumbers)); - LoadString(hProgInstance, IDS_PERCENTAGE, strrcPercentage, SIZEOF(strrcPercentage)); - LoadString(hProgInstance, IDS_ANGLE, strrcAngle, SIZEOF(strrcAngle)); - - stretchSkew.percentage.x = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE); - stretchSkew.percentage.y = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE); - stretchSkew.angle.x = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSKEW, &tr3, TRUE); - stretchSkew.angle.y = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSKEW, &tr4, TRUE); - - if (!(tr1 && tr2 && tr3 && tr4)) - MessageBox(hwnd, strrcIntNumbers, NULL, MB_ICONEXCLAMATION); - else if (stretchSkew.percentage.x < 1 || stretchSkew.percentage.x > 500 - || stretchSkew.percentage.y < 1 || stretchSkew.percentage.y > 500) - MessageBox(hwnd, strrcPercentage, NULL, MB_ICONEXCLAMATION); - else if (stretchSkew.angle.x < -89 || stretchSkew.angle.x > 89 - || stretchSkew.angle.y < -89 || stretchSkew.angle.y > 89) - MessageBox(hwnd, strrcAngle, NULL, MB_ICONEXCLAMATION); - else - EndDialog(hwnd, 1); - - break; - } - case IDCANCEL: - EndDialog(hwnd, 0); - break; - } - break; - default: - return FALSE; - } - return TRUE; -} - -int -changeSizeDlg() -{ - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_STRETCHSKEW), hMainWnd, CHSIZEDlgWinProc); -} diff --git a/reactos/base/applications/mspaint/dialogs.h b/reactos/base/applications/mspaint/dialogs.h deleted file mode 100644 index 377a3198d5e..00000000000 --- a/reactos/base/applications/mspaint/dialogs.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/dialogs.h - * PURPOSE: Window procedures of the dialog windows plus launching functions - * PROGRAMMERS: Benedikt Freisen - */ - -int mirrorRotateDlg(void); - -int attributesDlg(void); - -int changeSizeDlg(void); diff --git a/reactos/base/applications/mspaint/dib.c b/reactos/base/applications/mspaint/dib.c deleted file mode 100644 index b9bcd59e451..00000000000 --- a/reactos/base/applications/mspaint/dib.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/dib.c - * PURPOSE: Some DIB related functions - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -/* FUNCTIONS ********************************************************/ - -HBITMAP -CreateDIBWithProperties(int width, int height) -{ - BITMAPINFO bmi; - ZeroMemory(&bmi, sizeof(BITMAPINFO)); - bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bmi.bmiHeader.biWidth = width; - bmi.bmiHeader.biHeight = height; - bmi.bmiHeader.biPlanes = 1; - bmi.bmiHeader.biBitCount = 24; - bmi.bmiHeader.biCompression = BI_RGB; - return CreateDIBSection(NULL, &bmi, DIB_RGB_COLORS, NULL, NULL, 0); -} - -int -GetDIBWidth(HBITMAP hBitmap) -{ - BITMAP bm; - GetObject(hBitmap, sizeof(BITMAP), &bm); - return bm.bmWidth; -} - -int -GetDIBHeight(HBITMAP hBitmap) -{ - BITMAP bm; - GetObject(hBitmap, sizeof(BITMAP), &bm); - return bm.bmHeight; -} - -void -SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC, LPSYSTEMTIME time, int *size, int hRes, int vRes) -{ - BITMAP bm; - HANDLE hFile; - BITMAPFILEHEADER bf; - BITMAPINFOHEADER bi; - int imgDataSize; - DWORD dwBytesWritten; - char *buffer; - - GetObject(hBitmap, sizeof(BITMAP), &bm); - - ZeroMemory(&bf, sizeof(BITMAPFILEHEADER)); - ZeroMemory(&bi, sizeof(BITMAPINFOHEADER)); - - imgDataSize = bm.bmWidthBytes * bm.bmHeight; - bf.bfType = 0x4d42; /* BM */ - bf.bfSize = imgDataSize + 52; - bf.bfOffBits = 54; - bi.biSize = sizeof(BITMAPINFOHEADER); - bi.biWidth = bm.bmWidth; - bi.biHeight = bm.bmHeight; - bi.biPlanes = bm.bmPlanes; - bi.biBitCount = bm.bmBitsPixel; - bi.biCompression = BI_RGB; - bi.biXPelsPerMeter = hRes; - bi.biYPelsPerMeter = vRes; - - buffer = HeapAlloc(GetProcessHeap(), 0, imgDataSize); - if (!buffer) - return; - - GetDIBits(hDC, hBitmap, 0, bm.bmHeight, buffer, (LPBITMAPINFO) & bi, DIB_RGB_COLORS); - - hFile = CreateFile(FileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL); - if (hFile == INVALID_HANDLE_VALUE) - { - HeapFree(GetProcessHeap(), 0, buffer); - return; - } - - WriteFile(hFile, &bf, sizeof(BITMAPFILEHEADER), &dwBytesWritten, NULL); - WriteFile(hFile, &bi, sizeof(BITMAPINFOHEADER), &dwBytesWritten, NULL); - WriteFile(hFile, buffer, imgDataSize, &dwBytesWritten, NULL); - - if (time) - { - FILETIME ft; - GetFileTime(hFile, NULL, NULL, &ft); - FileTimeToSystemTime(&ft, time); - } - if (size) - *size = GetFileSize(hFile, NULL); - - CloseHandle(hFile); - HeapFree(GetProcessHeap(), 0, buffer); -} - -void ShowFileLoadError(LPTSTR name) -{ - TCHAR programname[20]; - TCHAR loaderrortext[100]; - TCHAR temptext[500]; - LoadString(hProgInstance, IDS_PROGRAMNAME, programname, SIZEOF(programname)); - LoadString(hProgInstance, IDS_LOADERRORTEXT, loaderrortext, SIZEOF(loaderrortext)); - _stprintf(temptext, loaderrortext, name); - MessageBox(hMainWnd, temptext, programname, MB_OK | MB_ICONEXCLAMATION); -} - -void -LoadDIBFromFile(HBITMAP * hBitmap, LPTSTR name, LPSYSTEMTIME time, int *size, int *hRes, int *vRes) -{ - BITMAPFILEHEADER bfh; - BITMAPINFO *bi; - PVOID pvBits; - DWORD dwBytesRead; - HANDLE hFile; - - if (!hBitmap) - { - ShowFileLoadError(name); - return; - } - - hFile = - CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); - if (hFile == INVALID_HANDLE_VALUE) - { - ShowFileLoadError(name); - return; - } - - /* read header and check for 'BM' magic */ - ReadFile(hFile, &bfh, sizeof(BITMAPFILEHEADER), &dwBytesRead, NULL); - if (bfh.bfType != 0x4d42) - { - CloseHandle(hFile); - ShowFileLoadError(name); - return; - } - - if (time) - { - FILETIME ft; - GetFileTime(hFile, NULL, NULL, &ft); - FileTimeToSystemTime(&ft, time); - } - if (size) - *size = GetFileSize(hFile, NULL); - - bi = HeapAlloc(GetProcessHeap(), 0, bfh.bfOffBits - sizeof(BITMAPFILEHEADER)); - if (!bi) - { - CloseHandle(hFile); - ShowFileLoadError(name); - return; - } - - ReadFile(hFile, bi, bfh.bfOffBits - sizeof(BITMAPFILEHEADER), &dwBytesRead, NULL); - *hBitmap = CreateDIBSection(NULL, bi, DIB_RGB_COLORS, &pvBits, NULL, 0); - ReadFile(hFile, pvBits, bfh.bfSize - bfh.bfOffBits, &dwBytesRead, NULL); - - if (hRes) - *hRes = (*bi).bmiHeader.biXPelsPerMeter; - if (vRes) - *vRes = (*bi).bmiHeader.biYPelsPerMeter; - - CloseHandle(hFile); - HeapFree(GetProcessHeap(), 0, bi); -} diff --git a/reactos/base/applications/mspaint/dib.h b/reactos/base/applications/mspaint/dib.h deleted file mode 100644 index 49fd7229971..00000000000 --- a/reactos/base/applications/mspaint/dib.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/dib.h - * PURPOSE: Some DIB related functions - * PROGRAMMERS: Benedikt Freisen - */ - -HBITMAP CreateDIBWithProperties(int width, int height); - -int GetDIBWidth(HBITMAP hbm); - -int GetDIBHeight(HBITMAP hbm); - -void SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC, LPSYSTEMTIME time, int *size, int hRes, - int vRes); - -void LoadDIBFromFile(HBITMAP *hBitmap, LPTSTR name, LPSYSTEMTIME time, int *size, int *hRes, int *vRes); - -void ShowFileLoadError(LPTSTR name); diff --git a/reactos/base/applications/mspaint/drawing.c b/reactos/base/applications/mspaint/drawing.c deleted file mode 100644 index 954591d0628..00000000000 --- a/reactos/base/applications/mspaint/drawing.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/drawing.c - * PURPOSE: The drawing functions used by the tools - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -/* FUNCTIONS ********************************************************/ - -void -Line(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, int thickness) -{ - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, color)); - MoveToEx(hdc, x1, y1, NULL); - LineTo(hdc, x2, y2); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Rect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style) -{ - HBRUSH oldBrush; - LOGBRUSH logbrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg)); - logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID; - logbrush.lbColor = (style == 2) ? fg : bg; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - Rectangle(hdc, x1, y1, x2, y2); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style) -{ - HBRUSH oldBrush; - LOGBRUSH logbrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg)); - logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID; - logbrush.lbColor = (style == 2) ? fg : bg; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - Ellipse(hdc, x1, y1, x2, y2); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style) -{ - LOGBRUSH logbrush; - HBRUSH oldBrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg)); - logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID; - logbrush.lbColor = (style == 2) ? fg : bg; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - RoundRect(hdc, x1, y1, x2, y2, 16, 16); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Poly(HDC hdc, POINT * lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted) -{ - LOGBRUSH logbrush; - HBRUSH oldBrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg)); - UINT oldRop = GetROP2(hdc); - - if (inverted) - SetROP2(hdc, R2_NOTXORPEN); - - logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID; - logbrush.lbColor = (style == 2) ? fg : bg; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - if (closed) - Polygon(hdc, lpPoints, nCount); - else - Polyline(hdc, lpPoints, nCount); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); - - SetROP2(hdc, oldRop); -} - -void -Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness) -{ - HPEN oldPen; - POINT fourPoints[4]; - fourPoints[0] = p1; - fourPoints[1] = p2; - fourPoints[2] = p3; - fourPoints[3] = p4; - oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, color)); - PolyBezier(hdc, fourPoints, 4); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Fill(HDC hdc, LONG x, LONG y, COLORREF color) -{ - HBRUSH oldBrush = SelectObject(hdc, CreateSolidBrush(color)); - ExtFloodFill(hdc, x, y, GetPixel(hdc, x, y), FLOODFILLSURFACE); - DeleteObject(SelectObject(hdc, oldBrush)); -} - -void -Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius) -{ - LONG a, b; - HPEN oldPen; - HBRUSH oldBrush = SelectObject(hdc, CreateSolidBrush(color)); - - b = max(1, max(abs(x2 - x1), abs(y2 - y1))); - oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, color)); - for(a = 0; a <= b; a++) - Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - radius + 1, - (y1 * (b - a) + y2 * a) / b - radius + 1, (x1 * (b - a) + x2 * a) / b + radius + 1, - (y1 * (b - a) + y2 * a) / b + radius + 1); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius) -{ - LONG a, b, x, y; - b = max(1, max(abs(x2 - x1), abs(y2 - y1))); - - for(a = 0; a <= b; a++) - for(y = (y1 * (b - a) + y2 * a) / b - radius + 1; - y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++) - for(x = (x1 * (b - a) + x2 * a) / b - radius + 1; - x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++) - if (GetPixel(hdc, x, y) == fg) - SetPixel(hdc, x, y, bg); -} - -void -Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r) -{ - LONG a, b; - - for(b = -r; b <= r; b++) - for(a = -r; a <= r; a++) - if ((a * a + b * b <= r * r) && (rand() % 4 == 0)) - SetPixel(hdc, x + a, y + b, color); -} - -void -Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style) -{ - HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, color)); - HBRUSH oldBrush = SelectObject(hdc, CreateSolidBrush(color)); - LONG a, b; - b = max(1, max(abs(x2 - x1), abs(y2 - y1))); - switch (style) - { - case 0: - for(a = 0; a <= b; a++) - Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3, - (x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4); - break; - case 1: - for(a = 0; a <= b; a++) - Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1, - (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3); - break; - case 2: - MoveToEx(hdc, x1, y1, NULL); - LineTo(hdc, x2, y2); - SetPixel(hdc, x2, y2, color); - break; - case 3: - for(a = 0; a <= b; a++) - Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3, - (x1 * (b - a) + x2 * a) / b + 5, (y1 * (b - a) + y2 * a) / b + 5); - break; - case 4: - for(a = 0; a <= b; a++) - Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2, - (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3); - break; - case 5: - for(a = 0; a <= b; a++) - Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1, - (x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1); - break; - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - { - POINT offsTop[] = {{4, -3}, {2, -2}, {0, 0}, - {-3, -3}, {-2, -2}, {-1, 0}}; - POINT offsBtm[] = {{-3, 4}, {-2, 2}, {-1, 1}, - {4, 4}, {2, 2}, {0, 1}}; - LONG idx = style - 6; - POINT pts[4]; - pts[0].x = x1 + offsTop[idx].x; - pts[0].y = y1 + offsTop[idx].y; - pts[1].x = x1 + offsBtm[idx].x; - pts[1].y = y1 + offsBtm[idx].y; - pts[2].x = x2 + offsBtm[idx].x; - pts[2].y = y2 + offsBtm[idx].y; - pts[3].x = x2 + offsTop[idx].x; - pts[3].y = y2 + offsTop[idx].y; - Polygon(hdc, pts, 4); - break; - } - } - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2) -{ - HBRUSH oldBrush; - LOGBRUSH logbrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_DOT, 1, 0x00000000)); - UINT oldRop = GetROP2(hdc); - - SetROP2(hdc, R2_NOTXORPEN); - - logbrush.lbStyle = BS_HOLLOW; - logbrush.lbColor = 0; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - Rectangle(hdc, x1, y1, x2, y2); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); - - SetROP2(hdc, oldRop); -} - -void -SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, DWORD system_selection_color) -{ - HBRUSH oldBrush; - LOGBRUSH logbrush; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_DOT, 1, system_selection_color)); - - logbrush.lbStyle = BS_HOLLOW; - logbrush.lbColor = 0; - logbrush.lbHatch = 0; - oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); - Rectangle(hdc, x1, y1, x2, y2); /* SEL BOX FRAME */ - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); - oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, system_selection_color)); - oldBrush = SelectObject(hdc, CreateSolidBrush(system_selection_color)); - Rectangle(hdc, x1 - 1, y1 - 1, x1 + 2, y1 + 2); - Rectangle(hdc, x2 - 2, y1 - 1, x2 + 2, y1 + 2); - Rectangle(hdc, x1 - 1, y2 - 2, x1 + 2, y2 + 1); - Rectangle(hdc, x2 - 2, y2 - 2, x2 + 2, y2 + 1); - Rectangle(hdc, (x1 + x2) / 2 - 1, y1 - 1, (x1 + x2) / 2 + 2, y1 + 2); - Rectangle(hdc, (x1 + x2) / 2 - 1, y2 - 2, (x1 + x2) / 2 + 2, y2 + 1); - Rectangle(hdc, x1 - 1, (y1 + y2) / 2 - 1, x1 + 2, (y1 + y2) / 2 + 2); - Rectangle(hdc, x2 - 2, (y1 + y2) / 2 - 1, x2 + 1, (y1 + y2) / 2 + 2); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); -} - -void -Text(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCTSTR lpchText, HFONT font, LONG style) -{ - HFONT oldFont; - RECT rect = {x1, y1, x2, y2}; - COLORREF oldColor; - COLORREF oldBkColor; - int oldBkMode; - oldFont = SelectObject(hdc, font); - oldColor = SetTextColor(hdc, fg); - oldBkColor = SetBkColor(hdc, bg); - oldBkMode = SetBkMode(hdc, TRANSPARENT); - if (style == 0) - Rect(hdc, x1, y1, x2, y2, bg, bg, 1, 2); - DrawText(hdc, lpchText, -1, &rect, DT_EDITCONTROL); - SelectObject(hdc, oldFont); - SetTextColor(hdc, oldColor); - SetBkColor(hdc, oldBkColor); - SetBkMode(hdc, oldBkMode); -} diff --git a/reactos/base/applications/mspaint/drawing.h b/reactos/base/applications/mspaint/drawing.h deleted file mode 100644 index 91b513ee412..00000000000 --- a/reactos/base/applications/mspaint/drawing.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/drawing.h - * PURPOSE: The drawing functions used by the tools - * PROGRAMMERS: Benedikt Freisen - */ - -void Line(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, int thickness); - -void Rect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style); - -void Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style); - -void RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style); - -void Poly(HDC hdc, POINT *lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted); - -void Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness); - -void Fill(HDC hdc, LONG x, LONG y, COLORREF color); - -void Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius); - -void Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius); - -void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r); - -void Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style); - -void RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2); - -void SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, DWORD system_selection_color); - -void Text(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCTSTR lpchText, HFONT font, LONG style); diff --git a/reactos/base/applications/mspaint/globalvar.h b/reactos/base/applications/mspaint/globalvar.h deleted file mode 100644 index 927d53ce5af..00000000000 --- a/reactos/base/applications/mspaint/globalvar.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/globalvar.h - * PURPOSE: Declaring global variables for later initialization - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -//#include -//#include "definitions.h" - -/* TYPES ************************************************************/ - -typedef struct tagSTRETCHSKEW { - POINT percentage; - POINT angle; -} STRETCHSKEW; - -/* VARIABLES declared in main.c *************************************/ - -extern HDC hDrawingDC; -extern HDC hSelDC; -extern int *bmAddress; -extern BITMAPINFO bitmapinfo; -extern int imgXRes; -extern int imgYRes; - -extern int widthSetInDlg; -extern int heightSetInDlg; - -extern STRETCHSKEW stretchSkew; - -extern HBITMAP hBms[HISTORYSIZE]; -extern int currInd; -extern int undoSteps; -extern int redoSteps; -extern BOOL imageSaved; - -extern POINT start; -extern POINT last; -extern int lineWidth; -extern int shapeStyle; -extern int brushStyle; -extern int activeTool; -extern int airBrushWidth; -extern int rubberRadius; -extern int transpBg; -extern int zoom; -extern RECT rectSel_src; -extern RECT rectSel_dest; -extern HWND hSelection; -extern HWND hImageArea; -extern HBITMAP hSelBm; -extern HBITMAP hSelMask; -extern HWND hwndTextEdit; -extern HWND hwndEditCtl; -extern LOGFONT lfTextFont; -extern HFONT hfontTextFont; -extern LPTSTR textToolText; -extern int textToolTextMaxLen; - -extern int palColors[28]; -extern int modernPalColors[28]; -extern int oldPalColors[28]; -extern int selectedPalette; - -extern int fgColor; -extern int bgColor; - -extern HWND hStatusBar; -extern HWND hScrollbox; -extern HWND hMainWnd; -extern HWND hPalWin; -extern HWND hToolBoxContainer; -extern HWND hToolSettings; -extern HWND hTrackbarZoom; -extern CHOOSECOLOR choosecolor; -extern OPENFILENAME ofn; -extern OPENFILENAME sfn; -extern HICON hNontranspIcon; -extern HICON hTranspIcon; - -extern HCURSOR hCurFill; -extern HCURSOR hCurColor; -extern HCURSOR hCurZoom; -extern HCURSOR hCurPen; -extern HCURSOR hCurAirbrush; - -extern HWND hScrlClient; - -extern HWND hToolBtn[16]; - -extern HINSTANCE hProgInstance; - -extern TCHAR filename[256]; -extern TCHAR filepathname[1000]; -extern BOOL isAFile; -extern int fileSize; -extern int fileHPPM; -extern int fileVPPM; -extern SYSTEMTIME fileTime; - -extern BOOL showGrid; -extern BOOL showMiniature; - -extern HWND hwndMiniature; - -extern HWND hSizeboxLeftTop; -extern HWND hSizeboxCenterTop; -extern HWND hSizeboxRightTop; -extern HWND hSizeboxLeftCenter; -extern HWND hSizeboxRightCenter; -extern HWND hSizeboxLeftBottom; -extern HWND hSizeboxCenterBottom; -extern HWND hSizeboxRightBottom; - -/* VARIABLES declared in mouse.c ************************************/ - -extern POINT pointStack[256]; -extern short pointSP; -extern POINT *ptStack; -extern int ptSP; diff --git a/reactos/base/applications/mspaint/help/Paint.chm b/reactos/base/applications/mspaint/help/Paint.chm deleted file mode 100644 index da3e9021996ef91ba131685b7b24e79d782f38b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52858 zcmeFYWmFvP7B1LW(BK-}okoHM3l`iVKyU~yjXN~%?h@SHA-FpM5(w_@?$$%jcg~!< z?%Y{-=EtlxKeB68?|Ppt?|z@ImfF=VrK<7?1^@u)zwS`4`$Oj!U3gdk0R0)tv(#e} zBNGLXJxsB4gz-O(|M>qA{C^a{_1{_*{hx!ef9sb&Nngc%{2%?FM=4bm#Xlz1*B$8( z`05Y+s{UY*SNQ||kw3?OFvQoIEaISbSjZhTyBGil&OHxE#RuP0st* zk*b2Cl<2E%MuPQqq^2zU>iz0TDDclnRYdmH=0b%Gr1~Uf;%F{sU~cnTE+UXhK}1?g zUPTqkKZhxi5C=%5t}g8005UQ+a5Q%|mNmDrbof&l@&D4GXb-YAws&-U4W@&|_~RmD z?B)Wp|N4K%5&U1k{~?A7_ASuB+}_aM$-#`p*2Wa-1uK9F6=+~<>tb&673A_S%r_O* zH`EpxXlU$iZfyS#6k^~v#Fwu0*8OSbzj#`dq|ejCcEs{aMq{{f$9f|UOYa{LSQ_j3)F z_%HbWA23WPRP?_f=RaTqbdbn@L9TzmG_fFkB%p(tf$hI}h_vySzy+!r7+M*VflSCm zK{k%YHjb~gni)X>0@V?Lj>fM4X24G(}ANP+#~gP4J%fr_nxkugx-!20zxbZ`U!`04&f zT*VP&|C$6Sry>fnwzW5Qa4`M~{C9PL+z)6Og?%@L%Qg)9C%b2=UR5G2rWKC<;IhpaKy6U)nqX+<;H7Hg*6HfEVx{zzSe~)nWh+0Nd*k z+v_Iwis2spQ^A{8CHqA~^iRj)Kl`69#UJ_8O+f;{0+#toq!0nP07*$m zviB_9?^$@bS=nFhRDeHymj78MUi&Y_sl)$C_L?0T@ZYPt*W`o%NpmX`V={LqGR4t_20eNBrC_+MUJzOwMov~OQ~E~=C&a&}TJ|LVH@sr!%o z>8AYAe@ggIXXXD+|Hto-{wseO_{+dw2L3Yemw~?w{AJ)T1AiI#%fMd-{xa~Ffxis= z|C0fi&;I)&2ynee9o}k;KedZ_Dj^}ZzyA;YuZ5M~vmVB!#)n)jCH4IQ)1}CzCqt6frV$gNm249*$3CW z6t5d#(3YHUKw;3bkzZj$d7+UDM#O~;xSVec!6Qk34=X8Jf#=`imt=Yoz9l+c4ZwE4 zwS3XL+PmDVUf^ItD=n=~@CcZjflRC9JBS5f*qdDA(nLEwG`vmKvU2Z$s1JU_Y9r*%;79Ry-Nk%89#ar5Q-)7HLt)@qRRj5AJm9=*+_=4T{t() z%X~k-J4fe^$$=y3OSOgisMRCNbK{d0Zn^wz)#1c5)d1uwSmb3>xe<-K9QZ`&CpYti z3n2hEX+F>(fIlnWndr{r7+iY?+b1u~{8QHh0WY)jxs|4mx{&PwjuQ_}f-j+(H5)~U_BmkcC(Qd& z0{^Gps?=m8wA|8*+O?TEukC|SQn2ag00b_M^XKS5>gY_lReJeRZ;S&6^ zm<30ADPgP7P7a}fw5LwMISv2P8_s>y3siuZKMXkEJ{E0WdP^$!u^eo5yj|WqzePJO zBK1go1gqTMTBj)mIbHEY@0CY?Yu6Bx_j^`7Wv(o*zHpyh5bQc|QM(CL3!k_pNcI8` zS1L7nmSy24&d;iPHI)-=@0K!c2J`FPs;^0v=j*y%Y*}LS=SO4QQ(O?>LV_zcl1~#L zrIj4-m)rw?n{L4-9B#gh0wuFNe#}+4kE(;YkTxqPGDkeygM5Tco*7d%13g2p{cC=# zlU?3*TlUtk>^~BL!O$}O9o%4BHG>ndBB>jviSMn(ZQG;6^%-NwR2(r0pHR`UTv z$DkL^S^8aiJIUzbDri+$H~Ga>4c1TZGRwQ5(@p$n&`ajFlOA`G4RTF=65S5A6+-rg zfEH)L^BHhuXxZNK3 zrL1t7ten#e2b0@73$S~Wpnl_*srPqK-XJc&{TEuN&#)K#)ite`8Lj3% z?k0jv#v}G*uejaL<<$dV@a-vR7OXO-O8Sr$S#tRl9UaKpSju$jruAa|GJ&=Y-|5c1 zezT7I1cp-@p%Z+PxHX4#lkj-owA+F2^rDVwy*n=jBS?Fw4u0MQ8q+vIyz3gE*jXOS zz;ocy9cLQnPjC}XFhNXP+7L^-;LBro3<%ZJsrio9@7;sU+`CjQ?=T_MjnIwsx|^)$ zIJ60x{u}aB+LtW2iD|BL$a~U6Vf5-J8gHT5W-N=kq1`*wXr+{`aj*K~p1%8%r{deX zxx_0qfBu}uZM`ghudd!|<}>FP@cYE!jr3i^#+P@U$!g?h+eVsA_Z=ykS8eK$(%r_+ zyX96%i;WzeRrPb7Brec3appDPtxd-3BO->to z9!ci>Wrs5#4T*xZPbJTCoaxaE_ppG>|- zGYdV@9>@iu-4R}Og2T{;PE%`O;~&g+w%*Lym})vcZ!=r$y zK}wYL=Wc(yz0m4adNd_7s*eK+JM%?~mtP)b{A!%CkRd}a4-=pwaC@C!##!X)Irr_n z496y}C+QmLntB?Z^J;;=p4yjLPNA04t0IpRQUs2{w#&K)%Z=efHU%*9C*;nMLh%<3 z$V2q%$jSYLH}0wxqoMcn2@tRGt^*Rvo4iL@SP3D>L*$U7U4e7w=frzGCA&+rmxL@xBiq6~?P(r$7~ykl$Gs(UzFvQ@ z$W2ox<5s)s{c}5Sfdl95o)}5p1K#7!YR&sP_R%LT9`DR5S^EP#Z$25Ve4uv^>HPTW zsz|CRmI9;e)dMvH@qmI*pXYjuSDuj6Y2UdJFXm)V7DdKoY|iN{u=mt>N1J%-WiNh^ ziTVnS^(C_@+w$`0Nsm?sd9*yjg49v~xjf`p<~}n}Vd5P32!FO?{z=ePVO2D%voU%d z!YvIq0eJD~3`IMjYUq4qMq{{)&Qy>GA0fSxy}%CGK>;~%-v zyk*1qJHtvSR`bp>UVil|c5k13c5O$4{9eI-ya+B*yj^|sjOG30mo{qoLSjSl#11Ke z+;HgSHIG&G94@2^QmZ)Kg9<$ws+gGen}jY3S9>Aco!qmW1mmey^ejgTkh+qY=4S{j zcxXOS`}Csw7V$-B9%K1=RRE*&(O9Az?ZKV;bp8IIai|`0pO&>H6whuq_k`xp*}eEY zw0qB3-F>Ta9h@Zvb}7u-)-!>**H0Pky!P4!mva2Fh8#W~L?3!juPTtdJJ`Q}a>uY` zx$dm;6HxtVWTs|%ufc>wA>{8guniF`d@=sK>yQ-)U*!wF%WPens+4819gdyKv2(!DLgaK|=VH*V3N)PkJRK1(G% z8(0>CuFpDYJ3c);3GKp0jCyl$ZaQ6$o`Ok)Xk|@wpYpwTRDhz$2ak-WV$!WiyM-@? zrk?lvS(@{Y&kAXzFHeWJXv*%?+HH3fOp|* z=kr*)dED)|f}!I0Aj6TwbJkn66~X6cVfAa*Q~#>l+0!nDsZPn{%igO2?&}ZSj1wEa z=P54_oJva#PgL)f@nbb#a(a2P(}B>s*B zzU*8SiU51%@5aSUUc)?RT0HkN7%2GRU(|Fu!Nipx40dc`dCGU1RW#0fj6b;y^z3>( z(Z1;Afcg}kCJeae1(A2DgF3)Wa5MWxpctc^Gr~q^uX%IestW02DO#g< z77E|qQ4Q(vs@HaP|HIF_O>kfEZqNNBxYZal_~rO~C@@D%|Qw< zv!K4*dA+Pg3r*Xw+TTTICv3x;Up zNEKFfR)-rr-F=Tr(%k`TwY>NhNs{b!oOjf9imq;uEu?f#lisS|fKIViA_49mJVDMO$79$fS;QOdB_;@z!wj?+e}W?bhm+=^F? z-Z#C-UX#7-k`#Ob4X8$(Ya)k!?A(jy0D>SF#{J)n)I6V-^KgZBvyg>*pKi-0y6a~k zun@H5dG4p1t25x#EO?wq5wd74|!qxlRtTYJR=dBKV)bU3VvuH^{nF@O7{-7cCn3HE&8x9VdUMZ5L5TOcskU!_E=umH~Vy=ei}q~7PSft z?@S_atp-0(lCqxdRKE;A2}zP*XFWo`M9&jcTo7K4-qCB+2|i_b-*mQa?|Z*gtcH9g zDO!Dy&jL~%m+0MzL*j&<$R1X~Pd@%`&t)%i=dJWl2@hF&XrkLcqVP_@F~TI-9-ANg zCHO-gpM@m5mV_2yEC_A0IDE4xeKL;YHzUWrN>RN7U|gR;a`|6Tmf<&lK)>TQ5^3)2 zgId}Lg!imIn;n zI2C+XkbNZU$YM?%&`1ywy=jJNve#q6)S{w>!+O5&*zM zo=6=%+6&ZzW=BZbk)Kzwj0_{ay5(oXh1uC+{CyHf+&0g>@E$hG+lvySq3>p5;RvHe zod)xc=eVtC*r9<#f%`tRoA!{nJkN{xY&p^kN>;r_k$Fz;XX%vHrWzM#kOw2h>CbbL zn-&JOhtmbW?%a>*?IJo~YM*p0xW)0E_=1JL&wQ)!FGgn5``$k_qd+8E*LBRfyyV<{ zulh~J?spCXfBB`&k(LhTyxJ(OuRV%V=I#YtSvg-KU(wHCIrmvj5K}b1+qj>F@h(bl zXcb*8#j4LD`TS>}*hwF#06@S;dgHxm-Cnzr<{6-H(ox)Zka`sc`FNKBjS|BmhRezP zC;R$9!yNPz0B7;on}D=BZZmBU#G&mkkD?UDi*XnSE!x=+gjYJ$@n1MN`wTyl8w2ap zD5VoG-iW_db6=cWEQFnu^HRp3*qIM!@T7X2XFZ;M1j^S(KErwL`LV{SWB{YGNE6;* zWper;m14a8EHzEy;hbHgjCy@_@HN6L0%>|s;9VqDI5MM36m?p7@>MVHge35PWCid4Jzp-c`NXWlKPwh&- z_Yv_=ZT=po&U%t$fb+Jq!O)<&nt^pyWay%h=gMP=LS8n3r_PYfY?NFUZDqjPXf;D`E$8C8kM?BXUJTvP%|{|rqb-3S!Z` z8*UwAY4C9kC`aDX%Bz#B{qb~aEL2ioWx}Lstk~cNceRW2ZjPFdrd)<>S-YZ)U9n=do5MmSv?Fb+Naeni;B-e50GOrZp$P#?hR3r&ebr z*PC$j-lDKh#|o4Ib3|Dq3m^TWEid3Q%ps3sqW=IkKrwK90r&!ktoL+lHu6FuGrOYv zf=x60;!?}f@^WEGLpmL3hF1?mr#_Va^xMaFnW(>!%=yJ!&2NS@vN9w?sor|1rVi=`?g_W8r2(731(?uVf+k->lZFlD0 z3ed98zTNGD|AE?c6eTKs^sqxCv&J6dh5Vjpo@KmB3k3-n4+ZbCEgMmDmDmY&gcOIh zZJd5hzTF%Y>G^}&C+hnb9jR7OR&GNEw-#KyJz)vA%a2ikz-f8s&oDFbaHQO3K2+ie zdlQZNIIJT81RHGS43}Jf^0mWIhwb?pt?DL^UD}z^TOyQo`M%-Yd0Xel{4EM*>D^W| zmeIyF&Uj9)OvP|8GvbodJF#Y9qkaO+gc`-Xx;mT9x)cYk)SFY#k9S2K+;cG3=~rGk zq94`mQT4`WqnS0ie$sd-+Q*qCNuW%_1RD~;9gz094B*<6d_guCi`+ynuD;kvAqh8Y{vvmb~j!4A|Q9ywfBx;k($WVQqj5XHu)K<)RlVR5^90{ zGe5ox(PF*YT6TpD4Qn5@4Z2WR+oe6JE}IeN$glE;0NvhDCkSux%@^bnDHp@JwFcMk zKuz%OhTRt#yNFTY({aBG2ZDy`ej+MM50OjmO69zlWi5%a1RzCD8D(U|M5Lq)2y$ih z2Tli4*_kvaEd zgFbqEpJ2muPN)L6!ZRN(X8Cjc6b>bnA5Fysfs9)HHcy7~ zSaWfA1@Sq;OZ5Cg6dNgj_r`Xmtv&yv={u)IWhp|hhOp45j}E*cOLX4`S*ukj=*N%y zz20?vfvpgv!kmBJI#;z2_A8`=j?rp;dHj-VagEqXQi)a-j)H8@HM7M&e{H3}I6NHR z^j*9uP}9bg)<&)&HTE-Jke@)1!4ejBi3bM!C-gpo4C4X9eN&GiU;olCz?DaVHn1bP zGgJA6%~@P|CDTJ`8D6Jt3ov}wgaAX>PTzrQre4-dDsqh9D?YkCmX45Yo;j3ZtiHyNd&Kp0$6u1LCtf3+ok*9D65B1>_xCJ5U zSZp_XISzsN3+(GPoI5>C0iyCvHr{KBcb}K*4h(K%q_z*BXNR{-%9PmR2a*l6@!A@z zHC^Gg`yw?%##38d#386^UUO$wKh5Z5G14=AobuMkEH6?_s+V9{rbojnvy;=I2rm~5 znYZ?o$IA^K2~4M8&Nf0On}~n#Ou1ca>Xs*e?Ut9SFLs7_$*ER$QYv9Zw`^4*x>+-m zmlcUBoh<~Y;YHxiHy`u0I`|DaTpU}bUNA`Y63#qxOHc1b6};7EuO-2%gH>mP(vzui zlK4nphG5s#KZWCg;j+_yTiT(HA+PM*m>XjUb{xQr>K^w+)Wmm|(9X!e7`9^;={MUE zS=SL~^-z0fthxRy)@Hhfnz(-Ab6^ry4+%M@LY{ZrpZaurTc?!lb$Qbv^5fw;)O=?d zy+HTta$w`UYc7AKSDs3`4lGJB+!_JGPrdOzwWK&JYxd9K0%%M2qEp zYR-!(I_cxPYhg1AT(azS=9LT?VTW<($X)A)fviOyj5Y;poZrG-7DF+E)AS?MS5En2 zJdEQ{@pWR4+?00m)d@OArLoMu51(hT>@dTL2f03&-|~+Oi*WS5TP#er@??RQE}<4omgi#n{YBPp z;yqT2;7mn;LCm4fGF*;kYWNp(p1NSd4c&KpKX>qE*Q$p$k3_g7QW=_SrpLJ>2hNG0 zow*iCwG#N~*QG0#jG;9c7u`3!DnmLvrGJJ~BMO;?Yo17Wuzm|&I~m|{@jTUZBT37k z_;!!S+(>AMv)uGvT(4QdmbaJjs}7R|Z}i1i!9bcDalWs$Y;NEfQ=>k#bmQ>&uZ9kx zNFdaspN1UubL^t$|xMDqU-p(SZa+s@7+Z$VoAJNs-Nt;ERH?10zbGGvy z^4B~ZDk04kFqH1sL}N(6GCKE^4um2~fkPnoVeNxQRt}mPa8m zd*DmQEqng(Nm}s3S#zGY_#LHbR2Jbi!@;?PeRr>e&JDg$oXZCKj}dMgKZ3?U-+&Yx z*b)lpDxI9%n7m8X9PN^q*?njZIJj6jgT``uw~I1BuSdyM1;9`0hs8=Shx=NE@dBHu zct`2S8%2c6J#5d+-4rXt~DH7Lzy>%!%&9s zelVnH%Z$;N7GODF0X@?LA!vk&J_~CkNb{@8N}oy$44j9hegYY=%iR`=S--$-oMK@y zsVr5LwaWIY@Gc5E{yN|S%14pvucyHF`Q{z2FOSw*a&C*Hu%W%!F~C+?(3; zaEAr^#v@GXQ`Qrrvmw&q#`&aWSu!n)i)V3+iNo`SzR+( zpiDS^SIBaWM@22oGM;*KpqH~uVDB%$0IcRSukNvPOV?7$KDr3uC3Y-2oR6Rl-j?-* z_b&6~=c3wR2L}4zM8IQ#+&~z!Eu-B#Od!UZVXZM(vPwLrISqR7Y zr88N*2!DvzQfg7xMwhO``}!e$So(=U+Q<|{m3xYsYJ$ZH5Y7_R*X6i6nU|h3VCp3) zB&LHI_2c#L3@hpys?07!R`0*;6(5DFja|(O?!|~!s;OwT4b%wgId$GdO=QMqLp9U7 z@}xd6O_MyIRK%@*0?`W)CsEsUnG+_5rS`gtb%ZPK`+%fr3i*D8B=cNTX>RbEq65Qu z74oauLTvagIx2iSEXUDl*r&y*51CWiBZ<0eIx2mU^@wtYVlwt?Y#RshGt}x>QfxC4 z`Z9o}u9*9D?~ZS@AC2xQ3*};WC@_gtD&6gS!x%LiG9FIM{A(S<=vG$L_mko}UKW0l zAT~)3dBY9Bcofem*Kupx*CmVcEl07Wh$K7@qEmx#$7CAls0|}#*idG599v{2?8ZFb z;~aFeqfjmNPL(EVj(oNwnk zYv;N|3I3`la3zD;UkXjrJQx&Owj)rj-GKFJ;iDv;!u{eR5BdP$y-eF|P5K=I=z4{E z=ndMdQ`O;)JI8;5ps<2qK!+l-sl{sMjBiXiXY2sF1->33IOiQVvm_xzvHTJ zrX}5{OCM+g4wI-zw$<&`oee_HgenltF>bJJ7h2DJCC^lBJ|QGRc{#O~GtgV*2>|>&h+ft2h1*Y7g%MDF_MVW)FX0kY(Fha2{zMqHmJs z#wW6EuhC%QeG2KHB%4p+nNjXq60A-n6SJanX{9Y2A^duhWSUz)AN2vVkEC;v@dATo z&cS$*^WBnS3lGRghv|rk{+CvaMh`t%$4^dyxTBA0mgQrRTHQB(-*PwBytO8O2h)M=Koxd*&ai1i`Ro0g zW0?agRH0Jh7h7AukCPGon~HCmQva zPY@YO;CL9roFkfeeS-UN$;a}K4&r#C(xZD0UX~T?SL-*ZuU}TQw5frr<5uDBgU0>~ zrs^6$XyBE;D}AuU*0n2-aNIZk_2Bl_*!ioC{mcz&La~d*0V=Kp5lzN}%|=u`1=5H6 zHwPHHGn!3r)`jviRgxYi36rqq$TgcO^H%2;MBE%Z-?t+nB3|L^(=R+j(70ytA69Um~7u)x6xoIU^_!(0vc24PTDGTn$@r; z3DR>|HA8%ZTg8dR&6<5P#PH9{5 zAHKOH>*y%tU2UNSN=sARW4CSDtOe9KNvB=#SFa`j`Si7jp{f3gM_a5 zB>aS5U$60vE=ch3mK1TL!{W^YW*nQX?@v&OeCId5FsElSW;iFjzU2_}q^v-Hb~#%3 zfLSEz9NgA2>|#N!^{9NN~`>)2^Upoye2(ug6llaoQ=J}0trT|u?4O1yjoHK++Q#Ps2+ec2VE^#h_ z_2rJ*)6%4?wLI|;OjC|N?NCQaeLXMZ+xtakp16FkGTqPu02>OX+f zP@us}{nnv*BdW>W)AiHBAg)Vm0k?)-$3yj-p54dmWRB5L$a165;F)Roe%1P^rRolDahVp3N7NTN3a+rx|0*X((L~kE8bzqHCE-9AtW_O%^yf z?>3EDIo%T2IL!{p?F|k*co{plI`s@73iXR6!XZ~1wN_H*0JgAcz-KN6)Op~V9cZYh&a@Q zy-r&tnw&X|By>?5PVqhTct5&dYl#E}z8nfXAML)UaoAgE9eWA$ic5`%6enUU8nvQO zarD7;^xF)3w#Z(am+k@Ll}}R7d8zy4qKjJ9F%d`@W`CEAqVDQS3io9Z-4Ne&xBNJT z%R#_XFRBV?oCgN~dJa2slEu5!{Ro3)5WYVHm#@Zvw16rXELCr09KN>PfnpAi)@o`r zxG%3L$&-`b-wW$p{IGLaa|PQ*D7sii^ejs;jcmJYZE|HxUPECNN(yM#!z^B$5y}WS z$rB|k>}hU>nj5T*vOqSgvEK^0(f%IRt#9@Gs5J*CWFxL2iLPQ7f3%U|kr+ zA}=P{aqk4q! zD*fo9--r;dq&k65N?piBJ3DRAx&z7JmuPtU>)PLJe=c+S%+@^ld)*+~X;s5hs>|`) zHwfGNrQ>#tskdo1^QLFa$I5{%@J;Nz;rtCS&099GPQ_D`Zper(+6?}MUKGip@-d&@ z9IGF2Sq<%Uyxy=b*32xI!b`(KaW_=I!0T*Ok{MMx!%a8a z%ljL-Fw~2$TzI@~`hH}_9U`9=_C4tVbJ$g)#a9?s_<8E5c4!xG;Bx&+bk)~44sZ+U zpZciR-wYQmVk6(L!W}97q@9}?M6Vd;`Ifl0-l9JV`$4EV7n`};fYkDGSZ z*qXW*tBwkM&#QmLHy|-|oj#T^M(P4@6@iiO_de3E9wFky?(O2e|>0PE> z7HfZ_j75#gGI65*2B{&5C9+fbUH{+A9vuc17IWgF^E($=k-qH>p1{_wbR6Z9vHsNu zN1@vHl2t9e?^eb9DERzy!dmBB*uHg#kM(A+jrhIgF;$J``?WgJwO3d5rMeSdYC!Wk zAyV0AUqh%uNR-5(iD0e?mD;?>BFaMDfuCzFbMA%8o7VqW9BkswOA|a^uo-c9MJx+O?3!fL%>AEb6~FKv!;D}$H{_*ql;mGbvM11VTMMwR@ZyHB)Nn(Gi+N`$O4T&x zkgjAII!n`(@AB=)xc2pA_r#|iQ7gN=m*oL*QZ%%g2OWs&1 z{Q_ZKCcvslJbp(VI}Tw{4JE9>$i^)}hoNNeRtQu3B_dsfX+LBV9z$NZ>cp6**JqHAD^TlNVy#*7Y63S?$M@a-U7(11*uI#^-28Qz7+ zMg8eJzxMM|5*8~`mlx5c#%8MUgNJWYptHJ&mys@%1oi%aRe?U z&xJKFs~ZkIi5W^DCep{Zhj57?lpl5#>9OHQ{^VMp<6mzpeeJ(`%%D3 z;RO8Hlv);3Dd?`j6DzA5PR^|q9{q21RQ67M-iW=8D9G`#y-V0zY;7iRzhsFt7PtuF z+&#mORMxZUPmDHVo*!(SQ?aX8$ZwH2{VlGLxNsz$AST>prQd++^qU9=!zea_;8BC* zS%eW`6XsNb+?03^k^GKXo))Md+;%9pWwt)=$zmXSzEr zn|*6EYi{^)Ad~?&XM(m67-TM+%FKm8PHYYCe!h?1*lP~%*rjd}&WS!JTCS&11D^3Q z*>DRb#va<6i@K!>+1YaGO01xd2AFbKlNRf*<2A3c?M^K%s|J(P*729aHJf7%>r z)Y@;V8Ix!UG>x}2A{ofUUzAk58Tt6b<_%IZ{JelC@3F=8s1+&7Z+ES;ao1w@cJ36% zNDC|WxdtgRKfI}g=f}{vZ>etdT7|g;)>hFYRpwFA_x(?b91XA!j+L@!Su9arOKo%{WxhoW9xeS>Eq$7(MkPKiEM>Mu#3y|R`*Da1>tj4Q~av-cnulg2^qqI z2PrS#f46Jye|GJfW5mt@?|rdw}}4G!GP*x%j+$ty-(xK zlb1cfvU6;Ifz!-*KZhc7(}(a$$Z7-z>I`L;v)H zCD5nAx*sLLyVCxS!C?eLD3^hM^M21HAWWV2vcuRE3OF(GnI}?@Y29Khc@j^Orn5me z@{Qi7L8Rbu#aVTg0S99*-ti;i8O1ztCjqes!R92#y=5lgxAItyZ*YEPW2^itv^Zfl zp*p&}7J0oMCUw~$Lx+^xusN*c;fUY2T{fn zio0}#CqfDBt%xPx%3#KmWRhOMY183<*qWknvkI!;)c*Q*A0zKOd@l#jaKcGMOX$K9 za#_Gp(S|43xk;Y6rttGfmIoo;NFvO!*iJY8GUH9M1QN%zy?a*!(D$@SBTn@|ya9s- z@!4v-p)IyOc!@CuW!!u4-dQs?;=qJ!lNgq;`l!6&*U!V7i*#&wm|MSGo(P`9nu@Pz z{kyIdGMEksx8@a4D0EoH3RQ-LEA+RiaHy)&>rQ6HyA00PZiop3fhD#= zG`5z}i^QAHUq58~ULn1aTqq=OY$YgU6EnlQ$e@@ZkVkDg@nL0pxCQKrs;P|*%x2c< zy|rzl#}X=FuF;*gZ9pX>@#RzFn=}>JE#TjWCJxfJqD9P1A|)}FBWk0{???3Wphg$7 zbp|l79gEy26?&10cEQDvauP>7(&f}kV1?&qZD$%TlNOPeL~zf6nwYVvBEy6 zTbRv7{NT5R!Jjo}J&VE@e%13(9Vb#SRK)&d+_yY&)!z%aBf3#&KBRKWB$CJPkpx%P zr1iCqCU{g^L$;1^dRkl^^Bz3&3lHNbe6z9&cd)JAbKkiziWCWZIy7a#dGWF6Gk+uv zWTSO!uQ>CCW2~{iw2X|{J_rO@vm^O&gqWA|e!TR$%Ge8GIM`OaMY%snfZ6gyUI7@U z^efG*^^0jc^mcr?r(q0UtG7hscxQW*-KGZET5 zm1oV}WJ`<)%M^>)nu1v<)S)34R@qit(e~;x_9Lz18oMVmN|btCGWgQvZ)elQwI5h0 z)A{q0XgQHFzJ%u!zfAX{her8wpU@*kSFNLtVCq?i8Mxe@1gj(+l*e&}3bbED-F*wz zB#@N%671qIVCu@J=wP3vWX0XdacXAesAH&rpE+p(F6CgwxTm3;)#9_d&CBqd7@uwT zU&zZ5VXR>7&TJ81yONPfF(+k5X0qt#G2jtIU0j3&zw1a%U(R*dY4Mn}en;X}mK96= zvq1h6hDz0^$ve0sBSIO5JY5IgD5sAJHTM!NnTRfT`0hH30va z=KXTgP(O4i-7rO(l|~#&e6$Mu#R;}C=a2x;&othOqSLL)`_$B3a3=-1m)PN$8LXo0 z>GJWX@2N1l;$>)z$#L}zJ~(|qfn|YuPi^%r`Fh=iPf4G{Iz5&$UZ{v9c68u(XW$0M z+13#Jf(`)oh{#Amkec#hfnpoM5_8LM*+A~pzT#axb7@9eK|A{jA{tHcx zWW3aEJ2mj*?ANz(a{Iz1Ud?#TmE!nGis-)Y$35=SjTaPvIXeTun$P0;%pYzp+%8P} z)ZT3Amd@(h{BE4KNYraK)aIILPjJtg?FJnwTeC?Jf2Fm0%CQQKkNfaI&s6YmjRMDv zOBW_P5wT&{K>?fhDWsE$m5Q2G(gSJh*NKL8k3(u?BtMm)pdE)GvBN%X< zC6$#5sw_1_*hRG}9M~YUNR{Gw|J^JE$1ENM4pM>^Dkp68CYHn=5;z#6bk1684=nz- zPBe2OB8i|7&KpWwq&GD2YZuxMT7l>?G?(h^3gTF>eKpu~_bA?PY>ZK#ms*;zgu`XH z1~w0-IKLt9^P&Glv%ws*Y`#~so%M{t+1)HH5)1!6EWRA3sZP+e92gN%X{6p^PAlqL zrmfLJy}H<~lU!lL^Jd&JlHttTx%C?ZX;Wl$rx9!WtZ%dRLhNxWr$L$J|7lzym)WmC;VP|zZ6`F)*Pq6AQdikK{9+C9NwIlXlxhV zXAKdH>JOq0ywY&c2PSc|ZGp7PfWzyWPrT#6BM>`AK1L_i$|*{Z!|v||nC74;ew(1w zqz_}r-bR<_o@e+PV_lI4T;-A2wyp1^WZ6tO9pg6Usjd@wZYOkRZP{?8Np0`dnRw!>XK{7XJW> z-;z>yZ5jvdKC5C(QN=b%WwIa2eWE(8am2l;-0Q@#E;qN-hxS?VhG4?$ux^K%4ATL{NX$z1ifo? zHP}pwDq9@U^0E``U#^e8VCF`x4HP_djHzYdYxP(Sc;D9K-GAZ>Po3ow>{_V&4iSE2xtca&F=Y2T8wIW()gQ?!6)8XLn{9zs+qF!xtOtcwg`9S{t6HLV{ZaACNx=;yd ztf;38QaRUS-I`RRZl=IhCO%ZpegINn^FZ!b*xee#PUyN2l-X($x54zS%OxLBR^oAp zQtp*|RGYY1JpTX>>gK|`YVi-#mx2`D(M3_qQ%%|%_Q*Ruw5-wbNNCu`{Kv0%e1^Za zqj|4>qk{WC06IX$ztH@9c3miR`mbOj9_E3ux8A9ov>?;-z152y0f9TqS-h0z7f&mn z(Y~g&2*682&QeE6dCv{Pvg1IIK%z~{x(_QD6}%@$yaTr*NW?Crla>z+ml{ceUUx(Z zuUtFpi^&|kX0r&@U^T@t*~XQ4%)YHuNisi2F%)EZ*l@gs8w$aP!rUZ`D#<^z!H31# zq$u05kilne92ZQs-Iea;E6}btc3Lz`CR9)vJJimFqjKK|yCRhP;m3tMB?K{eL$TeJcUM~}d7-0W9i^&DAu&yRaAdq@*j;httLFS%rU zKXdF!^yXfqa)kbYilG`7MUyxjAi8Z-eb`CUvG8oc|GlD|?{wZVsJQ z%pIJB7-s4|9`j2UM@EsPd9qmlWJv+5Bm!ba;KL!y!Lzjb^g=usSgWMIzI$%56Gof& z!!S)QCKA@CQ-B{v@+Rd3pyT3ZNg5?Qq?*@#bv#z$P?UP+N<>w+0R==21?5bdR7a2u zU8WNZUTnKM4iehgVzFhzFamVM9d30z@#ZqAYy*#!nK8jPh2(lX?lKN0UK+pw61+vS zQmwF%gP@qvP3(t`EI;9aFgq>TNUgZxv2dS$yTb=(?H;odvEqr7ZEj>@8Xi*L`y8!X zq-~P-2mk=bRo&z_G_njl5>e1oAW22bzxjm7lnM???Z7L(|Ob#4OkF_hw359K; zyqt5uoJrfWC7;CzY6=SN<~E#*iHn-EnCb&K*oUA*LTo9^Z7M6l+h9R3Ds?V}Wk8e? zI1eLG-5YO(w8R4`2-K*xO?vIvq`-(NmE1HK6slyLRR=kx|78@Ps0v7kF_>)BeAza2 z1JsBX4{BBmL6gmBgNohu7zCdkU`T;)GN%$5B>}lol!$|7;bqLchYGq{1Jowe`qgu# zo0|wZK-$^CM+wX-*25x*f}{|zxdhbPB0}4lw$m6uvFxjqbR1|=l!H>(Z&Kin=hQ~)6LWrscOgO?&e6wx2a{p_o5+JZHRjD*lRZV zmls?nHYx@sf}My7FLtN2qz~oPM770Sl~lFTCo24KA!YiM|hgrS!`|~!HCSP z*H|NhCV|$mzb;*`ta0i2BlQ#^*9~L1i?~=>y(Kmj21#z;T)7fb6|67ZkSsSP=hO%~ z`WGkx#JJyQvv=ILa?U}Oc46!^Yuaw~lClmZ$1G!N6e_DQXj4l zn>CswW;a4)oe)$MD0HW9?6?4Qe;F~28s=E>_Vu`~C-!`V<)^N|XU9`HNE9Vz z+GS&e+~jDI5xVy7rv+mewT37y$>6pXfgA*LlTLaPr?r#U2k)oVT*P811PHg63nhjJ z&X|j>hw<7wlF~M{o&g72ua62PA45v?_a+oiy`tKwqL;IU(a@QCA2P{lR5XFf9@V%P z$jdJN;Q2p!?vR)4oXOTVK>I47@Ocl%7S?pom2pN|qSJ7x&K2AZ)WiQ*VAK?OK@uOsA9ffEwmxcapo&tg}X`@p-)sQ0dr zxib>Fj}WSN*8F1h{nJzu8??M(+cOHWv3v@4ts84$#y4m}ODa{XPr+8Ghc$-yMpR%| z_^q6Wb?I`>begH-1T|=F3f7@f4Fo|83Pk+uL;nF6RU>tF2ar2E5gzVa4TFO9joU|3 zjg}jGCxFfr*eRO_GB%LY^ED>B3*Aix%cIAGHi^cTMAP5^8XC)LhyTQ+NDTvJp z@WrAIdN7-S10#lTix^tOycRX5jxt`br=8c#Pa_hRs0i$syspR`-wpS0`Nt%4vGdJQ z@P!gHR@bZv7J-Jn#ONgJP<~!G7n~2NIq%liiX{R;6hU*8nOd5V`1*y>AVWOhR z2Fu7d%hqo)9~d(7oBGVl1LzkwIRBn+eRM~bV9S=UT)8{(GE)3iK!XP2n9wVTF;2iK7(TLW?=d59xmU^av%N zM+YagkC+LReGL6L+$&6{#xU4tQJg`vkBwa=NZcg&?LrD{Y#li(?gu^cB!8DMcTGPM z`s)!4kJM-7I+}w9j3fxpnIF+Bt*Wd=+!YwstM(5~x!mraffD&8HC%8}ZmJW2dTc_k zkR$M(zMgKen+xHTpS}+D*Z=`lC0kiQxy;zb*SZrto}$7u0_#~7FQZa&*EAS2VtK1N zvxCq|Cwl-FhjxZJtLl-!!XHBFM*Vr|)aq#8k|!&|Ig}+*zxCf#^fBmw73jt~hW_;=p^bj^(2eAJblZt>as$V;off6aFytB1Z25-+jd%WWL| znJF_M6y#-P8k|I_{`_EAz+P6?!-~XFW!O5V`p*GIZmtAkOnMBH6|uw`S}8 z|2ja3a}PDj3e_!pKicy$n(dD~fQ*LYL9sP4(xkA1?gCNFp9aN^?+smzp^$2yVxtMO z*%LDE(haD5gPY?SYj;diI;WR%(|K-Mx-eC%WzbLV?>W+eA(n%w@2uPTBbhXQdjkf( zQ5Enz6csLu(L=_*QlqZJ;U}^^fT!=yFw3`*wiMTvmhM^}P{xI(q^zrttUHrA`%8-1 z?Sc4=64LI%_@gKNXixi6IwW#jdHHJh_J-mE74eh?cU$2aU~?VC|0n) zHfg&H zHC+6LP)#puU5pV$m`fXlAanxcWh-}tTp6ntN*s0fCVWquSG0b4IXqZ-<9N;qc<|K~ zc)Kzy)7X6s(L?{w`6I}@UnYrQB)p!r?sPI8DKPS%bWw#Hk<_U@*;FNiFt@4I- zr2lv~rP>*sR#d9Hp*6 z7`M)RC}_`lHhrP(@#g)f>rCg++dOcA;X9SMkoz(bm4)F()5&8N3W&gKhh_?O`UI@u z8HhXc{&ikuO76T=q0jh(PjsmG+Bh~{oTpKON4QwMav8=MvDoq@j)q2ZdKC_h-yJ$g zHj^L<%VC#^fb?BXA^!gTAHSm~^Ztt8f%55e< zZdsIToE5_`8RlRSf-B?&nX}OKoEX3z?^1aFTI>_`_n&GsLhiyGyHo;UL>h@A}ByDCI zY&Id2WmE}wfC3-;yT!5^teZ1U3JN5^4gz~gX>L38#X~&Z9&k8r5zUzp$)9;ByuBRX zF*9j0R5|dT#=$>%Bi_n}K2mPwnIwM0%wER{u=RVmxo*?iL^;UMUN zcBy+4rLzOaIb8UpA0UP#hxho)dJ=cYWD@WtWJ`i?c3s1ZCl#YBFrMe?<2J6bD5hpi zkvm+|)Ah-RgBvZjURQU=6@M_}Sy@Ov1u%c7hqf|Y^9S?BS*t>+lkM5+2D)3KQ*iKZ zqfBFRtzKw(9n2E~dHgSopje%W%`t4{YMn;XJW%j*XR04MQ_A>#Nad5YoD=|VoiU_o zKum!lh|7M6Ae;zF`Gfy@2su@>!l;=#T~M5@1zdoOl^`Ex9-yO9bb2})^S;>%#`<~a z&!5aqQd1`u*_0Asb{AghQ=J`5T}!CoBm{zZH`|3))wO2{v}#fZV*9JG`7AaAA`$@PS*tAJPpM^hpcvq95bV4=v<( z2#GO0g-wh8@1$xBq&RqYP?ME|EWaT&Bl6l-dATdpKEuTQ#o$v6SfCn&z}{IfR!XsE zeIHov%L=Eo9YNitUop;4kUWL!MlS<9tewcZ;NkWujri&%l|KkHE?P{buFA^7E(!Oq z8=nX_-g!;L_K^nSkjQCTG5e1};KKnTDGdb926{PFd516x92TvSN!^@^KnDtjEj;TC zT$38B91ES6N-#1Uc_R~fMYp_9iY$KhvQ4o`MYZA!Hj3#`*6CnhJ_%JnKSdKlaCAkF zxeF$k8AOjrcxcwRlHYhJdTmk zaNlUJBT-+C8p+kE4GVSe7CJP@rY;w=0S4w()Z+mhW76(EavKB+HcTgUA(G9go9`NO zTdHne>i$E5k#6G_#~yMkaLa~-ujHhAso6933!z1QYf}?o5hCEmNLEI|dbyqXSV(d- zEnpFmqIbF|c?EW31~nJWQp0hJKNwTFs5A#!z*0DVMylO#IPFqk3~PwzwUgE&7B>)z zl`i;l<8xlk7@pg-#^J6ww{hzhX!cDUdT?4+t69qjMQ2~_so>>ir0P)HC}a=ICTWj` z_RI%`1yRhBZtx>59OLY04|?RgjRijLtOWyYun@gx6zKt%TBbfWT(>i8#;{290e@I#7y3t)Y2#2M5Bd~+i+st z_hOwxZWgfVK)nXDy8P{||JlqVLnAz)%k8OX;GF0L3l7^e0Xub0wX4inwh$L{lk#jx z_nIfA+ig*oX?k`Cpg`lVxf|3nPT1yY2r=%%P= zpqBchPnG8v#Hq{dnB6{sM-U(WQ9emi_0D}ZpdIa9eF&R#010GcvzRB z9GG<#{H=PB@{OuaI= zV@IxM&)12vjbRP#3hIj$1~Xg1Ztut3Zg(1nCeHdb^$}l@*S=TWmby}@Yt3|JCei^O zh!GDZA&VX{5$k1~7!QH*lO&Q*_+V`Tflv=_!=qZmDMP%ql%Q&8$y^KzwHNGw(n{_Q zD9Lc<6)UgdO>uXw4O`?NXBayj=G7OHZnNh3IO`GeIN<#$WE-I~PbY%zi2C*_5Gz#j zPh0|hEH}s8Nmk7}e>7E!?2j3>P%~7$nnE>-K3+O@42h3Q@t9x=*2E0 z)e4!@M6wVUmtn~L-tLhd=tKV$FNwC8Fz}o5&gFzYL zw%&95Ez!^uAVdV@gnHFDT&AT2hlctU2o)g4(L9)Q=cAu~Nv3fQeW6Ri2eef9Ys*eU<*g1R-n-l-tW@M*3vn!CrUkIBdh8&-e5 z8xuY^9smZ(O_Jv8w3f7~AxkN%Z$HI1J7Zj91BxM3b-r|N<~_r(oAa_o2!rc$!e?jO zBBQaZvGkqPi0sDfB=N5L3epZ{@4M-KE<{u6szgmtQxb@#~Bao!o5%cfOtOH z!D}^);!6v>v*;srV&U5ZkL)c4mCNmOL6Men4C7(X;6%s95A_8;ic)GK2QYtmROjs7 z>i&xV<@#mYNiR>#4AXsAd%{bo`WH6OcQtO@Pv_RLsGCj&CA7fNXF|P@Oqp6l*ga9P zV}J(B&UvEcCOD_DqRnozGPdv&Cvt;&22ymQ;64X#OSaFy9?EqJ3X@Dkf*n+K6V+^W z!ur>qriZc#ciV`#juGTQ#S4-lKo2JqdjQ>C6p#`X2q5>|o+y$sBPx_p`zeKnP_5c% zPZiw+Y|7|+EO(GcCZh)-zs%GtAw3P3f#yYnMvS73UG!c~2JK?yb|wjv3HI!acvEU` z<`mgI>0Ln~Np_tfMEw_ua6=Yc5>z+uRXC+%0l|A@{RiCyIn0WFoP}Dr9s|G7n4av( z4Eo4eQY-exGW@SU3S-x8z5q5r3mh~%6_Y_RY3buhBG*|xMCw41U2)8rRH-1FkYa@! zJQox4)ASHUYe;U6^gulQUpnhS7>*#i2t3}6zMF0Uxki}dTvcTC<(O;NbrS~=CG(ZX z)UcOpL{zi6ahe;VIGBPOQnkNM)4b>vU7;x@lSRrU1t&0!%*>?hE+DfJ?p)|nrSq&|fb)u3l$%v98wiS|zX@9+b2iQHHfIhr>=!~}|9 zCi?2F$rC!?cnm-*le0qW zr#yHWe5hWkN^?7nCPvY06^hM6+aLCnS`q%k-D*;ho)2}VE1S}940Y>qf2m0q3UgEP z3vhFK?>?C?u(3cOVeBN+&TRY{RtPjD9$*hin~ z0^7({stC{zgvZ)jvy{timd4f~aL2J~a$Ftj00P$x=nAq$0-}t`i$&?{?SrQ3v6tlJ z=m$3YP3tzZP!^laf!d2t4N-Nk&6Xx^X!U7V3xpj?(#~O<7%@d zu$emQ%SL)syRQiH2G~gR`1~<#`*5^9L@AdmN>ADq>q-yh-f45KdOQ7s^N5TaI;S3c zQgwA6dX(x$f8OhS^w~ngVZwJSx^pp$HtrP%qhym}}S?JX#M;pzYJ;BIF5F zEt99fqV@qJk<3%h z_zIlU^nARmHwK!d>&^*~cOk^g?00^2+>1AatuT^%^^=XVZz5FpTOGpEWf|C^9(loS z_?7_|DSXnqtUzu+&iC-U8f6#^dyJc$Q-L(~jP+ z=NVEd5D@sUzE!Lt$^IWHR8FfFW?BTgXX(;^MAi{p%C+w%&oLxNnEDpM=Ka%>!$`GB z2kJ~r7Id(^O6x^NN9k4R%b&Wlghl-^_T`a&^{MU-Ib~ShQRb8Vy89w{>0g0FZE;A88|KB#M)PQtUA_R`ACh)l9!<^PA$~(Dcg!JL|x+Z+p zq6?N>k`(v=-sdGbDBEt&j{MbT4Fkn+aE!!6R16v-eF5Mj@}W61)DF#-Yldfmfo?$; zW;K8Xwf(8O`#_huhO)p2tJ7IL2)%g(+~nOIKq3pc^uR2S|Oj5#! zSg~>+0|KE2!x+g@Ne)?eGDS*SDbS*9?HYFG?}C@_7ga-^)?bmq9)q1PMH%P3UL`)Ti->)eqxF#K-LVRj1^leY%z#^nwUKq*< z(IPv|vtAw)_L|tI*2L;%$r2~cjY~R|tV3+j&+HoqNc`a&NBY)|oR-x!v$U@3xprkW zKNW#$M0T@zVXdjm0#J{LgNNmMTuWhn)s*J&x!e$Lm`T7lCG$n1dE+$39;uslv4GWV z;XYCtNz>P#y8wE4!EZMSEZ?hH-&MAARTpJ076Cg(A6x56xgX~F9H<(ttSeJLzO3d( zOCEiWqE(CC3~oP2oOyUhPi4PnPQ5P>5K^g9Zy0dfYrb#F)5XB#-j)^uBm27>gR3qo ze|P$`7ex`Z*c9ngc00d+rssGWOk#gX;9I$+dsUb!t+N@7Du9gvSO)p^ro!3k-&M~* zU{HZeh?V-?+K4RTv7}-h_XvS;BfiB$@+UvGhS{cQZh6$xDie~PvA6VW5KX}9VAmJn z9x^PAE46b5#RZH8b@NcOmBT1Cs7gqk)$hAES=VXpP+?%kJ7-Txp_jZ>p6D6_TZ^hX z9r)@@9-}W9xfT-pZ;$Xb3H~FAae>#vPwah%pXhhem7AhnsQAwV_z;QfVRH<9u z)>^~!TKQz%D@z-fOT8*;=~tev3CC2TEgzhIxTaj3bLY*P&!a6L@J3{JXA}XRC;2tY zoc1Q8+Uf)xBCfmP4MWTya3N}Gi?!@Ua7d3;mQ$+xzGd=xw>MNJrFC3oEa&1H4)&zj zFm>%KxBPG6K#y*ecdk@Il z{(aSdRDDP3KYuTmjtVZQ*Jh!!s48G%XudSJSz)D`-nj&MbOqIkhER!DId3ZMrbX_~%cNTk>hyDODoD@!sk5@zZ6+LtM8%G8%1LwXb$dR# zdI>+LuA=mAOjvm6uw3pI6^aFRF13~tkxibJy%1WsXm0p+mW_B&U5U%HK~g~YToJ6s ztzK}^ufnSuz3(~nMiR&IiRLzVYfvS}slUGmzz%rx=qvHM#2SuvrA|F|CMFIHv7 zO{6hI>#=&{97Yr>9(c`yiT4pcI6rS~p|Nb>jq&qeQ(V*BOx`i6navs=tB9^|uz}Qd z+O)aAkWaj~V>s-T6ILys)tA1(xbY*lcD14#j2MAa+LNROB@z@Yxr;z7%E3jcn`f&D zQj&YUn%<)MjKw>U%Q~SlFq&aw{54~On*kn}dJ-~Uyr9w1NLTlpl0334Dphj~B?g&Y zrFbT?|4|hbREj3uWHi?>QobCe291LVh=fn}|HQSczJji^`p1xtVD&qnXDm9#=z2qo z+?$9L>j)LdDYhkV6nRwhbz#l_O$qHnKL<*$-M7Q?`qts62SGo3P}S;)7nIS3>20*< zEg{j><8p1}W&6>&qi`;$pSi)x9QSVLlj$f9I?^Bi{)=@qR0k2f8_^| z^E=gnwHQ771Xt&ttQx@kD!8G$ilyhKADSeL$%K|9RPu#grL#9^mRN@vmVpd4l0JMB#0uYEFrV8Z;^M z)UgEUGQ5gEPuQ#N4QCCJ8zja<_vKop5;nDeDUt_`_9?D`Q}V^muG+gDcqzvwTmSZH z56CWllY!&fT(1BoT6dS_F`MR1ls&pq$}61)WBzw3DH}CIqYt^1(UXZpH#Fo(iqOvt z6^2UIedv`?8hVd?A9ELyTPycJe1)3J-ngUdaly{jALP74a8LeW+Fjna`AZCOx2(Kl zkDK%2>)v%8U#9^8q$&XUUpl~_LI+(X|42g5j5VNP_9zIwP?gC}mva5D0(cm>rw`s7 zjhyfRq2ozFWQn z$daH>;Z)w8zti^pAA^^sy%kIif1S40H`F5je53_(ayE&jQH zLQ{6FIhQ3GXy<3SP(H#RK`zHtFp>7e?gh6~ih)2CWXsj}Ed^rl^d`?P8AlCTj@bBn z*~QIiygb884(W#egZ5&~XzRsL2ZuWl!M5bYf^o^!BdpL&_<`vC?;v00n{Qwx3J7;P zAp+#^3r*OKHg?F3kVte))qCcdoUgC(WySTm)cPV_)bgvUBY8R#tFhNLTom{gWw3xD&^#n;|ml*3!-g zu%IN@m*|s%?6V<*Y+|NC@t1VC*AKFcT^|EK;LI$bwAyQK4j^#%^?fv# zm&oLZ^i|SLEqGlrif>4CB-kS!O~BJo{La80Nh+N=4wOELwR652P!1vRK zr=5bvephQO26LB2bFg2*E3|Ul7$!pmcD-nFr_r7g>zKvdz4XC3+A+~NW@s+(ElDJj zO9aS8&e&ip}ZJZ4Nu+~up%X9gUieNUlXuQQtF8@PYgY0c7 z5jkon(IXsKwrmyEH~7a3EtHJp-rFtBn>zccFC>{rF2umw)|PUWsOJYH65|QS9!P-K z5)xMKhzBAkgm0NLWIy`O!3CQ?scRFE$EQjWy_8C*JScugk0i8Oyf2GAwk#i-5+8PI zE)d_@kb&=H_~4CEr$x?{2|J_gbwnUmF<@6t#K=9zzVvim0L`bsLrsoBIWnm+wujvr zh}3Vq&@>L&vsxw=N)CRNyJA)$*lB(I;_m8#035Q z5D_cB7%YIcs>=v;5b!>`w${8=YrMdK)So`rQIpEh7SLL z4?L=Z(~Utt=EImfv>m%dpq{-^Fhx7wbP#)FNwb*;!uNZ*^|KJJleHM;BUyR~Y*2Xz zu`yULh*+`F^;+bvh3}aRJOS(nBt@3x9HU`Vk>Zn}e&)W;IRiKRn4-(W@q_09zmUoc zORmhWvn(3(GD%uz8jYDo3zcQyAcRqA1*(n`&HHloPs9$CrZpgPIhi3Rt`qB zb5qA!Dl$4-A4R6a0cmnE&b|vPixq-2spq<$*8Ou2c-e1g1OrS`Ii%a(%Pbi}tkl$X zI=;t^ti7^ip0h)HeHeSN#)W&)wCxffgi>oT)X^bm-ak=kxOHvyx>s;W8l6vI`!?!4 zm_cLy?nSW-K7OZfujTO~i+x+avdydT+BiaKstx#(HpA?Yl$3mZlo#N$ zH`A$lAQZ`FrM2U2fAHj2TUu9A!qBkL1p1x@-~o>T(E#g@Yv5dtvc6Sp&fF4J7wcy6 zfOp3uK!1-}joX)Fv4Eiv-XdWi_Yg4fIC6_3O7l-M8Ej;wOdM(sdu-8u7_okm2!sS$ zz5w@(P<2XsM7s{K;*^XOh9QLnHP^boCm5tP` zc3jZ-TajyKbjBUFFPO3NCQ(aTv8A^G9IRO@G2Jps3CJd@-Aib##TDOje$4ZDttR2I zMmDbQ`?=)>Pz?}QVSvb$2?>1m3q}!+BHd|pCEa>Mt4|6f0cC6^6A`zzK%Y53ZpNq; zZXAyb#Zp8iTxN1be8uKVrH7xfhM>A8x^s){q7jtCL4|mhp;0#RMFhpy@Sy05kOfeEJY)q`<6a64&3wnM~B%lW&~o!Pyi+amrI3G3>#@wm`}7H8nW z?8iGah<}cK8SUABbM?$zq-i+QndE;s@aUn*2tO4FB7NTnYI1B#Vx+QK_YC#g**V3ms>7$3uflt(VN;|1CKx8f76fQE0eA}gD zbfwc*&h{7#LMrl(TNncH1c(-w0Ewl0yUWKGx4fJ&((48s zG7hW3*V^Yrs2oyL@VOeCip9f4?&qj=UmUO>A14YUorxJdv-o5z`)7f@nhLn6`*r!J zl7W~V+s-Ws;6t$N|FS;vL$S(qI&W`TEr6%)i!z7ydJqzY&NHUT;nMX6w1+kGzw@NxiEtj3>God z!Pn}cw_L{(HV0J7!PVVUcv_s2BG7>s`i7u-Js=9u552dRDqi18Gx2yG z3`x#;b~c?1DoWExh#+mfZSw-~b+QKdn6oZ(ggxHz`w|C<-j%;n)vZ?Pz%@5%G}Onz z0dfJT+Rf6~Iwf7k*34HSwtqKGQ1QhtWt7!PC;&@G+tQ-B3gi7vEEGX%7}OQTW{@iZ zDUWX7b$^y=wAzpJ0>;BdH*yRnrj8FVVo{4-Q;5Y1sy=sXmG8_XVwJtA3GEeI70b^gG3CzN`DG)hB*0$54bb%@RT3Tjlo z1D$PUz3sO3{kLi(_`G}S4kNd$xklr)2brp4)+y84CcihGZF;=KnL16 z%9XbWt&p3xXF@YkoQ4z+s@-g_?#X&M#uGgzGCS>Am+gTNP>q+}?}rYwbsZ7CZoI+W zzoXo=l_@-k;O$cL->d79<9pn-thwb_1^w*izCh2pan|=V@ifv(Jk(hXB$j?vJ1gQY zZE>kQD7qgfTUSIQ7P<+81#0yzWtn8OFKT=-^F5<3JH)p6GD z2I^5JwQWfqDTJ|e3$d%zHu9{>w2`)=BwR7~b1$u$iTn8oGiPv?&G)(Js~YfM-Ci2z9~Y^`EozN6Qu*-c z2*Ld-#U^wLC#R=_qj07!xO&?@8%Y3AtnJf(&6^=tuJg9DuZ5T914WKIWuc|(oM9yv za6O#YKj6+|PbHVpM>br+ZBSD2ICrD)VLNUp(L~L5k6c5GF?Y^rTy17pCotKKU!eBg z4ArCXp6Vha8713{&e!DA3ZD-1^FUU08T&>R$|!S~qB2dbc?6{hKJ9go=e z2#jVZdPx1w!BW561ycz5+{Y>8m6+aXPfaOPCcS2M^?p zUN66tTU{SWIyrdyi17A1IY+9u(#UYRSK`^oZ^p1idr;ua2C8?~EaUw86+o;6E*Q2> zM#!>ka9dzY)uQEE?L_NFs{;wI;0$=FDzk(iH(QsruvtP%F@w(is=y+O5LkKHi=0?t zy9(_)jRN*!j6~YsVkMOp!nI;vphng~#YG^`To!w&RRL->{pmS)jUXZ3hr+8%I?J0; z_qqC{7r`&Nvq*UlK^-=6hw}2njvOfqtLL;`2Bj!>s_9O8M|S0Tveu$d=v=bm%eJV;1UEX!W7G08Z$!@6^4nsO4^QzJNH>z%Qwr z1G}IdzIT0rK;ebya+WUis9>&c!dXbd@ix1@jaGs(nWltv+HfNEx>xSK$TY(T;?|=S)Ef>~!H$qGAucd6?Mko@rNt#iUEx zTDsA64N!0_WXIq*g>urcG8-tfduE$Q?_APLPTUFJq?dJOFK6Fc zD0??S#~UVN=-p(r7Ss%lrnW^Fnmon>a+>q;|Ay4<>FXRZ=TQK<3BTuiuEws+}Mq;GcXby9t~xf8_jryi+603D?!e&t?F@L2?7)NPf#Xyz$h>YM&| zeteZiuvmv0VQm;O1JR?ckvL9!y-l(~fP=@8q7ATuB~bT8AKKAZ{j(m~3>3gi1*<_8A)6_B|lD$e*K5Gx4e zuo$CgMj5(h)9$O+LZ=>qGb6B$6w<*(l}*%Cf zyyh`lLw(1e-+@aJi1v{3HtRMd*Fz58zf?@3q>zY-^I7>d6-dpv1e|a#vWm92>ooru z#&rzf^`z{TfR-MFSQxgd&1|WNQ^q}*ZWQN_#S=w683y_9Ez>tormjtEC41D^7U?tf z9WW`Nz#Y=>D=+HU#LB|Uc}OFt@4`Gd5G`)`BDs4MyjPF)!Sd(72R#5$5gqzfRN^Y^>^G1-Ex_Ic(`0N ze)H~Mv#~3wdy|`e$Z+nd59Ek8I+?N=m}bRAa!aIwpzf~xRaO<&R*^Ss-p$Gdl(NiN zwFGWkSG=iP#Ek7dAB542OjdXFQY-UxO^GmCz)H8T^+*E|rZrg&k`DPa?egmM{JP}k z+!$zLQa#2Xcm3T1LfgZ}+Mm3sFP>}=wNGQ51;HiU&UeXx;A-$6P~w44B<|Wb!slp1 zfpJ9;PzeuJVBt%p41!kuAK|el|Kdq7Z?n!}dgOG7k3<#Os}*M%%YQg6WkTpfUpaVt z5F2$S;1;O@38+Zc5ixVW$l^h=D$J4H6X3J6Y@zF6jhQn0L5^gto22vpw7>hA-d!4v z63s){)6Juulmjj3%XL>VYU(-dlGTrM*tQE!fo`Ykbx1!t&@fG^T*mNUUSnSYH*~&T zI)Nb7ZXqa9$L(&j?^-SfPdwsZiFgN!NOcOiyZ@Hr%a_5qwceC<&2x9287bdPq!}oE zLZzmMZ`fr-TAEFHU!?LyG1c=_+IbpoBhlN;uIU4G$BL78R6c+PLcT*=>#e#Yo`ig_ zZ$2JCVNc#Y9ZrPa;7@;orqa@tUp8~A9dcP#RDZ0Y?j*Um97aQg=xtTq`W;6zFWad&rz;_hDDdVB7t}J;#v>Avt2^|wSL$c9M;+0+_@3USYTcASjX%G}0Uufb zwm})Vif+!i!R@F;^y{9du4Q{c?ZQgSDkIvpukWMe))on7W(4hTL{*w4W0~VPU~YS- zV;ILft|RDr)?P)E=q%qY?FH&SLy4l#^!du^>BgD=`0L)Ks5E1sWLv{Y`TO7Czt;lr zHSG4dDTyx4n1E&npZ>{v*1J9Xp_+5m*~j)&|JXHwWvTWJnej7fghZg zoeXUte&F1)I7P*mdGiY~);slyudssYH<+05=&26+-`CYHVq@<^H^*u6u?kD}x$2@z zYOMKYKLl{$lP2@|BG=jc^sDw*WG^|1?)#9Y^&?x2q2_h&d%wbL;4yHZgm-T3Y}(rOQ@LfYJn|qwB~smcNKZ+OaYKLKS=+r^m3vShsrE@!$r0EoH@hvhc63Y8 zqBNU)EJQ*|HZS(R>T>*r$OtYwcY_FB06z;3CXq_*@sKW@anFdlolZ(B4z|@eM|aTk z8!P2D?@8@w?!|FFi1a6P1qVjnQ zYsZi@AXIJ7Q-eH2gPOo}$0~#RPy1cFo^E4270DF+_XFO~u{Cq}z@tX-<+0^RpJYKU z*v>GGz5*cjc;D=wRwa^QX&=#vif)&S#t0l3=WC&RKT?LW9O;J3UhZoO7IhBQDG6Tt zl7LjZP@`qGE3DTnf6S=Z`P2OEs%}S5g;BJZ3%{hJE}}vC2#XAi3hM2L&r9vzxNsSn z@ag5^Kdp)?&2hi%gUe5&Cs5yqto`<0o6`^-5SO$DX^pxS)^;|#yt4FE+(`=dw-40$ zatgvGAEBQd3?t%916`ih(n63ctav3PtOJi2kM!(@&xba=uWRq!qZ*+P7HYEM7o>jf*?S!q&_AF(ak$jvw z#OX#$Zi(GUPdua7cT~69#ABJLX7H86!KiUvQm~KSyty8ZSvNJq9ypZQ%4b3%^_vJg zWI_OQE4*$Uw`{MB!{JyhAG3b%AkkPs&%sP&>=3=8G5;a79_7{9;0vbE+O2wMj)lTH zNp*+EF4IDVl>6I5PLucrGr?ZC+XO}gT7pyym2t$M{`de?`Tj{3{iENmCC}JKM-XNe zuN{jok-H-e7fZ4drlorBl9hs5x3XM?%Pu4KrrHKXT4uA`=geI@0v(@%d&cYs$zku> zXw{+jjS2Bhge1vm#qa&!s|k zB@oN2>cn%I?(Z#iDd?En`hG0V9p4=;87*z%K)p+T!C^LVG|kYL`N)rHb5~xYCE^ux zA~%SjXm3BJCTRP~Z12s?N7TR~Lnqe3cK*~#kwpM~bK^&%&5>dgTnbhuPkm&{KvsEe zqcYOFgF@L-9n?R(_jmU{otD>@NG{2JjZICyx&pae&?$09XN3y|dp_={JA)Fd%=RhI zcHQB(B;*t*(c1v+;-6OQLH?YPd#z|i(_3_7z zS;D_9HeVTU6z=~>nZtxU8=*b!oHn?(Bhs4!oqG3D)FXLf1ZZNvDp2|-Th#FU0 z!cf+L%jK4nMyYeu1vNCRL5tUv1v!$PI)K+Os@vYh7&yp#* z@-fb^+p*AhXRC4{VBE`_Az||<0*IrU4r@W^%aXg5N(ol7JqaGTJo>N4NaN);VG&X~ z@Sn-eWA|!)V3G7PbY2H0u|ij1Oym!TTpK@MCG%F8*!{lqTO!ylpF#I$aYQVM0^Q~I zTdrSHQC{*Iyf7MLN|$YagJf;N@3}_qNw9skS3f6`j7*dywku+?bo7Uegcqyv+2pr= z#G2a18B6Y@rFHe7r!#Aw;V&}iEZ8Hs;U5V%LVBx*(4usw+g*}SCv?SY`kvGMJm-03 z{-NDz+G@JLW zqwRiWD6*71$)(iDheNS{j5cJ7F*B?~h2+>^tx}Te9yUuIQHV5kO^WsC^q`K7h8&i2 zFPEw`kro}pz7TTeHVXFvsiaWj^XxC4 z6gX^&*u|yyS99}!56$n zHhQx==}l}V0AEdK;h$Waq3X4!H}}K~zt}I9puSD^_Lp8S1UncJvpAQzf+B`^c*{m5 z9DNh~s!J^G09i0@TkS5lQ(>2GsME9>x|L~!GqQbLeiczq5zFHs{|hZ2r#=z0XlwQo z1tCV-Qy#DVqH#D$1Gj54h7eSyE5eu`ztW!OYMDAvjg&a=*=V)Q>2tledIG+D&UR$E z-B18gBf#SB{Sb}!d3}+FRHW6j*3Q?GkqjK7AO<91-$*YoXgUP$!<&H^x8TtUYmQFLVmGDLS}JS80!lnG{sx zEJ3C>`6~FM5N~s4Nqet(+K3}P%F8&4dNZ|>>n6*^HMHz~>T=pOdNU3e&X?mEo`Pbx)Ie-v z;NfPhOw#rI1J|>MTNDWm;%TCXB3P09bs~)^?>9?r6xmUK%P%HQk`1p;^4HKGN7__l z&?17S**qpyhuEK0)ObA}1cnI87j^;b()_FW^Fai}o>fZv)5g3c1AVN#q~k3gNHfhG zknaPV8U1kerQ)4Q@gOdVk_>)t2B}L|L|NP`*xsSD)u%`U!*|kpBD94bEz zW|Oeb`R@=ewmF-QizgISy~V-m8yd1-9@&Jfi>_|_MaeY8gs3&FVw*k(0TV7QX0SU+ zigXNTL{31W7#Gp>M$XW&znGgoM#5K*{?hrCW`8@83->{c?B8P9gnFTfW;*Dob*?Tt z&;zp%xqKCdlloAV8#!IBC1i!oMS1TjGs2YhN$@Zgp~q4(4UCmj0?Nu7o z%^!_Cx9(`=EFtOxq!<@*OZ^p>Png;a{**g}W{;heYkXRc!IzHFY%J!p?0gZ9zF^CT zh;quc(bZRFeoFY5@S**)+zhrVbs|bA zdK@$|Ay}z3ydp9Y78@#QISHqA&~kQ~Uoy#wdg3JF`tAV{_wJ?ISuz<(JjmJkv%O9d zELG1Ly2}!Q;oxZw=?a0dkg2y@pPc;GiOxQvz16nOb@Qk*Uy@!~ou+w^NgU~jcw+A_ z_p2bZq4aioy>vO+zM7o~i2LT6u_5YPo=Tj`1~Wk2+UWxO5?~=MYe+PUa8PeTU+JwZ z`x&ZvhD7N{hOZ{x&Os;R0g|{yzhta9d%~?L4@6g}hx${b_XeLM{HEZk;Y1`RB8QPO zjSO5L!L2AOhi{Z-xa&M;P@({~>C8_Yg$geCb;Ok5yfr>jr)P*Zn|2C{v~$klN&$?+C&~b z%RU&sBm?aQeW8han0Yd3K3uxlGNGZ~S=WDrlXc2LmTtu#Rk7pDxqI=)!$V$6w=vt$ zRpUg_Wr#0I-#q%S$>vChcfe#^HH`6LdNpRs zP&8?)(kz7ztG^Jb;VCkIIE+!mUl7brTGwkHw64xL#|ogd4SxYE3igCY=L%XrcJ=X> z74rE_OQadwq^m0O$7bJ!;p&JPd1;>3`r!rqQh)*(otEx-pu~1zNLWp}SF~)>0MTf$ z3#-1G{wa8kx=ReoR{Bj+nN#g7g`Iz#K^WPVH>l_wonb!@{;5i8vL^%7P4sOh~_lN`^`HhgSOB&k;VFb?@$dtxO%6|SH&2`6#CaE4nv5UPhyHhW$DGVePkTF ztoJw)T{O1#E_zeVVcU{-RdX_Y^Zop;~uUT+ZIQU2)jK=}G49+n(;AdsWf8(oT@z zFDoe1nKYMdy@Erx5c#wpEGLnh+K7x8)WeKvUkGC0yN)Zg;Q;X$2seDbi<@f>N!Adk z9n!qh&i)@3 zrG|YX@s&tgZvoBhbBj~1uy7dtR&rfMuqPf^Zr@EvRz;{RxPw@qh{ic3vT5>fTuhod z!Iy@q1;6HhO6}~Fchg-a(jNaHrbj@M96vBim}{*nq&+n{2SKb4#n$l>{#--FIR{2j28K*_$JFUYX6CKl&JG&2Aw2DXr2XDZ) z+V%LEzq1y#7JqV?+SL9Le@+-OHY|qT?S@{o*Chcg+E1#&0Z{9o_~%c-%*)ZZpu0$u zFQ1X|Dg)i^d!sZ{)2D-HO0%`#5;~Gv@TXQIv#f;nkoSx{6DsdU4o(-ol77aLYq44c z&K4J09*T@T!l<05sEk;GX2aO<@@BtDKj3v}0E~6g+!$|N+jmB?sc`BqgiDFO35Nm+ z1ODJ4Ra5q4%()_(wnBY{^$xddY%Q`vLvlPtlc}~TL3f~>mmCLgHiq6yJa99S@L93c zxW1syX&~F#GuBs|+We;F>j^$8Gb1c#A`pyT1q%ZpQ08BynzRY}r4uS^o6?VSSEphV zYen}ge_C)2EXdl?J7sV-;k79^rq-1R6?F>bpHpSnY8(lfkjtC9h)2rtS<;*u811pR zO3pnggtq9rIhHU!jv!lt6Iz$Fj;)V8THt0!@w2`TG=rEAT81LXUUGWix<$z1;SJQ* zAdOWbjI-9JC{8a{T*8GT4Z<9@;VTT(p4LAume`z&;QM1L-w+}RHId)m(0`Hw)1e(U z0}sqzu0Gy4e0CU%+p0W%d^1lP&P)QwmL5#Vb&Khy<}nvvVt;)av|R(IbpEn=>~&&Q za6?vo1tm^l-3FRdAiRMjfHTD(z8+U-VXglW>i=0`>$JCP6<|}T^T*jH<$|!9$H<`JyP54!W(l!E|w#A`t`N`nh;CFWTz`HQ{B0GWJ8bl0`Vwtfb^N%PJwJQsgc3SahR!ZcF*4t_ zU1n0v*S@ES-{A+C-AO1PY^uG2?pWt>Qn~)zM33sq#K$87y9ud58tuqI7gtN= zB0u=rh*awmAt-uIhtJaO#~m`8es936v4&1xMLesU+5*GB2#PSHO7Ez>QZN4@9?};@y*|Jh_ynloSgp zqcYJxM}qmyTX&)fY=cUcQJ}&8WYC>NhXv;`mxe)@G4Pp`+_{6Eh;a&kxc*t`S#AI0 zdC+_6Ihz)v4>mCiyYNc>V4|K*7tv|9`elhS8+a<5m6tkorM)E{-|n@j(KNi_3^u2l zOEW5(@c>Sh)^>rsH-HRE){~EpZdA=aJ2emQ%l^vsAKHcq!qUNY-v$64Ku(#aZGy0# z^zxEPrg4tZ9y4DT8BgPqZdAs;&%6+DIwE69%IXS{u#8BX!$!bdE3=k}#xx-P5T?r; zXbo~4W!&!i&As7-ixP70S-Lpv?x!5sbuUDx!CgR=V;3q({i;moKJ9vEbNONYpvoqd zAYc78FW1BuxMB}zc4mJ;3Hki#y2C@Wl-F{7aU>v1$YR=#gJ6V$wliPYWz-|`aLh}~ zOyEF2Kzmn|j+e;7nLZfh>N)74_i=fXfdv0c(*|CZ4;` z(DOM=sF?@W9CtJVkGcD%mOxNhQZ!F(Hk8eW%a>+~=WQ^2I8!ln93fqeiaHW+zd{4* zQj%*ro}qY^y>14@XWrgpJsz;Z`Nia@@A7W^8mE#txlD+e!-l*yE}57Ak_X2$ zi!t8ZJ1*pDs(Fj|@x7bad>ho6#2EtW9!K|m$HFh5G2r(?=`Vchbl;EHI*Y3&QRz_z z)e3qbQfceYKo|@>;JPRh4m|)>TUDsbR?+*^To8rEg6)jNe|8a{Pevyf?NqrXSXk@N z_2FI9!B2QX%11$f8UJlPxN_sYkv3>?bvf#*NlyI4q#>!bgavBi< z!>GZ?`Ni|OGl63vyfXnnt=y+Pf>j2LUbhquIlEhEUFbz8Xp*2}uEgEc7bYoD97j5Q zqH8h1)B3_}8Jjhz^gCJs-lolp7Wc+C4x1esDssAhU@ghWFCytW#LjGHi^tUYO_IGR z5!T~v7SH3Ep9NK}oG(7xH-4fZ{#Pw#h)ZiWA*Q?7hjs2il=9(m1vG>{M4>h84uAlZ zVRnHEq-64Fy_)l)B8*=JHzP47H24~b&!-gIX};)#n?_h>H~!K*{vD_JWGa-mdDDEd z3EXDy8uf*vOPR7Q8|<6KJ}Tux$=I~1*k>I)m=io6Qr!+2&gvI!BfMKF1G z^vOr5#4E-is_o2TKMvZIO&T!kntUicxYJ!IWKAvYZsQETjb&?34{%%cCx51`zVMSqdf_ z`sIcF=~^3`ODvG{%`lRbUL~2krbj3i#(%mGSsyI8DUl&{d`k|$l10!B2q$Hy-OTu{ zP@T4QUJu~FiuN@%Qr)Fo)RZ`?Ympb4z5H>ui-he;@OCV1p6x!dgzIv?Y5Ctfw=MgfaN{VlNw9NAyB)L zDBs(8=3F0w7>AHe_?46q8qwyBsGn;Nj}md_kj*ag6QQlpFx+4HOGczCeUN6y=_cqX2%DkC0kO6Y+?mnz~tG)2zAxSAi@0dK`k+ zVTCMWHB(8E(smYL%_-vwXUKF*km!y{sVr#!5lh{t!AFR)dD$s#!Q8?Dp|6FesJ};o z*a_L}KoKIop*8?SvSC}Ch2>I7NF{wzq5P?yXoy)hZ$c_@oi1@uZTqB$X_O&*MuMR% z%2`@3=nLEbT}A%$kQ;-}ium%yie&0wgeSvD`AK`5Vg5&HJd@L<*}U5$oyKm zeV(7rIo*pJc3f^|=TJzjR?v`A_QOw#DcK9P=N1=D4S+e~wX&OSS;QIC?_BrT_ioMn zrP1J^Y9RdOD{MQ?j9+_1syU1VrH$9KqzDYO?h(9hX>;$bnAH8QA3%*{`I9S!U}Idu zHiPALuY}WA^UTto+sJka2^%1BWxrao#ov=i3CB5U^g_IV(}q7alfd^%2(;3(+P-e7;wX&0?kjxR?O1tjZz~wr3e^{{wHIhb{Sp${(Qkn7l zw&|XW^l$#WRavvM(;%W;G{7CHWs~bDj3>BHjXii1spNc5HHP5yR@FH)n!Xd3&?^di zOsoE93C)UC?+jXi3&q45<{1W${)PdtrK1d9vCB0?nGkRoW(7U>+c|D$9mEuxhTuKq z$=^%wflRl~BwF4J-Sl;#mKYc`n~XZ|uD4)DWuiM0CSJI_1RrtznHEa_*uSxU!z3`< zl}K+HxTQs|=5@hp(pO-U3}v7nVkHh5)b%j_K4)znN9PmGTS1OIj0W8sY}>AP zMMD&zqv8{WYG%XwyD4_s%y1H)G@<`_ z+yWswh=Zu&1YRBp6lXPdttjsElN_@#QGVG!6v0!+2(XP71({L1{180K5rL5+QD?rc(1~ zcMo{iBhC7m>-zb1n7n;V2cP<@8iqr&?}U(c{B?$k)-Kgb^=T%MG6xwlVQf@8$o_QP zJsEsNbv)l3!~h|#;wF05l3JJw*_;5heWZ6@H&GO^?}~x2C_iXZD%ZnMM!%pOFnd#k zYt+cj`D@+(fm4=TX{9TrWWeuy!eXrYjP-{D4UgZ|xp&ycWC(F+Ew!p18kL;OFSeMD zyBL$qO+6xM+!Jba*~X3H-^X{QOXh&R-lA(&cV;PDA+$a+g4j38hS#koLn3pgRrGAN~y8@VA~5DqZw6S;`^N z+Kl0X3WV6R7}AP7(u40$jN4<;YU4hEc7=`$NBmq%!m7pDEa+IKXm!%;fSHVLTgneo z@L)=Diet>0*`0>K$)b8AB`Xj3ITcg#cizw>dHGK&L?6Us#pdYU0~T+_q!FcS8r=QS zxT9->q>8n&x;l(wo$8gWFMECHoWhPVzZ2Ygc+&O}25x)I)Y2FpN4pE;(6+x}sR+3|&pOHw92bEo9`aH&vR_p7fPTd+Wl^q_vn(&^=dP zbY6ukMBu%zkY`qX&7X&;id4q@X*owY9<4@!{MI_m!E8JM$Jg73Ntz1I7QVvm5ct{WBFxEa6k}aO18g3@QQ@+{_LBOZKSBm7jRdJY! z2L|aL=6xmEbPK1sQqRHH>$l^yS5d64Pw}{6x#{(Pd3t~a0FfAMzi-P#vaCvN5E8-| zsdM`4=!@j>Gh_F;$k!+Er)1PLl9I!n)PmKA;M`@j(+T{+3GaAfz+LBw2BAd)PFzvB zN5&nCe^x@wz|z1y*CobNZ#x$)2&ji!2Gk(jDqqa`XWJ3pU+^u>ol5hJXU(*fZ`j!Q zILql_f%e?w8TVcS2YT9=rp@ViTUfQn(i*ZnmIJ%Fl5-KX@CEV5m1_gO7c-d|OnZ?$ zvhEdvAcx`j(W`sc#Z-{s?z`*UG$@SL)j6I2nqg#VES75=G6mX{vE)9Nq=H zXQHhqWv1gvf3-d((vcuih6x>`AK{q1UtApYrAQ?|Vig5~YOkRRpvNwcU$@^lF=9Di zYZ?Q3_s)Xl`=BjeK5xg!^Kcu=1SxDw(?}317eYmx%scYP^`}z0ZKHg_f?JY+{Fr!O zmr|Zw@^%xyQ4gAyUS=~6gX-CKR3BDj>4CM?GK401{ZXf~`dGKTIv_4Me%QwDjugy| zjX6{x)4bPm-7HeQiDDXA1;FK4d5ER`j)I&o-HEyhaN=)H&uZQGCJ7AA!Q5JREf#)E z{5GT5p9+g?Q>}0UM)T)~agaO8$K{HR_DOfUZ37_+xBbNIT0qz}b4BId+W9_{$OU%3 z14_RvqK8fU9SZh%%l($^L?db_!R=s&8gk{@Y~+!mc4%Q-v}{C2lDS|1#U{JY?z#?% zG`!|Jw6Q|BrGtfXufwZ^)e3-7b4ISe1V=rVj9+L|QXUo&z2w%ZfoPmzENU(nm}q&) z$tvSto!FOPD=y#D0b)%B{@%7WqGMx343ZbRcIm3dMDb->spp?MN)6m$&}U{Go`(hZ zq!-B}@}@H+ggON8s6=|K_9jwXdSw0q1*nM_({=$o+Hb0LbbMJMqtd0K&TlQsnw>-S zk5fTM`$v?)i@58#)nO8%_k8GM{ijrxi_iuPueI{Ak&5(I(j~bY(u0TZJ`7j>_M3hj zuK9{QU&KmfgRw&GpSSs<;C+l#C z(?Kd$`;eQvY`_-U@@Ofuvt#u{LAUS`&CSeA<9i=85|oRPvYbZL=1+U-8`xs`Fm z#t3|mT~Xhm=X-^Bj&`X)QM*@Lj=^bQ!oItrAH!u&k$8hHg2p{Rl&*0$b@Z_JH)5GG zo9SwG^eaQ*{NZ3L$}hlXpayo8nUKv?n5iJdfx)XWi{b%>tctC?&p=2-$eLp%=r$j| z;CYPBltv3=5Tt`Zh&VUgV;PQ<7(~=z-4UK{qO37#4dBE{dq7l|H{GTP9uK-gViA)v zfYSQ&?sr~&HhgrRJ&cJiBF#F}j-MG6{&$9f?l4U!qZ9FE^qd1HI=pQhyjsI)Aa1aF z0&7j2@;KHg<>u8=lVLT4HjtS67fQVB1H`_0@K8fpA?~z#_;Hnz$E*j6TA6cK4^pDG z6Cn;13C8@9&%THC{#Q;8fP+VBejC&~=sW$9Kp9}Lw+MCP^xBMZ2OId7kl3;69tegR zu0Yt`d^n<@0X+7rfI3!L1DcLruWOu#RZ#xvjua0RkIQF-&gr{~N3@4)Iw>zo; zhnk0-fW3q~!GVs8boC_I5$ zy`AW7Vo)5)T4L|%_|44oIB++gV0?3_0xV~?LI+jg`$YBL?s{Zo#`8XSq8*6lVK{Es zLcuOLVqEzcr@KExkEz%Le6JZlEPwJB?wZ2ieb#=P00jyUs-Q+i4?LX&H_oPufo(9U zfj{}Fb}bR^WTf8Cw-eR}RM10`rk+m3Q?OUXz>GNZz@IvvyLJdK`)mQgbQAsEp9tR+ z?f>npS$2`vMcE7W(GPsNz@ZFy!`zI7UQ2i$cn}c{vXHtmrbw{aTz?nK?Zwy&|MuFq z{d5!1K|wJbd$a5R#2ye!u`~R?3j1*6&2GmN#Xn{DKZ-vE`@fotCs&U$?YWqG7|AM z%7bEnYX;t|1=;%f348$T{QbTE0v2Ci$R98OThq{|fV05B$4lb?dkirI+q?@~kT_+2 zB};WD%Job^eSP5b42Y1ig)prfd-NFE{tj&4QmR0(UJ`H#`i6}Bf)e#5AGEjqcaM#J zB@YT;LSn;+;|0H|m;$;kA_C`?5i`*H?sFkK8=IUMTpUizmlqHur%hkp&IHc)0gpD9 z4KuPP?2-+n-+Xjfyy^p$o_~`LMgQV4^*3tQ0=Lq7!x&kYk55LrYE>rqCpaj266H-Z z`Y&>dghWks2K^GUj7Z37#(Eaw>Re#xC;R)~- zi*Nk8a4aau>+8sd78t`nU2*cWe2i>ESxiqnK3?mgtK-^aN|}M)sOW0z*Wa<#*ReO| zK!4x^kxx9ia>R*B<>s1yc0g3jVWoE^v##_9rl6PM_=HgPR~3WBQz;-Q=Ym zLqL=r1+qLJUUWDq@N((@?)8g9p8q>|?NiYfccO0m9BwQ-pzWek>^o^!*|RH?+Dc_uL%rDlk{_+YHJo^$Y6$RuI*YjTpk}aDLC77N*5G#W77o zfb;T_MYy)VwVX|>vyG*cNiq+2=+EF-h%HKb29(WUb6q0>AnN>Km!1P g{{-T{VEh;O=l{BYO}O&E84&b;`Tvr){(lGm10+Se00000 diff --git a/reactos/base/applications/mspaint/help/Paint.hhp b/reactos/base/applications/mspaint/help/Paint.hhp deleted file mode 100644 index 75689b27dd4..00000000000 --- a/reactos/base/applications/mspaint/help/Paint.hhp +++ /dev/null @@ -1,15 +0,0 @@ -[OPTIONS] -Compatibility=1.1 or later -Compiled file=Paint.chm -Contents file=Table of Contents.hhc -Default topic=usage.html -Display compile progress=No -Language=0x407 Deutsch (Deutschland) -Title=Hilfe zu Paint für ReactOS - - -[FILES] -tools.html - -[INFOTYPES] - diff --git a/reactos/base/applications/mspaint/help/Table of Contents.hhc b/reactos/base/applications/mspaint/help/Table of Contents.hhc deleted file mode 100644 index 3b6809bfa49..00000000000 --- a/reactos/base/applications/mspaint/help/Table of Contents.hhc +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
    -
  • - - - -
  • - - - -
  • - - - -
- diff --git a/reactos/base/applications/mspaint/help/airbrush.png b/reactos/base/applications/mspaint/help/airbrush.png deleted file mode 100644 index 86aaf3fd52718e47de263d31fcae65dc03500ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 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 z 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 diff --git a/reactos/base/applications/mspaint/help/freesel.png b/reactos/base/applications/mspaint/help/freesel.png deleted file mode 100644 index 695ba90222515492588e0412ae994ab002180f1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggaCTRgJvF0WFHULc#^mK6yu{gbU zlA$-Vqd@EZHh~T$At#lH3MIiN&7*OSSB^C_DI{s$inx)X%Au5zxNt>8WcOTqg&Q|> zy`;0FrCoKu{0TZSv-{-R*aPdMXM8WacSfR>fn$HKp_}27LysP}t5;4hpS0xEwbI!O zg&E#2a+~q#6KAInL)*FR+@lPKjd$;F^J`wA)bQwt)wNsaOc@qeZ$Br`l(=uxsbk+F zy91*p8J%B$uH&E?Q{cKSE9Rb6Wn7}_sh{7;_V>Dm*?#Sy_YY(kG(ELK`LCGXulqc~ z&i>x+Yrp@6Z=U=6mooF??9N3DDcqAw<}`1e_U8syA&a@-&i98eOaF2gd-3_%PstlP swnsBJwQ7FrUl(;mZPi(o*MG#Nc4bL#eAFep0vKKlp00i_>zopr0HnO6<^TWy diff --git a/reactos/base/applications/mspaint/help/line.png b/reactos/base/applications/mspaint/help/line.png deleted file mode 100644 index bc53d8e344a5363967f35a8bd41449655a32b432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggaCTRgJPQEppU4cTTo-U3d7N_5y zF%)Dl;9z!0d*YIK#>LO1b+7jIUhxmAns?{k+91oYyCuaVuIS`{7KfbpPb$nyg1yUX TE;ug&8o=P`>gTe~DWM4f-HPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD~ z3>X6Z_CX>@2HM@dakSAh-}000HaNklHB!}FaD>}Ku!4H#RFq34q~=r-_0STflmxJ2;~H-do(VI{+IT$1Cf@gxM!R17 z?XDN|c=OGAa8Moxgb=ceYibq_O@$Cr#zgj*N~na9IG%NfhC)c7jYMs}hN7B@vzS;Y z@VXH~B#~&W3qV0M7r>74STmInFBc)C3~vjw$cvU!)(dJn3Hfww2q8q$EsSFuKo&qo zETI?*0JuyhgphLdh%}N0kOHtFwimqJ9j#`f?qPanz9DBGkH;}SK2AOL)Hg_U`8)nt(+^)t8R@T&CN+I@V8Td$Z=zq*fBxauM*0hPqx#RU$U6YG6eHOH&?bUN zi{cwj%YJ53FC+1J6NHe)(}m)QPKQV*s*$K>vj5O&7)J{kf5|R{FujZ7coi{Yks-<%r$& zOLji6)34YaKk{tKNzNwq`@2|DO8NNdNrgu%>_c*BvAMleLI`{<)vc&VQ*x z|E%SHGV8N19ntjP{`i@Ze&Ez%)7vKD5q(6T;qv=1n^p%nR>gX9w z|HF5`8|lM+TUMc=;$(7A(>QW8hmhvLD486@jb}6xLYf1k`AiPt&Q*@$5E2kGIq2`y zFqsg-WWr=Z2w^fIgwz(J`%LyrCe;`MM{@`Xh?!K9Ol*dYX(WU&nHUcnbAlv7nwOf? zOlTy8keZC<@IU$yLMp16)N|=~>}tuT)~xisCyrX_W0!AQ>653rt@O`N4qNG;tVQh3 zf2qSt?<^g$(hnTFXr&*_tXS#KpUzn6ua2Iv(ue!D>S`t>=QCkaAS9U7d_EJ_FbE;0 zH4~SYfe=yxx5T=ynGixqIWut;BXMaagpg|3QCdN1drU>EnM9(oP5_+%x&ib62#aO6 z*xruae|GNhIup{g6i_UzZlhRa&55>CiJ7QzCNG3p0BHbnj4218l}18HAi6g@!UML1 z4@gtV`y~{wnG_TwNdwpvX~Y4L0nkP>AtX>{BE8^W;Rk7tp}eZ4ggmK4nn?yg3c$K} zJ`3P20B@jJXQ7!8()?yp0PvsigH7QFDe+h}6Sq_{$%z+lC`PiOq!OA5A;B>dHJzk{ z7i7e?lHD9A$s{Wt=fzIm6t9&=LNg(x`OQS_t;j-b2D^8?7F2=bS$BkCghXpo)*Yr2 zLIRmigJ$C sN+E<0)mQ+Zo7P%+Z3rP%n8_ag2lP#nu4M~AtN;K207*qoM6N<$g8O0zcK`qY diff --git a/reactos/base/applications/mspaint/help/pen.png b/reactos/base/applications/mspaint/help/pen.png deleted file mode 100644 index 70c2127762967771a63e3580345029bc2070f83a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD} z5GgqWSkNi}00GZQL_t(I%f*vTNYeor#()1>4M#&PKh}rf%0fuRQb{OQYgzVj@=!$C zMUVtfvg#0sq#d-Zi^mRT)NZ39=&&dY$1H2Zuu;od>1-N*o%!FK)8y?Yh?=WQ@9}}( z`#wA`5B!gL`SiZDUOguOy1#|*G*`*CaDd|36gFSnFKd$peeZguc&pY}zSBa^3qR{0 zyBM9DNX~($`?);3XXk{in$LO@YQ`Xu_!NDnEv)LG-}_2D&TCXycB90-%=yO%88*^0 z|AB^w1B&t|*zI!2$L%i@K&vZ&2m)l&* zYHwZxFc$10E!BuN?87%Ojlq08DHuT4(N-&WA2^wbY3PmF6k4xv;82BQL70(Y)*K0-AbW|YuPggaCTRgpoxE0)gFvBAo-U3d7N_4% zIv9AwfXDT|QD#E*B3`Wpj5`dRS?^c|9g$nnn6_bKj^?JriZ_q!zG*FPvUs9yZGHX8 zw*A|f54?VEvh~#pmyknmER!<(v=}ElOqADQH(}l9_ny6hv4L~md-gN^8MaBHR}RW- zX}X%bme0SRe|3{JgZWHH(PMhw@kKx2e1r4*Y6f zds<)OdWmbmCBJ_&Q%XLhvT5IpbBq(MsLx)0V*0Gm4U@jYf^Uk*Mx{Tu)ApQL70(Y)*K0-AbW|YuPggaCTRgpxn)7AjzFQGo-U3d7N?I+ zw$*P=6lv4HnqmE;<3rRg6Ctr_w_JUeT{@aF@w@mBah`vSVv7%|Y>bLHa_CB+(#MMm zA1l0m&G~M&#q;K`Z?Z9$BhO8}Q+}?ohsQHW%uz1k(JIG}FPo3|s-~5n*D#SiyuR=D z;u$-C$-SL+IBMSS?%K3fhMkf#J{FbpOcI$JmmN^VpzM47K8q%=aDT z6e|2fdMo!?req~@&zuQL70(Y)*K0-AbW|YuPggaCTRgpUZpoG^MR(wdAc};Se$-4 zX|ETnp+M{Yy<4{`yhzruYiccPnwp>}mbF-eV_)0Sr7;^eZ3q_7tzp<27?878=iR#5 zzMCemIr{JEyL?B{el6v?E56b7m7D$S3$towEihQcT(Kc>G5@>lo*8T07i@0))3!ulLKVC2 z%>c)HS`$88b(na?^!0&PITlSUM!EHsj=nY?@dvZ^9QYh=zWGeRr7LPuef;0rFuSsavOcW{N8zr~&V55GLocyvGNH*4{4fe2x7OC@07F?hQAxvX
=G`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD} z5GXhO`^;N6T? z#9F@kLvB9~e@e~)2 - - - -Werkzeugeinstellungen - - - - -

Werkzeugeinstellungen

-

-Im Kapitel Werkzeuge in Paint wurden die Werkzeuge, die Ihnen in Paint für ReactOS zur Verfügung stehen, kurz vorgestellt. Einige von ihnen erlauben weitere Einstellungen, um z.B. Liniendicke, Pinselart u.Ä. genauer steuern zu können. -

- - - - - - - - - - - - - - - - - - - - - - - -
OptionBeschreibung
Transparenz - Die obere Einstellung steht für nicht transparent, die untere steht für transparent. Bei den Auswahlwerkzeugen bewirkt die transparente Einstellung, dass Stelen in der Auswahl, die der Hintergrundfarbe entsprechen, nicht gezeichnet werden. Das Bild dahinter scheint daher durch.
Beim Textwerkzeug wird standardmäßig ein Rechteck in der Hintergrundfarbe unter den Text gelegt. Bei der transparenten Einstellung hingegen wird der Text direkt auf das Bild geschrieben.
Radiererbreite - Lässt Sie die Breite des Radierwerkzeuges wählen. Die Kästchen entsprechen 4, 6, 8 und 10 Pixeln.
Pinselstil - Wählen Sie eine der abgebildeten Pinselformen. Das Pinselwerkzeug zeichnet von nun an mit der gewählten Form.
Sprühradius - Wählen Sie in dem Feld den Sprühradius aus, den Sie fortan mit der Sprühdose verwenden möchten.
Linienbreite - Aus diesem Feld können Sie per Mausklick eine Linienbreite zwischen 1 und 5 Pixeln auswählen. Diese Einstellung beeinflusst die Werkzeuge Linie, Bezier-Kurve, Rechteck, Polygon, Ellipse und abgerundetes Rechteck.
Füllart - Aus diesem Feld können Sie eine von drei Füllarten auswahlen. Bei der ersten Einstellung wird nur der Rahmen gezeichnet. Die zweite Einstellung füllt zudem den Innenraum der Form mit der aktuellen Hintergrundfarbe. Die dritte Einstellung zeichnet eine ausgefüllte Form in der Vordergrundfarbe ohne Rahmen. Diese Einstellungen wirken sich auf das Rechteck, das Polygon, die Ellipse und das abgerundete Rechteck aus.
- - - diff --git a/reactos/base/applications/mspaint/help/settings1.png b/reactos/base/applications/mspaint/help/settings1.png deleted file mode 100644 index ee79d45667ab9e7ae674efa9f3713dd55484c48b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 zcmV;_3@h`AP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD~ z3l9?Ep5A5v01Q+~L_t(|+U=Zsj2+c|$3N%HeeJ`$>%}h~W)~ZSQ7n~5OQ9waYKc^Z zszq%QD{We(ky=$$LTOZ~p;fz5{y<99sQribk0`A`vJzB8fI8R^Xxzw6DM8QzDXAca zB@6a?*L&adI5X#*{xNgs&b_;9-?ewW*XupfXwIE`=I;Ey=l442JNpxyy9qW%vnv%) zY!D#q`GCkRBfRM9i^~uM+jT4nLKXn=)_=cjHiEt%xb?14z$AwSbmnsh5IHtx+mZ+v zC5OuNO;!tXOQ`)uXgd>O1HcEoO`ri(lk2A26msYC^iMv0tnVeA znwsJ#|MOqnmnV~1uK^30nQtAU+XpOb0-t{1*DqHMXac3=vk$llC^93j&Gi!N@BH-R zeJSNDPyWGjU+n;|GBNOMsz(L?LV)x^RJ(J4Hj9T5vI127&^8>~=C9vTZT2-?B} zRun-LFBSmNt8ZJ821pAgnXR`gx!KA*iou-)752u>y9%xdhse$ zj{I2+riqX;w`BkRL%DN~8QlBesyPeUGo-o}pM~Ifc|WgwbR9GGt;{!y<92OtH)w(WYTAQ;ZKzjN~K#nyl{NJDD# zXb(Yf(E_xzV71!He$B>O@Wj&%?!7xUEm<7GTTtYSFrqcP#zOps3g7(U0AKrEFG0D8 zNt~V|b4!Bo*~cdd8-^%SXiwt%O^heep1@NMum0oQn#9W$0boTDOf1wZZ|2!OS>T#o z!)zT=OwWca)CDu|Sx%oGOTsYNB;>U`{Zj4s4)5eMw@xv?@BuUBX~HmMuKWSBl^GW5 zHAK)>RAVBB_dRs!O~4p~h$;vZphL-kY|o-Eh=p{*F2EGR7CJnA_v{~f;#wX&_-JfG zg(0pUxegP#lm^F`n~u2V<{Jo3Foi%c0-RZLM^bx|L$`m0p*aNO7P;16JDv zR_FvRSc?uNxiA8X>Ff(3aGYFf`vC5Vx0yZq?>J`$h#IF6dq$UZfOQqnR5h%zXw^)? zX=$De!wwTz%{-uI03s12n=Hxf6$`0a0~AG=0s-)_`zZ5|y~6O0TQJ)#`JpX%C*MJ4 zOdwP~#u$9Jip&k7yc$sy(Fke;%3;U&o;bOV)^5!vSF8bvfKJe9m%hoNRs7u@mGAP| zksmNL@i7K=-OTU}cQCkXKgI2PJ3)29cdIm24dvCS2eou@C6vN)a%MFs>HbH580%vF(ih~^j6znj*Zeoq488$G+Q1dE8 zssX_Et=Dtxu@g-Ho4;mJp!YDS+gY9~V?lGdT$&O3ru|@(?rR9;5k)RhV;+BDI$jwD zZifJ26r#1pjhYx^u#th76^20P$}KF! zxv^J0jV%nMDjn43h{9&aSfzZPeBqz)0*UoqTwf414JMGNP;v5ke~El#ouYt1f%bs_ z%PvhQV0x#I6Cq4wwdfY z**-J@;DzHq0~=r>4`eY8Z8iW=#Avr;cQ>mITI)1tFqy?v99}ykgVqhC5d8j#3OpjabaqPvP_p1rC>2YKIHKE6aGq4);_}c9Vtrk75%YTEj^{Z)LZv9%^pZjC( zKlB~oJG}M!%N)4vE`UY-OTQze+my%g@_wdI6=*8Ud?O-X1nMz8KJ(EC|M|bey!6H} zfB%Ko!3N04U>up6iLN{ngISpZ>tn5to^LO6k9_+9Cij13k+7>N_ytD+nc)U5gdW$G zN7`?LB&L#*D+C=rVX4;Ag7qhnhr^Tj(K;oT2^O4X}Sb<4}rqr>d{& zI;F?2+MW1@ext{?IF=}%PwDZJZS4v5Mvn`E7);=ccm6fiW*KcXO;x8JDgw94Gv7PR z;O-k3?V`t5+XOC}9?!OJdc5|7|Df^m4E`JM$Aa$}rSkM|q#%TPARXI`V)M}|rpdG? z5!OS>p$>Zdz-@P}DhNIMfTig1?Cx!g9&fdW-A8FYGfS?%li?eFnZk7kupes19yr38 zZ=JwsL#TY}Dxju(bl4>DgOnaOMzdpl4~5dmn$qJd*MJN?E=4;D2y7m$6herY9xuK` zar^BQcTD1hK5qFm1RgNM!n3bZx^Wa#0Tafi)l?0lD2iua>x4S5P#PTTpvTuQ3TQ(& zJ>JrQrm_@8*h!C%ZNqUKq?F`$-b`V5gu?JP-u=`V0P`=ti|f^>DW6b<6h(~NNa=AI)8h~9f1PWKGYsacX%yHs z=J5+Vry0HHWAQAXoxwZ(Q>t?___Nal(&3gwqeniuFUbuCkkNd{-_p9#hx-8+K#wmx z`)UkMh871H|IGu8{q~RI@Ot`Fh-;6>{ZsdnyZU&d>a6)*z{&tP4?Qk~h%>zegl%8= z6^b|R;_QoWQh#fP;lV8oP2{OOw2v(ZufhEOL>fg>dfbrGGXziR)U}|dW$_8MG$_yLQ1ndTsYuUO%SBeklE}&$u zGyrtw$X1RycPXs{x85}Zj1br1*$qr2=bg#*QgTnf)*Ui*)(=w2p?d)!t2V9bOFnTm zmR3O$MO>9Z^s(yes)-tV>2<*|W$IqN4J$C|`@-`OHW{S1Iz!Wp)TsbveP0gH=`h(yR-auhOs(dV<@tp(>R zr)QS}fQ+C^9hXyEuApK^a| zgW!U_%O?XxI14-?iy0XB4ude`@%$AjKtc8rPhVH|n@lp?{2VfW)MXeLm@av`IEGZ* zdOK%tp0J}x>-ihqhE6K7D;Hh3u(P1`562Xdm6eQgN%Nb;7x+1zRAyPF(At&Ga8l*8 zl<@n2H?l?Ln;!crS<0QCH*wv!SS)rIO3=8JY+rbtt&^$1);8q#UY3Mir>v`2+?wx`-uw9T=F7hO=I(rZ zW7;aFcPgSxFN&)-WELDY^=B1eV1y%=okCyUvm{5!ZernRVBl!j>=19yy?_bCPEc-s zu=+9o_o}^8eFb3-k$e-B?Hq9C(fM5>-xA9 z8aUD$FO)ac-F~+Gm<}UMAp_F`uL5D+XZKkH7+D+`fGBpe!@TEz*)BXfGa-fZ2Fquz zUu<7fc|Pz?$+^$4CM4tejIUu)z%b`OAeSXS&zZq}lkJ4h$ua+*+PR(XSS4~%S*n4ccfIQMTE*+{9AdU=9%K(#`Got5olUamjw4&;-QO_W z`TBo?3>W{Q{~HxQSKVjS2(&h^6kf#Ipw1wt_~59ZU<22Ic$3~KdQT&mHz=~|JUv-F z^^c5fp3X$Z3t9zXQA_7=Piv5K+43=h@qytiH5WtX4Z6(>je{?{WijN<>Xq;`nk=!h zR=D#0Z><-bE^p3dSRjH6dw_W-2*3{ZJG`M)`-i-oM-=1uPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2iXD~ z3l20Yh-%sZ00T!!L_t(|+U=aNa??N%hX0dAFvE~^q{=`;=fV}^N1&ug%?t1ldJ0~E zIt3++nYfc%{CQi z0s&#GK*S~DjWaeagkYUs2!R7I)5$msA>RkX(HVe@x&^Re_ZuK$gxQ{uz+37|HqLk! z#06;|LOUn1zX2=&%;^dS0RU{M8E`>SPXXKjn9=jhoeJ@`N`Lj?qj;rBlHlu?PwwOA z6!o6~ez3^r-MBTNbP8O)e%00tNCEWeegWVYL5Y}N8`oLuUtYd%^w&RMy*W03rvR>* z_!)o`3V6hq`C0&4*v{xWr!3&&Ie=i7!9J}3C)9hc@Vx+}-`?GgAHR4j5kMa49vc?| zi1ra*bT15mshZwVleu3ewl0LhaD>5dqQCKsYq82*TTRGL{3Ntl-rt zgj~p>MIAH)T(M17f$3x{O8m~tpwOi+%o?Bo6o7ylAmDVT8K3|ZfPj5K)xKQXCg)%q zp?wZQ(qM_60zQtw4h2hD&`BB>dm02F`%Pyh-*0UQs2r!PHa0vHTO zjW$V=U`59eF9}v8UA(Aohkc6?`+0!GNO}VxHIiNcNRFfz0Qz}=?gSNp0#E>52GG_M z-+x^OcYz=oT;nOQ3k1pFcB%osAnXdxOA+)5LF_6ZHL6~hL5WfIz7LQV)uU{L+Imvd zouC3x017|>bh&N)C#fV!x(%SfnIXt2U<1@u>KoLR8sHiz*{%UtvCf@iwp(cphNDve zr&#;&TmX1R*K>N_r{9t4JCtG5KWIsPRR;i1o7{bAfwdb;Zb-7k+LgfwPW=_V_cgtH z4&t^b6I=ip6Q5%3!_z0hbNut;kPaY!|L>$Bbs*f;hS-UI4q%S815<87v;go3zymaN zoj3x348R|38Y$h-JqKXRGGIwRJY(W#sBmKu27qTlZlyJ+XQfks7ZGkemI8Q)O%o!? z0Bk`q%+1ueks5&eW+R3~#?(*P*a(lln*~*NdbS7vn9!o$rdDRCxUo4Zie|``ny$TO prKxIYuCn(wLcNY0`%BLPe*x~5V92d-jr9Nk002ovPDHLkV1kAZqCWrt diff --git a/reactos/base/applications/mspaint/help/settings4.png b/reactos/base/applications/mspaint/help/settings4.png deleted file mode 100644 index a90613e268d604bbe8c3024c06cd9dc6b49ed63d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmV;!1U&nRP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2iXD~ z3l1ngi8hr000cuxL_t(|+U;C1Zrd;veNxoaMbKnxrl4K2dGJ*D2pv0Q?gerPpCT9N zoS|cn;C6BWcgh)Bz)e)UZftchnSTF}6fKDiO^EQiKyoQ?f}fh^)(*~nJLp>fBGCe($Q#y@87=g z%Wp)~e*ySOA}@QwbAWaTT)cm`uL{Tk^u+lBz;8iHO7Iq$&0PQX;$tIE_4WFLF9Kcx zxFz6c01idKQ##FC5wM5tM10PL3MhC=K(y0fPs{*^q91VJvZav{AR~Q1j$27UQZ~HP z$i}`ZpBeE5lLPvL;luHCGWIH!Aesd26MSO?;mz5PkBX1(Y1xaZg(D}{P18{mw$*=*_9}JB-z@<7W5x{{SonP*(0Nr?3fpwW6 z)2h+8A*d|+Ca}I#kXDU8C4wK9k;EfvimU|gDp^)ef~v7^JN`{zxjHC0)5*B;VNh!p z;NW%FY$Qz+A&q#DNsvaH%iUH1HdCLE)nV;*KwZgmY0FQQLZaIXn84B@;8F!aY=$@y z615 zDl&qu306^pss^aa6F%yK-U-kpIMdLO$3eUrYa$2umbo(mY$aJHWnU%m#tGo1Ytwyn zTI11HRfT;Klr}M@>#Y222zB|JfwYeNcXF?`Q^dx(MT~=!ue;widDi)VLGA|25@H!K!Tds`>i*wmCU6bfI{~`a;AQK7 zu9o0(KodDb_0yPWb3hY`F^cW5?!0WML_t8=KEP)|G>9Rfs~EM8fTwC50UZGy0UZGy z0c~!^g2-qzYBvE2XND+;KoKD>t#43UasW3_D%wWCigfB6W46-j4~EA8jZ3->0TCRNPt|siGOPr6#x6EHzb)%~kf% hLg=6++kWj{;2(DyY| zgW!U_%O?XxI14-?iy0XB4ude`@%$AjKtc8rPhVH|n@lp?eBvGNrB^U8Fdg!AaSW-r z^>&VZ(PambWBa$Z8XlfdvgDM5^YcTZkCg+0mONvUaa#U>>58U?rIUwfn$uCqgkvgB z$BsmC?e(2!rtLlJWJ2ZFy)$M1c6Qh9|9fv;+{E(<)e=Vpw`Dh}2?=cDbP1Zg=i|Gx za!woWaX4LIIP>&qq+s*C^v_2X8=Tr$Hw2y+72tf-lRoJ|Z_n0U`dhdrHM~jgQ1<-B z-yqr$vo1h@;lQy~4at#Tc@CI1EZw93C&**l+b_%K+kLmYY~uUz?Q8M>U%ey0#xvBd znp%GNN3}yP=bSyYo7Z!lVDNcb$@*ZsgXGGZ+)K~a)YpF6I6ZRS{C%r`UoK_{*ZQg2 z(5dsoL;mwxhBt{ar%c5~Upz5w$ml<~at?#AWU_ss_+k&n9aH62|5j)?$8};~{f*2t z|MH zBjl5$m;AhyDsvv6>tFny;m)6W55Ae~56kjB_FOGzD4N3ObFL+W^#Nyt`-+c`UI;cY z9f%LGH>>5H9yf0JyLImYd%+E#nUh}&UjQa>22WQ%mvv4FO#m| zgW!U_%O?XxI14-?iy0XB4ude`@%$AjKtc8rPhVH|n@lp?JbF*>d{km!V0z%`;uunK z>+PJqdBTn&t>d*FqCqgvT<6#6||y)ZGz9H z8#5}}lip9*JvsKji<`A|wVTvif1T8G=HKt_m9{*d@YkRt`9>`3EDwhpz6z71J|43+ z*KJAI8_DU&Y!E(Oyprdmos@qc!xJOjhN-*s8a)J_S7E}6ZFO+je#d?9_4AEcA$Ebuxe38@C6r;hfkI6=EtgE*nl*5xw`l|) za9gqZn)wQC(*x!Kn_`(a1O;0kU$gy^RIhqF17F~e4|5nQ^o}R*v_Eop|DE=Xof8+o zk>4_9=PkAdKI!NCwm3XI_K3%GnnsMI&w+*eCzZyZz9rjndzHrr#wT7iZHL;^HJYC9 z`23hdwjug|`Nav90{^bI9l2f0p3rxw@#IVaT?QMr4;-d(GK`ET82>ol^mysE&Xgfq zoYDK|2cORQiOtg92@EA77TRlf-dXL-80)g-V+7j+hE(B26BuuFCA~OvWy?gVhTmz* zZZ2v@?62;y?E76OlC$aZ=1_(OEn#QPdaay~1{H^FooyJM_3PU#Y2VP~;;DPDb9}Y_ fbSwV1-Uo4$dmkoP*(z27lRtx}tDnm{r-UW|U8`y& diff --git a/reactos/base/applications/mspaint/help/shape.png b/reactos/base/applications/mspaint/help/shape.png deleted file mode 100644 index 5535e1df5bd21a334b76189c33c12ddaa1bee300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD} z5GW{c^TC+_00BoyL_t(I%k7dqO9Md=hTjuA#VVbZq_GhUB3SuRSZHNyWg{pe{sjvQ zTbp!Rq|qu^1v|Y)1cL|~f*7t)(inuuU2?m#x8b$8i{#+IbT$qwJG(PGGtcY*e=Sbd zrR$OBl`2H}Frg0#14tO4Qrvfjin>#LphTpv$ySGKw#mJt60>|qva-)jjY0PSZ2__I zKA9UIj%oYkmS2ke2*~#~+4v;S%GY!~{$7FWk@NY9pR8g59RYXM8kX};CjaQ*p;W%X z@$L$g1tf|Chy|YOub5rkq9hG9%186%-bwv}>yh=RN31Uupe-uKa$!0LojmM2>H(C#O#6f!^?!v xho}I3-Gl*j!mPsprW@N$=tES;!M^|iz5&ym>37#BY<~a%002ovPDHLkV1k&>yh{K8 diff --git a/reactos/base/applications/mspaint/help/text.png b/reactos/base/applications/mspaint/help/text.png deleted file mode 100644 index bef563a35efd110aba5bd6b19f0255a3a5bb8983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD} z5GWW{D)BV{00HeuL_t(I%gvMBOH*+e$3J_ivt>KkGPj9dXv#_wQ-X>@!t!QBbTL9h z>L%zf@Txzc3-7!#>5T}P-q=Bzh;dqio|&W8}mCpQ}ROwsH4b0|1Xk-s6<=blq+((3_16 zhO`X63pEUcVhn_0TxzUjNXrW~;5)x>_ib$_D& zO_E!_X2OvboDK^B(~&gwwQl-D$v+cJgy%$VBTrqWlb5d}w6|2z-crTn>>~0JnM7ub ziSV2#N}x=p@LfE~hvXXRPwU*danl6Q*x4tt`Zql8GL)%Qaf0#LWlq<*8Pj64HMxG~ zuQs`e#+N8NUe4IelCeQ=Ko#{hZuBpEd|X~-cq)O{-y^*K9xhknIO>*sX*Y)>tYnr*Am=`wW6=SloZ|j_(#b z=^V&*oTEx(qM0_IkJ2+0G*$ zbMrJ9{Y4N@t)p+Q0MOCq<$+@SAO6cH2)ud=z>dSt{}Dd`a4NQV3AfM(00000NkvXX Hu0mjf-su(I diff --git a/reactos/base/applications/mspaint/help/toolbox.png b/reactos/base/applications/mspaint/help/toolbox.png deleted file mode 100644 index 287bd396409bec636ef1e44a18d60241dbfab9c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6512 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 W6Dfu<2gd3E0000 - - - -Werkzeuge in Paint - - - - -

Werkzeuge in Paint

-

-Paint für ReactOS stellt ihnen zum Bearbeiten ihrer Bilder zahlreiche Werkzeuge zur Verfügung. Um eines der - -Werkzeuge auszuwählen, klicken Sie bitte auf das entsprechende Symbol im Werkzeugkasten, der sich üblicherweise - -auf der linken Seite des Fensters befindet. Es folgt eine Auflistung der Ihnen zur Verfügung stehenden - -Werkzeuge mit jeweils einer kurzen Beschreibung. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WerkzeugBeschreibung
Die freie Auswahl ermöglicht es Ihnen, einen beliebigen Bereich des Bildes auszuwählen. Drücken Sie - -dazu im Bild die linke Maustaste und umfahren Sie mit der gedrückten Maustaste den Bereich, den Sie auswählen - -möchten. Wenn Sie die Maustaste nun loslassen wird der Bereich automatisch in eine geschlossene Auswahl - -umgewandelt.
Die rechteckige Auswahl ermöglicht es Ihnen, im Bild einen beliebigen rechteckigen Bereich - -auszuwählen. Drücken Sie dazu im Bild die linke Maustaste und ziehen Sie die Maus zur diagonal - -gegenüberliegenden Seite des gewünschten Rechtecks. Wenn Sie die Maustaste loslassen, erscheint sie soeben - -erstellte Auswahl.
Der Radierer erlaubt es Ihnen, mit der Hintergrundfarbe zu Malen, um Teile des Bildes zu löschen. - -Möchten Sie das gesamte Bild löschen, verwenden Sie bitte den Menüeintrag Bild löschen im Menü - -Bild.*
Mit dem Füllwerkzeug können Sie einfarbige Flächen einfärben. Klicken Sie dazu an eine beliebige Stelle in der Fläche.*
Die Pipette lässt Sie die Farbe an einer bestimmten Position im Bild aufnehmen. Klicken Sie dazu an die Stelle im Bild. Wenn Sie die Maustaste loslassen, wird die aktuelle Vorder-/Hintergrundfarbe auf die Farbe des angeklickten Pixels gesetzt.*
Mit dem Vergrößerungswerkzeug können Sie die Ansicht des Bildes vergrößern (Linksklick) und verkleinern (Rechtsklick).
Der Stift zeichnet einen dünnen Strich entlang der Linie, die Sie bei gedrückter Maustaste mit der Maus fahren. Mit der jeweils anderen Maustaste können Sie den Zeichenvorgang jederzeit Abbrechen und das Bild zurücksetzen.*
Der Pinsel erweitert den Stift um die Möglichkeit, Zeichendicke und Zeichenform auszuwählen. Nähere Informationen hierzu entnehmen Sie bitte dem Kapitel Werkzeugeinstellungen.*
Die Sprühdose kann verwendet werden, um weit gestreute Linien zu zeichnen. Die Dichte der Linie ist dabei von der Geschwindigkeit abhängig mit der Sie die Maus bewegen.*
Textwerkzeug
Eine gerade Linie zeichnen Sie, indem Sie zunächst die linke Maustaste drücken, mit gedrückter Maustaste zum Zielpunkt fahren und dort die Maustaste wieder loslassen.*
Bezier-Kurve*
Um ein Rechteck zu zeichnen, Drücken Sie die linke Maustaste. Fahren Sie mit der Maus bei gedrückter Maustaste in die diagonal gegenüberliegende Ecke und lassen Sie die Maustaste los.*
Polygon*
Eine Ellipse zeichnen Sie, indem Sie mit der Maus, wie unter Rechteck beschrieben, die Diagonale des Außenrechtecks der Ellipse ziehen.*
Das abgerundete Rechteck verhält sich wie das Rechteck. Sie ziehen mit der Maus die Diagonale des Rechtecks, das Sie zeichnen möchten.*
-

-* Dieses Wekzeug kann auch mit der rechten Maustaste verwendet werden. Vorder- und Hintergrundfarbe werden in diesem Fall vertauscht verwendet. -

-

-Viele Werkzeuge erlauben daruber hinaus weitere Einstellungen. Eine Liste dieser Einstellungsmöglichkeiten entnehmen Sie bitte dem Kapitel Werkzeugeinstellungen. -

- - - diff --git a/reactos/base/applications/mspaint/help/usage.html b/reactos/base/applications/mspaint/help/usage.html deleted file mode 100644 index 84fbee7f539..00000000000 --- a/reactos/base/applications/mspaint/help/usage.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - -Benutzung von Paint - - - - -

Benutzung von Paint

-

-Die Hauptbedienelemente von Paint für ReactOS sind die Farbpalette, der Werkzeugkasten und das Feld für die Werkzeugeinstellungen. Diese Bedienelemente können ohne Hilfsmittel wie die Tastaturmaus nicht über die Tastatur, sondern ausschließlich über die Maus bedient werden. -

-

-Es folgt ein Bildschirmfoto des Hauptfensters, in dem die genannten Elemente rot markiert und beschriftet sind. -

-

-

- - -
Farbpalette

Über die Farbpalette wählen Sie die zum Malen verwendete Vorder- und Hintergrundfarbe. Klicken Sie mit der linken Maustaste auf eine Farbe in der Palette, wird diese als Vordergrundfarbe gesetzt. Wenn Sie sie mit der rechten Maustaste anklicken, wird sie als Hintergrundfarbe gesetzt. Sie können die Farbe an der entsprechenden Stelle in der Palette verändern, indem Sie mit der linken oder rechten Maustaste doppelt klicken.

-

- - -
Werkzeugkasten
Über den Werkzeugkasten können Sie durch anklicken Ihr Malwerkzeug auswählen. Eine Übersicht über die vorhandenen Werkzeuge finden Sie im Kapitel Werkzeuge in Paint. Jedes Werkzeug bringt seine eigenen Werkzeugeinstellungen mit sich.

-

- - -
Werkzeugeinstellungen
Viele Werkzeuge erlauben es Ihnen, erweiterte Einstellungen vorzunehmen. Hierzu verwenden Sie das Feld unter dem Werkzeugkasten. Eine Liste aller möglichen Einstellungen aller Werkzeuge finden Sie im Kapitel Werkzeugeinstellungen.

- - - diff --git a/reactos/base/applications/mspaint/help/zoom.png b/reactos/base/applications/mspaint/help/zoom.png deleted file mode 100644 index 6233ae097536c1b713002a10a0b88fad327f2ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXD} z5GV)RBK*Jr00JUOL_t(I%Z-ywOB+!XhM#-q&S*X~sU#*v-4y$=5Ja;nL9C0?W%vCN z{yld}KnPU>E<}ngSrjM6NE=L?IGVY+r>nHIM(MjfoadbPd?^0W$;pZI`+b~qWV2b; z*47kH=&xX{R+D0}$ejyFM#5ZL5r*gF^Lf_S*VU7N{r!EBRDsW5uURNPLo3bqc9$1L zpEqS6Ywbjc8CTBEJ?Ee~;M4mRJfj%ImgR*U2VdII8Bq#uCR)${T5EQWE~vaNVVz?* zw1_wYqe!O$PR}D2mzJp4>oT!}AP7igh^H0t{SZ$noEy=P?$BZ}fzQtyOB6*+1Zb^s z4x)I75)WU)?cF`sy#av-I7eVWL?#2`IHr*G`PS+(mo}sWn9>4D&W$K`r7*_eoTJ%nvbniQr_&*y z&p))#Xf(t*hjZ@t-jz~lt 0) - { - ShowWindow(hSelection, SW_HIDE); - currInd = (currInd + HISTORYSIZE - 1) % HISTORYSIZE; - SelectObject(hDrawingDC, hBms[currInd]); - undoSteps--; - if (redoSteps < HISTORYSIZE - 1) - redoSteps++; - setImgXYRes(GetDIBWidth(hBms[currInd]), GetDIBHeight(hBms[currInd])); - } -} - -void -redo() -{ - if (redoSteps > 0) - { - ShowWindow(hSelection, SW_HIDE); - currInd = (currInd + 1) % HISTORYSIZE; - SelectObject(hDrawingDC, hBms[currInd]); - redoSteps--; - if (undoSteps < HISTORYSIZE - 1) - undoSteps++; - setImgXYRes(GetDIBWidth(hBms[currInd]), GetDIBHeight(hBms[currInd])); - } -} - -void -resetToU1() -{ - DeleteObject(hBms[currInd]); - hBms[currInd] = - CopyImage(hBms[(currInd + HISTORYSIZE - 1) % HISTORYSIZE], IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG); - SelectObject(hDrawingDC, hBms[currInd]); - imgXRes = GetDIBWidth(hBms[currInd]); - imgYRes = GetDIBHeight(hBms[currInd]); -} - -void -clearHistory() -{ - undoSteps = 0; - redoSteps = 0; -} - -void -insertReversible(HBITMAP hbm) -{ - DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]); - hBms[(currInd + 1) % HISTORYSIZE] = hbm; - currInd = (currInd + 1) % HISTORYSIZE; - if (undoSteps < HISTORYSIZE - 1) - undoSteps++; - redoSteps = 0; - SelectObject(hDrawingDC, hBms[currInd]); - setImgXYRes(GetDIBWidth(hBms[currInd]), GetDIBHeight(hBms[currInd])); -} - -void -cropReversible(int width, int height, int xOffset, int yOffset) -{ - HDC hdc; - HPEN oldPen; - HBRUSH oldBrush; - - SelectObject(hDrawingDC, hBms[currInd]); - DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]); - hBms[(currInd + 1) % HISTORYSIZE] = CreateDIBWithProperties(width, height); - currInd = (currInd + 1) % HISTORYSIZE; - if (undoSteps < HISTORYSIZE - 1) - undoSteps++; - redoSteps = 0; - - hdc = CreateCompatibleDC(hDrawingDC); - SelectObject(hdc, hBms[currInd]); - - oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, bgColor)); - oldBrush = SelectObject(hdc, CreateSolidBrush(bgColor)); - Rectangle(hdc, 0, 0, width, height); - BitBlt(hdc, -xOffset, -yOffset, imgXRes, imgYRes, hDrawingDC, 0, 0, SRCCOPY); - DeleteObject(SelectObject(hdc, oldBrush)); - DeleteObject(SelectObject(hdc, oldPen)); - DeleteDC(hdc); - SelectObject(hDrawingDC, hBms[currInd]); - - setImgXYRes(width, height); -} diff --git a/reactos/base/applications/mspaint/history.h b/reactos/base/applications/mspaint/history.h deleted file mode 100644 index a373ea5a102..00000000000 --- a/reactos/base/applications/mspaint/history.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: history.h - * PURPOSE: Undo and redo functionality - * PROGRAMMERS: Benedikt Freisen - */ - -void newReversible(void); - -void undo(void); - -void redo(void); - -void resetToU1(void); - -void clearHistory(void); - -void insertReversible(HBITMAP hbm); - -void cropReversible(int width, int height, int xOffset, int yOffset); diff --git a/reactos/base/applications/mspaint/icons/airbrush_cur.ico b/reactos/base/applications/mspaint/icons/airbrush_cur.ico deleted file mode 100644 index aa1a09c5962abc3cad837db8a8d22d5c5047ad06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH|J!->15QU$mB;F`Lise{wem#vKu7xUxD5`V;p+l%j84SkP3BusUeU6~kU<|&2 z5V#E5jDk}HOKu!eX_mLees5=&*9_3$MFidj-UVO+cx3SrURcHXu2K{Qs;WW=0Zr3j z7zRw!gk@Ri_xrGI8;;{(Fc`pfU3i`c-}ey&0m3ju6h#;ghZv1Uh~pTO$pq8s6tme3 zNs?ebpJTCDV7XjkwOS!fQ)F3&^?D5{<*u*QtWKa#piZDp;ExiZJ^N5|)8L?@(dGfs zIx98&VB_+-*VuM!u-5L}5Yb_UL9{!!jP){HbZD7(jE^fZ3Vgnei;>CqukKHYF3Rxt zOjRFakpz M6B~%}xp zEXyJii4cuOiN#{X<8cy+1j%HQR4PR}ohFmXkj-Yv<#Ocnc?yLB#bS|CsYJP4rc$X; ztyZbkYSim>8jS|cW|LN{MZ4Xm)9KLdcIowc^!t4Vg8{?gkkM$wcsyn@nJ}GBnayU* z=W`Z|h4y_rvm3A*up6)&*q{Li9@W~tKT&f}@a{?%o^LO8Aso6;1^1JAt_u5)H)pD_ zXI-DFg7KinV7OG_I1t!Xg(H7pM-@2qZ|lN=Pu*Oo49lCJ(Wro8qEF5yjh7e0iq Z+-mhL!BY5!dPC~)KN$et2MCvHwCt5pi;IaB~tzad2=D2l4j%+CnIruTVM#-^;nfdERq5_bdlClw&rd+}nKLhR49M z5=x45CDgo@3ylSm{;CX=L6DbndQnM{UkHcKv-BcIPxC=@6bi2%6$ zHbY9O_1!gFPhdTP^#rc+1RiRC?$PevYQxrsntx{8Kenzk+_?_d_Vy1?-U+e7aIkZe z8wZCL+b5xD*$;pY?Knu9I^%mC(rrdMQs$QqInP`R1zscc`@&`T@$X+0y_3 diff --git a/reactos/base/applications/mspaint/icons/horzskew.ico b/reactos/base/applications/mspaint/icons/horzskew.ico deleted file mode 100644 index 81dbe7cf707a284f24c27c7ace57f9ad85b03bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmd^7%MOAt5S&^Qjyw)t0Z$xF)H59X1o5q1!W9&CzMv3C9lsz2k&n0^Q9h5;0)M~eVbNru94!x$@Bs|M o7tjhvpcGC(Dx85t=$h98cnD{rVIpcrqLMRG&P(JkTF%9P1IR diff --git a/reactos/base/applications/mspaint/icons/horzstretch.ico b/reactos/base/applications/mspaint/icons/horzstretch.ico deleted file mode 100644 index 9704517df7878a63a2ac550b5771c7d033592b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11py$*!tjELfkBLcfk6X^6@b_Qh(Y4`K?6|wKSM)91H*v>2N?eU|Bqie z9$6C?6yRVQiULOYD8Uhm5gx{E!>EJ= zKnl?08PN4JpqUR$PEY`~AI7CB4NQao|NZ}8|L6aI`yc=R%YR^C;D5ltzz(88e2_Ru F9snbikzoJ; diff --git a/reactos/base/applications/mspaint/icons/iconbar.bmp b/reactos/base/applications/mspaint/icons/iconbar.bmp deleted file mode 100644 index 402209d2776ce37b5a22dbba7335ac095652a52f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12342 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 BzBK>< diff --git a/reactos/base/applications/mspaint/icons/nontransparent.ico b/reactos/base/applications/mspaint/icons/nontransparent.ico deleted file mode 100644 index 4b4b045b57fec426310030cbbe8a1eef7d5415e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 zcmd6nd0dQn9LGP_m5yB+XE|Cd)w;HX6p~WJR%jDBD&4|VN~KT=9Xcpo8i^^LQ)+51 zO@|I0s$uOeS;vcn4U-kCnc3e=*xHx=-SwUMKHul{{NB&|`+J_}_dLK5@>8D*vXw*K zC}2DQ^$)2}s`U7vF$5U4atcPQnubxUr(@V!H4I;?4teugP~4!7kydjdZ=(sNt#cr6 zrwzqj^YHVQF&N{b1!Y%l$hj?o!tN!&idz`EvISr7(Sy51ICRVyfXOY4^VWru?{bVb zy8}vqAtLR(FvjvW6b>6e)$%vAQw=}~TMc#Vdl-M*6zW^=LNU@9n%nO|HF6!acRs|} zSTm@_SVG7C5j0{gpb~EmeWwQ)=k@^ij#y%u^FvJYXa^;EJ;tV(!(?{{?jN^?R^kqr zdUWE!iOpD;Y=_C|o6r%x5tIuyu=MW4ge)s;^mzuAY-<>vcSgq<8$5}3z&8IExSrsF z)fYWsLifVsWG6UB@z9j$gITFLu(;%n*=O@$nY|w_Awn#S>cqxeUuewysc#`D@yUQUk%`ApRRx#SM zgWymS3d>6+c%HW(o3l&cSb7XMa>CJ7;DaqWOx(;rimkb&aAuu=eO@VCIS~+E_J?ah zDNZK!z>QG`Dx(zcg)C6HaqujUgl7>8UYFSrvV!1U9uNOw7P{Go5KzKK674A61Jy}b#dwLMEG{BgY#h3ph=?*iy2~SQip@tzZ93w)l}O?8arR0j zwliNtSQCYe@(QGtSK)chDRkFHqpF&Lo`zG1YrTZif*ibUOTgRKG`tg>L5F~j+im$s zy2S+N=2blYr2wLKI>dJ~k@b5Oy6!We^GE`n4iO9aP=e@gG0yxcLfUHyE|N@p zBLe-61oWO>c*tyd}op7^5 zJe{_#Hyklk3ikQJYpRXxk}^}mY<0)aGu|J(=?5~Tc|6F?-rQ7f{a62RwRMD(&QEvp zEQ3uujio+~m=HfF`weo74Tlg=);GMa)@V23h)-?Y^d&mqs}OEsYD}b`(*}7%L(;jg zZ&ZD)v@h+j?IJa$(^}J2w1`3PY-&i*K6?etrNcjQ*Xq`|Nc(Ok9EZnZl@Xub*^HPN zfBVszi${Fy8{1fKWS2re7x)w5*c|d)2)9yCTjM*`NfT$xk^AV2t|wf4W?JB8T{WdE zJPw;h41yI|sgZsrhTqJQ|H#EQH>|NG_xZ3D;bc#m_ymGwsX^B37ta{2K=x(V8{62p zCOtjg#l^G)?VM)n>5zw2k`H`w+3 E4W|{OegFUf diff --git a/reactos/base/applications/mspaint/icons/paint.ico b/reactos/base/applications/mspaint/icons/paint.ico deleted file mode 100644 index 2d4a0eea51350f1b961b07bb9f12c07bd939107d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18718 zcmeHvcUYCj^6(f_Oi|N}xk;?C#1yarmc)j=m#DD=c2LBw2!d4Uz4rssyY$|Rbfnh< zs34&9dJboP^B%zvL=rXL`^Wd~^DO&rncdkoGdnW}fKl)seEKO+ItEU?2e1dAKR*>t zy$cXUWmBg^0&cNKWIxzdB z7c7(32N6jY{Cd_5zB_dngk{V@OimLnDc*+7isrEWrXwgTE5kh5DA;_{8#bu0;DD+% z%u)`7ooWuCtf>jJ)k5H+hB@fy=zyM{9vspP0u^0rII8OdOEhvo&VU8x=H_t5I2g<= zZD55_G1%DHfR()!9JY>u8@7J%u5$vcv#10`yKrDRIfJTW2!KaA=-u&$6HWJkXf zZeFm>IUm09NrfFQ_bKLsn}-KTdL)6mYcjZbd4iXh7Z`a)!e-x8aQE>7E$=AM@ks$K z-wX%{2mtMXRPYZ9g=VzQhbN%oi^DgY`&;NK_T;|a4>raaH z=LP0$`1Xe{mrWAw&o7<5YUYB^=1!Z?pZ|2@!acuyGG+Nk{rRtdnkDqj$6qa;{64>6 zy71?+vR{ms{qEN>{QTIdlgyb*_w4NKrV{N~YG!8k^NblYX!L&+ z#t>azLo_3a=s-KshZdqOkBA=S5=~R09zOh=Ud9p))ggNGfM^L4EkmM_eMH-8i53;E z*}Ctmv)SBaJd5}iV#cSv-% zhv=jl(Xlw9y(eA{4GgakB>H)T=$#kQI3ya0M4OT5eLT^>NTSCoBf%4&*-mtG4bjtl zqK`=Qm`k)8iI+4GEe#`@Z9Nh^@gs4f(+7!m_Yw_8qUk)M{k_C5kmzD>M}nC7(2CK@w9XTpij5G*6lO{KVk z;z;tG@WQ#USY!eGx%y@q!N5{LLU~NP=jrf*Fjk7Hb_aIfrZEI;k)DRuvl6XW}Wl^K`ATPc}@qWOZmbw zk}H3^qy;mjg5lED%WzrtJS;lr1?w-H!?o)-VZ&t`5WQvs*X3m4#|xpb?V1IwyGF96 zoGz@nVF6oYSs<@?6Sm6P!3KE;n5p0clN9~nC)s#VQdNd^$}HHg;06Ct3Ii2&RXD9` z3I|l~z!h~PIH7I<>YBGc~8LC3@tj7*JTj$sn$nj3(q?tKu}D*#gqGmtfN1xYh+ z_`)_2mKzk3tQ!Ru)|Mb)5eh4fNEGUE|!0CVzkO?RT^`Hze4$Ow2&|rX=O7I9u0l%+0ZgD56cImh+J@wN`O1zlt$hI%ZNgVjERDqQPtoWT?E0wPrxTW6=DD(fCYZG9b7)wMwVlLlyP=!S<+I^aq3Q>bg| zhNk9DXz6H!w)S3V@9u=o9!9qBgKlmw^l}ln*hiFsp);=%ehVsz)7|kh2%U_k_NJQh z49APV4cA1xy1lodI4;OBxjOFDiw%BDuBqv$yXUQ|tWnZp`C|Q!n)0&FCyB03zB=VK z$xB{naO80{o70gOl4|W(Qd4sBh5A$7?Tu~SWjUG3apg@7N-xx(?d@%B>nyGaxshGo z(ysbKy>4%BC#S2v%1PRyrit@H{eDNLzPGB>L+@~9Q@7Dj`28iF-5gGDb5e@e&g`b% z7bdvBskirOAGhAOFyNd)D=%y){1Hw!yR(m1=9?R7DBaL|UvfwTabA~cS6^RgPEw(l zUMlyY!jSq?-Ok3vl?9E_-cc+A@2(dnsN?gyT%g?owUuA(^*_B{p=QVg_aCv|V4kp6 zNPqJ;pNFe&8f!FUfsg2{k`1)mHD7<Tz&he z`-k8+{bs^VMc&f$=YQC?`jY>#nVI( z9um@DIq}HP+HS|b``|APgzW>rXA1tKwr@P*ocODM?O?KO#4>*S&#p;KK>Wzo^Vqi^ z{n^29M~=%)=4Z!mmYPT(Kc&lW96P99+-OgK&QXUs{GSA*6)k^WKkB^?XAjh8B=49( z6~EMG9eiH@-j1oG1~Pt{GAEdCk)pi=Mej^KCGfmnB{*1xUm^1TyU!ZHXn|>?2ioHG z>nhiuWj_6wpVB2CHS9GX^L&N4v?R?m0-M^!@S_5ye~pTi|1&P9?>{5Z_dsOIpM6ik z@t;iLP5ERzcgnc&+~vCCyO*nv?^aOPYgSNCW}|v-EMo0n<&>!mN%}X#DC+DTij3UH z$aPF)zL_$n?rj97e@1~uQX716_3Bl@h=_>2si~=FVq;^kIXXLvt7&R(78Dfxw!aPY z?qXoxG%)iaO&@$VXU?1{_V)HhNl8ifYiep5o<4orT3=t^!e+A@b8>U*;u7L3oZa0D zj4e##5Pgbp6s|g8!#)`Iq7MuCA_bDDC+bn!jvH!J|j59o<-8-;43_4d@=6j6q5CZg&f5 z_ww=6PDx2Ir!(Q5m6QEY*VuT+%Q}6PauXAii1zk&v6hyWb6KVJ4_at^It7?^zX-!p z?qhU%0qU{*>PUYfo0pfTS65f(%C2IwtsLy+UuB%(+A1n4zHeb+5z*7rv%R~!`%Gc= z)2jAvEu`O(N|}a+#%yP2 zXHPowtC;cGbuE>hJ$=|n<7bytV@6>mTKL4^4KwFXXP-cwf$=#UPJx}1W8$lfHC$WL zacm3>47BU$=n!JYZ)oW%?IvNbwWA9Q*^e+Gy97ywM!7rTD5Gs%GHCqVJMOMI!}a+p zWi-At-6?(Ae*tEE+WU%L4i~$6I9T@JG5W=3pnY6E-tBhkLbx&G47+npA+eh=SMUU_lo=;jSDg|WXX)|9maP}+iAOBuR zM0lBjg~ju?`>V`*pe>E>)7RH`h8aJzuu8q5xxJ6aL*&t)dwCV;5D?4tNGU|ah+I7D zoQTTSZta!TH9j=|#`4tbjLX2dyStC3yB|v9@3--ZaWi!f zjZR_aFYJAdIW$VZ?eckc3 zwY8@>I5_x)5TU)IZpc-%4M5YtOjL8vL_tX_TyMd~A1;L9^u2n;Yn53Yk^yBXV3>p( z+%;^HQv0i->7y+GryqlmU1!R?#mSbYjE$;gT+#;vlBJ>Q@4;cm8jh=Q_l z`0Z|6_78`yvCjt-<4XHnoT?UyUv80lc*o5x$-vBnM5osaboTBL?djff)uLC*G761@ za`2XO8Xi`0dNl30NBdgKN)%E`#R)rY8qTPhXzbGU>^yn56u;L`!*5UMa;ERQc4&Pk8P6(%LPlysI~?P0a**alttQCyCF zEwl`m+0q&)hv3)Sq^h*EwY^?%_I#*Oi%;Bsde$l$%|hcv#p0k zE4!znb$B6ex@_Ll@U$t88DH8cI^{>XcwA>*iQk_I#0AG#fy94y%sZi2Cm&IXi>-5T zisD`Ta_gBA8uNAJADDAcCGnh96k3Gl;ZYs`wjDBB=EMuVtgNgO6|^jKrc3&Am@_DF zJr-x~HEAGycEC1CSs!UuOt+X%F;3UJhm*xr+sChy*!3#&X4=l!CI8d1^Jb6LJk!u5 zFc;^GYo!dG$Jkwt_t#poapA30d~dCJEPo85_w!FEl`F?op^#-3ey`w*Uu{2opI`S1 ze-=t82cNZ!K&$Y4B)#5)X$R#(=pKNba8jgrv;pOo76yzTDY?=L!|RvldV z81>RCai^wJ!)L2^Gw-Jn!`d~=BUM#Z@zkkPxJYC{&59wq`=P*!AqiOWd}*z;v@{++ zehgPEUs5O}B>2-n{Yz7aBw=tQ8;46u5ICj`d(X!&J2dV4ol@Mf>yBv;*N@1;Up5La z6hNVcf`uZ&^Rk46=3330H}AO(V>p;sE&EvXu)sLcLpKM*J=bqEld6N!Qw-=Tis-v& z3=F{`$U z2LFMOA(t5tqsaKp{ExyY{_xLu#K8Ce2$d0sWpHD38q9l^dDD-j$lPa!HhnfIGI^$) zsb}8rOnU~7f&X6wMn5!wFN5coAAkJu*GfuCi-UrKB+}B-F6ZaxtI^xuDlsL=;%;D| zvMtO0ytba+p~FXy&STnBWZ=e8Wcp$H`)|yJSuGx74}%WFL;Bqk;{6V6SK z9zAL#J$9@6*uHoDt7sl=x3x5Ms6U1-F=vc9Tklc)w*&KDW%ORmx-;wb z^{rdC?8!ePgWi>ugl|(rLj$=NwDs23H*oSx%DJ(r8QiG(UvbFr!c`j{s2hiI~Qa%@!5ysb=qGG~fen}17BNL@V-1Luan_8T^Am`8pVPwA}0 z&^lMq8F|dEs&21sXyR2osK@NWCJc+KM7Q7sboTb=&>nS~vOIg`jGghexpOz^bZTi& zYDuTl_^7tF(U|sO(xgd@UkI}YZ{r*>>pzAfLqEQ_aN)v1Lqo%C(mk3N6&2-DT9=;B z?tRqQgpcbvSXkJFVPSRX=23ta9zkg9?$0rH4MK;zaj0qO(it5c&BwpCw)P?UdQ@84 z**2e)l4A67%>FX#|3>-=f*&qCKmRvx-n>qJ9xnmAZd z(T(BZPteV+6s73oWAuyXFoVDF3zd4vhoi) z|B`fnjnaxAcQ&@PBjdAFU*C;oWe+eUAszimmlbg@AA=LJ8T=cAgM*a`R)ci97IcSQ zh;AjOrl-{#TUi*tb;SDzARRz)MMZ@*=^sUjUP^R!cIsr8*LO5^^k98c3pO`*U~XX< z;hcrh8ATYIS%lW)e`M_u5J9#HIif#Gbmolc{yP%QiXxkIt(lEg}$j?6zS|6 z_TwK`_xSN6GaJjw{|5fVv!;^n{SoQ^lnH;40sPAzHnp{Naj=>8ppNJe<9C*tPcg3y z1L*u~IQZigJ)6$>#Kaqe@o#Ny4WzYrU}$01^WVUq&W@F=JOrts2_{E@_M=V~}x9K&ock>v6e*oz|s!Xjc+sGdDx4waII!D6) zB+jQ`Wt?x!8y9Bk|C#uoA$EU0{hIi=MYOXuIzGXif1=in6!Pn1+QY0k{d zyftusX#E-dD_G8V9vfJg@O`}A6vvU^>FjHIcz8Gy{(A=F-`?5#l+m9vK8qb)Jy=@v z81I+XpjYHQv;(>y94)?<1h8=V5<(I>qWH9~Swj{FKw>$32wzD>gr{0rmAp~leM z^wz(D<4AoF{<*}n$jPHu1@xF9H;N(T{{T>tm>MY2gCz%{tX;o)(6qf{}BES zM0@m!Z+*ky-`w1K+$AivgYF=b`GRaH&+I6~fvmV(WJRXqoxn)$gW9?n+Pg%;|A95jzQM@C=$E&GJatOzugqex90>oj z#CH#+;Q$X2i$D?07X>OaoQKIr^}Hzev4JRw5GfM=j)Dko%6}#?*XI3XXfy&lo^g+E#9SJ zV!o5Hs~MP^z7;u+aQ~9QpWcieQaY|(t1jE}&RIvJrcXLL(b_A!W#K$=^>!LiOf>>0?z-4BdApRMk-4es zo7e_N+BfER9kljbc3orZJPEZval;UlcTPg{(ED`u3&@7()F*4;WBiVj$IHusjqv}26gL5|`ogMJiKF6-5`uVtt zxx*^yIQh6QezDb}hTiQ5=O4M^w@=T5dx`Mh?Oyn750rxOKf5n>EjcXXOY7wLCOD1+ zD|S_7%P$9S@s1jWB4f9<49g??aRIKmV8OMyOH3Bgx4pB|dF*DZZV~OAXLnd58)uyh zVeW7%gTIxlxA?@3Cwi14%lLcnvq=Vj4pUF-sPkSN@LZWt+YW zwy~(=mx&J1#VBJQjjN^g8TlcU!JqiTov8;{jXx_SB4dYKuA7fPUW&vI*PFMy-Hkj> zcB!2|@4pau!aRU`DYOE2xEAp7pM29FC;fh*YwYSnBmTbVb@89IPw~r{f81<7Mr*I= zO8#MF!!!)YN0H;2eeOZA<@5%O7{Gsrd_eBxvq8AZjP9^e2?~%u!T7D#Z8ADO3Jm@_ zR*t8?-73k^Bpsbha5>H~qCFtH?(|bSIChQ1BX~pqn&IX+bFZ8V*?xO2*~g)te-_%2 z-T#P|KX;M1Qa;^_M7rDUWFxC3-;Cl5>W-xo4>@y}Gk2J5;qw)e@blgFeY?*YRZzPs zqGL}N>_1m?-Z7GQIkXZt-^qV=59EFDyInHvpR7E{=(7H`@Y8O^_hv-aOq7_L22_U;<9!g(shhiz;4w(v>Ed~ozC6OX~|$F4c*CGVBM zyBb!B>mBp>doWGb1HaiW+41p;gX;&keUooG_hpB5{7}Usm2fY_t8{;7?^7&au|kp2 zi4GgyS#6>?aq?>|2 zoZ|06#^AQE`+Y`ESw-Ud?cQtlk!To5?~$+q6ckfyp1$*%(1?AmGM@j*PKQQOvvOQT z{s_NZjlp+BjjM*jj9Ys&SR*ivcP+dU*Erng@4?I)t~hb?sgALthZ&vpYX?Txrmn5k zs%vD3s#=<;ZRv{I*)G8T>^UxxZ+hDEr^yaYvW2IJ4Wl-q{-?tQfE@VuW6 zUG22bs>9RdYc<0l4QJ>ip@5_|Z`_)r5wDFr0V->$uTa&zjb6S!oT%t1G_$fqCNHU| zIOCu6t7s9(_V)HhQwtlOnwCEA%$YMNAt5n+DC{R|C1MOCa(J>4Y`hj-j=E`;XqsAy z5fkgkeH?*$~iEz<83 zn~oegvS}#%*i{FYEI4|zE4-o+y-FXVX*L@zvucpe4+jSQ7IG-uNO|D}f@ein{nmcq zzyVypemyS#ZE@>$d08(N4GrOu;0D)`uJ#YYyNmom(ACwIbMfLu+>BZCNh{x8>zo?A8CQ;rWHegG zt~mV4I>kkc=I`CNcUKGf_Tzxx%kpJQd&nQ-@~~r%RLDxqhKLe`ye9~ug*G_MoAA&rUgQoWEbXoA|(ik-8sRw|KGOw@ViUf`S6wIdNPhJg<4_ zym{XYZU47(&lX0F`M8@uw*^%2_-suWou zxN?#3+~(cC@8Hny3-H>tYbYTuhD#PNXrtfH$_{G!&p+)FkAr;zf_-8iuo7DcfB(M) zUcCE5;>`)uHXcEuO-_H?p6r#vLV|Z0f1PE&Ey2y3H{q7e8*$~br5%fe1=~ax3dsC} zK8A0?O8g2OlIDSX5@Q$r=V8luK - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/reactos/base/applications/mspaint/icons/pen_cur.ico b/reactos/base/applications/mspaint/icons/pen_cur.ico deleted file mode 100644 index 107e55551ecb065dbf226ced29f71330ef1e8c64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH|J!slN7>A#jwE6cVHBDnuYtvYh#+WuWO=CYqXhB3o1SdCf5D~;dTpXnc;vnKC z;_A@FK^z1T$sjn2i#Ui>#66>h!oSxJ-8>2%>w7%M@&2A0?p+Sn#4;KYyTVrm_JC7? zXz^L_t1l~!MuVa#==FL`CKDEm1*_GH-EPO>aNu-0ak*T$-EKS{4_>bqpU;Qi?L-)ArwFdPmUjYf>eV)rAOt SY>LLZ;7=&dH-hhi-}MvF{M!Qn diff --git a/reactos/base/applications/mspaint/icons/transparency.xcf b/reactos/base/applications/mspaint/icons/transparency.xcf deleted file mode 100644 index 63097b9b4f8b35486135cfa823d7c94df6a1dfa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5975 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 diff --git a/reactos/base/applications/mspaint/icons/transparent.ico b/reactos/base/applications/mspaint/icons/transparent.ico deleted file mode 100644 index d4f1c8420126f92cf7dde192778f3cf64395be93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 zcmds%c~lcu6vjVXQILv3TNT9>(V`*<;)bAtELMn$L>2`Eal^_c29;eF0a01w0xA+V zfrKnDBrLLtL{F>L+C}TqDyXOkb!jC@Um#fNsps^so}S*Bn>+L7H{bW}%$oozWYe1n z@~evGVZaywddgfvs$%@3p#luDn1CTGbTG_n3I^Fu!eCoH47b;X`dU2q5!Air;9F-+Xl^sasO?5j-C+W?U8caYTNr5ZH8gfF#!iRBFt+0Wt8QU* z;6jWDHp3En2}au825tXxBzgouE!-UA=|4bw?QPugGl$NGyP(BbLC@(P#>81eJ<$?I z?hl}K%np-|(qZiR5HpWCU|gC#M(=oldl7Uj@p%9p-#gGcX^&OA+HgP435J=Q@gSao z`6oP}eRe%slh=WEek16Ck72<41~{#dn2rNN5h8_^crJ>;qS6lRYhWRo5+i}C zL_$R^R&ZZpHMaxdO)PZPBp{`-7EzbZB28R}lj2&OuCBwOmhy{9rn~iw%T`8n@*pU5{hy1(s zcz&M)w@P9DNDlM1Zgf7Wg6-pO*gcV9{Szr1pUQCi=?!dZmtkwW6h6;n*!@h3 zy)UHL(;-K2hYX<|QiQ#fA?BqNv7Is;>69X^Q;y^=88Ti;k@c$_xg@h*OTm6E2m4Jo zE|6OMMh-qn!CN^*B*nkUQTMwH4e#V=c_)RWTZZf1a(qwn{}fmM^Whidze^F`B;4KI zH^ZoRK#bN>qg+e}`yM{(W3ts^F02{d4yZ6Y3)YMR?Po86ic{p1sD8kXg zixk$mN?-JF2dl(8ywbB-Ov{DiX_KcaF-Po;ePBvyk1}eZly;^hE z0`*{m?e{3&BTH!?Dqj5Qp?jMxJKp7v^HX2iMIH@dODSC4QS zF-x?y=f#wjnVw3Gjo9g?K5N0?_gqthrI*5Y9pTC;fq;)P-l9{fMDi3K zo-55p>JRVZ5?U@o4L+YJo(gcYG1k>o|I@eG^2CW`FR%3;t2BDn7=%0? zm#c8r88`Zq_j;1%JQgdC$*?q;yGl%!B5@WHXHIF!re3Yy=aL|~oX1LMG8yJ3bC*|( zC{YE3LIID<;c(phJQek*HvG?_?!M!Mae@sj^N(wSf;EC Z{!;(p_`p6NrM}7xrLXe5-#kCo&mV``bp`+c diff --git a/reactos/base/applications/mspaint/icons/vertskew.ico b/reactos/base/applications/mspaint/icons/vertskew.ico deleted file mode 100644 index e72012f99e4fdd507367bf98af01f9382dd7dd86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmd6lF%E)25Jf*~4_H_Om8A(%vxQgiJnqqkcmNMUV@XFtGX7l_L<^0bOa7Ao=5JUg z14MkXEaASveFf|Q?5T`0l;fY5Wm#dZg@`~^KgYjSk8gqMv;YZEou44eoqvLDkvKnr zs3>yp14z?6O~2UH-!Iqg5g53B z`sKlNeo7c1lu4MNU##-YqkOFc2fcAxu9T?uQfn)*HnLXBG2-ymtsth>6n;|2{J^_h U0IPyVJG45W=WLE&(~j@q0pWI>{{R30 diff --git a/reactos/base/applications/mspaint/icons/vertstretch.ico b/reactos/base/applications/mspaint/icons/vertstretch.ico deleted file mode 100644 index 73b80012617c3e4dfa6a16fb77faa4abb1628d70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmdr~F%AMD5FCsT01IoNvNTcqEBwO!ho|9NZ2W=cI%~w>#&Ct5ONPy`%WN_LIIb8y z_cd-SU<+VJL}DWJd>n;kK`8~bR*1;BeW`jpx0s%-r?~~W2YT+(C*Ne>*Imx3=OLuv zNB6DXpL6Sn^$W&NSU>E0=!5nCe&dIC?4|POyl`i}5*MNn`uUXq0@YA0)l?mw(dKD> E08S#Q5dZ)H diff --git a/reactos/base/applications/mspaint/icons/zoom_cur.ico b/reactos/base/applications/mspaint/icons/zoom_cur.ico deleted file mode 100644 index 072b2c3a238d44fa042ea2ada27a5d8b50a7969d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH|%}Z)Q7{(v_(z=>`-+QZ5>am;FsZ*w9=O77!;L4RNL2xAqg5c7{#g!lkf-6A~ z1VM1+QV<0H0Kt_Y2!h~BFa$9qn#OfU;lkbJGraS{`+H|#9+(+GMu$cNIxA3A07n1} zG-wHS8ngO5F$_c3YQVBAj7B3kjsws0FqurSSS+wwtq?^KHk%E0yB!XP15T$CE|&{# zw;LXh2VSoiKA#VMzaN1>0Ks4op->3na2SzD1kq>|u~-c8cpQmD0?A|&sZ(~D0mWhwrBVsyav7CM1=VU5wOS4JdL4~M1I=a=tyT-|b{m~e2iphgphd_EbB`LzO4iFZhuGZvI|eWX3}vB8ss~_ zjuv3m-s*}Z)*7t>|6})1HhWUPN+awmm1^_Twlro1#feU@Rddpti~614x=VweQQd#t zdRDnwzcD}Z?CI8>G&ji2f*^3m${T5ZvH3vxTy=Uo w2a6(mf6H04bMX@Ve+THlxIiC&33-1Z - */ - -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED - -ID_MENU MENU -BEGIN - POPUP "文件(&F)" - BEGIN - MENUITEM "新建(&N)\tCtrl+N", IDM_FILENEW - MENUITEM "打开... (&O)\tCtrl+O", IDM_FILEOPEN - MENUITEM "ä¿å­˜(&S)\tCtrl+S", IDM_FILESAVE - MENUITEM "å¦å­˜ä¸º... (&A)", IDM_FILESAVEAS - MENUITEM SEPARATOR - MENUITEM "ä¿å­˜ä¸ºå£çº¸ (普通)", IDM_FILEASWALLPAPERPLANE - MENUITEM "ä¿å­˜ä¸ºå£çº¸ (居中)", IDM_FILEASWALLPAPERCENTERED - MENUITEM "ä¿å­˜ä¸ºå£çº¸ (拉伸)", IDM_FILEASWALLPAPERSTRETCHED - MENUITEM SEPARATOR - MENUITEM "退出(&Q)\tAlt+F4", IDM_FILEEXIT - END - POPUP "编辑(&E)" - BEGIN - MENUITEM "撤销(&U)\tCtrl+Z", IDM_EDITUNDO - MENUITEM "é‡åš(&R)\tCtrl+Y", IDM_EDITREDO - MENUITEM SEPARATOR - MENUITEM "剪切(&T)\tCtrl+X", IDM_EDITCUT - MENUITEM "å¤åˆ¶(&C)\tCtrl+C", IDM_EDITCOPY - MENUITEM "粘贴(&P)\tCtrl+V", IDM_EDITPASTE - MENUITEM "删除选中区域(&L)\tDel", IDM_EDITDELETESELECTION - MENUITEM "å转选择(&I)", IDM_EDITINVERTSELECTION - MENUITEM "全部选择(&A)\tCtrl+A", IDM_EDITSELECTALL - MENUITEM SEPARATOR - MENUITEM "å¤åˆ¶åˆ°...(&O)", IDM_EDITCOPYTO - MENUITEM "从...粘贴(&F)", IDM_EDITPASTEFROM - END - POPUP "查看(&V)" - BEGIN - MENUITEM "工具箱(&T)\tCtrl+T", IDM_VIEWTOOLBOX, CHECKED - MENUITEM "调色æ¿(&C)\tCtrl+L", IDM_VIEWCOLORPALETTE, CHECKED - MENUITEM "çŠ¶æ€æ (&S)", IDM_VIEWSTATUSBAR, CHECKED - MENUITEM "文字工具æ (&E)", IDM_FORMATICONBAR, CHECKED, GRAYED - MENUITEM SEPARATOR - POPUP "缩放(&Z)" - BEGIN - POPUP "用户定义(&U)" - BEGIN - MENUITEM "12.5%", IDM_VIEWZOOM125 - MENUITEM "25%", IDM_VIEWZOOM25 - MENUITEM "50%", IDM_VIEWZOOM50 - MENUITEM "100%", IDM_VIEWZOOM100 - MENUITEM "200%", IDM_VIEWZOOM200 - MENUITEM "400%", IDM_VIEWZOOM400 - MENUITEM "800%", IDM_VIEWZOOM800 - END - MENUITEM SEPARATOR - MENUITEM "显示网格(&G)\tCtrl+G", IDM_VIEWSHOWGRID - MENUITEM "显示缩略图(&H)", IDM_VIEWSHOWMINIATURE - END - MENUITEM "免屿˜¾ç¤º(&F)\tCtrl+F", IDM_VIEWFULLSCREEN - END - POPUP "图åƒ(&I)" - BEGIN - MENUITEM "旋转/镜åƒ...(&M)\tCtrl+R", IDM_IMAGEROTATEMIRROR - MENUITEM "拉伸/倾斜...(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW - MENUITEM "剪è£(&C)", IDM_IMAGECROP - MENUITEM "颜色å转(&I)\tCtrl+I", IDM_IMAGEINVERTCOLORS - MENUITEM "属性...(&A)\tCtrl+E", IDM_IMAGEATTRIBUTES - MENUITEM "删除图åƒ\tCtrl+Shft+N", IDM_IMAGEDELETEIMAGE - MENUITEM "ä¸é€æ˜Žå¤„ç†(&D)", IDM_IMAGEDRAWOPAQUE - END - POPUP "颜色(&C)" - BEGIN - MENUITEM "编辑调色æ¿...(&E)", IDM_COLORSEDITPALETTE - MENUITEM SEPARATOR - MENUITEM "新调色æ¿", IDM_COLORSMODERNPALETTE - MENUITEM "旧调色æ¿", IDM_COLORSOLDPALETTE - END - POPUP "帮助(&?)" - BEGIN - MENUITEM "帮助主题(&H)", IDM_HELPHELPTOPICS - MENUITEM SEPARATOR - MENUITEM "ä¿¡æ¯(&I)", IDM_HELPINFO - END -END - -ID_ACCELERATORS ACCELERATORS -BEGIN - "^N", IDM_FILENEW - "^O", IDM_FILEOPEN - "^S", IDM_FILESAVE - "^Z", IDM_EDITUNDO - "^Y", IDM_EDITREDO - "^X", IDM_EDITCUT - "^C", IDM_EDITCOPY - "^V", IDM_EDITPASTE - VK_DELETE, IDM_EDITDELETESELECTION, VIRTKEY - "^A", IDM_EDITSELECTALL - "^T", IDM_VIEWTOOLBOX - "^L", IDM_VIEWCOLORPALETTE - "^G", IDM_VIEWSHOWGRID - "^F", IDM_VIEWFULLSCREEN - "^R", IDM_IMAGEROTATEMIRROR - "^W", IDM_IMAGESTRETCHSKEW - "^I", IDM_IMAGEINVERTCOLORS - "^E", IDM_IMAGEATTRIBUTES - "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY -END - -IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "旋转和镜åƒå›¾åƒ" -BEGIN - GROUPBOX "旋转或镜åƒ", IDD_MIRRORROTATEGROUP, 6, 6, 112, 86 - AUTORADIOBUTTON "水平镜åƒ(&H)", IDD_MIRRORROTATERB1, 12, 18, 100, 10, WS_GROUP - AUTORADIOBUTTON "垂直镜åƒ(&V)", IDD_MIRRORROTATERB2, 12, 30, 100, 10 - AUTORADIOBUTTON "旋转角度(&R)", IDD_MIRRORROTATERB3, 12, 42, 100, 10 - AUTORADIOBUTTON "&90°", IDD_MIRRORROTATERB4, 42, 54, 50, 10, WS_GROUP | WS_DISABLED - AUTORADIOBUTTON "&180°", IDD_MIRRORROTATERB5, 42, 66, 50, 10, WS_DISABLED - AUTORADIOBUTTON "&270°", IDD_MIRRORROTATERB6, 42, 78, 50, 10, WS_DISABLED - DEFPUSHBUTTON "确定", IDOK, 125, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 125, 24, 48, 14 -END - -IDD_ATTRIBUTES DIALOGEX 100, 100, 225, 120 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "属性" -BEGIN - EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12 - EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12 - LTEXT "宽度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10 - LTEXT "高度:(&H)", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10 - LTEXT "文件日期:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10 - LTEXT "文件大å°ï¼š", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10 - LTEXT "分辨率(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 - GROUPBOX "å•ä½", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27 - AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP - AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10 - AUTORADIOBUTTON "åƒç´ (&P)", IDD_ATTRIBUTESRB3, 112, 69, 45, 10 - GROUPBOX "颜色", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27 - AUTORADIOBUTTON "黑白(&B)", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP - AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 35, 10 - DEFPUSHBUTTON "确定", IDOK, 170, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 170, 24, 48, 14 - PUSHBUTTON "缺çœ", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14 -END - -IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "拉伸和倾斜图片" -BEGIN - GROUPBOX "拉伸", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66 - ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32 - LTEXT "水平:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12 - LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10 - ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32 - LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12 - LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10 - GROUPBOX "倾斜", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66 - ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32 - LTEXT "水平:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12 - LTEXT "度", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10 - ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32 - LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12 - LTEXT "度", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10 - DEFPUSHBUTTON "确定", IDOK, 170, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 170, 24, 48, 14 -END - -STRINGTABLE -BEGIN - IDS_PROGRAMNAME "画图" - IDS_WINDOWTITLE "%s - 画图" - IDS_INFOTITLE "ReactOS 画图" - IDS_INFOTEXT "ReactOS 画图是在 GNU LGPL 下å‘布的 (è¯¦è§ www.gnu.org)" - IDS_SAVEPROMPTTEXT "您想把改å˜ä¿å­˜åˆ° %s å—?" - IDS_DEFAULTFILENAME "未命å.bmp" - IDS_MINIATURETITLE "缩略图" - IDS_TOOLTIP1 "自由选择" - IDS_TOOLTIP2 "选择" - IDS_TOOLTIP3 "橡皮擦" - IDS_TOOLTIP4 "å¡«å……" - IDS_TOOLTIP5 "å–色" - IDS_TOOLTIP6 "缩放" - IDS_TOOLTIP7 "铅笔" - IDS_TOOLTIP8 "刷å­" - IDS_TOOLTIP9 "喷枪" - IDS_TOOLTIP10 "文字" - IDS_TOOLTIP11 "直线" - IDS_TOOLTIP12 "è´å¡žå°”曲线" - IDS_TOOLTIP13 "矩形" - IDS_TOOLTIP14 "多边形" - IDS_TOOLTIP15 "椭圆" - IDS_TOOLTIP16 "圆角矩形" - IDS_OPENFILTER "ä½å›¾æ–‡ä»¶ (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" - IDS_SAVEFILTER "24 ä½ä½å›¾æ–‡ä»¶ (*.bmp;*.dib)\1*.bmp;*.dib\1" - IDS_FILESIZE "%d 字节" - IDS_PRINTRES "%d x %d åƒç´ æ¯ç±³" - IDS_INTNUMBERS "åªè¾“入数字积分ï¼" - IDS_PERCENTAGE "百分比必须在1至500之间。" - IDS_ANGLE "该角度必须在-89与89之间。" - IDS_LOADERRORTEXT "该文件 %s 无法加载。" -END diff --git a/reactos/base/applications/mspaint/lang/zh-TW.rc b/reactos/base/applications/mspaint/lang/zh-TW.rc deleted file mode 100644 index a8a45257254..00000000000 --- a/reactos/base/applications/mspaint/lang/zh-TW.rc +++ /dev/null @@ -1,217 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/mspaint/lang/zh-TW.rc - * PURPOSE: Chinese (Traditional) Language resource file - * TRANSLATOR: Elton Chung aka MfldElton - */ - -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL - -ID_MENU MENU -BEGIN - POPUP "檔案(&F)" - BEGIN - MENUITEM "新建(&N)\tCtrl+N", IDM_FILENEW - MENUITEM "開啟... (&O)\tCtrl+O", IDM_FILEOPEN - MENUITEM "儲存(&S)\tCtrl+S", IDM_FILESAVE - MENUITEM "å¦å­˜ç‚º... (&A)", IDM_FILESAVEAS - MENUITEM SEPARATOR - MENUITEM "儲存為å£ç´™ (普通)", IDM_FILEASWALLPAPERPLANE - MENUITEM "儲存為å£ç´™ (居中)", IDM_FILEASWALLPAPERCENTERED - MENUITEM "儲存為å£ç´™ (拉伸)", IDM_FILEASWALLPAPERSTRETCHED - MENUITEM SEPARATOR - MENUITEM "çµæŸ(&Q)\tAlt+F4", IDM_FILEEXIT - END - POPUP "編輯(&E)" - BEGIN - MENUITEM "復原\tCtrl+Z", IDM_EDITUNDO - MENUITEM "é‡åš\tCtrl+Y", IDM_EDITREDO - MENUITEM SEPARATOR - MENUITEM "剪下\tCtrl+X", IDM_EDITCUT - MENUITEM "複製\tCtrl+C", IDM_EDITCOPY - MENUITEM "貼上\tCtrl+V", IDM_EDITPASTE - MENUITEM "刪除é¸ä¸­å€åŸŸ\tDel", IDM_EDITDELETESELECTION - MENUITEM "åè½‰é¸æ“‡", IDM_EDITINVERTSELECTION - MENUITEM "å…¨é¸\tCtrl+A", IDM_EDITSELECTALL - MENUITEM SEPARATOR - MENUITEM "複製到...", IDM_EDITCOPYTO - MENUITEM "從...貼上", IDM_EDITPASTEFROM - END - POPUP "檢視(&V)" - BEGIN - MENUITEM "工具箱\tCtrl+T", IDM_VIEWTOOLBOX, CHECKED - MENUITEM "調色æ¿\tCtrl+L", IDM_VIEWCOLORPALETTE, CHECKED - MENUITEM "狀態列", IDM_VIEWSTATUSBAR, CHECKED - MENUITEM "文字工具列", IDM_FORMATICONBAR, CHECKED, GRAYED - MENUITEM SEPARATOR - POPUP "縮放" - BEGIN - POPUP "用戶自定義" - BEGIN - MENUITEM "12.5%", IDM_VIEWZOOM125 - MENUITEM "25%", IDM_VIEWZOOM25 - MENUITEM "50%", IDM_VIEWZOOM50 - MENUITEM "100%", IDM_VIEWZOOM100 - MENUITEM "200%", IDM_VIEWZOOM200 - MENUITEM "400%", IDM_VIEWZOOM400 - MENUITEM "800%", IDM_VIEWZOOM800 - END - MENUITEM SEPARATOR - MENUITEM "顯示格線\tCtrl+G", IDM_VIEWSHOWGRID - MENUITEM "顯示縮圖", IDM_VIEWSHOWMINIATURE - END - MENUITEM "å…¨å±é¡¯ç¤º\tCtrl+F", IDM_VIEWFULLSCREEN - END - POPUP "圖åƒ(&I)" - BEGIN - MENUITEM "旋轉/翻轉...\tCtrl+R", IDM_IMAGEROTATEMIRROR - MENUITEM "Stretch/skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW - MENUITEM "剪è£", IDM_IMAGECROP - MENUITEM "é¡è‰²å轉\tCtrl+I", IDM_IMAGEINVERTCOLORS - MENUITEM "內容...\tCtrl+E", IDM_IMAGEATTRIBUTES - MENUITEM "刪除圖åƒ\tCtrl+Shft+N", IDM_IMAGEDELETEIMAGE - MENUITEM "ä¸é€æ˜Žè™•ç†", IDM_IMAGEDRAWOPAQUE - END - POPUP "é¡è‰²(&C)" - BEGIN - MENUITEM "編輯色彩...", IDM_COLORSEDITPALETTE - MENUITEM SEPARATOR - MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE - MENUITEM "Old palette", IDM_COLORSOLDPALETTE - END - POPUP "說明(&?)" - BEGIN - MENUITEM "說明主題", IDM_HELPHELPTOPICS - MENUITEM SEPARATOR - MENUITEM "關於", IDM_HELPINFO - END -END - -ID_ACCELERATORS ACCELERATORS -BEGIN - "^N", IDM_FILENEW - "^O", IDM_FILEOPEN - "^S", IDM_FILESAVE - "^Z", IDM_EDITUNDO - "^Y", IDM_EDITREDO - "^X", IDM_EDITCUT - "^C", IDM_EDITCOPY - "^V", IDM_EDITPASTE - VK_DELETE, IDM_EDITDELETESELECTION, VIRTKEY - "^A", IDM_EDITSELECTALL - "^T", IDM_VIEWTOOLBOX - "^L", IDM_VIEWCOLORPALETTE - "^G", IDM_VIEWSHOWGRID - "^F", IDM_VIEWFULLSCREEN - "^R", IDM_IMAGEROTATEMIRROR - "^W", IDM_IMAGESTRETCHSKEW - "^I", IDM_IMAGEINVERTCOLORS - "^E", IDM_IMAGEATTRIBUTES - "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY -END - -IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "旋轉和翻轉圖åƒ" -BEGIN - GROUPBOX "旋轉或翻轉", IDD_MIRRORROTATEGROUP, 6, 6, 112, 86 - AUTORADIOBUTTON "水平翻轉", IDD_MIRRORROTATERB1, 12, 18, 100, 10, WS_GROUP - AUTORADIOBUTTON "垂直翻轉", IDD_MIRRORROTATERB2, 12, 30, 100, 10 - AUTORADIOBUTTON "旋轉角度", IDD_MIRRORROTATERB3, 12, 42, 100, 10 - AUTORADIOBUTTON "&90°", IDD_MIRRORROTATERB4, 42, 54, 50, 10, WS_GROUP | WS_DISABLED - AUTORADIOBUTTON "&180°", IDD_MIRRORROTATERB5, 42, 66, 50, 10, WS_DISABLED - AUTORADIOBUTTON "&270°", IDD_MIRRORROTATERB6, 42, 78, 50, 10, WS_DISABLED - DEFPUSHBUTTON "確定", IDOK, 125, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 125, 24, 48, 14 -END - -IDD_ATTRIBUTES DIALOGEX 100, 100, 225, 120 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "內容" -BEGIN - EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12 - EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12 - LTEXT "寬度:", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10 - LTEXT "高度:", IDD_ATTRIBUTESTEXT2, 90, 40, 30, 10 - LTEXT "文件日期:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10 - LTEXT "文件大å°ï¼š", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10 - LTEXT "è§£æžåº¦ï¼š", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10 - LTEXT "ä¸å¯ç”¨", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 - GROUPBOX "å–®ä½", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27 - AUTORADIOBUTTON "英寸", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP - AUTORADIOBUTTON "厘米", IDD_ATTRIBUTESRB2, 62, 69, 45, 10 - AUTORADIOBUTTON "åƒç´ ", IDD_ATTRIBUTESRB3, 112, 69, 45, 10 - GROUPBOX "é¡è‰²", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27 - AUTORADIOBUTTON "黑白", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP - AUTORADIOBUTTON "彩色", IDD_ATTRIBUTESRB5, 92, 100, 35, 10 - DEFPUSHBUTTON "確定", IDOK, 170, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 170, 24, 48, 14 - PUSHBUTTON "é è¨­å€¼", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14 -END - -IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80 -STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 9, "MS Shell Dlg" -CAPTION "Stretch and skew image" -BEGIN - GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66 - ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32 - LTEXT "水平:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12 - LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10 - ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32 - LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12 - LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10 - GROUPBOX "Skew", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66 - ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32 - LTEXT "水平:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12 - LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10 - ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32 - LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10 - EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12 - LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10 - DEFPUSHBUTTON "確定", IDOK, 170, 8, 48, 14 - PUSHBUTTON "å–æ¶ˆ", IDCANCEL, 170, 24, 48, 14 -END - -STRINGTABLE -BEGIN - IDS_PROGRAMNAME "畫圖" - IDS_WINDOWTITLE "%s - 畫圖" - IDS_INFOTITLE "ReactOS 畫圖" - IDS_INFOTEXT "ReactOS 畫圖是在 GNU LGPL 下發佈的 (詳見 www.gnu.org)" - IDS_SAVEPROMPTTEXT "您想把改變ä¿å­˜åˆ° %s 嗎?" - IDS_DEFAULTFILENAME "未命å.bmp" - IDS_MINIATURETITLE "縮圖" - IDS_TOOLTIP1 "è‡ªç”±é¸æ“‡" - IDS_TOOLTIP2 "鏿“‡" - IDS_TOOLTIP3 "橡皮擦" - IDS_TOOLTIP4 "å¡«å……" - IDS_TOOLTIP5 "å–色" - IDS_TOOLTIP6 "縮放" - IDS_TOOLTIP7 "鉛筆" - IDS_TOOLTIP8 "刷å­" - IDS_TOOLTIP9 "å™´æ§" - IDS_TOOLTIP10 "文字" - IDS_TOOLTIP11 "ç›´ç·š" - IDS_TOOLTIP12 "è²å¡žçˆ¾æ›²ç·š" - IDS_TOOLTIP13 "矩形" - IDS_TOOLTIP14 "多邊形" - IDS_TOOLTIP15 "橢圓形" - IDS_TOOLTIP16 "圓角矩形" - IDS_OPENFILTER "點陣圖文件 (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" - IDS_SAVEFILTER "24 ä½å…ƒé»žé™£åœ– (*.bmp;*.dib)\1*.bmp;*.dib\1" - IDS_FILESIZE "%d ä½å…ƒçµ„" - IDS_PRINTRES "%d x %d åƒç´ æ¯ç±³" - IDS_INTNUMBERS "Please enter integral numbers only!" - IDS_PERCENTAGE "The percentage must be between 1 and 500." - IDS_ANGLE "The angle must be between -89 and 89." - IDS_LOADERRORTEXT "The file %s could not be loaded." -END diff --git a/reactos/base/applications/mspaint/main.c b/reactos/base/applications/mspaint/main.c deleted file mode 100644 index 18044e4916a..00000000000 --- a/reactos/base/applications/mspaint/main.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/main.c - * PURPOSE: Initializing everything - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -#include "winproc.h" -#include "scrollbox.h" -#include "palette.h" -#include "toolsettings.h" -#include "selection.h" -#include "sizebox.h" -#include "textedit.h" - -/* FUNCTIONS ********************************************************/ - -HDC hDrawingDC; -HDC hSelDC; -int *bmAddress; -BITMAPINFO bitmapinfo; -int imgXRes = 400; -int imgYRes = 300; - -int widthSetInDlg; -int heightSetInDlg; - -STRETCHSKEW stretchSkew; - -HBITMAP hBms[HISTORYSIZE]; -int currInd = 0; -int undoSteps = 0; -int redoSteps = 0; -BOOL imageSaved = TRUE; - -POINT start; -POINT last; -int lineWidth = 1; -int shapeStyle = 0; -int brushStyle = 0; -int activeTool = TOOL_PEN; -int airBrushWidth = 5; -int rubberRadius = 4; -int transpBg = 0; -int zoom = 1000; -RECT rectSel_src; -RECT rectSel_dest; -HWND hSelection; -HWND hImageArea; -HBITMAP hSelBm; -HBITMAP hSelMask; -LOGFONT lfTextFont; -HFONT hfontTextFont; -HWND hwndTextEdit; -HWND hwndEditCtl; -LPTSTR textToolText = NULL; -int textToolTextMaxLen = 0; - -/* array holding palette colors; may be changed by the user during execution */ -int palColors[28]; - -/* modern palette */ -int modernPalColors[28] = { 0x000000, 0x464646, 0x787878, 0x300099, 0x241ced, 0x0078ff, 0x0ec2ff, - 0x00f2ff, 0x1de6a8, 0x4cb122, 0xefb700, 0xf36d4d, 0x99362f, 0x98316f, - 0xffffff, 0xdcdcdc, 0xb4b4b4, 0x3c5a9c, 0xb1a3ff, 0x7aaae5, 0x9ce4f5, - 0xbdf9ff, 0xbcf9d3, 0x61bb9d, 0xead999, 0xd19a70, 0x8e6d54, 0xd5a5b5 -}; - -/* older palette containing VGA colors */ -int oldPalColors[28] = { 0x000000, 0x808080, 0x000080, 0x008080, 0x008000, 0x808000, 0x800000, - 0x800080, 0x408080, 0x404000, 0xff8000, 0x804000, 0xff0040, 0x004080, - 0xffffff, 0xc0c0c0, 0x0000ff, 0x00ffff, 0x00ff00, 0xffff00, 0xff0000, - 0xff00ff, 0x80ffff, 0x80ff00, 0xffff80, 0xff8080, 0x8000ff, 0x4080ff -}; - -/* palette currently in use (1: modern, 2: old) */ -int selectedPalette; - -/* foreground and background colors with initial value */ -int fgColor = 0x00000000; -int bgColor = 0x00ffffff; - -HWND hStatusBar; -HWND hScrollbox; -HWND hMainWnd; -HWND hPalWin; -HWND hToolBoxContainer; -HWND hToolSettings; -HWND hTrackbarZoom; -CHOOSECOLOR choosecolor; -OPENFILENAME ofn; -OPENFILENAME sfn; -HICON hNontranspIcon; -HICON hTranspIcon; - -HCURSOR hCurFill; -HCURSOR hCurColor; -HCURSOR hCurZoom; -HCURSOR hCurPen; -HCURSOR hCurAirbrush; - -HWND hScrlClient; - -HWND hToolBtn[16]; - -HINSTANCE hProgInstance; - -TCHAR filename[256]; -TCHAR filepathname[1000]; -BOOL isAFile = FALSE; -int fileSize; -int fileHPPM = 2834; -int fileVPPM = 2834; -SYSTEMTIME fileTime; - -BOOL showGrid = FALSE; -BOOL showMiniature = FALSE; - -HWND hwndMiniature; - -HWND hSizeboxLeftTop; -HWND hSizeboxCenterTop; -HWND hSizeboxRightTop; -HWND hSizeboxLeftCenter; -HWND hSizeboxRightCenter; -HWND hSizeboxLeftBottom; -HWND hSizeboxCenterBottom; -HWND hSizeboxRightBottom; - -/* entry point */ - -int WINAPI -_tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument, int nFunsterStil) -{ - HWND hwnd; /* This is the handle for our window */ - MSG messages; /* Here messages to the application are saved */ - - TCHAR progtitle[1000]; - TCHAR resstr[100]; - HMENU menu; - HWND hToolbar; - HIMAGELIST hImageList; - HANDLE haccel; - HBITMAP tempBm; - int i; - TCHAR tooltips[16][30]; - HDC hDC; - - TCHAR *c; - TCHAR sfnFilename[1000]; - TCHAR sfnFiletitle[256]; - TCHAR sfnFilter[1000]; - TCHAR ofnFilename[1000]; - TCHAR ofnFiletitle[256]; - TCHAR ofnFilter[1000]; - TCHAR miniaturetitle[100]; - static int custColors[16] = { 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff - }; - - /* init font for text tool */ - lfTextFont.lfHeight = 0; - lfTextFont.lfWidth = 0; - lfTextFont.lfEscapement = 0; - lfTextFont.lfOrientation = 0; - lfTextFont.lfWeight = FW_NORMAL; - lfTextFont.lfItalic = FALSE; - lfTextFont.lfUnderline = FALSE; - lfTextFont.lfStrikeOut = FALSE; - lfTextFont.lfCharSet = DEFAULT_CHARSET; - lfTextFont.lfOutPrecision = OUT_DEFAULT_PRECIS; - lfTextFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; - lfTextFont.lfQuality = DEFAULT_QUALITY; - lfTextFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; - lstrcpy(lfTextFont.lfFaceName, _T("")); - hfontTextFont = CreateFontIndirect(&lfTextFont); - - /* init palette */ - selectedPalette = 1; - CopyMemory(palColors, modernPalColors, sizeof(palColors)); - - hProgInstance = hThisInstance; - - /* initialize common controls library */ - InitCommonControls(); - - /* register application defined window classes */ - RegisterWclMain(); - RegisterWclScrollbox(); - RegisterWclPal(); - RegisterWclSettings(); - RegisterWclSelection(); - RegisterWclSizebox(); - RegisterWclTextEdit(); - - LoadString(hThisInstance, IDS_DEFAULTFILENAME, filename, SIZEOF(filename)); - LoadString(hThisInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); - _stprintf(progtitle, resstr, filename); - LoadString(hThisInstance, IDS_MINIATURETITLE, miniaturetitle, SIZEOF(miniaturetitle)); - - /* create main window */ - hwnd = - CreateWindowEx(0, _T("MainWindow"), progtitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, - 375, HWND_DESKTOP, NULL, hThisInstance, NULL); - hMainWnd = hwnd; - - hwndMiniature = - CreateWindowEx(WS_EX_PALETTEWINDOW, _T("MainWindow"), miniaturetitle, - WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, 180, 200, 120, 100, hwnd, - NULL, hThisInstance, NULL); - - /* loading and setting the window menu from resource */ - menu = LoadMenu(hThisInstance, MAKEINTRESOURCE(ID_MENU)); - SetMenu(hwnd, menu); - haccel = LoadAccelerators(hThisInstance, MAKEINTRESOURCE(800)); - - /* preloading the draw transparent/nontransparent icons for later use */ - hNontranspIcon = - LoadImage(hThisInstance, MAKEINTRESOURCE(IDI_NONTRANSPARENT), IMAGE_ICON, 40, 30, LR_DEFAULTCOLOR); - hTranspIcon = - LoadImage(hThisInstance, MAKEINTRESOURCE(IDI_TRANSPARENT), IMAGE_ICON, 40, 30, LR_DEFAULTCOLOR); - - hCurFill = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDC_FILL)); - hCurColor = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDC_COLOR)); - hCurZoom = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDC_ZOOM)); - hCurPen = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDC_PEN)); - hCurAirbrush = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDC_AIRBRUSH)); - - CreateWindowEx(0, _T("STATIC"), _T(""), WS_CHILD | WS_VISIBLE | SS_ETCHEDHORZ, 0, 0, 5000, 2, hwnd, NULL, - hThisInstance, NULL); - - hToolBoxContainer = - CreateWindowEx(0, _T("MainWindow"), _T(""), WS_CHILD | WS_VISIBLE, 2, 2, 52, 350, hwnd, NULL, - hThisInstance, NULL); - /* creating the 16 bitmap radio buttons and setting the bitmap */ - - - /* - * FIXME: Unintentionally there is a line above the tool bar (hidden by y-offset). - * To prevent cropping of the buttons height has been increased from 200 to 205 - */ - hToolbar = - CreateWindowEx(0, TOOLBARCLASSNAME, NULL, - WS_CHILD | WS_VISIBLE | CCS_NOPARENTALIGN | CCS_VERT | CCS_NORESIZE | TBSTYLE_TOOLTIPS, - 1, -2, 50, 205, hToolBoxContainer, NULL, hThisInstance, NULL); - hImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 16, 0); - SendMessage(hToolbar, TB_SETIMAGELIST, 0, (LPARAM) hImageList); - tempBm = LoadImage(hThisInstance, MAKEINTRESOURCE(IDB_TOOLBARICONS), IMAGE_BITMAP, 256, 16, 0); - ImageList_AddMasked(hImageList, tempBm, 0xff00ff); - DeleteObject(tempBm); - SendMessage(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); - - for(i = 0; i < 16; i++) - { - TBBUTTON tbbutton; - int wrapnow = 0; - - if (i % 2 == 1) - wrapnow = TBSTATE_WRAP; - - LoadString(hThisInstance, IDS_TOOLTIP1 + i, tooltips[i], 30); - ZeroMemory(&tbbutton, sizeof(TBBUTTON)); - tbbutton.iString = (INT_PTR) tooltips[i]; - tbbutton.fsStyle = TBSTYLE_CHECKGROUP; - tbbutton.fsState = TBSTATE_ENABLED | wrapnow; - tbbutton.idCommand = ID_FREESEL + i; - tbbutton.iBitmap = i; - SendMessage(hToolbar, TB_ADDBUTTONS, 1, (LPARAM) &tbbutton); - } - - SendMessage(hToolbar, TB_CHECKBUTTON, ID_PEN, MAKELONG(TRUE, 0)); - SendMessage(hToolbar, TB_SETMAXTEXTROWS, 0, 0); - SendMessage(hToolbar, TB_SETBUTTONSIZE, 0, MAKELONG(25, 25)); - - /* creating the tool settings child window */ - hToolSettings = - CreateWindowEx(0, _T("ToolSettings"), _T(""), WS_CHILD | WS_VISIBLE, 5, 208, 42, 140, - hToolBoxContainer, NULL, hThisInstance, NULL); - hTrackbarZoom = - CreateWindowEx(0, TRACKBAR_CLASS, _T(""), WS_CHILD | TBS_VERT | TBS_AUTOTICKS, 1, 1, 40, 64, - hToolSettings, NULL, hThisInstance, NULL); - SendMessage(hTrackbarZoom, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(0, 6)); - SendMessage(hTrackbarZoom, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) 3); - - /* creating the palette child window */ - hPalWin = - CreateWindowEx(0, _T("Palette"), _T(""), WS_CHILD | WS_VISIBLE, 56, 9, 255, 32, hwnd, NULL, - hThisInstance, NULL); - - /* creating the scroll box */ - hScrollbox = - CreateWindowEx(WS_EX_CLIENTEDGE, _T("Scrollbox"), _T(""), - WS_CHILD | WS_GROUP | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE, 56, 49, 472, 248, hwnd, - NULL, hThisInstance, NULL); - - /* creating the status bar */ - hStatusBar = - CreateWindowEx(0, STATUSCLASSNAME, _T(""), SBARS_SIZEGRIP | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, - NULL, hThisInstance, NULL); - SendMessage(hStatusBar, SB_SETMINHEIGHT, 21, 0); - - hScrlClient = - CreateWindowEx(0, _T("Scrollbox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 500, 500, hScrollbox, NULL, - hThisInstance, NULL); - - /* create selection window (initially hidden) */ - hSelection = - CreateWindowEx(WS_EX_TRANSPARENT, _T("Selection"), _T(""), WS_CHILD | BS_OWNERDRAW, 350, 0, 100, 100, - hScrlClient, NULL, hThisInstance, NULL); - - /* creating the window inside the scroll box, on which the image in hDrawingDC's bitmap is drawn */ - hImageArea = - CreateWindowEx(0, _T("MainWindow"), _T(""), WS_CHILD | WS_VISIBLE, 3, 3, imgXRes, imgYRes, hScrlClient, - NULL, hThisInstance, NULL); - - hDC = GetDC(hImageArea); - hDrawingDC = CreateCompatibleDC(hDC); - hSelDC = CreateCompatibleDC(hDC); - ReleaseDC(hImageArea, hDC); - SelectObject(hDrawingDC, CreatePen(PS_SOLID, 0, fgColor)); - SelectObject(hDrawingDC, CreateSolidBrush(bgColor)); - - hBms[0] = CreateDIBWithProperties(imgXRes, imgYRes); - SelectObject(hDrawingDC, hBms[0]); - Rectangle(hDrawingDC, 0 - 1, 0 - 1, imgXRes + 1, imgYRes + 1); - - if (lpszArgument[0] != 0) - { - HBITMAP bmNew = NULL; - LoadDIBFromFile(&bmNew, lpszArgument, &fileTime, &fileSize, &fileHPPM, &fileVPPM); - if (bmNew != NULL) - { - TCHAR tempstr[1000]; - TCHAR resstr[100]; - TCHAR *temp; - insertReversible(bmNew); - GetFullPathName(lpszArgument, SIZEOF(filepathname), filepathname, &temp); - _tcscpy(filename, temp); - LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); - _stprintf(tempstr, resstr, filename); - SetWindowText(hMainWnd, tempstr); - clearHistory(); - isAFile = TRUE; - } - else - { - exit(0); - } - } - - /* initializing the CHOOSECOLOR structure for use with ChooseColor */ - choosecolor.lStructSize = sizeof(CHOOSECOLOR); - choosecolor.hwndOwner = hwnd; - choosecolor.hInstance = NULL; - choosecolor.rgbResult = 0x00ffffff; - choosecolor.lpCustColors = (COLORREF*) &custColors; - choosecolor.Flags = 0; - choosecolor.lCustData = 0; - choosecolor.lpfnHook = NULL; - choosecolor.lpTemplateName = NULL; - - /* initializing the OPENFILENAME structure for use with GetOpenFileName and GetSaveFileName */ - CopyMemory(ofnFilename, filename, sizeof(filename)); - LoadString(hThisInstance, IDS_OPENFILTER, ofnFilter, SIZEOF(ofnFilter)); - for(c = ofnFilter; *c; c++) - if (*c == '\1') - *c = '\0'; - ZeroMemory(&ofn, sizeof(OPENFILENAME)); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = hwnd; - ofn.hInstance = hThisInstance; - ofn.lpstrFilter = ofnFilter; - ofn.lpstrFile = ofnFilename; - ofn.nMaxFile = SIZEOF(ofnFilename); - ofn.lpstrFileTitle = ofnFiletitle; - ofn.nMaxFileTitle = SIZEOF(ofnFiletitle); - ofn.Flags = OFN_HIDEREADONLY; - - CopyMemory(sfnFilename, filename, sizeof(filename)); - LoadString(hThisInstance, IDS_SAVEFILTER, sfnFilter, SIZEOF(sfnFilter)); - for(c = sfnFilter; *c; c++) - if (*c == '\1') - *c = '\0'; - ZeroMemory(&sfn, sizeof(OPENFILENAME)); - sfn.lStructSize = sizeof(OPENFILENAME); - sfn.hwndOwner = hwnd; - sfn.hInstance = hThisInstance; - sfn.lpstrFilter = sfnFilter; - sfn.lpstrFile = sfnFilename; - sfn.nMaxFile = SIZEOF(sfnFilename); - sfn.lpstrFileTitle = sfnFiletitle; - sfn.nMaxFileTitle = SIZEOF(sfnFiletitle); - sfn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; - - /* creating the size boxes */ - hSizeboxLeftTop = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxCenterTop = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxRightTop = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxLeftCenter = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxRightCenter = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxLeftBottom = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxCenterBottom = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - hSizeboxRightBottom = - CreateWindowEx(0, _T("Sizebox"), _T(""), WS_CHILD | WS_VISIBLE, 0, 0, 3, 3, hScrlClient, NULL, - hThisInstance, NULL); - /* placing the size boxes around the image */ - SendMessage(hImageArea, WM_SIZE, 0, 0); - - /* by moving the window, the things in WM_SIZE are done */ - MoveWindow(hwnd, 100, 100, 600, 450, TRUE); - - /* creating the text editor window for the text tool */ - hwndTextEdit = - CreateWindowEx(0, _T("TextEdit"), _T(""), WS_OVERLAPPEDWINDOW, 300, 0, 300, - 200, hwnd, NULL, hThisInstance, NULL); - /* creating the edit control within the editor window */ - hwndEditCtl = - CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), - WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_NOHIDESEL | ES_AUTOHSCROLL | ES_AUTOVSCROLL, - 0, 0, 100, 100, hwndTextEdit, NULL, hThisInstance, NULL); - - /* Make the window visible on the screen */ - ShowWindow (hwnd, nFunsterStil); - - /* inform the system, that the main window accepts dropped files */ - DragAcceptFiles(hwnd, TRUE); - - /* Run the message loop. It will run until GetMessage() returns 0 */ - while (GetMessage(&messages, NULL, 0, 0)) - { - TranslateAccelerator(hwnd, haccel, &messages); - - /* Translate virtual-key messages into character messages */ - TranslateMessage(&messages); - /* Send message to WindowProcedure */ - DispatchMessage(&messages); - } - - /* The program return-value is 0 - The value that PostQuitMessage() gave */ - return messages.wParam; -} diff --git a/reactos/base/applications/mspaint/mouse.c b/reactos/base/applications/mspaint/mouse.c deleted file mode 100644 index 384292d4c03..00000000000 --- a/reactos/base/applications/mspaint/mouse.c +++ /dev/null @@ -1,592 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/mouse.c - * PURPOSE: Things which should not be in the mouse event handler itself - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -/* FUNCTIONS ********************************************************/ - -void -placeSelWin() -{ - MoveWindow(hSelection, rectSel_dest.left * zoom / 1000, rectSel_dest.top * zoom / 1000, - RECT_WIDTH(rectSel_dest) * zoom / 1000 + 6, RECT_HEIGHT(rectSel_dest) * zoom / 1000 + 6, TRUE); - BringWindowToTop(hSelection); - InvalidateRect(hImageArea, NULL, FALSE); -} - -void -regularize(LONG x0, LONG y0, LONG *x1, LONG *y1) -{ - if (abs(*x1 - x0) >= abs(*y1 - y0)) - *y1 = y0 + (*y1 > y0 ? abs(*x1 - x0) : -abs(*x1 - x0)); - else - *x1 = x0 + (*x1 > x0 ? abs(*y1 - y0) : -abs(*y1 - y0)); -} - -void -roundTo8Directions(LONG x0, LONG y0, LONG *x1, LONG *y1) -{ - if (abs(*x1 - x0) >= abs(*y1 - y0)) - { - if (abs(*y1 - y0) * 5 < abs(*x1 - x0) * 2) - *y1 = y0; - else - *y1 = y0 + (*y1 > y0 ? abs(*x1 - x0) : -abs(*x1 - x0)); - } - else - { - if (abs(*x1 - x0) * 5 < abs(*y1 - y0) * 2) - *x1 = x0; - else - *x1 = x0 + (*x1 > x0 ? abs(*y1 - y0) : -abs(*y1 - y0)); - } -} - -POINT pointStack[256]; -short pointSP; -POINT *ptStack = NULL; -int ptSP = 0; - -void -startPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - start.x = x; - start.y = y; - last.x = x; - last.y = y; - switch (activeTool) - { - case TOOL_FREESEL: - ShowWindow(hSelection, SW_HIDE); - if (ptStack != NULL) - HeapFree(GetProcessHeap(), 0, ptStack); - ptStack = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sizeof(POINT) * 1024); - ptSP = 0; - ptStack[0].x = x; - ptStack[0].y = y; - break; - case TOOL_LINE: - case TOOL_RECT: - case TOOL_ELLIPSE: - case TOOL_RRECT: - newReversible(); - break; - case TOOL_RECTSEL: - case TOOL_TEXT: - newReversible(); - ShowWindow(hSelection, SW_HIDE); - rectSel_src.right = rectSel_src.left; - rectSel_src.bottom = rectSel_src.top; - break; - case TOOL_RUBBER: - newReversible(); - Erase(hdc, x, y, x, y, bg, rubberRadius); - break; - case TOOL_FILL: - newReversible(); - Fill(hdc, x, y, fg); - break; - case TOOL_PEN: - newReversible(); - SetPixel(hdc, x, y, fg); - break; - case TOOL_BRUSH: - newReversible(); - Brush(hdc, x, y, x, y, fg, brushStyle); - break; - case TOOL_AIRBRUSH: - newReversible(); - Airbrush(hdc, x, y, fg, airBrushWidth); - break; - case TOOL_BEZIER: - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if (pointSP == 0) - { - newReversible(); - pointSP++; - } - break; - case TOOL_SHAPE: - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if (pointSP + 1 >= 2) - Poly(hdc, pointStack, pointSP + 1, fg, bg, lineWidth, shapeStyle, FALSE, FALSE); - if (pointSP == 0) - { - newReversible(); - pointSP++; - } - break; - } -} - -void -whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - switch (activeTool) - { - case TOOL_FREESEL: - if (ptSP == 0) - newReversible(); - ptSP++; - if (ptSP % 1024 == 0) - ptStack = HeapReAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, ptStack, sizeof(POINT) * (ptSP + 1024)); - ptStack[ptSP].x = max(0, min(x, imgXRes)); - ptStack[ptSP].y = max(0, min(y, imgYRes)); - resetToU1(); - Poly(hdc, ptStack, ptSP + 1, 0, 0, 2, 0, FALSE, TRUE); /* draw the freehand selection inverted/xored */ - break; - case TOOL_RECTSEL: - case TOOL_TEXT: - { - POINT temp; - resetToU1(); - temp.x = max(0, min(x, imgXRes)); - temp.y = max(0, min(y, imgYRes)); - rectSel_dest.left = rectSel_src.left = min(start.x, temp.x); - rectSel_dest.top = rectSel_src.top = min(start.y, temp.y); - rectSel_dest.right = rectSel_src.right = max(start.x, temp.x); - rectSel_dest.bottom = rectSel_src.bottom = max(start.y, temp.y); - RectSel(hdc, start.x, start.y, temp.x, temp.y); - break; - } - case TOOL_RUBBER: - Erase(hdc, last.x, last.y, x, y, bg, rubberRadius); - break; - case TOOL_PEN: - Line(hdc, last.x, last.y, x, y, fg, 1); - break; - case TOOL_BRUSH: - Brush(hdc, last.x, last.y, x, y, fg, brushStyle); - break; - case TOOL_AIRBRUSH: - Airbrush(hdc, x, y, fg, airBrushWidth); - break; - case TOOL_LINE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - roundTo8Directions(start.x, start.y, &x, &y); - Line(hdc, start.x, start.y, x, y, fg, lineWidth); - break; - case TOOL_BEZIER: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - switch (pointSP) - { - case 1: - Line(hdc, pointStack[0].x, pointStack[0].y, pointStack[1].x, pointStack[1].y, fg, - lineWidth); - break; - case 2: - Bezier(hdc, pointStack[0], pointStack[2], pointStack[2], pointStack[1], fg, lineWidth); - break; - case 3: - Bezier(hdc, pointStack[0], pointStack[2], pointStack[3], pointStack[1], fg, lineWidth); - break; - } - break; - case TOOL_RECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Rect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - case TOOL_SHAPE: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if ((pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0)) - roundTo8Directions(pointStack[pointSP - 1].x, pointStack[pointSP - 1].y, - &pointStack[pointSP].x, &pointStack[pointSP].y); - if (pointSP + 1 >= 2) - Poly(hdc, pointStack, pointSP + 1, fg, bg, lineWidth, shapeStyle, FALSE, FALSE); - break; - case TOOL_ELLIPSE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Ellp(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - case TOOL_RRECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - RRect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - } - - last.x = x; - last.y = y; -} - -void -endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - switch (activeTool) - { - case TOOL_FREESEL: - { - POINT *ptStackCopy; - int i; - rectSel_src.left = rectSel_src.top = MAXLONG; - rectSel_src.right = rectSel_src.bottom = 0; - for (i = 0; i <= ptSP; i++) - { - if (ptStack[i].x < rectSel_src.left) - rectSel_src.left = ptStack[i].x; - if (ptStack[i].y < rectSel_src.top) - rectSel_src.top = ptStack[i].y; - if (ptStack[i].x > rectSel_src.right) - rectSel_src.right = ptStack[i].x; - if (ptStack[i].y > rectSel_src.bottom) - rectSel_src.bottom = ptStack[i].y; - } - rectSel_src.right += 1; - rectSel_src.bottom += 1; - rectSel_dest.left = rectSel_src.left; - rectSel_dest.top = rectSel_src.top; - rectSel_dest.right = rectSel_src.right; - rectSel_dest.bottom = rectSel_src.bottom; - if (ptSP != 0) - { - DeleteObject(hSelMask); - hSelMask = CreateBitmap(RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), 1, 1, NULL); - DeleteObject(SelectObject(hSelDC, hSelMask)); - ptStackCopy = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sizeof(POINT) * (ptSP + 1)); - for (i = 0; i <= ptSP; i++) - { - ptStackCopy[i].x = ptStack[i].x - rectSel_src.left; - ptStackCopy[i].y = ptStack[i].y - rectSel_src.top; - } - Poly(hSelDC, ptStackCopy, ptSP + 1, 0x00ffffff, 0x00ffffff, 1, 2, TRUE, FALSE); - HeapFree(GetProcessHeap(), 0, ptStackCopy); - SelectObject(hSelDC, hSelBm = CreateDIBWithProperties(RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src))); - resetToU1(); - MaskBlt(hSelDC, 0, 0, RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), hDrawingDC, rectSel_src.left, - rectSel_src.top, hSelMask, 0, 0, MAKEROP4(SRCCOPY, WHITENESS)); - Poly(hdc, ptStack, ptSP + 1, bg, bg, 1, 2, TRUE, FALSE); - newReversible(); - - MaskBlt(hDrawingDC, rectSel_src.left, rectSel_src.top, RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), hSelDC, 0, - 0, hSelMask, 0, 0, MAKEROP4(SRCCOPY, SRCAND)); - - placeSelWin(); - ShowWindow(hSelection, SW_SHOW); - /* force refresh of selection contents */ - SendMessage(hSelection, WM_LBUTTONDOWN, 0, 0); - SendMessage(hSelection, WM_MOUSEMOVE, 0, 0); - SendMessage(hSelection, WM_LBUTTONUP, 0, 0); - } - HeapFree(GetProcessHeap(), 0, ptStack); - ptStack = NULL; - break; - } - case TOOL_RECTSEL: - resetToU1(); - if ((RECT_WIDTH(rectSel_src) != 0) && (RECT_HEIGHT(rectSel_src) != 0)) - { - DeleteObject(hSelMask); - hSelMask = CreateBitmap(RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), 1, 1, NULL); - DeleteObject(SelectObject(hSelDC, hSelMask)); - Rect(hSelDC, 0, 0, RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), 0x00ffffff, 0x00ffffff, 1, 2); - SelectObject(hSelDC, hSelBm = CreateDIBWithProperties(RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src))); - resetToU1(); - BitBlt(hSelDC, 0, 0, RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), hDrawingDC, rectSel_src.left, - rectSel_src.top, SRCCOPY); - Rect(hdc, rectSel_src.left, rectSel_src.top, rectSel_src.right, - rectSel_src.bottom, bgColor, bgColor, 0, TRUE); - newReversible(); - - BitBlt(hDrawingDC, rectSel_src.left, rectSel_src.top, RECT_WIDTH(rectSel_src), RECT_HEIGHT(rectSel_src), hSelDC, 0, - 0, SRCCOPY); - - placeSelWin(); - ShowWindow(hSelection, SW_SHOW); - ForceRefreshSelectionContents(); - } - break; - case TOOL_TEXT: - resetToU1(); - if ((RECT_WIDTH(rectSel_src) != 0) && (RECT_HEIGHT(rectSel_src) != 0)) - { - newReversible(); - - placeSelWin(); - ShowWindow(hSelection, SW_SHOW); - ForceRefreshSelectionContents(); - } - break; - case TOOL_RUBBER: - Erase(hdc, last.x, last.y, x, y, bg, rubberRadius); - break; - case TOOL_PEN: - Line(hdc, last.x, last.y, x, y, fg, 1); - SetPixel(hdc, x, y, fg); - break; - case TOOL_LINE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - roundTo8Directions(start.x, start.y, &x, &y); - Line(hdc, start.x, start.y, x, y, fg, lineWidth); - break; - case TOOL_BEZIER: - pointSP++; - if (pointSP == 4) - pointSP = 0; - break; - case TOOL_RECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Rect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - case TOOL_SHAPE: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if ((pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0)) - roundTo8Directions(pointStack[pointSP - 1].x, pointStack[pointSP - 1].y, - &pointStack[pointSP].x, &pointStack[pointSP].y); - pointSP++; - if (pointSP >= 2) - { - if ((pointStack[0].x - x) * (pointStack[0].x - x) + - (pointStack[0].y - y) * (pointStack[0].y - y) <= lineWidth * lineWidth + 1) - { - Poly(hdc, pointStack, pointSP, fg, bg, lineWidth, shapeStyle, TRUE, FALSE); - pointSP = 0; - } - else - { - Poly(hdc, pointStack, pointSP, fg, bg, lineWidth, shapeStyle, FALSE, FALSE); - } - } - if (pointSP == 255) - pointSP--; - break; - case TOOL_ELLIPSE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Ellp(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - case TOOL_RRECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - RRect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle); - break; - } -} - -void -startPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - start.x = x; - start.y = y; - last.x = x; - last.y = y; - switch (activeTool) - { - case TOOL_FREESEL: - case TOOL_TEXT: - case TOOL_LINE: - case TOOL_RECT: - case TOOL_ELLIPSE: - case TOOL_RRECT: - newReversible(); - break; - case TOOL_RUBBER: - newReversible(); - Replace(hdc, x, y, x, y, fg, bg, rubberRadius); - break; - case TOOL_FILL: - newReversible(); - Fill(hdc, x, y, bg); - break; - case TOOL_PEN: - newReversible(); - SetPixel(hdc, x, y, bg); - break; - case TOOL_BRUSH: - newReversible(); - Brush(hdc, x, y, x, y, bg, brushStyle); - break; - case TOOL_AIRBRUSH: - newReversible(); - Airbrush(hdc, x, y, bg, airBrushWidth); - break; - case TOOL_BEZIER: - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if (pointSP == 0) - { - newReversible(); - pointSP++; - } - break; - case TOOL_SHAPE: - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if (pointSP + 1 >= 2) - Poly(hdc, pointStack, pointSP + 1, bg, fg, lineWidth, shapeStyle, FALSE, FALSE); - if (pointSP == 0) - { - newReversible(); - pointSP++; - } - break; - } -} - -void -whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - switch (activeTool) - { - case TOOL_RUBBER: - Replace(hdc, last.x, last.y, x, y, fg, bg, rubberRadius); - break; - case TOOL_PEN: - Line(hdc, last.x, last.y, x, y, bg, 1); - break; - case TOOL_BRUSH: - Brush(hdc, last.x, last.y, x, y, bg, brushStyle); - break; - case TOOL_AIRBRUSH: - Airbrush(hdc, x, y, bg, airBrushWidth); - break; - case TOOL_LINE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - roundTo8Directions(start.x, start.y, &x, &y); - Line(hdc, start.x, start.y, x, y, bg, lineWidth); - break; - case TOOL_BEZIER: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - switch (pointSP) - { - case 1: - Line(hdc, pointStack[0].x, pointStack[0].y, pointStack[1].x, pointStack[1].y, bg, - lineWidth); - break; - case 2: - Bezier(hdc, pointStack[0], pointStack[2], pointStack[2], pointStack[1], bg, lineWidth); - break; - case 3: - Bezier(hdc, pointStack[0], pointStack[2], pointStack[3], pointStack[1], bg, lineWidth); - break; - } - break; - case TOOL_RECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Rect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - case TOOL_SHAPE: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if ((pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0)) - roundTo8Directions(pointStack[pointSP - 1].x, pointStack[pointSP - 1].y, - &pointStack[pointSP].x, &pointStack[pointSP].y); - if (pointSP + 1 >= 2) - Poly(hdc, pointStack, pointSP + 1, bg, fg, lineWidth, shapeStyle, FALSE, FALSE); - break; - case TOOL_ELLIPSE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Ellp(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - case TOOL_RRECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - RRect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - } - - last.x = x; - last.y = y; -} - -void -endPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg) -{ - switch (activeTool) - { - case TOOL_RUBBER: - Replace(hdc, last.x, last.y, x, y, fg, bg, rubberRadius); - break; - case TOOL_PEN: - Line(hdc, last.x, last.y, x, y, bg, 1); - SetPixel(hdc, x, y, bg); - break; - case TOOL_LINE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - roundTo8Directions(start.x, start.y, &x, &y); - Line(hdc, start.x, start.y, x, y, bg, lineWidth); - break; - case TOOL_BEZIER: - pointSP++; - if (pointSP == 4) - pointSP = 0; - break; - case TOOL_RECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Rect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - case TOOL_SHAPE: - resetToU1(); - pointStack[pointSP].x = x; - pointStack[pointSP].y = y; - if ((pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0)) - roundTo8Directions(pointStack[pointSP - 1].x, pointStack[pointSP - 1].y, - &pointStack[pointSP].x, &pointStack[pointSP].y); - pointSP++; - if (pointSP >= 2) - { - if ((pointStack[0].x - x) * (pointStack[0].x - x) + - (pointStack[0].y - y) * (pointStack[0].y - y) <= lineWidth * lineWidth + 1) - { - Poly(hdc, pointStack, pointSP, bg, fg, lineWidth, shapeStyle, TRUE, FALSE); - pointSP = 0; - } - else - { - Poly(hdc, pointStack, pointSP, bg, fg, lineWidth, shapeStyle, FALSE, FALSE); - } - } - if (pointSP == 255) - pointSP--; - break; - case TOOL_ELLIPSE: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - Ellp(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - case TOOL_RRECT: - resetToU1(); - if (GetAsyncKeyState(VK_SHIFT) < 0) - regularize(start.x, start.y, &x, &y); - RRect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle); - break; - } -} diff --git a/reactos/base/applications/mspaint/mouse.h b/reactos/base/applications/mspaint/mouse.h deleted file mode 100644 index ea56ba8b6ba..00000000000 --- a/reactos/base/applications/mspaint/mouse.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/mouse.h - * PURPOSE: Things which should not be in the mouse event handler itself - * PROGRAMMERS: Benedikt Freisen - */ - -void placeSelWin(void); - -void startPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); - -void whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); - -void endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); - -void startPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); - -void whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); - -void endPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg); diff --git a/reactos/base/applications/mspaint/mspaint.exe.amd64.manifest b/reactos/base/applications/mspaint/mspaint.exe.amd64.manifest deleted file mode 100644 index 1e96c9cb961..00000000000 --- a/reactos/base/applications/mspaint/mspaint.exe.amd64.manifest +++ /dev/null @@ -1,23 +0,0 @@ - - - -Paint - - - - - - diff --git a/reactos/base/applications/mspaint/mspaint.exe.manifest b/reactos/base/applications/mspaint/mspaint.exe.manifest deleted file mode 100644 index bc64ef1fca5..00000000000 --- a/reactos/base/applications/mspaint/mspaint.exe.manifest +++ /dev/null @@ -1,23 +0,0 @@ - - - -Paint - - - - - - diff --git a/reactos/base/applications/mspaint/palette.c b/reactos/base/applications/mspaint/palette.c deleted file mode 100644 index d119fa5fb3c..00000000000 --- a/reactos/base/applications/mspaint/palette.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/palette.c - * PURPOSE: Window procedure of the palette window - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" -#include "palette.h" - -/* FUNCTIONS ********************************************************/ - -void -RegisterWclPal() -{ - WNDCLASSEX wclPal; - /* initializing and registering the window class used for the palette window */ - wclPal.hInstance = hProgInstance; - wclPal.lpszClassName = _T("Palette"); - wclPal.lpfnWndProc = PalWinProc; - wclPal.style = CS_DBLCLKS; - wclPal.cbSize = sizeof(WNDCLASSEX); - wclPal.hIcon = NULL; - wclPal.hIconSm = NULL; - wclPal.hCursor = LoadCursor(NULL, IDC_ARROW); - wclPal.lpszMenuName = NULL; - wclPal.cbClsExtra = 0; - wclPal.cbWndExtra = 0; - wclPal.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); - RegisterClassEx (&wclPal); -} - -LRESULT CALLBACK -PalWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_PAINT: - { - RECT rc = { 0, 0, 31, 32 }; - HDC hDC = GetDC(hwnd); - HPEN oldPen; - HBRUSH oldBrush; - int i, a, b; - - DefWindowProc(hwnd, message, wParam, lParam); - - for(b = 2; b < 30; b++) - for(a = 2; a < 29; a++) - if ((a + b) % 2 == 1) - SetPixel(hDC, a, b, GetSysColor(COLOR_BTNHILIGHT)); - - DrawEdge(hDC, &rc, EDGE_RAISED, BF_TOPLEFT); - DrawEdge(hDC, &rc, BDR_SUNKENOUTER, BF_TOPLEFT | BF_BOTTOMRIGHT); - SetRect(&rc, 11, 12, 26, 27); - DrawEdge(hDC, &rc, BDR_RAISEDINNER, BF_RECT | BF_MIDDLE); - oldPen = SelectObject(hDC, CreatePen(PS_NULL, 0, 0)); - oldBrush = SelectObject(hDC, CreateSolidBrush(bgColor)); - Rectangle(hDC, rc.left, rc.top + 2, rc.right - 1, rc.bottom - 1); - DeleteObject(SelectObject(hDC, oldBrush)); - SetRect(&rc, 4, 5, 19, 20); - DrawEdge(hDC, &rc, BDR_RAISEDINNER, BF_RECT | BF_MIDDLE); - oldBrush = SelectObject(hDC, CreateSolidBrush(fgColor)); - Rectangle(hDC, rc.left + 2, rc.top + 2, rc.right - 1, rc.bottom - 1); - DeleteObject(SelectObject(hDC, oldBrush)); - DeleteObject(SelectObject(hDC, oldPen)); - - for(i = 0; i < 28; i++) - { - SetRect(&rc, 31 + (i % 14) * 16, - 0 + (i / 14) * 16, 16 + 31 + (i % 14) * 16, 16 + 0 + (i / 14) * 16); - DrawEdge(hDC, &rc, EDGE_RAISED, BF_TOPLEFT); - DrawEdge(hDC, &rc, BDR_SUNKENOUTER, BF_RECT); - oldPen = SelectObject(hDC, CreatePen(PS_NULL, 0, 0)); - oldBrush = SelectObject(hDC, CreateSolidBrush(palColors[i])); - Rectangle(hDC, rc.left + 2, rc.top + 2, rc.right - 1, rc.bottom - 1); - DeleteObject(SelectObject(hDC, oldBrush)); - DeleteObject(SelectObject(hDC, oldPen)); - } - ReleaseDC(hwnd, hDC); - break; - } - case WM_LBUTTONDOWN: - if (GET_X_LPARAM(lParam) >= 31) - { - fgColor = palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14]; - InvalidateRect(hwnd, NULL, FALSE); - if (activeTool == 10) - ForceRefreshSelectionContents(); - } - break; - case WM_RBUTTONDOWN: - if (GET_X_LPARAM(lParam) >= 31) - { - bgColor = palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14]; - InvalidateRect(hwnd, NULL, FALSE); - if (activeTool == 10) - ForceRefreshSelectionContents(); - } - break; - case WM_LBUTTONDBLCLK: - if (GET_X_LPARAM(lParam) >= 31) - if (ChooseColor(&choosecolor)) - { - palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14] = - choosecolor.rgbResult; - fgColor = choosecolor.rgbResult; - InvalidateRect(hwnd, NULL, FALSE); - if (activeTool == 10) - ForceRefreshSelectionContents(); - } - break; - case WM_RBUTTONDBLCLK: - if (GET_X_LPARAM(lParam) >= 31) - if (ChooseColor(&choosecolor)) - { - palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14] = - choosecolor.rgbResult; - bgColor = choosecolor.rgbResult; - InvalidateRect(hwnd, NULL, FALSE); - if (activeTool == 10) - ForceRefreshSelectionContents(); - } - break; - - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/palette.h b/reactos/base/applications/mspaint/palette.h deleted file mode 100644 index 5bc0b10ef33..00000000000 --- a/reactos/base/applications/mspaint/palette.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/palette.h - * PURPOSE: Window procedure of the palette window - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclPal(); - -LRESULT CALLBACK PalWinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/precomp.h b/reactos/base/applications/mspaint/precomp.h deleted file mode 100644 index 494c84e3601..00000000000 --- a/reactos/base/applications/mspaint/precomp.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _MSPAINT_H -#define _MSPAINT_H - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "definitions.h" -#include "drawing.h" -#include "dib.h" -#include "globalvar.h" -#include "history.h" -#include "mouse.h" -#include "selection.h" - -#endif /* _MSPAINT_H */ diff --git a/reactos/base/applications/mspaint/registry.c b/reactos/base/applications/mspaint/registry.c deleted file mode 100644 index fca10a04bfa..00000000000 --- a/reactos/base/applications/mspaint/registry.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/registry.c - * PURPOSE: Offering functions dealing with registry values - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -#include - -/* FUNCTIONS ********************************************************/ - -void -SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile) //FIXME: Has to be called 2x to apply the pattern (tiled/stretched) too -{ - HKEY hDesktop; - TCHAR szStyle[3], szTile[3]; - - SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID) FileName, SPIF_UPDATEINIFILE); - - if ((dwStyle > 2) || (dwTile > 2)) - return; - - if (RegOpenKeyEx(HKEY_CURRENT_USER, - _T("Control Panel\\Desktop"), 0, KEY_READ | KEY_SET_VALUE, &hDesktop) == ERROR_SUCCESS) - { - RegSetValueEx(hDesktop, _T("Wallpaper"), 0, REG_SZ, (LPBYTE) FileName, - _tcslen(FileName) * sizeof(TCHAR)); - - _stprintf(szStyle, _T("%lu"), dwStyle); - _stprintf(szTile, _T("%lu"), dwTile); - - RegSetValueEx(hDesktop, _T("WallpaperStyle"), 0, REG_SZ, (LPBYTE) szStyle, - _tcslen(szStyle) * sizeof(TCHAR)); - RegSetValueEx(hDesktop, _T("TileWallpaper"), 0, REG_SZ, (LPBYTE) szTile, - _tcslen(szTile) * sizeof(TCHAR)); - - RegCloseKey(hDesktop); - } -} diff --git a/reactos/base/applications/mspaint/registry.h b/reactos/base/applications/mspaint/registry.h deleted file mode 100644 index 8527805df8e..00000000000 --- a/reactos/base/applications/mspaint/registry.h +++ /dev/null @@ -1,9 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/registry.h - * PURPOSE: Offering functions dealing with registry values - * PROGRAMMERS: Benedikt Freisen - */ - -void SetWallpaper(TCHAR *szFileName, DWORD dwStyle, DWORD dwTile); diff --git a/reactos/base/applications/mspaint/rsrc.rc b/reactos/base/applications/mspaint/rsrc.rc deleted file mode 100644 index 77e681972be..00000000000 --- a/reactos/base/applications/mspaint/rsrc.rc +++ /dev/null @@ -1,124 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/mspaint/rsrc.rc - * PURPOSE: Managing the resources - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include -#include - -#include "definitions.h" - -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Paint" -#define REACTOS_STR_INTERNAL_NAME "mspaint" -#define REACTOS_STR_ORIGINAL_FILENAME "mspaint.exe" - -#include - -/* Icons */ - -IDI_APPICON ICON "icons/paint.ico" - -IDB_TOOLBARICONS BITMAP "icons/iconbar.bmp" - -IDI_TRANSPARENT ICON "icons/transparent.ico" -IDI_NONTRANSPARENT ICON "icons/nontransparent.ico" - -IDC_FILL ICON "icons/fill_cur.ico" -IDC_COLOR ICON "icons/color_cur.ico" -IDC_ZOOM ICON "icons/zoom_cur.ico" -IDC_PEN ICON "icons/pen_cur.ico" -IDC_AIRBRUSH ICON "icons/airbrush_cur.ico" - -IDI_HORZSTRETCH ICON "icons/horzstretch.ico" -IDI_VERTSTRETCH ICON "icons/vertstretch.ico" -IDI_HORZSKEW ICON "icons/horzskew.ico" -IDI_VERTSKEW ICON "icons/vertskew.ico" - -#include - -/* UTF-8 */ -#pragma code_page(65001) - -#ifdef LANGUAGE_BG_BG - #include "lang/bg-BG.rc" -#endif -#ifdef LANGUAGE_CS_CZ - #include "lang/cs-CZ.rc" -#endif -#ifdef LANGUAGE_DE_DE - #include "lang/de-DE.rc" -#endif -#ifdef LANGUAGE_EN_GB - #include "lang/en-GB.rc" -#endif -#ifdef LANGUAGE_EN_US - #include "lang/en-US.rc" -#endif -#ifdef LANGUAGE_ES_ES - #include "lang/es-ES.rc" -#endif -#ifdef LANGUAGE_EU_ES - #include "lang/eu-ES.rc" -#endif -#ifdef LANGUAGE_FR_FR - #include "lang/fr-FR.rc" -#endif -#ifdef LANGUAGE_HE_IL - #include "lang/he-IL.rc" -#endif -#ifdef LANGUAGE_HU_HU - #include "lang/hu-HU.rc" -#endif -#ifdef LANGUAGE_IT_IT - #include "lang/it-IT.rc" -#endif -#ifdef LANGUAGE_JA_JP - #include "lang/ja-JP.rc" -#endif -#ifdef LANGUAGE_NL_NL - #include "lang/nl-NL.rc" -#endif -#ifdef LANGUAGE_NB_NO - #include "lang/no-NO.rc" -#endif -#ifdef LANGUAGE_PL_PL - #include "lang/pl-PL.rc" -#endif -#ifdef LANGUAGE_PT_BR - #include "lang/pt-BR.rc" -#endif -#ifdef LANGUAGE_PT_PT - #include "lang/pt-PT.rc" -#endif -#ifdef LANGUAGE_RO_RO - #include "lang/ro-RO.rc" -#endif -#ifdef LANGUAGE_RU_RU - #include "lang/ru-RU.rc" -#endif -#ifdef LANGUAGE_SK_SK - #include "lang/sk-SK.rc" -#endif -#ifdef LANGUAGE_SQ_AL - #include "lang/sq-AL.rc" -#endif -#ifdef LANGUAGE_SV_SE - #include "lang/sv-SE.rc" -#endif -#ifdef LANGUAGE_TR_TR - #include "lang/tr-TR.rc" -#endif -#ifdef LANGUAGE_UK_UA - #include "lang/uk-UA.rc" -#endif -#ifdef LANGUAGE_ZH_CN - #include "lang/zh-CN.rc" -#endif -#ifdef LANGUAGE_ZH_TW - #include "lang/zh-TW.rc" -#endif diff --git a/reactos/base/applications/mspaint/scrollbox.c b/reactos/base/applications/mspaint/scrollbox.c deleted file mode 100644 index 900aab2fa31..00000000000 --- a/reactos/base/applications/mspaint/scrollbox.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: scrollbox.c - * PURPOSE: Functionality surrounding the scroll box window class - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" -#include "scrollbox.h" - -/* FUNCTIONS ********************************************************/ - -void -RegisterWclScrollbox() -{ - WNDCLASSEX wclScroll; - /* initializing and registering the window class used for the scroll box */ - wclScroll.hInstance = hProgInstance; - wclScroll.lpszClassName = _T("Scrollbox"); - wclScroll.lpfnWndProc = ScrollboxWinProc; - wclScroll.style = 0; - wclScroll.cbSize = sizeof(WNDCLASSEX); - wclScroll.hIcon = NULL; - wclScroll.hIconSm = NULL; - wclScroll.hCursor = LoadCursor(NULL, IDC_ARROW); - wclScroll.lpszMenuName = NULL; - wclScroll.cbClsExtra = 0; - wclScroll.cbWndExtra = 0; - wclScroll.hbrBackground = GetSysColorBrush(COLOR_APPWORKSPACE); - RegisterClassEx (&wclScroll); -} - -void -UpdateScrollbox() -{ - RECT clientRectScrollbox; - RECT clientRectImageArea; - SCROLLINFO si; - GetClientRect(hScrollbox, &clientRectScrollbox); - GetClientRect(hImageArea, &clientRectImageArea); - si.cbSize = sizeof(SCROLLINFO); - si.fMask = SIF_PAGE | SIF_RANGE; - si.nMax = clientRectImageArea.right + 6 - 1; - si.nMin = 0; - si.nPage = clientRectScrollbox.right; - SetScrollInfo(hScrollbox, SB_HORZ, &si, TRUE); - GetClientRect(hScrollbox, &clientRectScrollbox); - si.nMax = clientRectImageArea.bottom + 6 - 1; - si.nPage = clientRectScrollbox.bottom; - SetScrollInfo(hScrollbox, SB_VERT, &si, TRUE); - MoveWindow(hScrlClient, - -GetScrollPos(hScrollbox, SB_HORZ), -GetScrollPos(hScrollbox, SB_VERT), - max(clientRectImageArea.right + 6, clientRectScrollbox.right), - max(clientRectImageArea.bottom + 6, clientRectScrollbox.bottom), TRUE); -} - -LRESULT CALLBACK -ScrollboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_SIZE: - if (hwnd == hScrollbox) - { - UpdateScrollbox(); - } - break; - case WM_HSCROLL: - if (hwnd == hScrollbox) - { - SCROLLINFO si; - si.cbSize = sizeof(SCROLLINFO); - si.fMask = SIF_ALL; - GetScrollInfo(hScrollbox, SB_HORZ, &si); - switch (LOWORD(wParam)) - { - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - si.nPos = HIWORD(wParam); - break; - case SB_LINELEFT: - si.nPos -= 5; - break; - case SB_LINERIGHT: - si.nPos += 5; - break; - case SB_PAGELEFT: - si.nPos -= si.nPage; - break; - case SB_PAGERIGHT: - si.nPos += si.nPage; - break; - } - SetScrollInfo(hScrollbox, SB_HORZ, &si, TRUE); - MoveWindow(hScrlClient, -GetScrollPos(hScrollbox, SB_HORZ), - -GetScrollPos(hScrollbox, SB_VERT), imgXRes * zoom / 1000 + 6, - imgYRes * zoom / 1000 + 6, TRUE); - } - break; - - case WM_VSCROLL: - if (hwnd == hScrollbox) - { - SCROLLINFO si; - si.cbSize = sizeof(SCROLLINFO); - si.fMask = SIF_ALL; - GetScrollInfo(hScrollbox, SB_VERT, &si); - switch (LOWORD(wParam)) - { - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - si.nPos = HIWORD(wParam); - break; - case SB_LINEUP: - si.nPos -= 5; - break; - case SB_LINEDOWN: - si.nPos += 5; - break; - case SB_PAGEUP: - si.nPos -= si.nPage; - break; - case SB_PAGEDOWN: - si.nPos += si.nPage; - break; - } - SetScrollInfo(hScrollbox, SB_VERT, &si, TRUE); - MoveWindow(hScrlClient, -GetScrollPos(hScrollbox, SB_HORZ), - -GetScrollPos(hScrollbox, SB_VERT), imgXRes * zoom / 1000 + 6, - imgYRes * zoom / 1000 + 6, TRUE); - } - break; - - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/scrollbox.h b/reactos/base/applications/mspaint/scrollbox.h deleted file mode 100644 index 83f05104b4e..00000000000 --- a/reactos/base/applications/mspaint/scrollbox.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: scrollbox.h - * PURPOSE: Functionality surrounding the scroll box window class - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclScrollbox(); - -void UpdateScrollbox(); - -LRESULT CALLBACK ScrollboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/selection.c b/reactos/base/applications/mspaint/selection.c deleted file mode 100644 index 204b697198d..00000000000 --- a/reactos/base/applications/mspaint/selection.c +++ /dev/null @@ -1,330 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/selection.c - * PURPOSE: Window procedure of the selection window - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -/* DEFINES **********************************************************/ - -#define ACTION_MOVE 0 -#define ACTION_RESIZE_TOP_LEFT 1 -#define ACTION_RESIZE_TOP 2 -#define ACTION_RESIZE_TOP_RIGHT 3 -#define ACTION_RESIZE_LEFT 4 -#define ACTION_RESIZE_RIGHT 5 -#define ACTION_RESIZE_BOTTOM_LEFT 6 -#define ACTION_RESIZE_BOTTOM 7 -#define ACTION_RESIZE_BOTTOM_RIGHT 8 - -/* FUNCTIONS ********************************************************/ - -LPCTSTR cursors[9] = { /* action to mouse cursor lookup table */ - IDC_SIZEALL, - - IDC_SIZENWSE, IDC_SIZENS, IDC_SIZENESW, - IDC_SIZEWE, IDC_SIZEWE, - IDC_SIZENESW, IDC_SIZENS, IDC_SIZENWSE -}; - -BOOL moving = FALSE; -int action = ACTION_MOVE; -POINTS pos; -POINTS frac; -POINT delta; -DWORD system_selection_color; - -void -RegisterWclSelection() -{ - WNDCLASSEX wclSelection; - /* initializing and registering the window class for the selection frame */ - wclSelection.hInstance = hProgInstance; - wclSelection.lpszClassName = _T("Selection"); - wclSelection.lpfnWndProc = SelectionWinProc; - wclSelection.style = CS_DBLCLKS; - wclSelection.cbSize = sizeof(WNDCLASSEX); - wclSelection.hIcon = NULL; - wclSelection.hIconSm = NULL; - wclSelection.hCursor = LoadCursor(NULL, IDC_SIZEALL); - wclSelection.lpszMenuName = NULL; - wclSelection.cbClsExtra = 0; - wclSelection.cbWndExtra = 0; - wclSelection.hbrBackground = NULL; - RegisterClassEx (&wclSelection); -} - -BOOL -ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, HBITMAP hbmMask, int xMask, int yMask, DWORD dwRop, COLORREF keyColor) -{ - HDC hTempDC; - HDC hTempDC2; - HBITMAP hTempBm; - HBRUSH hTempBrush; - HBITMAP hTempMask; - - hTempDC = CreateCompatibleDC(hdcSrc); - hTempDC2 = CreateCompatibleDC(hdcSrc); - hTempBm = CreateCompatibleBitmap(hTempDC, nWidth, nHeight); - SelectObject(hTempDC, hTempBm); - hTempBrush = CreateSolidBrush(keyColor); - SelectObject(hTempDC, hTempBrush); - BitBlt(hTempDC, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY); - PatBlt(hTempDC, 0, 0, nWidth, nHeight, PATINVERT); - hTempMask = CreateBitmap(nWidth, nHeight, 1, 1, NULL); - SelectObject(hTempDC2, hTempMask); - BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, 0, 0, SRCCOPY); - SelectObject(hTempDC, hbmMask); - BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, xMask, yMask, SRCAND); - MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, hTempMask, xMask, yMask, dwRop); - DeleteDC(hTempDC); - DeleteDC(hTempDC2); - DeleteObject(hTempBm); - DeleteObject(hTempBrush); - DeleteObject(hTempMask); - return TRUE; -} - -void -ForceRefreshSelectionContents() -{ - if (IsWindowVisible(hSelection)) - { - SendMessage(hSelection, WM_LBUTTONDOWN, 0, MAKELPARAM(0, 0)); - SendMessage(hSelection, WM_MOUSEMOVE, 0, MAKELPARAM(0, 0)); - SendMessage(hSelection, WM_LBUTTONUP, 0, MAKELPARAM(0, 0)); - } -} - -int -identifyCorner(short x, short y, short w, short h) -{ - if (y < 3) - { - if (x < 3) - return ACTION_RESIZE_TOP_LEFT; - if ((x < w / 2 + 2) && (x >= w / 2 - 1)) - return ACTION_RESIZE_TOP; - if (x >= w - 3) - return ACTION_RESIZE_TOP_RIGHT; - } - if ((y < h / 2 + 2) && (y >= h / 2 - 1)) - { - if (x < 3) - return ACTION_RESIZE_LEFT; - if (x >= w - 3) - return ACTION_RESIZE_RIGHT; - } - if (y >= h - 3) - { - if (x < 3) - return ACTION_RESIZE_BOTTOM_LEFT; - if ((x < w / 2 + 2) && (x >= w / 2 - 1)) - return ACTION_RESIZE_BOTTOM; - if (x >= w - 3) - return ACTION_RESIZE_BOTTOM_RIGHT; - } - return 0; -} - -LRESULT CALLBACK -SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_PAINT: - { - if (!moving) - { - HDC hDC = GetDC(hwnd); - DefWindowProc(hwnd, message, wParam, lParam); - SelectionFrame(hDC, 1, 1, RECT_WIDTH(rectSel_dest) * zoom / 1000 + 5, - RECT_HEIGHT(rectSel_dest) * zoom / 1000 + 5, - system_selection_color); - ReleaseDC(hwnd, hDC); - } - break; - } - case WM_CREATE: - case WM_SYSCOLORCHANGE: - { - /* update the system selection color */ - system_selection_color = GetSysColor(COLOR_HIGHLIGHT); - SendMessage(hwnd, WM_PAINT, 0, MAKELPARAM(0, 0)); - break; - } - case WM_LBUTTONDOWN: - { - pos.x = GET_X_LPARAM(lParam); - pos.y = GET_Y_LPARAM(lParam); - delta.x = 0; - delta.y = 0; - SetCapture(hwnd); - if (action != ACTION_MOVE) - SetCursor(LoadCursor(NULL, cursors[action])); - moving = TRUE; - InvalidateRect(hScrlClient, NULL, TRUE); - break; - } - case WM_MOUSEMOVE: - if (moving) - { - TCHAR sizeStr[100]; - POINT deltaUsed; - resetToU1(); - frac.x += GET_X_LPARAM(lParam) - pos.x; - frac.y += GET_Y_LPARAM(lParam) - pos.y; - delta.x += frac.x * 1000 / zoom; - delta.y += frac.y * 1000 / zoom; - if (zoom < 1000) - { - frac.x = 0; - frac.y = 0; - } - else - { - frac.x -= (frac.x * 1000 / zoom) * zoom / 1000; - frac.y -= (frac.y * 1000 / zoom) * zoom / 1000; - } - switch (action) - { - case ACTION_MOVE: /* move selection */ - deltaUsed.x = delta.x; - deltaUsed.y = delta.y; - OffsetRect(&rectSel_dest, deltaUsed.x, deltaUsed.y); - break; - case ACTION_RESIZE_TOP_LEFT: /* resize at upper left corner */ - deltaUsed.x = min(delta.x, RECT_WIDTH(rectSel_dest) - 1); - deltaUsed.y = min(delta.y, RECT_HEIGHT(rectSel_dest) - 1); - rectSel_dest.left += deltaUsed.x; - rectSel_dest.top += deltaUsed.y; - break; - case ACTION_RESIZE_TOP: /* resize at top edge */ - deltaUsed.x = delta.x; - deltaUsed.y = min(delta.y, RECT_HEIGHT(rectSel_dest) - 1); - rectSel_dest.top += deltaUsed.y; - break; - case ACTION_RESIZE_TOP_RIGHT: /* resize at upper right corner */ - deltaUsed.x = max(delta.x, -(RECT_WIDTH(rectSel_dest) - 1)); - deltaUsed.y = min(delta.y, RECT_HEIGHT(rectSel_dest) - 1); - rectSel_dest.top += deltaUsed.y; - rectSel_dest.right += deltaUsed.x; - break; - case ACTION_RESIZE_LEFT: /* resize at left edge */ - deltaUsed.x = min(delta.x, RECT_WIDTH(rectSel_dest) - 1); - deltaUsed.y = delta.y; - rectSel_dest.left += deltaUsed.x; - break; - case ACTION_RESIZE_RIGHT: /* resize at right edge */ - deltaUsed.x = max(delta.x, -(RECT_WIDTH(rectSel_dest) - 1)); - deltaUsed.y = delta.y; - rectSel_dest.right += deltaUsed.x; - break; - case ACTION_RESIZE_BOTTOM_LEFT: /* resize at lower left corner */ - deltaUsed.x = min(delta.x, RECT_WIDTH(rectSel_dest) - 1); - deltaUsed.y = max(delta.y, -(RECT_HEIGHT(rectSel_dest) - 1)); - rectSel_dest.left += deltaUsed.x; - rectSel_dest.bottom += deltaUsed.y; - break; - case ACTION_RESIZE_BOTTOM: /* resize at bottom edge */ - deltaUsed.x = delta.x; - deltaUsed.y = max(delta.y, -(RECT_HEIGHT(rectSel_dest) - 1)); - rectSel_dest.bottom += deltaUsed.y; - break; - case ACTION_RESIZE_BOTTOM_RIGHT: /* resize at lower right corner */ - deltaUsed.x = max(delta.x, -(RECT_WIDTH(rectSel_dest) - 1)); - deltaUsed.y = max(delta.y, -(RECT_HEIGHT(rectSel_dest) - 1)); - rectSel_dest.right += deltaUsed.x; - rectSel_dest.bottom += deltaUsed.y; - break; - } - delta.x -= deltaUsed.x; - delta.y -= deltaUsed.y; - - _stprintf(sizeStr, _T("%d x %d"), RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest)); - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr); - - if (activeTool == TOOL_TEXT) - { - Text(hDrawingDC, rectSel_dest.left, rectSel_dest.top, rectSel_dest.right, rectSel_dest.bottom, fgColor, bgColor, textToolText, hfontTextFont, transpBg); - } - else - { - if (action != ACTION_MOVE) - StretchBlt(hDrawingDC, rectSel_dest.left, rectSel_dest.top, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), hSelDC, 0, 0, GetDIBWidth(hSelBm), GetDIBHeight(hSelBm), SRCCOPY); - else - if (transpBg == 0) - MaskBlt(hDrawingDC, rectSel_dest.left, rectSel_dest.top, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), - hSelDC, 0, 0, hSelMask, 0, 0, MAKEROP4(SRCCOPY, SRCAND)); - else - { - ColorKeyedMaskBlt(hDrawingDC, rectSel_dest.left, rectSel_dest.top, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), - hSelDC, 0, 0, hSelMask, 0, 0, MAKEROP4(SRCCOPY, SRCAND), bgColor); - } - } - InvalidateRect(hImageArea, NULL, FALSE); - pos.x = GET_X_LPARAM(lParam); - pos.y = GET_Y_LPARAM(lParam); - } - else - { - int w = RECT_WIDTH(rectSel_dest) * zoom / 1000 + 6; - int h = RECT_HEIGHT(rectSel_dest) * zoom / 1000 + 6; - pos.x = GET_X_LPARAM(lParam); - pos.y = GET_Y_LPARAM(lParam); - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) NULL); - action = identifyCorner(pos.x, pos.y, w, h); - if (action != ACTION_MOVE) - SetCursor(LoadCursor(NULL, cursors[action])); - } - break; - case WM_LBUTTONUP: - if (moving) - { - moving = FALSE; - ReleaseCapture(); - if (action != ACTION_MOVE) - { - if (activeTool == TOOL_TEXT) - { - // FIXME: What to do? - } - else - { - HDC hTempDC; - HBITMAP hTempBm; - hTempDC = CreateCompatibleDC(hSelDC); - hTempBm = CreateDIBWithProperties(RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest)); - SelectObject(hTempDC, hTempBm); - SelectObject(hSelDC, hSelBm); - StretchBlt(hTempDC, 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), hSelDC, 0, 0, - GetDIBWidth(hSelBm), GetDIBHeight(hSelBm), SRCCOPY); - DeleteObject(hSelBm); - hSelBm = hTempBm; - hTempBm = CreateBitmap(RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), 1, 1, NULL); - SelectObject(hTempDC, hTempBm); - SelectObject(hSelDC, hSelMask); - StretchBlt(hTempDC, 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), hSelDC, 0, 0, - GetDIBWidth(hSelMask), GetDIBHeight(hSelMask), SRCCOPY); - DeleteObject(hSelMask); - hSelMask = hTempBm; - SelectObject(hSelDC, hSelBm); - DeleteDC(hTempDC); - } - } - placeSelWin(); - ShowWindow(hSelection, SW_HIDE); - ShowWindow(hSelection, SW_SHOW); - } - break; - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/selection.h b/reactos/base/applications/mspaint/selection.h deleted file mode 100644 index c8a31199ed5..00000000000 --- a/reactos/base/applications/mspaint/selection.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/selection.h - * PURPOSE: Window procedure of the selection window - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclSelection(); - -void ForceRefreshSelectionContents(); - -LRESULT CALLBACK SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/sizebox.c b/reactos/base/applications/mspaint/sizebox.c deleted file mode 100644 index f821b7ebce9..00000000000 --- a/reactos/base/applications/mspaint/sizebox.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: sizebox.c - * PURPOSE: Window procedure of the size boxes - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" -#include "sizebox.h" - -/* FUNCTIONS ********************************************************/ - -BOOL resizing = FALSE; -short xOrig; -short yOrig; - -void -RegisterWclSizebox() -{ - WNDCLASSEX wclSizebox; - /* initializing and registering the window class for the size boxes */ - wclSizebox.hInstance = hProgInstance; - wclSizebox.lpszClassName = _T("Sizebox"); - wclSizebox.lpfnWndProc = SizeboxWinProc; - wclSizebox.style = CS_DBLCLKS; - wclSizebox.cbSize = sizeof(WNDCLASSEX); - wclSizebox.hIcon = NULL; - wclSizebox.hIconSm = NULL; - wclSizebox.hCursor = LoadCursor(NULL, IDC_ARROW); - wclSizebox.lpszMenuName = NULL; - wclSizebox.cbClsExtra = 0; - wclSizebox.cbWndExtra = 0; - wclSizebox.hbrBackground = GetSysColorBrush(COLOR_HIGHLIGHT); - RegisterClassEx (&wclSizebox); -} - -LRESULT CALLBACK -SizeboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_SETCURSOR: - if ((hwnd == hSizeboxLeftTop) || (hwnd == hSizeboxRightBottom)) - SetCursor(LoadCursor(NULL, IDC_SIZENWSE)); - if ((hwnd == hSizeboxLeftBottom) || (hwnd == hSizeboxRightTop)) - SetCursor(LoadCursor(NULL, IDC_SIZENESW)); - if ((hwnd == hSizeboxLeftCenter) || (hwnd == hSizeboxRightCenter)) - SetCursor(LoadCursor(NULL, IDC_SIZEWE)); - if ((hwnd == hSizeboxCenterTop) || (hwnd == hSizeboxCenterBottom)) - SetCursor(LoadCursor(NULL, IDC_SIZENS)); - break; - case WM_LBUTTONDOWN: - resizing = TRUE; - xOrig = GET_X_LPARAM(lParam); - yOrig = GET_Y_LPARAM(lParam); - SetCapture(hwnd); - break; - case WM_MOUSEMOVE: - if (resizing) - { - TCHAR sizeStr[100]; - short xRel; - short yRel; - xRel = (GET_X_LPARAM(lParam) - xOrig) * 1000 / zoom; - yRel = (GET_Y_LPARAM(lParam) - yOrig) * 1000 / zoom; - if (hwnd == hSizeboxLeftTop) - _stprintf(sizeStr, _T("%d x %d"), imgXRes - xRel, imgYRes - yRel); - if (hwnd == hSizeboxCenterTop) - _stprintf(sizeStr, _T("%d x %d"), imgXRes, imgYRes - yRel); - if (hwnd == hSizeboxRightTop) - _stprintf(sizeStr, _T("%d x %d"), imgXRes + xRel, imgYRes - yRel); - if (hwnd == hSizeboxLeftCenter) - _stprintf(sizeStr, _T("%d x %d"), imgXRes - xRel, imgYRes); - if (hwnd == hSizeboxRightCenter) - _stprintf(sizeStr, _T("%d x %d"), imgXRes + xRel, imgYRes); - if (hwnd == hSizeboxLeftBottom) - _stprintf(sizeStr, _T("%d x %d"), imgXRes - xRel, imgYRes + yRel); - if (hwnd == hSizeboxCenterBottom) - _stprintf(sizeStr, _T("%d x %d"), imgXRes, imgYRes + yRel); - if (hwnd == hSizeboxRightBottom) - _stprintf(sizeStr, _T("%d x %d"), imgXRes + xRel, imgYRes + yRel); - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) sizeStr); - } - break; - case WM_LBUTTONUP: - if (resizing) - { - short xRel; - short yRel; - ReleaseCapture(); - resizing = FALSE; - xRel = (GET_X_LPARAM(lParam) - xOrig) * 1000 / zoom; - yRel = (GET_Y_LPARAM(lParam) - yOrig) * 1000 / zoom; - if (hwnd == hSizeboxLeftTop) - cropReversible(imgXRes - xRel, imgYRes - yRel, xRel, yRel); - if (hwnd == hSizeboxCenterTop) - cropReversible(imgXRes, imgYRes - yRel, 0, yRel); - if (hwnd == hSizeboxRightTop) - cropReversible(imgXRes + xRel, imgYRes - yRel, 0, yRel); - if (hwnd == hSizeboxLeftCenter) - cropReversible(imgXRes - xRel, imgYRes, xRel, 0); - if (hwnd == hSizeboxRightCenter) - cropReversible(imgXRes + xRel, imgYRes, 0, 0); - if (hwnd == hSizeboxLeftBottom) - cropReversible(imgXRes - xRel, imgYRes + yRel, xRel, 0); - if (hwnd == hSizeboxCenterBottom) - cropReversible(imgXRes, imgYRes + yRel, 0, 0); - if (hwnd == hSizeboxRightBottom) - cropReversible(imgXRes + xRel, imgYRes + yRel, 0, 0); - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) _T("")); - } - break; - - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/sizebox.h b/reactos/base/applications/mspaint/sizebox.h deleted file mode 100644 index 0580a8665f0..00000000000 --- a/reactos/base/applications/mspaint/sizebox.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/sizebox.h - * PURPOSE: Window procedure of the size boxes - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclSizebox(); - -LRESULT CALLBACK SizeboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/textedit.c b/reactos/base/applications/mspaint/textedit.c deleted file mode 100644 index 29c74ab24c8..00000000000 --- a/reactos/base/applications/mspaint/textedit.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/textedit.c - * PURPOSE: Text editor and font chooser for the text tool - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" -#include "textedit.h" - -/* FUNCTIONS ********************************************************/ - -void -RegisterWclTextEdit() -{ - WNDCLASSEX wclTextEdit; - /* initializing and registering the window class used for the text editor */ - wclTextEdit.hInstance = hProgInstance; - wclTextEdit.lpszClassName = _T("TextEdit"); - wclTextEdit.lpfnWndProc = TextEditWinProc; - wclTextEdit.style = CS_DBLCLKS; - wclTextEdit.cbSize = sizeof(WNDCLASSEX); - wclTextEdit.hIcon = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); - wclTextEdit.hIconSm = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); - wclTextEdit.hCursor = LoadCursor(NULL, IDC_ARROW); - wclTextEdit.lpszMenuName = NULL; - wclTextEdit.cbClsExtra = 0; - wclTextEdit.cbWndExtra = 0; - wclTextEdit.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); - RegisterClassEx (&wclTextEdit); -} - -LRESULT CALLBACK -TextEditWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_SIZE: - { - RECT clientRect; - GetClientRect(hwnd, &clientRect); - MoveWindow(hwndEditCtl, clientRect.left, clientRect.top, RECT_WIDTH(clientRect), RECT_HEIGHT(clientRect), TRUE); - break; - } - case WM_CLOSE: - ShowWindow(hwnd, SW_HIDE); - break; - case WM_COMMAND: - switch(HIWORD(wParam)) - { - case EN_UPDATE: - { - HeapFree(GetProcessHeap(), 0, textToolText); - textToolTextMaxLen = GetWindowTextLength(hwndEditCtl) + 1; - textToolText = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sizeof(TCHAR) * textToolTextMaxLen); - GetWindowText(hwndEditCtl, textToolText, textToolTextMaxLen); - ForceRefreshSelectionContents(); - break; - } - } - break; - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/textedit.h b/reactos/base/applications/mspaint/textedit.h deleted file mode 100644 index d7bc6673c1d..00000000000 --- a/reactos/base/applications/mspaint/textedit.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/textedit.h - * PURPOSE: Text editor and font chooser for the text tool - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclTextEdit(); - -LRESULT CALLBACK TextEditWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/toolsettings.c b/reactos/base/applications/mspaint/toolsettings.c deleted file mode 100644 index 484f0f2a41a..00000000000 --- a/reactos/base/applications/mspaint/toolsettings.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/toolsettings.c - * PURPOSE: Window procedure of the tool settings window - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" -#include "toolsettings.h" - -/* FUNCTIONS ********************************************************/ - -extern void zoomTo(int, int, int); - -void RegisterWclSettings() -{ - WNDCLASSEX wclSettings; - /* initializing and registering the window class for the settings window */ - wclSettings.hInstance = hProgInstance; - wclSettings.lpszClassName = _T("ToolSettings"); - wclSettings.lpfnWndProc = SettingsWinProc; - wclSettings.style = CS_DBLCLKS; - wclSettings.cbSize = sizeof(WNDCLASSEX); - wclSettings.hIcon = NULL; - wclSettings.hIconSm = NULL; - wclSettings.hCursor = LoadCursor(NULL, IDC_ARROW); - wclSettings.lpszMenuName = NULL; - wclSettings.cbClsExtra = 0; - wclSettings.cbWndExtra = 0; - wclSettings.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); - RegisterClassEx (&wclSettings); -} - -LRESULT CALLBACK -SettingsWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) - { - case WM_VSCROLL: - zoomTo(125 << SendMessage(hTrackbarZoom, TBM_GETPOS, 0, 0), 0, 0); - break; - case WM_PAINT: - { - HDC hdc = GetDC(hwnd); - RECT rect1 = { 0, 0, 42, 66 }; - RECT rect2 = { 0, 70, 42, 136 }; - - DefWindowProc(hwnd, message, wParam, lParam); - - DrawEdge(hdc, &rect1, BDR_SUNKENOUTER, (activeTool == TOOL_ZOOM) ? BF_RECT : BF_RECT | BF_MIDDLE); - DrawEdge(hdc, &rect2, (activeTool >= TOOL_RECT) ? BDR_SUNKENOUTER : 0, BF_RECT | BF_MIDDLE); - switch (activeTool) - { - case TOOL_FREESEL: - case TOOL_RECTSEL: - case TOOL_TEXT: - { - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, 2, transpBg * 31 + 2, 41, transpBg * 31 + 33); - DeleteObject(SelectObject(hdc, oldPen)); - DrawIconEx(hdc, 1, 2, hNontranspIcon, 40, 30, 0, NULL, DI_NORMAL); - DrawIconEx(hdc, 1, 33, hTranspIcon, 40, 30, 0, NULL, DI_NORMAL); - break; - } - case TOOL_RUBBER: - { - int i; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - for(i = 0; i < 4; i++) - { - if (rubberRadius == i + 2) - { - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, 14, i * 15 + 2, 29, i * 15 + 17); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); - } - else - SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); - Rectangle(hdc, 19 - i, i * 14 + 7, 24 + i, i * 16 + 12); - } - DeleteObject(SelectObject(hdc, oldPen)); - break; - } - case TOOL_BRUSH: - { - int i; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, brushStyle % 3 * 13 + 2, brushStyle / 3 * 15 + 2, brushStyle % 3 * 13 + 15, - brushStyle / 3 * 15 + 17); - DeleteObject(SelectObject(hdc, oldPen)); - for(i = 0; i < 12; i++) - Brush(hdc, i % 3 * 13 + 7, i / 3 * 15 + 8, i % 3 * 13 + 7, i / 3 * 15 + 8, - GetSysColor((i == brushStyle) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), i); - break; - } - case TOOL_AIRBRUSH: - { - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - switch (airBrushWidth) - { - case 5: - Rectangle(hdc, 2, 2, 21, 31); - break; - case 8: - Rectangle(hdc, 20, 2, 41, 31); - break; - case 3: - Rectangle(hdc, 2, 30, 16, 61); - break; - case 12: - Rectangle(hdc, 15, 30, 41, 61); - break; - } - Airbrush(hdc, 10, 15, - GetSysColor((airBrushWidth == 5) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 5); - Airbrush(hdc, 30, 15, - GetSysColor((airBrushWidth == 8) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 8); - Airbrush(hdc, 8, 45, - GetSysColor((airBrushWidth == 3) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 3); - Airbrush(hdc, 27, 45, - GetSysColor((airBrushWidth == 12) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 12); - DeleteObject(SelectObject(hdc, oldPen)); - break; - } - case TOOL_LINE: - case TOOL_BEZIER: - { - int i; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - for(i = 0; i < 5; i++) - { - if (lineWidth == i + 1) - { - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, 2, i * 12 + 2, 41, i * 12 + 14); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); - } - else - SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); - Rectangle(hdc, 5, i * 12 + 6, 38, i * 12 + 8 + i); - } - DeleteObject(SelectObject(hdc, oldPen)); - break; - } - case TOOL_RECT: - case TOOL_SHAPE: - case TOOL_ELLIPSE: - case TOOL_RRECT: - { - int i; - HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); - for(i = 0; i < 3; i++) - { - if (shapeStyle == i) - { - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, 2, i * 20 + 2, 41, i * 20 + 22); - } - } - Rect(hdc, 5, 6, 37, 16, - GetSysColor((shapeStyle == 0) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), - GetSysColor(COLOR_APPWORKSPACE), 1, 0); - Rect(hdc, 5, 26, 37, 36, - GetSysColor((shapeStyle == 1) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), - GetSysColor(COLOR_APPWORKSPACE), 1, 1); - Rect(hdc, 5, 46, 37, 56, GetSysColor(COLOR_APPWORKSPACE), GetSysColor(COLOR_APPWORKSPACE), - 1, 1); - for(i = 0; i < 5; i++) - { - if (lineWidth == i + 1) - { - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); - Rectangle(hdc, 2, i * 12 + 72, 41, i * 12 + 84); - SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); - } - else - SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); - Rectangle(hdc, 5, i * 12 + 76, 38, i * 12 + 78 + i); - } - DeleteObject(SelectObject(hdc, oldPen)); - break; - } - } - ReleaseDC(hwnd, hdc); - break; - } - case WM_LBUTTONDOWN: - { - int x = GET_X_LPARAM(lParam); - int y = GET_Y_LPARAM(lParam); - switch (activeTool) - { - case TOOL_FREESEL: - case TOOL_RECTSEL: - case TOOL_TEXT: - if ((y > 1) && (y < 64)) - { - transpBg = (y - 2) / 31; - InvalidateRect(hwnd, NULL, TRUE); - - ForceRefreshSelectionContents(); - } - break; - case TOOL_RUBBER: - if ((y > 1) && (y < 62)) - { - rubberRadius = (y - 2) / 15 + 2; - InvalidateRect(hwnd, NULL, TRUE); - } - break; - case TOOL_BRUSH: - if ((x > 1) && (x < 40) && (y > 1) - && (y < 62)) - { - brushStyle = (y - 2) / 15 * 3 + (x - 2) / 13; - InvalidateRect(hwnd, NULL, TRUE); - } - break; - case TOOL_AIRBRUSH: - if (y < 62) - { - if (y < 30) - { - if (x < 20) - airBrushWidth = 5; - else - airBrushWidth = 8; - } - else - { - if (x < 15) - airBrushWidth = 3; - else - airBrushWidth = 12; - } - InvalidateRect(hwnd, NULL, TRUE); - } - break; - case TOOL_LINE: - case TOOL_BEZIER: - if (y <= 62) - { - lineWidth = (y - 2) / 12 + 1; - InvalidateRect(hwnd, NULL, TRUE); - } - break; - case TOOL_RECT: - case TOOL_SHAPE: - case TOOL_ELLIPSE: - case TOOL_RRECT: - if (y <= 60) - { - shapeStyle = (y - 2) / 20; - InvalidateRect(hwnd, NULL, TRUE); - } - if ((y >= 70) && (y <= 132)) - { - lineWidth = (y - 72) / 12 + 1; - InvalidateRect(hwnd, NULL, TRUE); - } - break; - } - break; - } - - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/toolsettings.h b/reactos/base/applications/mspaint/toolsettings.h deleted file mode 100644 index bbe3fcf1078..00000000000 --- a/reactos/base/applications/mspaint/toolsettings.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/toolsettings.h - * PURPOSE: Window procedure of the tool settings window - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclSettings(); - -LRESULT CALLBACK SettingsWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint/winproc.c b/reactos/base/applications/mspaint/winproc.c deleted file mode 100644 index 6e299afc628..00000000000 --- a/reactos/base/applications/mspaint/winproc.c +++ /dev/null @@ -1,1065 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/winproc.c - * PURPOSE: Window procedure of the main window and all children apart from - * hPalWin, hToolSettings and hSelection - * PROGRAMMERS: Benedikt Freisen - */ - -/* INCLUDES *********************************************************/ - -#include "precomp.h" - -#include "winproc.h" -#include "dialogs.h" -#include "registry.h" -#include "scrollbox.h" - -/* FUNCTIONS ********************************************************/ - -void -RegisterWclMain() -{ - WNDCLASSEX wclMain; - /* initializing and registering the window class used for the main window */ - wclMain.hInstance = hProgInstance; - wclMain.lpszClassName = _T("MainWindow"); - wclMain.lpfnWndProc = MainWindowProcedure; - wclMain.style = CS_DBLCLKS; - wclMain.cbSize = sizeof(WNDCLASSEX); - wclMain.hIcon = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); - wclMain.hIconSm = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); - wclMain.hCursor = LoadCursor(NULL, IDC_ARROW); - wclMain.lpszMenuName = NULL; - wclMain.cbClsExtra = 0; - wclMain.cbWndExtra = 0; - wclMain.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); - RegisterClassEx (&wclMain); -} - -void -selectTool(int tool) -{ - ShowWindow(hSelection, SW_HIDE); - activeTool = tool; - pointSP = 0; // resets the point-buffer of the polygon and bezier functions - InvalidateRect(hToolSettings, NULL, TRUE); - ShowWindow(hTrackbarZoom, (tool == TOOL_ZOOM) ? SW_SHOW : SW_HIDE); - ShowWindow(hwndTextEdit, (tool == TOOL_TEXT) ? SW_SHOW : SW_HIDE); -} - -void -updateCanvasAndScrollbars() -{ - ShowWindow(hSelection, SW_HIDE); - MoveWindow(hImageArea, 3, 3, imgXRes * zoom / 1000, imgYRes * zoom / 1000, FALSE); - InvalidateRect(hScrollbox, NULL, TRUE); - InvalidateRect(hImageArea, NULL, FALSE); - - SetScrollPos(hScrollbox, SB_HORZ, 0, TRUE); - SetScrollPos(hScrollbox, SB_VERT, 0, TRUE); -} - -void -zoomTo(int newZoom, int mouseX, int mouseY) -{ - int tbPos = 0; - int tempZoom = newZoom; - - RECT clientRectScrollbox; - RECT clientRectImageArea; - int x, y, w, h; - GetClientRect(hScrollbox, &clientRectScrollbox); - GetClientRect(hImageArea, &clientRectImageArea); - w = clientRectImageArea.right * clientRectScrollbox.right / (clientRectImageArea.right * newZoom / zoom); - h = clientRectImageArea.bottom * clientRectScrollbox.bottom / (clientRectImageArea.bottom * newZoom / zoom); - x = max(0, min(clientRectImageArea.right - w, mouseX - w / 2)) * newZoom / zoom; - y = max(0, min(clientRectImageArea.bottom - h, mouseY - h / 2)) * newZoom / zoom; - - zoom = newZoom; - - ShowWindow(hSelection, SW_HIDE); - MoveWindow(hImageArea, 3, 3, imgXRes * zoom / 1000, imgYRes * zoom / 1000, FALSE); - InvalidateRect(hScrollbox, NULL, TRUE); - InvalidateRect(hImageArea, NULL, FALSE); - - SendMessage(hScrollbox, WM_HSCROLL, SB_THUMBPOSITION | (x << 16), 0); - SendMessage(hScrollbox, WM_VSCROLL, SB_THUMBPOSITION | (y << 16), 0); - - while (tempZoom > 125) - { - tbPos++; - tempZoom = tempZoom >> 1; - } - 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; - GetClientRect(hScrollbox, &clientRectScrollbox); - GetClientRect(hImageArea, &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(hImageArea); - oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 0, 0)); - logbrush.lbStyle = BS_HOLLOW; - oldBrush = 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(hImageArea, hdc); -} - -void -alignChildrenToMainWindow() -{ - int x, y, w, h; - RECT clientRect; - GetClientRect(hMainWnd, &clientRect); - - if (IsWindowVisible(hToolBoxContainer)) - { - x = 56; - w = clientRect.right - 56; - } - else - { - x = 0; - w = clientRect.right; - } - if (IsWindowVisible(hPalWin)) - { - y = 49; - h = clientRect.bottom - 49; - } - else - { - y = 3; - h = clientRect.bottom - 3; - } - - MoveWindow(hScrollbox, x, y, w, IsWindowVisible(hStatusBar) ? h - 23 : h, TRUE); - MoveWindow(hPalWin, x, 9, 255, 32, TRUE); -} - -void -saveImage(BOOL overwrite) -{ - if (isAFile && overwrite) - { - SaveDIBToFile(hBms[currInd], filepathname, hDrawingDC, &fileTime, &fileSize, fileHPPM, - fileVPPM); - imageSaved = TRUE; - } - else if (GetSaveFileName(&sfn) != 0) - { - TCHAR tempstr[1000]; - TCHAR resstr[100]; - SaveDIBToFile(hBms[currInd], sfn.lpstrFile, hDrawingDC, &fileTime, &fileSize, - fileHPPM, fileVPPM); - CopyMemory(filename, sfn.lpstrFileTitle, sizeof(filename)); - CopyMemory(filepathname, sfn.lpstrFile, sizeof(filepathname)); - LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); - _stprintf(tempstr, resstr, filename); - SetWindowText(hMainWnd, tempstr); - isAFile = TRUE; - imageSaved = TRUE; - } -} - -void -UpdateApplicationProperties(HBITMAP bitmap, LPTSTR newfilename, LPTSTR newfilepathname) -{ - TCHAR tempstr[1000]; - TCHAR resstr[100]; - insertReversible(bitmap); - updateCanvasAndScrollbars(); - CopyMemory(filename, newfilename, sizeof(filename)); - CopyMemory(filepathname, newfilepathname, sizeof(filepathname)); - LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); - _stprintf(tempstr, resstr, filename); - SetWindowText(hMainWnd, tempstr); - clearHistory(); - isAFile = TRUE; -} - -void -InsertSelectionFromHBITMAP(HBITMAP bitmap, HWND window) -{ - HDC hTempDC; - HBITMAP hTempMask; - - HWND hToolbar = FindWindowEx(hToolBoxContainer, NULL, TOOLBARCLASSNAME, NULL); - SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELONG(TRUE, 0)); - SendMessage(window, WM_COMMAND, ID_RECTSEL, 0); - - DeleteObject(SelectObject(hSelDC, hSelBm = CopyImage(bitmap, - IMAGE_BITMAP, 0, 0, - LR_COPYRETURNORG))); - newReversible(); - SetRectEmpty(&rectSel_src); - rectSel_dest.left = rectSel_dest.top = 0; - rectSel_dest.right = rectSel_dest.left + GetDIBWidth(hSelBm); - rectSel_dest.bottom = rectSel_dest.top + GetDIBHeight(hSelBm); - - hTempDC = CreateCompatibleDC(hSelDC); - hTempMask = CreateBitmap(RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), 1, 1, NULL); - SelectObject(hTempDC, hTempMask); - Rect(hTempDC, rectSel_dest.left, rectSel_dest.top, rectSel_dest.right, rectSel_dest.bottom, 0x00ffffff, 0x00ffffff, 1, 1); - DeleteObject(hSelMask); - hSelMask = hTempMask; - DeleteDC(hTempDC); - - placeSelWin(); - ShowWindow(hSelection, SW_SHOW); - ForceRefreshSelectionContents(); -} - -BOOL drawing; - -LRESULT CALLBACK -MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch (message) /* handle the messages */ - { - case WM_DROPFILES: - { - HDROP drophandle; - TCHAR droppedfile[MAX_PATH]; - HBITMAP bmNew = NULL; - drophandle = (HDROP)wParam; - DragQueryFile(drophandle, 0, droppedfile, SIZEOF(droppedfile)); - DragFinish(drophandle); - LoadDIBFromFile(&bmNew, droppedfile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); - if (bmNew != NULL) - { - TCHAR *pathend; - pathend = _tcsrchr(droppedfile, '\\'); - pathend++; - UpdateApplicationProperties(bmNew, pathend, pathend); - } - break; - } - - case WM_CREATE: - ptStack = NULL; - ptSP = 0; - break; - - case WM_DESTROY: - PostQuitMessage(0); /* send a WM_QUIT to the message queue */ - break; - - case WM_CLOSE: - if (hwnd == hwndMiniature) - { - ShowWindow(hwndMiniature, SW_HIDE); - showMiniature = FALSE; - break; - } - if (!imageSaved) - { - TCHAR programname[20]; - TCHAR saveprompttext[100]; - TCHAR temptext[500]; - LoadString(hProgInstance, IDS_PROGRAMNAME, programname, SIZEOF(programname)); - LoadString(hProgInstance, IDS_SAVEPROMPTTEXT, saveprompttext, SIZEOF(saveprompttext)); - _stprintf(temptext, saveprompttext, filename); - switch (MessageBox(hwnd, temptext, programname, MB_YESNOCANCEL | MB_ICONQUESTION)) - { - case IDNO: - DestroyWindow(hwnd); - break; - case IDYES: - saveImage(FALSE); - if (imageSaved) - DestroyWindow(hwnd); - break; - } - } - else - { - DestroyWindow(hwnd); - } - break; - - case WM_INITMENUPOPUP: - { - HMENU menu = GetMenu(hMainWnd); - BOOL trueSelection = (IsWindowVisible(hSelection) && ((activeTool == TOOL_FREESEL) || (activeTool == TOOL_RECTSEL))); - switch (lParam) - { - case 0: /* File menu */ - EnableMenuItem(menu, IDM_FILEASWALLPAPERPLANE, ENABLED_IF(isAFile)); - EnableMenuItem(menu, IDM_FILEASWALLPAPERCENTERED, ENABLED_IF(isAFile)); - EnableMenuItem(menu, IDM_FILEASWALLPAPERSTRETCHED, ENABLED_IF(isAFile)); - break; - case 1: /* Edit menu */ - EnableMenuItem(menu, IDM_EDITUNDO, ENABLED_IF(undoSteps > 0)); - EnableMenuItem(menu, IDM_EDITREDO, ENABLED_IF(redoSteps > 0)); - EnableMenuItem(menu, IDM_EDITCUT, ENABLED_IF(trueSelection)); - EnableMenuItem(menu, IDM_EDITCOPY, ENABLED_IF(trueSelection)); - EnableMenuItem(menu, IDM_EDITDELETESELECTION, ENABLED_IF(trueSelection)); - EnableMenuItem(menu, IDM_EDITINVERTSELECTION, ENABLED_IF(trueSelection)); - EnableMenuItem(menu, IDM_EDITCOPYTO, ENABLED_IF(trueSelection)); - OpenClipboard(hMainWnd); - EnableMenuItem(menu, IDM_EDITPASTE, ENABLED_IF(GetClipboardData(CF_BITMAP) != NULL)); - CloseClipboard(); - break; - case 2: /* View menu */ - CheckMenuItem(menu, IDM_VIEWTOOLBOX, CHECKED_IF(IsWindowVisible(hToolBoxContainer))); - CheckMenuItem(menu, IDM_VIEWCOLORPALETTE, CHECKED_IF(IsWindowVisible(hPalWin))); - CheckMenuItem(menu, IDM_VIEWSTATUSBAR, CHECKED_IF(IsWindowVisible(hStatusBar))); - CheckMenuItem(menu, IDM_FORMATICONBAR, CHECKED_IF(IsWindowVisible(hwndTextEdit))); - EnableMenuItem(menu, IDM_FORMATICONBAR, ENABLED_IF(activeTool == TOOL_TEXT)); - - CheckMenuItem(menu, IDM_VIEWSHOWGRID, CHECKED_IF(showGrid)); - CheckMenuItem(menu, IDM_VIEWSHOWMINIATURE, CHECKED_IF(showMiniature)); - break; - case 3: /* Image menu */ - EnableMenuItem(menu, IDM_IMAGECROP, ENABLED_IF(IsWindowVisible(hSelection))); - CheckMenuItem(menu, IDM_IMAGEDRAWOPAQUE, CHECKED_IF(transpBg == 0)); - break; - } - - CheckMenuItem(menu, IDM_VIEWZOOM125, CHECKED_IF(zoom == 125)); - CheckMenuItem(menu, IDM_VIEWZOOM25, CHECKED_IF(zoom == 250)); - CheckMenuItem(menu, IDM_VIEWZOOM50, CHECKED_IF(zoom == 500)); - CheckMenuItem(menu, IDM_VIEWZOOM100, CHECKED_IF(zoom == 1000)); - CheckMenuItem(menu, IDM_VIEWZOOM200, CHECKED_IF(zoom == 2000)); - CheckMenuItem(menu, IDM_VIEWZOOM400, CHECKED_IF(zoom == 4000)); - CheckMenuItem(menu, IDM_VIEWZOOM800, CHECKED_IF(zoom == 8000)); - - CheckMenuItem(menu, IDM_COLORSMODERNPALETTE, CHECKED_IF(selectedPalette == 1)); - CheckMenuItem(menu, IDM_COLORSOLDPALETTE, CHECKED_IF(selectedPalette == 2)); - break; - } - - case WM_SIZE: - if (hwnd == hMainWnd) - { - int test[] = { LOWORD(lParam) - 260, LOWORD(lParam) - 140, LOWORD(lParam) - 20 }; - SendMessage(hStatusBar, WM_SIZE, wParam, lParam); - SendMessage(hStatusBar, SB_SETPARTS, 3, (LPARAM)&test); - alignChildrenToMainWindow(); - InvalidateRect(hwnd, NULL, TRUE); - } - if (hwnd == hImageArea) - { - MoveWindow(hSizeboxLeftTop, - 0, - 0, 3, 3, TRUE); - MoveWindow(hSizeboxCenterTop, - imgXRes * zoom / 2000 + 3 * 3 / 4, - 0, 3, 3, TRUE); - MoveWindow(hSizeboxRightTop, - imgXRes * zoom / 1000 + 3, - 0, 3, 3, TRUE); - MoveWindow(hSizeboxLeftCenter, - 0, - imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE); - MoveWindow(hSizeboxRightCenter, - imgXRes * zoom / 1000 + 3, - imgYRes * zoom / 2000 + 3 * 3 / 4, 3, 3, TRUE); - MoveWindow(hSizeboxLeftBottom, - 0, - imgYRes * zoom / 1000 + 3, 3, 3, TRUE); - MoveWindow(hSizeboxCenterBottom, - imgXRes * zoom / 2000 + 3 * 3 / 4, - imgYRes * zoom / 1000 + 3, 3, 3, TRUE); - MoveWindow(hSizeboxRightBottom, - imgXRes * zoom / 1000 + 3, - imgYRes * zoom / 1000 + 3, 3, 3, TRUE); - } - if (hwnd == hImageArea) - { - UpdateScrollbox(); - } - break; - - case WM_GETMINMAXINFO: - if (hwnd == hMainWnd) - { - MINMAXINFO *mm = (LPMINMAXINFO) lParam; - mm->ptMinTrackSize.x = 330; - mm->ptMinTrackSize.y = 430; - } - break; - - case WM_PAINT: - DefWindowProc(hwnd, message, wParam, lParam); - if (hwnd == hImageArea) - { - HDC hdc = GetDC(hImageArea); - StretchBlt(hdc, 0, 0, imgXRes * zoom / 1000, imgYRes * zoom / 1000, hDrawingDC, 0, 0, imgXRes, - imgYRes, SRCCOPY); - if (showGrid && (zoom >= 4000)) - { - HPEN oldPen = 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)); - } - ReleaseDC(hImageArea, hdc); - InvalidateRect(hSelection, NULL, FALSE); - InvalidateRect(hwndMiniature, NULL, FALSE); - } - else if (hwnd == hwndMiniature) - { - RECT mclient; - HDC hdc; - GetClientRect(hwndMiniature, &mclient); - hdc = GetDC(hwndMiniature); - StretchBlt(hdc, 0, 0, mclient.right, mclient.bottom, hDrawingDC, 0, 0, imgXRes, imgYRes, SRCCOPY); - ReleaseDC(hwndMiniature, hdc); - } - break; - - // mouse events used for drawing - - case WM_SETCURSOR: - if (hwnd == hImageArea) - { - 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 - DefWindowProc(hwnd, message, wParam, lParam); - break; - - case WM_LBUTTONDOWN: - if (hwnd == hImageArea) - { - if ((!drawing) || (activeTool == TOOL_COLOR)) - { - SetCapture(hImageArea); - drawing = TRUE; - startPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, - fgColor, bgColor); - } - else - { - SendMessage(hwnd, WM_LBUTTONUP, wParam, lParam); - undo(); - } - InvalidateRect(hImageArea, NULL, FALSE); - if ((activeTool == TOOL_ZOOM) && (zoom < 8000)) - zoomTo(zoom * 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); - } - break; - - case WM_RBUTTONDOWN: - if (hwnd == hImageArea) - { - if ((!drawing) || (activeTool == TOOL_COLOR)) - { - SetCapture(hImageArea); - drawing = TRUE; - startPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, - fgColor, bgColor); - } - else - { - SendMessage(hwnd, WM_RBUTTONUP, wParam, lParam); - undo(); - } - InvalidateRect(hImageArea, NULL, FALSE); - if ((activeTool == TOOL_ZOOM) && (zoom > 125)) - zoomTo(zoom / 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); - } - break; - - case WM_LBUTTONUP: - if ((hwnd == hImageArea) && drawing) - { - ReleaseCapture(); - drawing = FALSE; - endPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, fgColor, - bgColor); - InvalidateRect(hImageArea, NULL, FALSE); - if (activeTool == TOOL_COLOR) - { - int tempColor = - GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom); - if (tempColor != CLR_INVALID) - fgColor = tempColor; - InvalidateRect(hPalWin, NULL, FALSE); - } - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) ""); - } - break; - - case WM_RBUTTONUP: - if ((hwnd == hImageArea) && drawing) - { - ReleaseCapture(); - drawing = FALSE; - endPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, fgColor, - bgColor); - InvalidateRect(hImageArea, NULL, FALSE); - if (activeTool == TOOL_COLOR) - { - int tempColor = - GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom); - if (tempColor != CLR_INVALID) - bgColor = tempColor; - InvalidateRect(hPalWin, NULL, FALSE); - } - SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) ""); - } - break; - - case WM_KEYDOWN: - if (wParam == VK_ESCAPE) - { - if (!drawing) - { - /* Deselect */ - if ((activeTool == TOOL_RECTSEL) || (activeTool == TOOL_FREESEL)) - { - startPaintingL(hDrawingDC, 0, 0, fgColor, bgColor); - whilePaintingL(hDrawingDC, 0, 0, fgColor, bgColor); - endPaintingL(hDrawingDC, 0, 0, fgColor, bgColor); - ShowWindow(hSelection, SW_HIDE); - } - } - /* FIXME: also cancel current drawing underway */ - } - break; - - case WM_MOUSEMOVE: - if (hwnd == hImageArea) - { - 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) - { - InvalidateRect(hImageArea, NULL, FALSE); - UpdateWindow(hImageArea); - drawZoomFrame(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); - } - - tme.cbSize = sizeof(TRACKMOUSEEVENT); - tme.dwFlags = TME_LEAVE; - tme.hwndTrack = hImageArea; - 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); - InvalidateRect(hImageArea, NULL, 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); - InvalidateRect(hImageArea, NULL, 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); - } - } - } - } - break; - - case WM_MOUSELEAVE: - SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) _T("")); - if (activeTool == TOOL_ZOOM) - InvalidateRect(hImageArea, NULL, FALSE); - break; - - // menu and button events - - case WM_SYSCOLORCHANGE: - { - /* Redirect message to common controls */ - HWND hToolbar = FindWindowEx(hToolBoxContainer, NULL, TOOLBARCLASSNAME, NULL); - SendMessage(hToolbar, WM_SYSCOLORCHANGE, 0, 0); - break; - } - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDM_HELPINFO: - { - HICON paintIcon = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); - TCHAR infotitle[100]; - TCHAR infotext[200]; - LoadString(hProgInstance, IDS_INFOTITLE, infotitle, SIZEOF(infotitle)); - LoadString(hProgInstance, IDS_INFOTEXT, infotext, SIZEOF(infotext)); - ShellAbout(hMainWnd, infotitle, infotext, paintIcon); - DeleteObject(paintIcon); - break; - } - case IDM_HELPHELPTOPICS: - HtmlHelp(hMainWnd, _T("help\\Paint.chm"), 0, 0); - break; - case IDM_FILEEXIT: - SendMessage(hwnd, WM_CLOSE, wParam, lParam); - break; - case IDM_FILENEW: - { - BOOL reset = TRUE; - if (!imageSaved) - { - TCHAR programname[20]; - TCHAR saveprompttext[100]; - TCHAR temptext[500]; - LoadString(hProgInstance, IDS_PROGRAMNAME, programname, SIZEOF(programname)); - LoadString(hProgInstance, IDS_SAVEPROMPTTEXT, saveprompttext, SIZEOF(saveprompttext)); - _stprintf(temptext, saveprompttext, filename); - switch (MessageBox(hwnd, temptext, programname, MB_YESNOCANCEL | MB_ICONQUESTION)) - { - case IDNO: - imageSaved = TRUE; - break; - case IDYES: - saveImage(FALSE); - break; - case IDCANCEL: - reset = FALSE; - break; - } - } - if (reset && imageSaved) - { - Rectangle(hDrawingDC, 0 - 1, 0 - 1, imgXRes + 1, imgYRes + 1); - InvalidateRect(hImageArea, NULL, FALSE); - updateCanvasAndScrollbars(); - clearHistory(); - } - break; - } - case IDM_FILEOPEN: - if (GetOpenFileName(&ofn) != 0) - { - HBITMAP bmNew = NULL; - LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); - if (bmNew != NULL) - { - UpdateApplicationProperties(bmNew, ofn.lpstrFileTitle, ofn.lpstrFileTitle); - } - } - break; - case IDM_FILESAVE: - saveImage(TRUE); - break; - case IDM_FILESAVEAS: - saveImage(FALSE); - break; - case IDM_FILEASWALLPAPERPLANE: - SetWallpaper(filepathname, 1, 1); - break; - case IDM_FILEASWALLPAPERCENTERED: - SetWallpaper(filepathname, 1, 0); - break; - case IDM_FILEASWALLPAPERSTRETCHED: - SetWallpaper(filepathname, 2, 0); - break; - case IDM_EDITUNDO: - undo(); - InvalidateRect(hImageArea, NULL, FALSE); - break; - case IDM_EDITREDO: - redo(); - InvalidateRect(hImageArea, NULL, FALSE); - break; - case IDM_EDITCOPY: - OpenClipboard(hMainWnd); - EmptyClipboard(); - SetClipboardData(CF_BITMAP, CopyImage(hSelBm, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)); - CloseClipboard(); - break; - case IDM_EDITCUT: - /* Copy */ - SendMessage(hwnd, WM_COMMAND, IDM_EDITCOPY, 0); - /* Delete selection */ - SendMessage(hwnd, WM_COMMAND, IDM_EDITDELETESELECTION, 0); - break; - case IDM_EDITPASTE: - OpenClipboard(hMainWnd); - if (GetClipboardData(CF_BITMAP) != NULL) - { - InsertSelectionFromHBITMAP(GetClipboardData(CF_BITMAP), hwnd); - } - CloseClipboard(); - break; - case IDM_EDITDELETESELECTION: - { - /* remove selection window and already painted content using undo(), - paint Rect for rectangular selections and Poly for freeform selections */ - undo(); - if (activeTool == TOOL_RECTSEL) - { - newReversible(); - Rect(hDrawingDC, rectSel_dest.left, rectSel_dest.top, rectSel_dest.right, - rectSel_dest.bottom, bgColor, bgColor, 0, TRUE); - } - if (activeTool == TOOL_FREESEL) - { - newReversible(); - Poly(hDrawingDC, ptStack, ptSP + 1, 0, 0, 2, 0, FALSE, TRUE); - } - break; - } - case IDM_EDITSELECTALL: - { - HWND hToolbar = FindWindowEx(hToolBoxContainer, NULL, TOOLBARCLASSNAME, NULL); - SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELONG(TRUE, 0)); - SendMessage(hwnd, WM_COMMAND, ID_RECTSEL, 0); - startPaintingL(hDrawingDC, 0, 0, fgColor, bgColor); - whilePaintingL(hDrawingDC, imgXRes, imgYRes, fgColor, bgColor); - endPaintingL(hDrawingDC, imgXRes, imgYRes, fgColor, bgColor); - break; - } - case IDM_EDITCOPYTO: - if (GetSaveFileName(&ofn) != 0) - SaveDIBToFile(hSelBm, ofn.lpstrFile, hDrawingDC, NULL, NULL, fileHPPM, fileVPPM); - break; - case IDM_EDITPASTEFROM: - if (GetOpenFileName(&ofn) != 0) - { - HBITMAP bmNew = NULL; - LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); - if (bmNew != NULL) - { - InsertSelectionFromHBITMAP(bmNew, hwnd); - DeleteObject(bmNew); - } - } - break; - case IDM_COLORSEDITPALETTE: - if (ChooseColor(&choosecolor)) - { - fgColor = choosecolor.rgbResult; - InvalidateRect(hPalWin, NULL, FALSE); - } - break; - case IDM_COLORSMODERNPALETTE: - selectedPalette = 1; - CopyMemory(palColors, modernPalColors, sizeof(palColors)); - InvalidateRect(hPalWin, NULL, FALSE); - break; - case IDM_COLORSOLDPALETTE: - selectedPalette = 2; - CopyMemory(palColors, oldPalColors, sizeof(palColors)); - InvalidateRect(hPalWin, NULL, FALSE); - break; - case IDM_IMAGEINVERTCOLORS: - { - RECT tempRect; - newReversible(); - SetRect(&tempRect, 0, 0, imgXRes, imgYRes); - InvertRect(hDrawingDC, &tempRect); - InvalidateRect(hImageArea, NULL, FALSE); - break; - } - case IDM_IMAGEDELETEIMAGE: - newReversible(); - Rect(hDrawingDC, 0, 0, imgXRes, imgYRes, bgColor, bgColor, 0, TRUE); - InvalidateRect(hImageArea, NULL, FALSE); - break; - case IDM_IMAGEROTATEMIRROR: - switch (mirrorRotateDlg()) - { - case 1: /* flip horizontally */ - if (IsWindowVisible(hSelection)) - { - SelectObject(hSelDC, hSelMask); - StretchBlt(hSelDC, RECT_WIDTH(rectSel_dest) - 1, 0, -RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - SelectObject(hSelDC, hSelBm); - StretchBlt(hSelDC, RECT_WIDTH(rectSel_dest) - 1, 0, -RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - ForceRefreshSelectionContents(); - } - else - { - newReversible(); - StretchBlt(hDrawingDC, imgXRes - 1, 0, -imgXRes, imgYRes, hDrawingDC, 0, 0, - imgXRes, imgYRes, SRCCOPY); - InvalidateRect(hImageArea, NULL, FALSE); - } - break; - case 2: /* flip vertically */ - if (IsWindowVisible(hSelection)) - { - SelectObject(hSelDC, hSelMask); - StretchBlt(hSelDC, 0, RECT_HEIGHT(rectSel_dest) - 1, RECT_WIDTH(rectSel_dest), -RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - SelectObject(hSelDC, hSelBm); - StretchBlt(hSelDC, 0, RECT_HEIGHT(rectSel_dest) - 1, RECT_WIDTH(rectSel_dest), -RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - ForceRefreshSelectionContents(); - } - else - { - newReversible(); - StretchBlt(hDrawingDC, 0, imgYRes - 1, imgXRes, -imgYRes, hDrawingDC, 0, 0, - imgXRes, imgYRes, SRCCOPY); - InvalidateRect(hImageArea, NULL, FALSE); - } - break; - case 3: /* rotate 90 degrees */ - break; - case 4: /* rotate 180 degrees */ - if (IsWindowVisible(hSelection)) - { - SelectObject(hSelDC, hSelMask); - StretchBlt(hSelDC, RECT_WIDTH(rectSel_dest) - 1, RECT_HEIGHT(rectSel_dest) - 1, -RECT_WIDTH(rectSel_dest), -RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - SelectObject(hSelDC, hSelBm); - StretchBlt(hSelDC, RECT_WIDTH(rectSel_dest) - 1, RECT_HEIGHT(rectSel_dest) - 1, -RECT_WIDTH(rectSel_dest), -RECT_HEIGHT(rectSel_dest), hSelDC, - 0, 0, RECT_WIDTH(rectSel_dest), RECT_HEIGHT(rectSel_dest), SRCCOPY); - ForceRefreshSelectionContents(); - } - else - { - newReversible(); - StretchBlt(hDrawingDC, imgXRes - 1, imgYRes - 1, -imgXRes, -imgYRes, hDrawingDC, - 0, 0, imgXRes, imgYRes, SRCCOPY); - InvalidateRect(hImageArea, NULL, FALSE); - } - break; - case 5: /* rotate 270 degrees */ - break; - } - break; - case IDM_IMAGEATTRIBUTES: - { - if (attributesDlg()) - { - cropReversible(widthSetInDlg, heightSetInDlg, 0, 0); - updateCanvasAndScrollbars(); - } - break; - } - case IDM_IMAGESTRETCHSKEW: - { - if (changeSizeDlg()) - { - insertReversible(CopyImage(hBms[currInd], IMAGE_BITMAP, - imgXRes * stretchSkew.percentage.x / 100, - imgYRes * stretchSkew.percentage.y / 100, 0)); - updateCanvasAndScrollbars(); - } - break; - } - case IDM_IMAGEDRAWOPAQUE: - transpBg = 1 - transpBg; - InvalidateRect(hToolSettings, NULL, TRUE); - break; - case IDM_IMAGECROP: - insertReversible(CopyImage(hSelBm, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)); - updateCanvasAndScrollbars(); - break; - - case IDM_VIEWTOOLBOX: - ShowWindow(hToolBoxContainer, IsWindowVisible(hToolBoxContainer) ? SW_HIDE : SW_SHOW); - alignChildrenToMainWindow(); - break; - case IDM_VIEWCOLORPALETTE: - ShowWindow(hPalWin, IsWindowVisible(hPalWin) ? SW_HIDE : SW_SHOW); - alignChildrenToMainWindow(); - break; - case IDM_VIEWSTATUSBAR: - ShowWindow(hStatusBar, IsWindowVisible(hStatusBar) ? SW_HIDE : SW_SHOW); - alignChildrenToMainWindow(); - break; - case IDM_FORMATICONBAR: - ShowWindow(hwndTextEdit, IsWindowVisible(hwndTextEdit) ? SW_HIDE : SW_SHOW); - - case IDM_VIEWSHOWGRID: - showGrid = !showGrid; - InvalidateRect(hImageArea, NULL, FALSE); - break; - case IDM_VIEWSHOWMINIATURE: - showMiniature = !showMiniature; - ShowWindow(hwndMiniature, showMiniature ? SW_SHOW : SW_HIDE); - break; - - case IDM_VIEWZOOM125: - zoomTo(125, 0, 0); - break; - case IDM_VIEWZOOM25: - zoomTo(250, 0, 0); - break; - case IDM_VIEWZOOM50: - zoomTo(500, 0, 0); - break; - case IDM_VIEWZOOM100: - zoomTo(1000, 0, 0); - break; - case IDM_VIEWZOOM200: - zoomTo(2000, 0, 0); - break; - case IDM_VIEWZOOM400: - zoomTo(4000, 0, 0); - break; - case IDM_VIEWZOOM800: - zoomTo(8000, 0, 0); - break; - case ID_FREESEL: - selectTool(1); - break; - case ID_RECTSEL: - selectTool(2); - break; - case ID_RUBBER: - selectTool(3); - break; - case ID_FILL: - selectTool(4); - break; - case ID_COLOR: - selectTool(5); - break; - case ID_ZOOM: - selectTool(6); - break; - case ID_PEN: - selectTool(7); - break; - case ID_BRUSH: - selectTool(8); - break; - case ID_AIRBRUSH: - selectTool(9); - break; - case ID_TEXT: - selectTool(10); - break; - case ID_LINE: - selectTool(11); - break; - case ID_BEZIER: - selectTool(12); - break; - case ID_RECT: - selectTool(13); - break; - case ID_SHAPE: - selectTool(14); - break; - case ID_ELLIPSE: - selectTool(15); - break; - case ID_RRECT: - selectTool(16); - break; - } - break; - default: - return DefWindowProc(hwnd, message, wParam, lParam); - } - - return 0; -} diff --git a/reactos/base/applications/mspaint/winproc.h b/reactos/base/applications/mspaint/winproc.h deleted file mode 100644 index 0c316148821..00000000000 --- a/reactos/base/applications/mspaint/winproc.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * PROJECT: PAINT for ReactOS - * LICENSE: LGPL - * FILE: base/applications/paint/winproc.h - * PURPOSE: Window procedure of the main window and all children apart from - * hPalWin, hToolSettings and hSelection - * PROGRAMMERS: Benedikt Freisen - */ - -void RegisterWclMain(); - -LRESULT CALLBACK MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); diff --git a/reactos/base/applications/mspaint_new/CMakeLists.txt b/reactos/base/applications/mspaint_new/CMakeLists.txt index 61987e6b4a2..80d25070e17 100644 --- a/reactos/base/applications/mspaint_new/CMakeLists.txt +++ b/reactos/base/applications/mspaint_new/CMakeLists.txt @@ -1,4 +1,4 @@ -project(MSPAINT_NEW) +project(MSPAINT) set_cpp(WITH_RUNTIME) @@ -28,11 +28,11 @@ list(APPEND SOURCE winproc.cpp precomp.h) -file(GLOB mspaint_new_rc_deps icons/*.*) -add_rc_deps(rsrc.rc ${mspaint_new_rc_deps}) -add_executable(mspaint_new ${SOURCE} rsrc.rc) -set_module_type(mspaint_new win32gui UNICODE) -target_link_libraries(mspaint_new atlnew) -add_importlibs(mspaint_new hhctrl comdlg32 shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32) -add_pch(mspaint_new precomp.h SOURCE) -add_cd_file(TARGET mspaint_new DESTINATION reactos/system32 FOR all) +file(GLOB mspaint_rc_deps icons/*.*) +add_rc_deps(rsrc.rc ${mspaint_rc_deps}) +add_executable(mspaint ${SOURCE} rsrc.rc) +set_module_type(mspaint win32gui UNICODE) +target_link_libraries(mspaint atlnew) +add_importlibs(mspaint hhctrl comdlg32 shell32 user32 gdi32 advapi32 comctl32 msvcrt kernel32) +add_pch(mspaint precomp.h SOURCE) +add_cd_file(TARGET mspaint DESTINATION reactos/system32 FOR all)