Class TFontEditorForm (unit Main) |
Inherits from
TForm
procedure CodeComboChange(Sender: TObject);
make other controls consistent with Char selection
procedure CodeComboKeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
----------------- TFontEditorForm ----------------------------------
procedure FormDestroy(Sender: TObject);
procedure Generate;
-------------------- TEXT GENERATION ------------------------- } { This is fairly specific to my application, and probably won't be
of much interest to most readers.
procedure GridDragDrop(Sender, Source: TObject; X, Y: Integer);
case
procedure GridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
------------- DRAG/DROP MARGIN ADJUSTMENT ----------------------
procedure GridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
---------------- GRID DRAWING EVENTS ------------------------ } { Note that grids have properties DefaultDrawing = TabStop = false
procedure GridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
release the mouse
procedure GridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Grid does not seem to capture control for right mouse clicks.
procedure HistoryClick(Sender:TObject);
discard bottom of list
procedure MenuAboutClick(Sender: TObject);
procedure MenuBloomAllClick(Sender: TObject);
procedure MenuBloomClick(Sender: TObject);
procedure MenuBoldClick(Sender: TObject);
clip if overflow
procedure MenuClearClick(Sender: TObject);
only allow margin adjustments for proportional fonts
procedure MenuDoubleSizeClick(Sender: TObject);
procedure MenuEraseAllClick(Sender: TObject);
procedure MenuEraseClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure MenuMakeClick(Sender: TObject);
---------------------------------------------------------------------
procedure MenuNewClick(Sender: TObject);
procedure MenuOpenClick(Sender: TObject);
updates caption
procedure MenuOptionsClick(Sender: TObject);
procedure MenuSaveAsClick(Sender: TObject);
procedure MenuSaveClick(Sender: TObject);
procedure NullDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
Margin has been dropped on a grid, so set the margin at that point.
procedure ScrollBar1Change(Sender: TObject);
There's a bug here: when list is dropped down, lowercase alpha keys scroll
it to the uppercase equivalents.
procedure wmUserRestore(var msg:TMessage);
Public declarations release the combobox TCharDefn arrays
procedure AssignGenerationDefaults;
Returns false if user Cancels, otherwise true.
procedure BloomChar(var ch:TCharDefn);
Smear the large grid horizontally by 1 pixel
procedure ClearChars;
set margins to suit FontHeader
function CountChars: Integer;
procedure HistoryCreate;
---------------- FILE HISTORY ----------------------------------- } { I'd like to eventually do this as a TFileHistory component, eg.
procedure HistoryDestroy;
All history menu items invoke this handler when clicked
procedure HistoryNotifyWorkfile(FileName:string);
filename portion only
procedure HistoryUpdate;
function LargeCol(const Ar:TLargeArray; c:integer):Word;
MSB at bottom
procedure MakeAsm(DefaultName:string);
remove .
procedure MakeNewFont(const NewHeader: TBinaryFontHeader);
procedure MarginEraseLarge(var ch:TCharDefn);
procedure MarginEraseSmall(var ch:TCharDefn);
procedure OpenFile(FileName:string);
procedure ReadFontBinary(const Filename:TFileName);
------------- BINARY STREAM I/O ----------------------
function SaveChangesQuery : boolean;
------------- NEW/OPEN/SAVE DIALOGS ----------------------
procedure SetCol(var Ar:TSmallArray; c:integer; W:Word);
MSB at bottom
procedure SetCols(var Ar:TLargeArray; c:integer; W:Word);
procedure ShowNewChar;
procedure ShowNewFile(const Fontname:string);
------------- DISPLAY CONTROL COORDINATION ----------------------
function SmallCol(const Ar:TSmallArray; c:integer):integer;
------------- PIXEL EFFECTS -----------------------------
procedure WriteFontBinary(const Filename:TFileName);
char arrays are compared as if they're zero-terminated strings
CodeCombo : TComboBox;
HexCode : TLabel;
LargeGrid : TDrawGrid;
MainMenu : TMainMenu;
MarginPanel : TPanel;
MenuAbout : TMenuItem;
MenuBloom : TMenuItem;
MenuBloomAll : TMenuItem;
MenuBold : TMenuItem;
MenuClear : TMenuItem;
MenuCode : TMenuItem;
MenuDoubleSize : TMenuItem;
MenuEdit : TMenuItem;
MenuErase : TMenuItem;
MenuEraseAll : TMenuItem;
MenuExit : TMenuItem;
MenuFile : TMenuItem;
MenuHelp : TMenuItem;
MenuMake : TMenuItem;
MenuNew : TMenuItem;
MenuOpen : TMenuItem;
MenuOptions : TMenuItem;
MenuSave : TMenuItem;
MenuSaveAs : TMenuItem;
N1 : TMenuItem;
N2 : TMenuItem;
N3 : TMenuItem;
N4 : TMenuItem;
N5 : TMenuItem;
OpenDialog : TOpenDialog;
SaveDialog : TSaveDialog;
ScrollBar1 : TScrollBar;
SmallGrid : TDrawGrid;
CurrentFile : TFileName;
DragLeft : Boolean;
DragMarginL : ShortInt;
DragMarginR : ShortInt;
Drawing : Boolean;
EditChar : TCharDefn;
Private declarations
FileHistory : TStringList;
FontHeader : TBinaryFontHeader;
GenHexComment : Boolean;
GenIndex : Boolean;
GenLarge : Boolean;
GenLBloom : Boolean;
GenRBloom : Boolean;
GenSmall : Boolean;
GenZeroPad : Boolean;
HistoryBase : integer;
IsDirty : Boolean;
Setting : Boolean;
procedure CodeComboChange(Sender: TObject);
make other controls consistent with Char selection
procedure CodeComboKeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
----------------- TFontEditorForm ----------------------------------
procedure FormDestroy(Sender: TObject);
procedure Generate;
-------------------- TEXT GENERATION ------------------------- } { This is fairly specific to my application, and probably won't be
of much interest to most readers.
procedure GridDragDrop(Sender, Source: TObject; X, Y: Integer);
case
procedure GridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
------------- DRAG/DROP MARGIN ADJUSTMENT ----------------------
procedure GridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
---------------- GRID DRAWING EVENTS ------------------------ } { Note that grids have properties DefaultDrawing = TabStop = false
procedure GridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
release the mouse
procedure GridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Grid does not seem to capture control for right mouse clicks.
Line below gives us notification of right MouseUp events.
procedure HistoryClick(Sender:TObject);
discard bottom of list
procedure MenuAboutClick(Sender: TObject);
procedure MenuBloomAllClick(Sender: TObject);
procedure MenuBloomClick(Sender: TObject);
procedure MenuBoldClick(Sender: TObject);
clip if overflow
procedure MenuClearClick(Sender: TObject);
only allow margin adjustments for proportional fonts
procedure MenuDoubleSizeClick(Sender: TObject);
procedure MenuEraseAllClick(Sender: TObject);
procedure MenuEraseClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure MenuMakeClick(Sender: TObject);
---------------------------------------------------------------------
procedure MenuNewClick(Sender: TObject);
procedure MenuOpenClick(Sender: TObject);
updates caption
procedure MenuOptionsClick(Sender: TObject);
procedure MenuSaveAsClick(Sender: TObject);
procedure MenuSaveClick(Sender: TObject);
procedure NullDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
Margin has been dropped on a grid, so set the margin at that point.
procedure ScrollBar1Change(Sender: TObject);
There's a bug here: when list is dropped down, lowercase alpha keys scroll
it to the uppercase equivalents. I haven't tried to work out why.
procedure wmUserRestore(var msg:TMessage);
Public declarations
release the combobox TCharDefn arrays
procedure AssignGenerationDefaults;
Returns false if user Cancels, otherwise true.
procedure BloomChar(var ch:TCharDefn);
Smear the large grid horizontally by 1 pixel
procedure ClearChars;
set margins to suit FontHeader
function CountChars: Integer;
procedure HistoryCreate;
---------------- FILE HISTORY ----------------------------------- } { I'd like to eventually do this as a TFileHistory component, eg.
property Menu FileMenu1:TMenuItem
property IniFileName 'win.ini'
property MaxHistory 3
method NotifyOpen
event OnClick
Right now I'm too busy - maybe someone else will do it for me? :)
procedure HistoryDestroy;
All history menu items invoke this handler when clicked
procedure HistoryNotifyWorkfile(FileName:string);
filename portion only
procedure HistoryUpdate;
function LargeCol(const Ar:TLargeArray; c:integer):Word;
MSB at bottom
procedure MakeAsm(DefaultName:string);
remove .FB extension
procedure MakeNewFont(const NewHeader: TBinaryFontHeader);
procedure MarginEraseLarge(var ch:TCharDefn);
procedure MarginEraseSmall(var ch:TCharDefn);
procedure OpenFile(FileName:string);
procedure ReadFontBinary(const Filename:TFileName);
------------- BINARY STREAM I/O ----------------------
function SaveChangesQuery : boolean;
------------- NEW/OPEN/SAVE DIALOGS ----------------------
procedure SetCol(var Ar:TSmallArray; c:integer; W:Word);
MSB at bottom
procedure SetCols(var Ar:TLargeArray; c:integer; W:Word);
procedure ShowNewChar;
procedure ShowNewFile(const Fontname:string);
------------- DISPLAY CONTROL COORDINATION ----------------------
function SmallCol(const Ar:TSmallArray; c:integer):integer;
------------- PIXEL EFFECTS -----------------------------
procedure WriteFontBinary(const Filename:TFileName);
char arrays are compared as if they're zero-terminated strings
CodeCombo : TComboBox;
HexCode : TLabel;
LargeGrid : TDrawGrid;
MainMenu : TMainMenu;
MarginPanel : TPanel;
MenuAbout : TMenuItem;
MenuBloom : TMenuItem;
MenuBloomAll : TMenuItem;
MenuBold : TMenuItem;
MenuClear : TMenuItem;
MenuCode : TMenuItem;
MenuDoubleSize : TMenuItem;
MenuEdit : TMenuItem;
MenuErase : TMenuItem;
MenuEraseAll : TMenuItem;
MenuExit : TMenuItem;
MenuFile : TMenuItem;
MenuHelp : TMenuItem;
MenuMake : TMenuItem;
MenuNew : TMenuItem;
MenuOpen : TMenuItem;
MenuOptions : TMenuItem;
MenuSave : TMenuItem;
MenuSaveAs : TMenuItem;
N1 : TMenuItem;
N2 : TMenuItem;
N3 : TMenuItem;
N4 : TMenuItem;
N5 : TMenuItem;
OpenDialog : TOpenDialog;
SaveDialog : TSaveDialog;
ScrollBar1 : TScrollBar;
SmallGrid : TDrawGrid;
CurrentFile : TFileName;
DragLeft : Boolean;
DragMarginL : ShortInt;
DragMarginR : ShortInt;
Drawing : Boolean;
EditChar : TCharDefn;
Private declarations
FileHistory : TStringList;
FontHeader : TBinaryFontHeader;
GenHexComment : Boolean;
GenIndex : Boolean;
GenLarge : Boolean;
GenLBloom : Boolean;
GenRBloom : Boolean;
GenSmall : Boolean;
GenZeroPad : Boolean;
HistoryBase : integer;
IsDirty : Boolean;
Setting : Boolean;