2 * PROJECT: ReactOS VGA Font Editor
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
5 * COPYRIGHT: Copyright 2008 Colin Finck (colin@reactos.org)
16 #include "customwndclasses.h"
29 typedef struct _VGAFONT
31 VGAFONT_TYPE FontType
;
35 // Forward declarations
36 typedef struct _FONT_WND_INFO FONT_WND_INFO
, *PFONT_WND_INFO
;
37 typedef struct _EDIT_GLYPH_INFO EDIT_GLYPH_INFO
, *PEDIT_GLYPH_INFO
;
39 // Structure declarations
40 typedef struct _MAIN_WND_INFO
49 PFONT_WND_INFO CurrentFontWnd
;
50 ULONG uDocumentCounter
;
52 PFONT_WND_INFO FirstFontWnd
;
53 PFONT_WND_INFO LastFontWnd
;
54 } MAIN_WND_INFO
, *PMAIN_WND_INFO
;
56 typedef struct _FONT_OPEN_INFO
59 BOOL bBinaryFileOpened
;
62 } FONT_OPEN_INFO
, *PFONT_OPEN_INFO
;
66 PMAIN_WND_INFO MainWndInfo
;
67 PFONT_OPEN_INFO OpenInfo
;
72 UINT uSelectedCharacter
;
74 PFONT_WND_INFO PrevFontWnd
;
75 PFONT_WND_INFO NextFontWnd
;
77 PEDIT_GLYPH_INFO FirstEditGlyphWnd
;
78 PEDIT_GLYPH_INFO LastEditGlyphWnd
;
81 struct _EDIT_GLYPH_INFO
83 PFONT_WND_INFO FontWndInfo
;
86 UCHAR CharacterBits
[8];
93 PEDIT_GLYPH_INFO PrevEditGlyphWnd
;
94 PEDIT_GLYPH_INFO NextEditGlyphWnd
;
97 #define ID_MDI_FIRSTCHILD 50000
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)
111 // Custom return values
112 #define HITTEST_SEPARATOR -1
114 // Custom window messages
115 #define WM_USER_APPCLOSE (WM_USER + 1)
118 #define TOOLBAR_EDIT_GLYPH 0
119 #define TOOLBOX_PEN 0
123 // Function prototypes
127 INT_PTR CALLBACK
AboutDlgProc(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
130 INT_PTR CALLBACK
EditGlyphDlgProc(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
131 BOOL
InitEditGlyphWndClasses(VOID
);
132 VOID
UnInitEditGlyphWndClasses(VOID
);
135 VOID
CreateFontBoxesWindow(PFONT_WND_INFO FontWndInfo
);
136 BOOL
InitFontBoxesWndClass(VOID
);
137 VOID
UnInitFontBoxesWndClass(VOID
);
138 VOID
GetCharacterRect(IN UINT uFontRow
, IN UINT uFontColumn
, OUT LPRECT CharacterRect
);
139 __inline VOID
GetCharacterPosition(IN UINT uCharacter
, OUT PUINT uFontRow
, OUT PUINT uFontColumn
);
140 VOID
EditCurrentGlyph(PFONT_WND_INFO FontWndInfo
);
143 BOOL
CreateFontWindow(PMAIN_WND_INFO MainWndInfo
, PFONT_OPEN_INFO OpenInfo
);
144 BOOL
InitFontWndClass(VOID
);
145 VOID
UnInitFontWndClass(VOID
);
148 extern PWSTR szAppName
;
149 extern HINSTANCE hInstance
;
150 extern HANDLE hProcessHeap
;
151 extern UINT uCharacterClipboardFormat
;
154 BOOL
CreateMainWindow(IN INT nCmdShow
, OUT PMAIN_WND_INFO
* Info
);
155 BOOL
InitMainWndClass(VOID
);
156 VOID
UnInitMainWndClass(VOID
);
157 VOID
DoFileSave(IN PMAIN_WND_INFO Info
, IN BOOL bSaveAs
);
158 VOID
SetToolbarFileButtonState(IN PMAIN_WND_INFO Info
, BOOL bEnabled
);
159 VOID
SetPasteButtonState(IN PMAIN_WND_INFO Info
);
162 INT
AllocAndLoadString(OUT PWSTR
*lpTarget
, IN UINT uID
);
163 DWORD
LoadAndFormatString(IN UINT uID
, OUT PWSTR
*lpTarget
, ...);
164 VOID
LocalizedError(IN UINT uID
, ...);
167 VOID
FileInitialize(HWND hwnd
);
168 BOOL
DoOpenFile(OUT PWSTR pszFileName
);
169 BOOL
DoSaveFile(IN PWSTR pszFileName
);