Class TFontEditorForm (unit Main)

Inherits from

TForm

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.

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

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;



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;