BDFfont
MainForm.pas
Classes | Enumerations | Variables | Body Source
Example1 for working with BDF font

This program is part of the BDFfont project. It show how to work with BDF file using BDFfont library. Full project can be found at http://sourceforge.net/projects/bdffont/ Copyright TridenT 2003 - Under GNU GPL licence

Author
TridenT
Version
2003/08/11 TridenT v0.1 Initial revision

2003/08/11 TridenT v0.2 Add transparency, space char, hints

2003/08/24 TridenT v0.3 Added progress form (when loading font)

2003/09/05 TridenT v0.4 Added save to BMP function.

Body Source
{-------------------------------------------------------------------------------
  Example1 for working with BDF font

  This program is part of the BDFfont project.
  It show how to work with BDF file using BDFfont library.
  Full project can be found at
  http://sourceforge.net/projects/bdffont/
  Copyright TridenT 2003 - Under GNU GPL licence

  @Author    TridenT
  @Version   2003/08/11   TridenT   v0.1     Initial revision
  @Version   2003/08/11   TridenT   v0.2     Add transparency, space char, hints
  @Version   2003/08/24   TridenT   v0.3     Added progress form (when loading font)
  @Version   2003/09/05   TridenT   v0.4     Added save to BMP function.
  @Todo
-------------------------------------------------------------------------------}

unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, u_BDFfont, Menus, ComCtrls;

type
  TProjectStatus = (psNew, psFontLoaded, psFontUnloaded);

  TForm1 = class(TForm)
    Panel2: TPanel;
    Button_WriteCanvas: TButton;
    Edit_TextToWrite: TEdit;
    Button_LoadBDFfont: TButton;
    Button_UnloadBDFfont: TButton;
    PaintBox1: TPaintBox;
    OpenDialogBDF: TOpenDialog;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Quit1: TMenuItem;
    N1: TMenuItem;
    About1: TMenuItem;
    Edit_PixelSpace: TEdit;
    UpDown_PixelSpace: TUpDown;
    Label1: TLabel;
    CheckBox_Transparent: TCheckBox;
    Button_SaveToFile: TButton;
    SaveDialogBMP: TSaveDialog;
    procedure Button_LoadBDFfontClick(Sender: TObject);
    procedure Button_UnloadBDFfontClick(Sender: TObject);
    procedure Button_WriteCanvasClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Quit1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Edit_PixelSpaceChange(Sender: TObject);
    procedure CheckBox_TransparentClick(Sender: TObject);
    procedure PaintBox1DblClick(Sender: TObject);
    procedure Button_SaveToFileClick(Sender: TObject);
  private
    { Private declarations }
    BDF_font: TBDF_Font;
    fWait: TForm;
    procedure UpdateControls(Status: TProjectStatus);
    procedure OnLoading(Sender: TObject; Value: integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses About;

{$R *.dfm}

procedure TForm1.Button_LoadBDFfontClick(Sender: TObject);
begin
  if OpenDialogBDF.Execute then
  begin
    BDF_Font := TBDF_Font.Create;
    BDF_Font.OnFontLoading := OnLoading;
    // Initialize progress form
    fWait := CreateMessageDialog('Loading the font, please wait.', mtInformation, []);
    fWait.Show;
    BDF_Font.LoadFromFile(OpenDialogBDF.FileName);
    // Close and free progress form
    fWait.Close;
    FreeAndNil(fWait);
    UpdateControls(psFontLoaded);
  end;
end;

procedure TForm1.Button_UnloadBDFfontClick(Sender: TObject);
begin
  FreeAndNil(BDF_Font);
  UpdateControls(psFontUnloaded);
end;

procedure TForm1.Button_WriteCanvasClick(Sender: TObject);
begin
  BDF_Font.DrawText(Random(PaintBox1.Canvas.ClipRect.Right div 2)
    , Random(PaintBox1.Canvas.ClipRect.Bottom), Paintbox1.Canvas, Edit_TextToWrite.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  UpdateControls(psNew);
  Caption := Application.Title;
end;

// Update buttons and other controls
procedure TForm1.UpdateControls(Status: TProjectStatus);
begin
  case Status of
    psFontLoaded:
      begin
        Button_LoadBDFfont.Enabled   := False;
        Button_UnloadBDFfont.Enabled := True;
        Button_WriteCanvas.Enabled   := True;
        Button_SaveToFile.Enabled    := True;
        Button_SaveToFile.Enabled    := True;
      end;
    else
      begin
        Button_LoadBDFfont.Enabled   := True;
        Button_UnloadBDFfont.Enabled := False;
        Button_WriteCanvas.Enabled   := False;
        Button_SaveToFile.Enabled    := False;
        Button_SaveToFile.Enabled    := False;
      end;
  end; // case
end;

procedure TForm1.Quit1Click(Sender: TObject);
begin
  if Assigned(BDF_Font) then FreeAndNil(BDF_Font);
  Close;
end;

procedure TForm1.About1Click(Sender: TObject);
begin
  AboutBox.ShowModal;
end;

procedure TForm1.Edit_PixelSpaceChange(Sender: TObject);
begin
  if Assigned(BDF_Font) then
    BDF_Font.PixelSpaceChar := StrToInt(Edit_PixelSpace.Text);
end;

procedure TForm1.CheckBox_TransparentClick(Sender: TObject);
begin
  if Assigned(BDF_Font) then
    BDF_Font.IsTransparent := (Sender as TCheckbox).Checked;
end;

procedure TForm1.PaintBox1DblClick(Sender: TObject);
begin
  PaintBox1.Canvas.Brush.Color := clSkyBlue;
  PaintBox1.Canvas.FillRect(PaintBox1.Canvas.ClipRect);
end;

// When loading, show percents loaded
procedure TForm1.OnLoading(Sender: TObject; Value: integer);
begin
  if Assigned(fWait) then
  begin
    fWait.Caption := IntToStr(Value) + ' %';
    Application.ProcessMessages;
  end;
end;

procedure TForm1.Button_SaveToFileClick(Sender: TObject);
begin
  if Assigned(BDF_Font) then
    if SaveDialogBMP.Execute then
      BDF_Font.SaveToBitmap(SaveDialogBMP.FileName);
end;


end.
Classes
Class Description
TForm1 This is class TForm1.
Enumerations
Enumeration Description
TProjectStatus This is record TProjectStatus.
Variables
Variable Description
Form1 This is variable Form1.
Links

Created with a demo version of Doc-O-Matic. This version is supplied for evaluation purposes only, do not distribute this documentation. To obtain a commercial license please see http://www.doc-o-matic.com/purchase.html.
Copyright (c) 2003. All rights reserved.