fpvectorial: Add demo program for wmf

git-svn-id: trunk@52797 -
This commit is contained in:
wp 2016-08-12 16:27:33 +00:00
parent edb78315fa
commit 814eba3c6a
5 changed files with 511 additions and 0 deletions

4
.gitattributes vendored
View File

@ -1525,6 +1525,10 @@ components/fpvectorial/examples/fpvtextwritetest2.lpi svneol=native#text/plain
components/fpvectorial/examples/fpvtextwritetest2.pas svneol=native#text/plain
components/fpvectorial/examples/fpvwritetest.lpi svneol=native#text/plain
components/fpvectorial/examples/fpvwritetest.pas svneol=native#text/plain
components/fpvectorial/examples/wmf_mainform.lfm svneol=native#text/plain
components/fpvectorial/examples/wmf_mainform.pas svneol=native#text/plain
components/fpvectorial/examples/wmfviewer.lpi svneol=native#text/plain
components/fpvectorial/examples/wmfviewer.lpr svneol=native#text/plain
components/fpvectorial/fpvectbuildunit.pas svneol=native#text/plain
components/fpvectorial/fpvectorial.pas svneol=native#text/plain
components/fpvectorial/fpvectorial.xml svneol=native#text/plain

View File

@ -0,0 +1,197 @@
object Form1: TForm1
Left = 218
Height = 511
Top = 155
Width = 738
Caption = 'Form1'
ClientHeight = 511
ClientWidth = 738
OnCreate = FormCreate
OnDestroy = FormDestroy
LCLVersion = '1.7'
object LeftPanel: TPanel
Left = 0
Height = 511
Top = 0
Width = 267
Align = alLeft
BevelOuter = bvNone
ClientHeight = 511
ClientWidth = 267
TabOrder = 0
object Splitter1: TSplitter
Cursor = crVSplit
Left = 0
Height = 5
Top = 221
Width = 267
Align = alTop
ResizeAnchor = akTop
end
object ShellListView: TShellListView
Left = 0
Height = 285
Top = 226
Width = 267
Align = alClient
Color = clDefault
HideSelection = False
ReadOnly = True
SortColumn = 0
SortType = stText
TabOrder = 1
OnSelectItem = ShellListViewSelectItem
ObjectTypes = [otNonFolders]
ShellTreeView = ShellTreeView
end
object ShellTreeView: TShellTreeView
Left = 0
Height = 221
Top = 0
Width = 267
Align = alTop
FileSortType = fstNone
HideSelection = False
Images = ImageList
TabOrder = 2
OnGetImageIndex = ShellTreeViewGetImageIndex
OnGetSelectedIndex = ShellTreeViewGetSelectedIndex
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
ObjectTypes = [otFolders]
ShellListView = ShellListView
end
end
object Splitter2: TSplitter
Left = 267
Height = 511
Top = 0
Width = 5
end
object ScrollBox1: TScrollBox
Left = 272
Height = 511
Top = 0
Width = 466
HorzScrollBar.Increment = 27
HorzScrollBar.Page = 272
HorzScrollBar.Smooth = True
HorzScrollBar.Tracking = True
VertScrollBar.Increment = 18
VertScrollBar.Page = 183
VertScrollBar.Smooth = True
VertScrollBar.Tracking = True
Align = alClient
ClientHeight = 507
ClientWidth = 462
TabOrder = 2
object Image1: TImage
Left = 0
Height = 183
Top = 0
Width = 272
end
end
object ImageList: TImageList
left = 96
top = 72
Bitmap = {
4C69030000001000000010000000FFFFFF00FFFFFF000088CC610088CC810088
CC810088CC810088CC810088CC810088CC810088CC810088CC810088CC810088
CC810088CC610088CB00FFFFFF00FFFFFF00FFFFFF000087CA82B1F5FFFFAEF2
FFFFAEF2FFFFAEF2FFFFAEF2FFFFAEF2FFFFAEF2FFFFAEF2FFFFAEF2FFFFB1F5
FFFF0087CA820087CA00FFFFFF00FFFFFF00FFFFFF000086C984ACF1FFFFA7EC
FEFFA7ECFEFFA7ECFEFFA7ECFEFFA7ECFEFFA7ECFEFFA7ECFEFFA7ECFEFFACF1
FFFF0086C9840086C900FFFFFF00FFFFFF00FFFFFF000084C686A9EEFDFFA4E9
FCFFA4E9FCFFA4E9FCFFA4E9FCFFA4E9FCFFA4E9FCFFA4E9FCFFA4E9FCFFA9EE
FDFF0084C6860084C600FFFFFF00FFFFFF00FFFFFF000083C489A6EBFCFFA1E6
FBFFA1E6FBFFA1E6FBFFA1E6FBFFA1E6FBFFA1E6FBFFA1E6FBFFA1E6FBFFA6EB
FCFF0083C4890083C400FFFFFF00FFFFFF00FFFFFF000081C18BA3E8FBFF9DE3
F9FF9DE3F9FF9DE3F9FF9DE3F9FF9DE3F9FF9DE3F9FF9DE3F9FF9DE3F9FFA3E8
FBFF0081C18B0081C100FFFFFF00FFFFFF00FFFFFF00007FBE8E9EE5F9FF98DF
F6FF98DFF6FF98DFF6FF98DFF6FF98DFF6FF98DFF6FF98DFF6FF98DFF6FFA1E7
FAFF007FBE8E007EBD00FFFFFF00FFFFFF00FFFFFF00007DBB919BE1F7FF94DB
F4FF94DBF4FF94DBF4FF94DBF4FF94DBF4FF94DBF4FF94DBF4FF9EE4F8FF7BC0
DEFF007DBB91007DBB33FFFFFF00FFFFFF00FFFFFF00007BB89497DEF6FF90D8
F2FF90D8F2FF90D8F2FF90D8F2FF90D8F2FF90D8F2FF97DEF6FF78BDDCFF78BD
DCFFFEFEFDFF007BB894FFFFFF00FFFFFF00FFFFFF000079B59792DAF4FF8BD4
F0FF8BD4F0FF8BD4F0FF8BD4F0FF8BD4F0FF8BD4F0FF92DAF4FF69ADCFFF92DA
F4FFF8F8F3FF0079B597FFFFFF00FFFFFF00FFFFFF000076B19A8ED6F2FF87D0
EDFF87D0EDFF87D0EDFF87D0EDFF87D0EDFF87D0EDFF8ED6F2FF66AACCFF8ED6
F2FFF0F0E6FF0076B19AFFFFFF00FFFFFF00FFFFFF000074AE9D8AD3F0FF82CD
EBFF82CDEBFF82CDEBFF82CDEBFF82CDEBFF82CDEBFF8AD3F0FF62A6C8FF8AD3
F0FFE9E9DBFF0074AE9DFFFFFF00FFFFFF00FFFFFF000072ABA087D0EFFF7FCA
E9FF7FCAE9FF7FCAE9FF7FCAE9FF7FCAE9FF7FCAE9FF87D0EFFF5FA3C5FF87D0
EFFFFEC941FF0072ABA0FFFFFF00FFFFFF00FFFFFF00006CA3A884CEEEFF7CC7
E8FF7CC7E8FF7CC7E8FF7CC7E8FF7CC7E8FF7CC7E8FF84CEEEFF579BBDFF84CE
EEFFF4B62EFF006CA3A8FFFFFF00FFFFFF00FFFFFF00006395B486CFF0FF81CB
EDFF81CBEDFF81CBEDFF81CBEDFF81CBEDFF81CBEDFF86CFF0FF4B8FB1FF86CF
F0FF006395B40064973FFFFFFF00FFFFFF00FFFFFF00005D8C8F005C8BBF005C
8BBF005C8BBF005C8BBF005C8BBF005C8BBF005C8BBF005C8BBF005C8BBF005C
8BBF005D8C8F00639500FFFFFF00FFFFFF00FFFFFF000088CC610088CC810088
CC810088CC810088CC810088CC810088CC810088CC810088CC810088CC810088
CC810088CC610087CB00FFFFFF00FFFFFF00FFFFFF000087CA8388DCF4FF60C0
E9FF5FBFEAFF80D3F4FF9CE3FDFFA2E6FFFFA2E6FFFFA2E6FFFFA2E6FFFFA6EA
FFFF0087CA830087CA00FFFFFF00FFFFFF00FFFFFF000085C885ACF1FFFFABEF
FEFF95E2F8FF6EC9EDFF48A8D9FF98DCFEFF98DCFEFF98DCFEFF98DCFEFFA1E5
FFFF0085C8850085C800FFFFFF00FFFFFF00FFFFFF000084C587A9EEFDFFA4E9
FCFFA4E9FCFFAAEEFDFF42A1D1FF97DBFDFF97DBFDFF97DBFDFF97DBFDFF9FE3
FEFF0084C5870084C500FFFFFF00FFFFFF00FFFFFF000082C28AA6EBFCFFA1E6
FBFFA1E6FBFFA6EBFCFF3C9DCFFF96DAFCFF96DAFCFF96DAFCFF96DAFCFF9EE2
FDFF0082C28A0082C200FFFFFF00FFFFFF00FFFFFF00007FBF8DA3E8FBFF9DE3
F9FF9DE3F9FFA3E8FBFF3594C5FF94D8FAFF94D8FAFF94D8FAFF94D8FAFF9BDF
FCFF007FBF8D007FBE00FFFFFF00FFFFFF00FFFFFF00007DBB909EE5F9FF98DF
F6FF98DFF6FF9EE5F9FF3290C0FF92D6F8FF92D6F8FF92D6F8FF92D6F8FF99DD
FAFF007DBB90007DBB33FFFFFF00FFFFFF00FFFFFF00007BB8949BE1F7FF94DB
F4FF94DBF4FF9BE1F7FF308DBCFF90D4F6FF90D4F6FF90D4F6FF90D4F6FF97DB
F9FFFEFEFDFF007BB894FFFFFF00FFFFFF00FFFFFF000078B49797DEF6FF90D8
F2FF90D8F2FF97DEF6FF2D89B7FF8FD3F5FF8FD3F5FF8FD3F5FF8FD3F5FF95D9
F8FFF5F5EEFF0078B497FFFFFF00FFFFFF00FFFFFF000076B09B92DAF4FF8BD4
F0FF8BD4F0FF92DAF4FF2B85B3FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF93D7
F6FFEBEBDDFF0076B09BFFFFFF00FFFFFF00FFFFFF000073AC9E8ED6F2FF87D0
EDFF87D0EDFF8ED6F2FF2882AFFF8BCFF1FF8BCFF1FF8BCFF1FF8BCFF1FF91D5
F5FFFEC941FF0073AC9EFFFFFF00FFFFFF00FFFFFF00006FA7A48AD3F0FF82CD
EBFF82CDEBFF8AD3F0FF267EABFF8ACEF0FF8ACEF0FF8ACEF0FF8ACEF0FF8FD3
F4FFF4B62EFF006FA7A4FFFFFF00FFFFFF00FFFFFF00006699B287D1EFFF7FCA
E9FF7FCAE9FF87D0EFFF267DA9FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF90D4
F5FF006699B200679B3EFFFFFF00FFFFFF00FFFFFF00005E8D8E3591BDF169B8
DDFA81CBECFF84CEEEFF005C8BEF005D8CBE005D8CBE005D8CBE005D8CBE005D
8CBE005E8D8E00669900FFFFFF00FFFFFF00FFFFFF00005D8C00006599500064
97991C7AA9C052A5CDE0005B89C1005B8900005B8900005B8900005B8900005B
8900005D8C0000669900FFFFFF00FFFFFF00FFFFFF00005D8C00006497000062
9300005E8E30005C8C7C0059879200598700005B8900005B8900005B8900005B
8900005D8C0000669900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF009F9D9B009D9A98009E9C9A009E9C9AFFA5A3
A1FFA5A3A1FFA5A3A1FFA5A3A1FFA5A3A1FFA5A3A1FFA5A3A1FFA5A3A1FF9E9C
9AFF9E9C9A009D9A98009F9D9B009F9D9B009B989600999795FFE4E3E2FFC6C4
C2FFC6C4C2FFC6C4C2FFC6C4C2FFC6C4C2FFC6C4C2FFC6C4C2FFC6C4C2FFE4E3
E2FF999795FF9B9896009F9D9B009D9B9900969390FFE5E4E3FFC7C4C2FFC7C4
C2FFC7C5C3FFC7C5C3FFC7C5C3FFC7C5C3FFC7C5C3FFC7C5C3FFC7C4C2FFC7C4
C2FFE5E4E3FF969390FF9D9B99009A9896AAEFEEEFFFEBEAEAFFEAE9EAFFEAE9
EAFFEAE9EAFFEAE9EAFFEAE9EAFFEAE9EAFFEAE9EAFFEAE9EAFFEAE9EAFFEAE9
EAFFEBEAEAFFEFEEEFFF9A9896AA969492FFE3E1E0FF9D9997FF9D9997FF9C99
97FF9C9997FF9C9997FF9C9997FF9C9997FF9C9997FF9C9997FF9C9997FF9D99
97FF9D9997FFE3E1E0FF969492FF93918FFFDCDBD9FFA6A3A0FFE6E4E4FFE5E3
E4FFE5E4E4FFE6E4E4FFE6E4E4FFE6E4E4FFE6E4E4FFE5E4E4FFE5E3E4FFE6E4
E4FFA6A3A0FFDCDBD9FF93918FFF908E8CFFD7D5D4FFAEACAAFFE1DFE0FFB0AD
ABFFB1AEACFFB2AEACFFB2AEACFFB2AEACFFB2AEACFFB1AEACFFB0ADABFFE1DF
E0FFAEACAAFFD7D5D4FF908E8CFF8D8A88FFD4D2D1FFB7B4B2FFD2D0D0FFC3C1
BFFFC4C2C0FFC4C2C0FFC4C2C0FFC4C2C0FFC4C2C0FFC4C2C0FFC3C1BFFFD2D0
D0FFB7B4B2FFD4D2D1FF8D8A88FF8A8785FFD2D0CFFFC1BFBDFFAEACAAFFAFAD
ABFFAFADABFFAFADABFFAFADABFFAFADABFFAFADABFFAFADABFFAFADABFFAEAC
AAFFC1BFBDFFD2D0CFFF8A8785FF888583FFD6D4D2FFCECCCAFFCECCCAFFCECC
CAFFCECCCAFFCECCCAFFCECCCAFFCECCCAFFCECCCAFFCECCCAFFCECCCAFFCECC
CAFFCECCCAFFD6D4D2FF888583FF7D7A78C084817FFF83807EFF83807EFF8380
7EFF83807EFF83807EFF83807EFF83807EFF83807EFF83807EFF83807EFF8380
7EFF83807EFF84817FFF7D7A78C0000000230000003300000033000000330000
0033000000330000003300000033000000330000003300000033000000330000
0033000000330000003300000023FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
}
end
end

View File

@ -0,0 +1,200 @@
unit wmf_mainform;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ShellCtrls,
ExtCtrls, ComCtrls, fpvectorial;
type
{ TForm1 }
TForm1 = class(TForm)
Image1: TImage;
ImageList: TImageList;
LeftPanel: TPanel;
ScrollBox1: TScrollBox;
ShellListView: TShellListView;
ShellTreeView: TShellTreeView;
Splitter1: TSplitter;
Splitter2: TSplitter;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ShellListViewSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure ShellTreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
procedure ShellTreeViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
private
{ private declarations }
FVec: TvVectorialDocument;
procedure LoadImage(const AFileName: String);
procedure ReadFromIni;
procedure WriteToIni;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
IniFiles, fpvUtils;
const
PROGRAM_NAME = 'wmfViewer';
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
// Set correct dpi for scaling of mapmode MM_TEXT.
ScreenDPIX := ScreenInfo.PixelsPerInchX;
ScreenDPIY := ScreenInfo.PixelsPerInchY;
Caption := PROGRAM_NAME;
ShellListview.Mask := '*.svg;*.wmf';
ReadFromIni;
if ParamCount > 0 then begin
ShellTreeview.Path := ExtractFilepath(ParamStr(1));
ShellTreeview.MakeSelectionVisible;
LoadImage(ParamStr(1));
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WriteToIni;
FreeAndNil(FVec);
end;
procedure TForm1.LoadImage(const AFileName: String);
const
INCH = 25.4;
var
bmp: TBitmap;
page: TvPage;
multiplierX, multiplierY: Double;
begin
// For conversion of the mm returned by the wmf reader to screen pixels
multiplierX := ScreenInfo.PixelsPerInchX / INCH;
multiplierY := ScreenInfo.PixelsPerInchY / INCH;
// Load the image file into a TvVectorialDocument
FreeAndNil(FVec);
try
FVec := TvVectorialDocument.Create;
FVec.ReadFromFile(AFilename);
except
on E:Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
if FVec = nil then
exit;
// Create a temporary bitmap onto which the image file will be drawn
bmp := TBitmap.Create;
try
page := FVec.GetPage(0);
bmp.SetSize(
round(FVec.Width * multiplierX), // Convert mm to pixels
round(FVec.Height * multiplierY)
);
bmp.Canvas.Brush.Color := clWindow;
bmp.Canvas.FillRect(0, 0, bmp.Width, bmp.Height);
page.Render(bmp.Canvas, 0, 0, multiplierX, multiplierY);
// Assign the bitmap to the image's picture.
Image1.Picture.Assign(bmp);
Image1.Width := bmp.Width;
Image1.Height := bmp.Height;
// Misc
Caption := Format('%s - "%s"', [PROGRAM_NAME, AFileName]);
finally
bmp.Free;
end;
end;
procedure TForm1.ShellListViewSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
var
fn: String;
begin
if Selected then
begin
fn := ShellListview.GetPathFromItem(ShellListview.Selected);
ShellTreeview.MakeSelectionVisible;
LoadImage(fn);
end;
end;
procedure TForm1.ShellTreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if Node.Level = 0 then
Node.ImageIndex := 2 else
Node.ImageIndex := 0;
end;
procedure TForm1.ShellTreeViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin
Node.SelectedIndex := 1;
end;
procedure TForm1.ReadFromIni;
var
ini: TCustomIniFile;
L, T, W, H: Integer;
R: TRect;
begin
ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
try
L := ini.ReadInteger('MainForm', 'Left', Left);
T := ini.ReadInteger('MainForm', 'Top', Top);
W := ini.ReadInteger('MainForm', 'Width', Width);
H := ini.ReadInteger('MainForm', 'Height', Height);
R := Screen.DesktopRect;
if L+W > R.Right then L := R.Right - W;
if L < R.Left then L := R.Left;
if T+H > R.Bottom then T := R.Bottom - H;
if T < R.Top then T := R.Top;
SetBounds(L, T, W, H);
ShellTreeView.Height := ini.ReadInteger('MainForm', 'ShellTreeViewHeight', ShellTreeView.Height);
LeftPanel.Width := ini.ReadInteger('MainForm', 'ShellControlsWidth', LeftPanel.Width);
ShellTreeview.Path := ini.ReadString('Settings', 'InitialDir', '');
finally
ini.Free;
end;
end;
procedure TForm1.WriteToIni;
var
ini: TCustomIniFile;
begin
ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
try
if WindowState = wsNormal then begin
ini.WriteInteger('MainForm', 'Left', Left);
ini.WriteInteger('MainForm', 'Top', Top);
ini.WriteInteger('MainForm', 'Width', Width);
ini.WriteInteger('MainForm', 'Height', Height);
ini.WriteInteger('MainForm', 'ShellTreeViewHeight', ShellTreeView.Height);
ini.WriteInteger('MainForm', 'ShellControlsWidth', LeftPanel.Width);
end;
ini.WriteString('Settings', 'InitialDir', ShellTreeview.Path);
finally
ini.Free;
end;
end;
end.

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="wmfviewer"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
</General>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="fpvectorialpkg"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="wmfviewer.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="wmf_mainform.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="wmfviewer"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<Checks>
<IOChecks Value="True"/>
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
<StackChecks Value="True"/>
</Checks>
</CodeGeneration>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,21 @@
program wmfviewer;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, wmf_mainform, fpvectorialpkg
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.