Reactos
at master 152 lines 3.9 kB view raw
1/* 2 * PROJECT: PAINT for ReactOS 3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later) 4 * PURPOSE: The precompiled header 5 * COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net> 6 * Copyright 2018 Stanislav Motylkov <x86corez@gmail.com> 7 * Copyright 2021-2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> 8 */ 9 10#pragma once 11 12#ifdef NDEBUG 13 #undef DBG 14 #undef _DEBUG 15#endif 16 17#include <windef.h> 18#include <winbase.h> 19#include <winuser.h> 20#include <wingdi.h> 21#include <tchar.h> 22#include <atlbase.h> 23#include <atlcom.h> 24#include <atlpath.h> 25#include <atlstr.h> 26#include <atlwin.h> 27#include <atltypes.h> 28#include <windowsx.h> 29#include <commdlg.h> 30#include <commctrl.h> 31#include <stdlib.h> 32#define _USE_MATH_DEFINES /* for M_PI */ 33#include <math.h> 34#include <shellapi.h> 35#include <htmlhelp.h> 36#include <strsafe.h> 37#include <ui/CWaitCursor.h> 38 39#include <debug.h> 40 41/* CONSTANTS *******************************************************/ 42 43#define GRIP_SIZE 3 44#define MIN_ZOOM 125 45#define MAX_ZOOM 8000 46 47#define MAX_LONG_PATH 512 48 49#define WM_TOOLSMODELTOOLCHANGED (WM_APP + 0) 50#define WM_TOOLSMODELSETTINGSCHANGED (WM_APP + 1) 51#define WM_TOOLSMODELZOOMCHANGED (WM_APP + 2) 52#define WM_PALETTEMODELCOLORCHANGED (WM_APP + 3) 53 54enum HITTEST // hit 55{ 56 HIT_NONE = 0, // Nothing hit or outside 57 HIT_UPPER_LEFT, 58 HIT_UPPER_CENTER, 59 HIT_UPPER_RIGHT, 60 HIT_MIDDLE_LEFT, 61 HIT_MIDDLE_RIGHT, 62 HIT_LOWER_LEFT, 63 HIT_LOWER_CENTER, 64 HIT_LOWER_RIGHT, 65 HIT_BORDER, 66 HIT_INNER, 67}; 68 69/* COMMON FUNCTIONS *************************************************/ 70 71void ShowOutOfMemory(void); 72BOOL nearlyEqualPoints(INT x0, INT y0, INT x1, INT y1); 73BOOL OpenMailer(HWND hWnd, LPCWSTR pszPathName); 74void getBoundaryOfPtStack(RECT& rcBoundary, INT cPoints, const POINT *pPoints); 75 76#define DEG2RAD(degree) (((degree) * M_PI) / 180) 77#define RAD2DEG(radian) ((LONG)(((radian) * 180) / M_PI)) 78 79/* This simplifies checking and unchecking menu items */ 80#define CHECKED_IF(bChecked) \ 81 ((bChecked) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND)) 82 83/* This simplifies enabling or graying menu items */ 84#define ENABLED_IF(bEnabled) \ 85 ((bEnabled) ? (MF_ENABLED | MF_BYCOMMAND) : (MF_GRAYED | MF_BYCOMMAND)) 86 87template <typename T> 88inline void Swap(T& a, T& b) 89{ 90 T tmp = a; 91 a = b; 92 b = tmp; 93} 94 95/* LOCAL INCLUDES ***************************************************/ 96 97#include "resource.h" 98#include "drawing.h" 99#include "dib.h" 100#include "fullscreen.h" 101#include "history.h" 102#include "miniature.h" 103#include "palette.h" 104#include "palettemodel.h" 105#include "registry.h" 106#include "selectionmodel.h" 107#include "sizebox.h" 108#include "canvas.h" 109#include "textedit.h" 110#include "toolbox.h" 111#include "toolsettings.h" 112#include "toolsmodel.h" 113#include "main.h" 114#include "dialogs.h" 115#include "atlimagedx.h" 116 117/* GLOBAL VARIABLES *************************************************/ 118 119extern HINSTANCE g_hinstExe; 120 121extern WCHAR g_szFileName[MAX_LONG_PATH]; 122extern BOOL g_isAFile; 123extern BOOL g_imageSaved; 124extern BOOL g_showGrid; 125extern BOOL g_askBeforeEnlarging; 126 127extern CMainWindow mainWindow; 128 129extern CMirrorRotateDialog mirrorRotateDialog; 130extern CAttributesDialog attributesDialog; 131extern CStretchSkewDialog stretchSkewDialog; 132extern CFontsDialog fontsDialog; 133 134extern RegistrySettings registrySettings; 135extern ImageModel imageModel; 136extern ToolsModel toolsModel; 137extern SelectionModel selectionModel; 138extern PaletteModel paletteModel; 139 140extern HWND g_hStatusBar; 141extern float g_xDpi; 142extern float g_yDpi; 143extern INT g_fileSize; 144extern SYSTEMTIME g_fileTime; 145 146extern CFullscreenWindow fullscreenWindow; 147extern CMiniatureWindow miniature; 148extern CToolBox toolBoxContainer; 149extern CToolSettingsWindow toolSettingsWindow; 150extern CPaletteWindow paletteWindow; 151extern CCanvasWindow canvasWindow; 152extern CTextEditWindow textEditWindow;