| Class TFontEditorForm (unit Main) |
TForm
| Constructors |
| Functions |
procedure CodeComboChange(Sender: TObject);
procedure CodeComboKeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Generate;
procedure GridDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure GridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure GridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
procedure GridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure GridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure HistoryClick(Sender:TObject);
procedure MenuAboutClick(Sender: TObject);
procedure MenuBloomAllClick(Sender: TObject);
procedure MenuBloomClick(Sender: TObject);
procedure MenuBoldClick(Sender: TObject);
procedure MenuClearClick(Sender: TObject);
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);
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);
procedure ScrollBar1Change(Sender: TObject);
procedure wmUserRestore(var msg:TMessage);release the combobox TCharDefn arrays
procedure AssignGenerationDefaults;
procedure BloomChar(var ch:TCharDefn);
procedure ClearChars;
function CountChars: Integer;
procedure HistoryCreate;
procedure HistoryDestroy;
procedure HistoryNotifyWorkfile(FileName:string);
procedure HistoryUpdate;
function LargeCol(const Ar:TLargeArray; c:integer):Word;
procedure MakeAsm(DefaultName:string);
procedure MakeNewFont(const NewHeader: TBinaryFontHeader);
procedure MarginEraseLarge(var ch:TCharDefn);
procedure MarginEraseSmall(var ch:TCharDefn);
procedure OpenFile(FileName:string);
procedure ReadFontBinary(const Filename:TFileName);
function SaveChangesQuery : boolean;
procedure SetCol(var Ar:TSmallArray; c:integer; W:Word);
procedure SetCols(var Ar:TLargeArray; c:integer; W:Word);
procedure ShowNewChar;
procedure ShowNewFile(const Fontname:string);
function SmallCol(const Ar:TSmallArray; c:integer):integer;
procedure WriteFontBinary(const Filename:TFileName);| Properties |
| Events |
| Variables |
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;
FileHistory : TStringList;
FontHeader : TBinaryFontHeader;
GenHexComment : Boolean;
GenIndex : Boolean;
GenLarge : Boolean;
GenLBloom : Boolean;
GenRBloom : Boolean;
GenSmall : Boolean;
GenZeroPad : Boolean;
HistoryBase : integer;
IsDirty : Boolean;
Setting : Boolean;| Constructors |
| Functions |
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
| Properties |
| Events |
| Variables |
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;