Reactos
at master 177 lines 4.5 kB view raw
1/* 2 * PROJECT: ReactOS VGA Font Editor 3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) 4 * PURPOSE: Main header 5 * COPYRIGHT: Copyright 2008 Colin Finck (colin@reactos.org) 6 */ 7 8#ifndef __PRECOMP_H 9#define __PRECOMP_H 10 11#include <windows.h> 12#include <windowsx.h> 13#include <commctrl.h> 14#include <strsafe.h> 15#include "resource.h" 16#include "customwndclasses.h" 17 18#include "raw.h" 19#include "cpi.h" 20#include "psf.h" 21 22typedef enum 23{ 24 RAW, 25 CPI, 26 PSF 27} VGAFONT_TYPE; 28 29typedef struct _VGAFONT 30{ 31 VGAFONT_TYPE FontType; 32 PVOID FontPtr; 33} VGAFONT, *PVGAFONT; 34 35// Forward declarations 36typedef struct _FONT_WND_INFO FONT_WND_INFO, *PFONT_WND_INFO; 37typedef struct _EDIT_GLYPH_INFO EDIT_GLYPH_INFO, *PEDIT_GLYPH_INFO; 38 39// Structure declarations 40typedef struct _MAIN_WND_INFO 41{ 42 HWND hMainWnd; 43 HWND hMdiClient; 44 HMENU hMenu; 45 HWND hToolbar; 46 INT nCmdShow; 47 48 HBITMAP hBoxBmp; 49 PFONT_WND_INFO CurrentFontWnd; 50 ULONG uDocumentCounter; 51 52 PFONT_WND_INFO FirstFontWnd; 53 PFONT_WND_INFO LastFontWnd; 54} MAIN_WND_INFO, *PMAIN_WND_INFO; 55 56typedef struct _FONT_OPEN_INFO 57{ 58 BOOL bCreateNew; 59 BOOL bBinaryFileOpened; 60 BOOL bModified; 61 PWSTR pszFileName; 62} FONT_OPEN_INFO, *PFONT_OPEN_INFO; 63 64struct _FONT_WND_INFO 65{ 66 PMAIN_WND_INFO MainWndInfo; 67 PFONT_OPEN_INFO OpenInfo; 68 PBITMAP_FONT Font; 69 70 HWND hSelf; 71 HWND hFontBoxesWnd; 72 UINT uSelectedCharacter; 73 74 PFONT_WND_INFO PrevFontWnd; 75 PFONT_WND_INFO NextFontWnd; 76 77 PEDIT_GLYPH_INFO FirstEditGlyphWnd; 78 PEDIT_GLYPH_INFO LastEditGlyphWnd; 79}; 80 81struct _EDIT_GLYPH_INFO 82{ 83 PFONT_WND_INFO FontWndInfo; 84 85 UINT uCharacter; 86 UCHAR CharacterBits[8]; 87 88 HWND hSelf; 89 HWND hEdit; 90 HWND hPreview; 91 LONG lEditSpacing; 92 93 PEDIT_GLYPH_INFO PrevEditGlyphWnd; 94 PEDIT_GLYPH_INFO NextEditGlyphWnd; 95}; 96 97#define ID_MDI_FIRSTCHILD 50000 98 99// Dimensions of the visual elements 100#define CHARACTER_INFO_BOX_WIDTH 55 101#define CHARACTER_INFO_BOX_HEIGHT 16 102#define CHARACTER_BITMAP_BOX_HEIGHT 14 103#define CHARACTER_BOX_WIDTH (CHARACTER_INFO_BOX_WIDTH) 104#define CHARACTER_BOX_HEIGHT (CHARACTER_INFO_BOX_HEIGHT + CHARACTER_BITMAP_BOX_HEIGHT) 105#define CHARACTER_BOX_PADDING 5 106#define FONT_BOXES_WND_WIDTH (CHARACTER_BOX_WIDTH * 16 + CHARACTER_BOX_PADDING * 15) 107#define FONT_BOXES_WND_HEIGHT (CHARACTER_BOX_HEIGHT * 16 + CHARACTER_BOX_PADDING * 15) 108#define FONT_WND_MIN_WIDTH (FONT_BOXES_WND_WIDTH + 25) 109#define FONT_WND_MIN_HEIGHT (FONT_BOXES_WND_HEIGHT + GetSystemMetrics(SM_CYCAPTION) + 25) 110 111// Custom return values 112#define HITTEST_SEPARATOR -1 113 114// Custom window messages 115#define WM_USER_APPCLOSE (WM_USER + 1) 116 117// Bitmap numbers 118#define TOOLBAR_EDIT_GLYPH 0 119#define TOOLBOX_PEN 0 120 121 122// 123// Function prototypes 124// 125 126// aboutdlg.c 127INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 128 129// editglyphdlg.c 130INT_PTR CALLBACK EditGlyphDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 131BOOL InitEditGlyphWndClasses(VOID); 132VOID UnInitEditGlyphWndClasses(VOID); 133 134// fontboxeswnd.c 135VOID CreateFontBoxesWindow(PFONT_WND_INFO FontWndInfo); 136BOOL InitFontBoxesWndClass(VOID); 137VOID UnInitFontBoxesWndClass(VOID); 138VOID GetCharacterRect(IN UINT uFontRow, IN UINT uFontColumn, OUT LPRECT CharacterRect); 139VOID EditCurrentGlyph(PFONT_WND_INFO FontWndInfo); 140 141static __inline VOID 142GetCharacterPosition(IN UINT uCharacter, OUT PUINT uFontRow, OUT PUINT uFontColumn) 143{ 144 *uFontRow = uCharacter / 16; 145 *uFontColumn = uCharacter % 16; 146} 147 148// fontwnd.c 149BOOL CreateFontWindow(PMAIN_WND_INFO MainWndInfo, PFONT_OPEN_INFO OpenInfo); 150BOOL InitFontWndClass(VOID); 151VOID UnInitFontWndClass(VOID); 152 153// main.c 154extern PWSTR szAppName; 155extern HINSTANCE hInstance; 156extern HANDLE hProcessHeap; 157extern UINT uCharacterClipboardFormat; 158 159// mainwnd.c 160BOOL CreateMainWindow(IN INT nCmdShow, OUT PMAIN_WND_INFO* Info); 161BOOL InitMainWndClass(VOID); 162VOID UnInitMainWndClass(VOID); 163VOID DoFileSave(IN PMAIN_WND_INFO Info, IN BOOL bSaveAs); 164VOID SetToolbarFileButtonState(IN PMAIN_WND_INFO Info, BOOL bEnabled); 165VOID SetPasteButtonState(IN PMAIN_WND_INFO Info); 166 167// misc.c 168INT AllocAndLoadString(OUT PWSTR *lpTarget, IN UINT uID); 169DWORD LoadAndFormatString(IN UINT uID, OUT PWSTR *lpTarget, ...); 170VOID LocalizedError(IN UINT uID, ...); 171 172// opensave.c 173VOID FileInitialize(HWND hwnd); 174BOOL DoOpenFile(OUT PWSTR pszFileName); 175BOOL DoSaveFile(IN PWSTR pszFileName); 176 177#endif