2 * PROJECT: ReactOS VGA Font Editor
3 * LICENSE: GNU General Public License Version 2.0 or any later version
4 * FILE: devutils/vgafontedit/precomp.h
6 * COPYRIGHT: Copyright 2008 Colin Finck <mail@colinfinck.de>
16 #include "customwndclasses.h"
18 // Forward declarations
19 typedef struct _FONT_WND_INFO FONT_WND_INFO
, *PFONT_WND_INFO
;
20 typedef struct _EDIT_GLYPH_INFO EDIT_GLYPH_INFO
, *PEDIT_GLYPH_INFO
;
22 // Structure declarations
23 typedef struct _BITMAP_FONT
26 } BITMAP_FONT
, *PBITMAP_FONT
;
28 typedef struct _MAIN_WND_INFO
37 PFONT_WND_INFO CurrentFontWnd
;
38 ULONG uDocumentCounter
;
40 PFONT_WND_INFO FirstFontWnd
;
41 PFONT_WND_INFO LastFontWnd
;
42 } MAIN_WND_INFO
, *PMAIN_WND_INFO
;
44 typedef struct _FONT_OPEN_INFO
47 BOOL bBinaryFileOpened
;
50 } FONT_OPEN_INFO
, *PFONT_OPEN_INFO
;
54 PMAIN_WND_INFO MainWndInfo
;
55 PFONT_OPEN_INFO OpenInfo
;
60 UINT uSelectedCharacter
;
62 PFONT_WND_INFO PrevFontWnd
;
63 PFONT_WND_INFO NextFontWnd
;
65 PEDIT_GLYPH_INFO FirstEditGlyphWnd
;
66 PEDIT_GLYPH_INFO LastEditGlyphWnd
;
69 struct _EDIT_GLYPH_INFO
71 PFONT_WND_INFO FontWndInfo
;
74 UCHAR CharacterBits
[8];
81 PEDIT_GLYPH_INFO PrevEditGlyphWnd
;
82 PEDIT_GLYPH_INFO NextEditGlyphWnd
;
85 #define ID_MDI_FIRSTCHILD 50000
87 // Dimensions of the visual elements
88 #define CHARACTER_INFO_BOX_WIDTH 55
89 #define CHARACTER_INFO_BOX_HEIGHT 16
90 #define CHARACTER_BITMAP_BOX_HEIGHT 14
91 #define CHARACTER_BOX_WIDTH (CHARACTER_INFO_BOX_WIDTH)
92 #define CHARACTER_BOX_HEIGHT (CHARACTER_INFO_BOX_HEIGHT + CHARACTER_BITMAP_BOX_HEIGHT)
93 #define CHARACTER_BOX_PADDING 5
94 #define FONT_BOXES_WND_WIDTH (CHARACTER_BOX_WIDTH * 16 + CHARACTER_BOX_PADDING * 15)
95 #define FONT_BOXES_WND_HEIGHT (CHARACTER_BOX_HEIGHT * 16 + CHARACTER_BOX_PADDING * 15)
96 #define FONT_WND_MIN_WIDTH (FONT_BOXES_WND_WIDTH + 25)
97 #define FONT_WND_MIN_HEIGHT (FONT_BOXES_WND_HEIGHT + GetSystemMetrics(SM_CYCAPTION) + 25)
99 // Custom return values
100 #define HITTEST_SEPARATOR -1
102 // Custom window messages
103 #define WM_USER_APPCLOSE (WM_USER + 1)
106 #define TOOLBAR_EDIT_GLYPH 0
107 #define TOOLBOX_PEN 0
109 // PSFv1 file handling
110 #define PSF1_MAGIC0 0x36
111 #define PSF1_MAGIC1 0x04
113 typedef struct _PSF1_HEADER
118 } PSF1_HEADER
, *PPSF1_HEADER
;
122 // Function prototypes
126 INT_PTR CALLBACK
AboutDlgProc(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
129 INT_PTR CALLBACK
EditGlyphDlgProc(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
130 BOOL
InitEditGlyphWndClasses(VOID
);
131 VOID
UnInitEditGlyphWndClasses(VOID
);
134 VOID
CreateFontBoxesWindow(PFONT_WND_INFO FontWndInfo
);
135 BOOL
InitFontBoxesWndClass(VOID
);
136 VOID
UnInitFontBoxesWndClass(VOID
);
137 VOID
GetCharacterRect(IN UINT uFontRow
, IN UINT uFontColumn
, OUT LPRECT CharacterRect
);
138 __inline VOID
GetCharacterPosition(IN UINT uCharacter
, OUT PUINT uFontRow
, OUT PUINT uFontColumn
);
139 VOID
EditCurrentGlyph(PFONT_WND_INFO FontWndInfo
);
142 BOOL
CreateFontWindow(PMAIN_WND_INFO MainWndInfo
, PFONT_OPEN_INFO OpenInfo
);
143 BOOL
InitFontWndClass(VOID
);
144 VOID
UnInitFontWndClass(VOID
);
147 extern PWSTR szAppName
;
148 extern HINSTANCE hInstance
;
149 extern HANDLE hProcessHeap
;
150 extern UINT uCharacterClipboardFormat
;
153 BOOL
CreateMainWindow(IN INT nCmdShow
, OUT PMAIN_WND_INFO
* Info
);
154 BOOL
InitMainWndClass(VOID
);
155 VOID
UnInitMainWndClass(VOID
);
156 VOID
DoFileSave(IN PMAIN_WND_INFO Info
, IN BOOL bSaveAs
);
157 VOID
SetToolbarFileButtonState(IN PMAIN_WND_INFO Info
, BOOL bEnabled
);
158 VOID
SetPasteButtonState(IN PMAIN_WND_INFO Info
);
161 INT
AllocAndLoadString(OUT PWSTR
*lpTarget
, IN UINT uID
);
162 DWORD
LoadAndFormatString(IN UINT uID
, OUT PWSTR
*lpTarget
, ...);
163 VOID
LocalizedError(IN UINT uID
, ...);
166 VOID
FileInitialize(HWND hwnd
);
167 BOOL
DoOpenFile(OUT PWSTR pszFileName
);
168 BOOL
DoSaveFile(IN PWSTR pszFileName
);