cvs-fast-export
This commit is contained in:
parent
3acb46cd9c
commit
82d0b3b061
28
.gitignore
vendored
28
.gitignore
vendored
@ -1,28 +0,0 @@
|
|||||||
# CVS default ignores begin
|
|
||||||
tags
|
|
||||||
TAGS
|
|
||||||
.make.state
|
|
||||||
.nse_depinfo
|
|
||||||
*~
|
|
||||||
\#*
|
|
||||||
.#*
|
|
||||||
,*
|
|
||||||
_$*
|
|
||||||
*$
|
|
||||||
*.old
|
|
||||||
*.bak
|
|
||||||
*.BAK
|
|
||||||
*.orig
|
|
||||||
*.rej
|
|
||||||
.del-*
|
|
||||||
*.a
|
|
||||||
*.olb
|
|
||||||
*.o
|
|
||||||
*.obj
|
|
||||||
*.so
|
|
||||||
*.exe
|
|
||||||
*.Z
|
|
||||||
*.elc
|
|
||||||
*.ln
|
|
||||||
core
|
|
||||||
# CVS default ignores end
|
|
@ -1,41 +0,0 @@
|
|||||||
-$A8
|
|
||||||
-$B-
|
|
||||||
-$C+
|
|
||||||
-$D+
|
|
||||||
-$E-
|
|
||||||
-$F-
|
|
||||||
-$G+
|
|
||||||
-$H+
|
|
||||||
-$I+
|
|
||||||
-$J-
|
|
||||||
-$K-
|
|
||||||
-$L+
|
|
||||||
-$M-
|
|
||||||
-$N+
|
|
||||||
-$O+
|
|
||||||
-$P+
|
|
||||||
-$Q-
|
|
||||||
-$R-
|
|
||||||
-$S-
|
|
||||||
-$T-
|
|
||||||
-$U-
|
|
||||||
-$V+
|
|
||||||
-$W-
|
|
||||||
-$X+
|
|
||||||
-$Y+
|
|
||||||
-$Z1
|
|
||||||
-cg
|
|
||||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
-H+
|
|
||||||
-W+
|
|
||||||
-M
|
|
||||||
-$M16384,1048576
|
|
||||||
-K$00400000
|
|
||||||
-E"..\..\out"
|
|
||||||
-N"..\..\out\dcu"
|
|
||||||
-LE"x:\programs\borland\delphi6\Projects\Bpl"
|
|
||||||
-LN"x:\programs\borland\delphi6\Projects\Bpl"
|
|
||||||
-U"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-O"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-I"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-R"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
@ -1,134 +0,0 @@
|
|||||||
[FileVersion]
|
|
||||||
Version=6.0
|
|
||||||
[Compiler]
|
|
||||||
A=8
|
|
||||||
B=0
|
|
||||||
C=1
|
|
||||||
D=1
|
|
||||||
E=0
|
|
||||||
F=0
|
|
||||||
G=1
|
|
||||||
H=1
|
|
||||||
I=1
|
|
||||||
J=0
|
|
||||||
K=0
|
|
||||||
L=1
|
|
||||||
M=0
|
|
||||||
N=1
|
|
||||||
O=1
|
|
||||||
P=1
|
|
||||||
Q=0
|
|
||||||
R=0
|
|
||||||
S=0
|
|
||||||
T=0
|
|
||||||
U=0
|
|
||||||
V=1
|
|
||||||
W=0
|
|
||||||
X=1
|
|
||||||
Y=2
|
|
||||||
Z=1
|
|
||||||
ShowHints=1
|
|
||||||
ShowWarnings=1
|
|
||||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[Linker]
|
|
||||||
MapFile=0
|
|
||||||
OutputObjs=0
|
|
||||||
ConsoleApp=1
|
|
||||||
DebugInfo=0
|
|
||||||
RemoteSymbols=0
|
|
||||||
MinStackSize=16384
|
|
||||||
MaxStackSize=1048576
|
|
||||||
ImageBase=4194304
|
|
||||||
ExeDescription=
|
|
||||||
[Directories]
|
|
||||||
OutputDir=..\..\out
|
|
||||||
UnitOutputDir=..\..\out\dcu
|
|
||||||
PackageDLLOutputDir=
|
|
||||||
PackageDCPOutputDir=
|
|
||||||
SearchPath=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;dss;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;dclOffice2k;FlatStyle_D6;S303_R60;RzLPDB60;RzLPND60;vclshlctrls;B302vr60;VirtualTreesD6;o403_r60;ibxpress;CSP20I60;Rz30Ctls60;Rz30DBCtls60;indy;Indy60
|
|
||||||
Conditionals=
|
|
||||||
DebugSourceDirs=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
UsePackages=0
|
|
||||||
[Parameters]
|
|
||||||
RunParams=
|
|
||||||
HostApplication=
|
|
||||||
Launcher=
|
|
||||||
UseLauncher=0
|
|
||||||
DebugCWD=
|
|
||||||
[Language]
|
|
||||||
ActiveLang=
|
|
||||||
ProjectLang=
|
|
||||||
RootDir=D:\Program Files\Borland\Delphi6\Bin\
|
|
||||||
[Version Info]
|
|
||||||
IncludeVerInfo=1
|
|
||||||
AutoIncBuild=0
|
|
||||||
MajorVer=2
|
|
||||||
MinorVer=0
|
|
||||||
Release=2
|
|
||||||
Build=0
|
|
||||||
Debug=0
|
|
||||||
PreRelease=0
|
|
||||||
Special=0
|
|
||||||
Private=0
|
|
||||||
DLL=0
|
|
||||||
Locale=3081
|
|
||||||
CodePage=1252
|
|
||||||
[Version Info Keys]
|
|
||||||
CompanyName=
|
|
||||||
FileDescription=Apophysis 2.02
|
|
||||||
FileVersion=2.0.2.0
|
|
||||||
InternalName=
|
|
||||||
LegalCopyright=Copyright © 2001-2004 Mark Townsend
|
|
||||||
LegalTrademarks=
|
|
||||||
OriginalFilename=Apophysis.exe
|
|
||||||
ProductName=
|
|
||||||
ProductVersion=2.02
|
|
||||||
Comments=
|
|
||||||
[Excluded Packages]
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyCore60.bpl=Indy 10 Core Design Time
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyProtocols60.bpl=Indy 10 Protocols Design Time
|
|
||||||
[HistoryLists\hlDebugSourcePath]
|
|
||||||
Count=1
|
|
||||||
Item0=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
[HistoryLists\hlConditionals]
|
|
||||||
Count=4
|
|
||||||
Item0=GEONOISE
|
|
||||||
Item1=GEONOISE;V1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
Item2=GEONOISE;R1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;NO_ROAD;NO_SATTENU;NO_VATTENU
|
|
||||||
Item3=GEONOISE;V5;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
[HistoryLists\hlUnitAliases]
|
|
||||||
Count=1
|
|
||||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[HistoryLists\hlSearchPath]
|
|
||||||
Count=13
|
|
||||||
Item0=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Item1=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Indy\d6
|
|
||||||
Item2=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\Indy\d6
|
|
||||||
Item3=C:\code\Apophysis\Apolibstuff\imglib
|
|
||||||
Item4=c:\proj32\geonoise510\src;w:\Src\GroundModel;w:\lib;w:\src\alg;w:\src\dll\Tool\Viewer;w:\src\dll\DLLAlg
|
|
||||||
Item5=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\VLDOS
|
|
||||||
Item6=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\R1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\RLDOS
|
|
||||||
Item7=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem
|
|
||||||
Item8=c:\proj32\geonoise510\src;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\lib
|
|
||||||
Item9=c:\proj32\geonoise510\src;w:\SRC\ALG;w:\src\dll\Tool\Shape;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\LIB
|
|
||||||
Item10=c:\proj32\geonoise510\src;w:\src\alg;w:\src\exe\dbase;w:\src\exe\geoman;w:\src\DBIntf;w:\src\exe\dllman;w:\src\exe\main;w:\src\exe\model;w:\src\exe\results;w:\src\exe\lib;w:\lib
|
|
||||||
Item11=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG;w:\lib
|
|
||||||
Item12=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG
|
|
||||||
[HistoryLists\hlUnitOutputDirectory]
|
|
||||||
Count=7
|
|
||||||
Item0=..\..\out\dcu
|
|
||||||
Item1=..\..\..\out\dcu
|
|
||||||
Item2=.\out\dcu
|
|
||||||
Item3=..\out\dcu
|
|
||||||
Item4=C:\code\Apophysis\2.02a\out\dcu
|
|
||||||
Item5=C:\code\Apophysis\2.02\out\dcu
|
|
||||||
Item6=c:\proj32\geonoise510\out\DCU
|
|
||||||
[HistoryLists\hlOutputDirectorry]
|
|
||||||
Count=6
|
|
||||||
Item0=..\..\out
|
|
||||||
Item1=.\out
|
|
||||||
Item2=..\out
|
|
||||||
Item3=C:\code\Apophysis\2.02a\out
|
|
||||||
Item4=C:\code\Apophysis\2.02\out
|
|
||||||
Item5=c:\proj32\geonoise510\out
|
|
@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
{$D-,L-,O+,Q-,R-,Y-,S-}
|
|
||||||
program Apophysis202;
|
|
||||||
|
|
||||||
{%File 'HtmlHlp.inc'}
|
|
||||||
{%ToDo 'Apophysis202.todo'}
|
|
||||||
{%File 'readme.txt'}
|
|
||||||
|
|
||||||
uses
|
|
||||||
Forms,
|
|
||||||
SysUtils,
|
|
||||||
Main in '..\..\Source\Main.pas' {MainForm},
|
|
||||||
Editor in '..\..\Source\Editor.pas' {EditForm},
|
|
||||||
Global in '..\..\Source\Global.pas',
|
|
||||||
Options in '..\..\Source\Options.pas' {OptionsForm},
|
|
||||||
Regstry in '..\..\Source\Regstry.pas',
|
|
||||||
MyTypes in '..\..\Source\MyTypes.pas',
|
|
||||||
Fullscreen in '..\..\Source\Fullscreen.pas' {FullscreenForm},
|
|
||||||
Render in '..\..\Source\Render.pas',
|
|
||||||
RenderThread in '..\..\Source\RenderThread.pas',
|
|
||||||
FormRender in '..\..\Source\FormRender.pas' {RenderForm},
|
|
||||||
Mutate in '..\..\Source\Mutate.pas' {MutateForm},
|
|
||||||
Adjust in '..\..\Source\Adjust.pas' {AdjustForm},
|
|
||||||
Browser in '..\..\Source\Browser.pas' {GradientBrowser},
|
|
||||||
Gradient in '..\..\Source\Gradient.pas' {GradientForm},
|
|
||||||
Save in '..\..\Source\Save.pas' {SaveForm},
|
|
||||||
About in '..\..\Source\About.pas' {AboutForm},
|
|
||||||
Cmap in '..\..\Source\cmap.pas',
|
|
||||||
SavePreset in '..\..\Source\SavePreset.pas' {SavePresetForm},
|
|
||||||
ControlPoint in '..\..\Source\ControlPoint.pas',
|
|
||||||
HtmlHlp in '..\..\Source\HtmlHlp.pas',
|
|
||||||
ScriptForm in '..\..\Source\ScriptForm.pas' {ScriptEditor},
|
|
||||||
Preview in '..\..\Source\Preview.pas' {PreviewForm},
|
|
||||||
ScriptRender in '..\..\Source\ScriptRender.pas' {ScriptRenderForm},
|
|
||||||
ap_Math in '..\..\Source\ap_Math.pas',
|
|
||||||
ap_SysUtils in '..\..\Source\ap_SysUtils.pas',
|
|
||||||
FormFavorites in '..\..\Source\FormFavorites.pas' {FavoritesForm},
|
|
||||||
Size in '..\..\Source\Size.pas' {SizeTool},
|
|
||||||
FormExport in '..\..\Source\FormExport.pas' {ExportDialog},
|
|
||||||
MsMultiPartFormData in '..\..\Source\MsMultiPartFormData.pas',
|
|
||||||
Sheep in '..\..\Source\Sheep.pas' {SheepDialog},
|
|
||||||
ap_FileCtrl in '..\..\Source\ap_FileCtrl.pas',
|
|
||||||
XForm in '..\..\Source\XForm.pas',
|
|
||||||
cmapdata in '..\..\Source\cmapdata.pas';
|
|
||||||
|
|
||||||
{$R *.RES}
|
|
||||||
|
|
||||||
begin
|
|
||||||
Application.Initialize;
|
|
||||||
Application.Title := 'Apophysis';
|
|
||||||
Application.HelpFile := 'Apophysis 2.0.chm';
|
|
||||||
Application.CreateForm(TMainForm, MainForm);
|
|
||||||
Application.CreateForm(TEditForm, EditForm);
|
|
||||||
Application.CreateForm(TOptionsForm, OptionsForm);
|
|
||||||
Application.CreateForm(TFullscreenForm, FullscreenForm);
|
|
||||||
Application.CreateForm(TRenderForm, RenderForm);
|
|
||||||
Application.CreateForm(TMutateForm, MutateForm);
|
|
||||||
Application.CreateForm(TAdjustForm, AdjustForm);
|
|
||||||
Application.CreateForm(TGradientBrowser, GradientBrowser);
|
|
||||||
Application.CreateForm(TGradientForm, GradientForm);
|
|
||||||
Application.CreateForm(TSaveForm, SaveForm);
|
|
||||||
Application.CreateForm(TAboutForm, AboutForm);
|
|
||||||
Application.CreateForm(TSavePresetForm, SavePresetForm);
|
|
||||||
Application.CreateForm(TScriptEditor, ScriptEditor);
|
|
||||||
Application.CreateForm(TPreviewForm, PreviewForm);
|
|
||||||
Application.CreateForm(TScriptRenderForm, ScriptRenderForm);
|
|
||||||
Application.CreateForm(TFavoritesForm, FavoritesForm);
|
|
||||||
Application.CreateForm(TSizeTool, SizeTool);
|
|
||||||
Application.CreateForm(TExportDialog, ExportDialog);
|
|
||||||
Application.CreateForm(TSheepDialog, SheepDialog);
|
|
||||||
Application.UpdateFormatSettings := False;
|
|
||||||
DecimalSeparator := '.';
|
|
||||||
Application.Run;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,341 +0,0 @@
|
|||||||
[Closed Files]
|
|
||||||
File_0=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\ap_FileCtrl.pas',0,1,1,1,1,0,0
|
|
||||||
File_1=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\ap_SysUtils.pas',0,1,1,3,20,0,0
|
|
||||||
File_2=SourceModule,'X:\Code\Delphi\Apophysis\Apolibstuff\Scripterstudio\Imports\Delphi6\ap_Classes.pas',0,1,1,3,23,0,0
|
|
||||||
File_3=SourceModule,'x:\programs\borland\delphi6\source\rtl\Win\Windows.pas',0,1,5563,114,5586,0,0
|
|
||||||
File_4=SourceModule,'X:\Code\Delphi\Apophysis\2.02e\About.pas',0,1,1,117,16,1,0
|
|
||||||
File_5=SourceModule,'X:\Code\Delphi\Apophysis\2.02e\Main.pas',0,1,3583,38,3588,1,0
|
|
||||||
File_6=SourceModule,'X:\Code\Delphi\Apophysis\2.02\ScriptForm.pas',0,1,2648,117,2664,0,0
|
|
||||||
File_7=SourceModule,'X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\atScript.pas',0,1,2152,1,2170,0,0
|
|
||||||
File_8=SourceModule,'X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\atpascal.pas',0,1,1519,1,1537,0,0
|
|
||||||
File_9=SourceModule,'X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\atParser.pas',0,1,2033,1,2051,0,0
|
|
||||||
|
|
||||||
[Modules]
|
|
||||||
Module0=X:\Code\Delphi\Apophysis\2.02f\Source\Main.pas
|
|
||||||
Module1=X:\Code\Delphi\Apophysis\2.02f\Source\About.pas
|
|
||||||
Module2=X:\Code\Delphi\Apophysis\2.02f\Source\ScriptForm.pas
|
|
||||||
Module3=X:\Code\Delphi\Apophysis\2.02f\Source\cmapdata.pas
|
|
||||||
Module4=X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr
|
|
||||||
Count=5
|
|
||||||
EditWindowCount=1
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Source\Main.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=1
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Source\About.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=1
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Source\ScriptForm.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Source\cmapdata.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Programs\Borland\Delphi6\Projects\ProjectGroup1.bpg]
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.todo]
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[EditWindow0]
|
|
||||||
ViewCount=5
|
|
||||||
CurrentView=1
|
|
||||||
View0=0
|
|
||||||
View1=1
|
|
||||||
View2=2
|
|
||||||
View3=3
|
|
||||||
View4=4
|
|
||||||
CodeExplorer=CodeExplorer@EditWindow0
|
|
||||||
MessageView=MessageView@EditWindow0
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=266
|
|
||||||
Top=111
|
|
||||||
Width=1016
|
|
||||||
Height=880
|
|
||||||
MaxLeft=-4
|
|
||||||
MaxTop=108
|
|
||||||
ClientWidth=1008
|
|
||||||
ClientHeight=846
|
|
||||||
LeftPanelSize=0
|
|
||||||
RightPanelSize=0
|
|
||||||
BottomPanelSize=52
|
|
||||||
BottomPanelClients=MessageView@EditWindow0
|
|
||||||
BottomPanelData=000004000000000000000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF
|
|
||||||
|
|
||||||
[View0]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr
|
|
||||||
CursorX=73
|
|
||||||
CursorY=55
|
|
||||||
TopLine=31
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View1]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Source\Main.pas
|
|
||||||
CursorX=45
|
|
||||||
CursorY=4394
|
|
||||||
TopLine=4354
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View2]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Source\About.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View3]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Source\cmapdata.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=47737
|
|
||||||
TopLine=47709
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View4]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Source\ScriptForm.pas
|
|
||||||
CursorX=36
|
|
||||||
CursorY=330
|
|
||||||
TopLine=302
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[Watches]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[Breakpoints]
|
|
||||||
Count=1
|
|
||||||
Breakpoint0='X:\Code\Delphi\Apophysis\2.02\ScriptForm.pas',1244,'',0,1,'',1,0,0,'',1,'','',''
|
|
||||||
|
|
||||||
[AddressBreakpoints]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[Main Window]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=1280
|
|
||||||
Height=112
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1272
|
|
||||||
ClientHeight=78
|
|
||||||
|
|
||||||
[ProjectManager]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=305
|
|
||||||
LRDockWidth=438
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CPUWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=373
|
|
||||||
Top=335
|
|
||||||
Width=533
|
|
||||||
Height=353
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=525
|
|
||||||
ClientHeight=319
|
|
||||||
DumpPane=79
|
|
||||||
DisassemblyPane=187
|
|
||||||
RegisterPane=231
|
|
||||||
FlagPane=64
|
|
||||||
|
|
||||||
[AlignmentPalette]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=200
|
|
||||||
Top=114
|
|
||||||
Width=156
|
|
||||||
Height=84
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=150
|
|
||||||
ClientHeight=60
|
|
||||||
|
|
||||||
[PropertyInspector]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=527
|
|
||||||
LRDockWidth=190
|
|
||||||
Dockable=1
|
|
||||||
SplitPos=85
|
|
||||||
ArrangeBy=Name
|
|
||||||
SelectedItem=Caption
|
|
||||||
ExpandedItems=
|
|
||||||
HiddenCategories=
|
|
||||||
|
|
||||||
[WatchWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=232
|
|
||||||
Top=872
|
|
||||||
Width=1048
|
|
||||||
Height=165
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1040
|
|
||||||
ClientHeight=139
|
|
||||||
TBDockHeight=149
|
|
||||||
LRDockWidth=421
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CallStackWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=161
|
|
||||||
LRDockWidth=294
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[ObjectTree]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=112
|
|
||||||
Width=190
|
|
||||||
Height=350
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=182
|
|
||||||
ClientHeight=324
|
|
||||||
TBDockHeight=350
|
|
||||||
LRDockWidth=190
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[DebugLogView]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=232
|
|
||||||
Top=872
|
|
||||||
Width=1048
|
|
||||||
Height=165
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1040
|
|
||||||
ClientHeight=139
|
|
||||||
TBDockHeight=291
|
|
||||||
LRDockWidth=417
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[LocalVarsWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=27
|
|
||||||
Top=127
|
|
||||||
Width=194
|
|
||||||
Height=891
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=186
|
|
||||||
ClientHeight=865
|
|
||||||
TBDockHeight=110
|
|
||||||
LRDockWidth=421
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CodeExplorer@EditWindow0]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=305
|
|
||||||
LRDockWidth=140
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[MessageView@EditWindow0]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=12
|
|
||||||
Top=0
|
|
||||||
Width=996
|
|
||||||
Height=52
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=996
|
|
||||||
ClientHeight=52
|
|
||||||
TBDockHeight=52
|
|
||||||
LRDockWidth=443
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[DockHosts]
|
|
||||||
DockHostCount=1
|
|
||||||
|
|
||||||
[DockSite0]
|
|
||||||
DockSiteType=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=112
|
|
||||||
Width=266
|
|
||||||
Height=877
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=258
|
|
||||||
ClientHeight=851
|
|
||||||
TBDockHeight=451
|
|
||||||
LRDockWidth=177
|
|
||||||
Dockable=1
|
|
||||||
TabPosition=2
|
|
||||||
ActiveTab=Project Manager
|
|
||||||
TabDockClients=ProjectManager,CodeExplorer@EditWindow0,CallStackWindow,PropertyInspector
|
|
||||||
|
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit About;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TAboutForm = class(TForm)
|
|
||||||
btnOK: TButton;
|
|
||||||
Image1: TImage;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
Label10: TLabel;
|
|
||||||
Label11: TLabel;
|
|
||||||
lblFlamecom: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Bevel1: TBevel;
|
|
||||||
lblCredit: TLabel;
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure Label4Click(Sender: TObject);
|
|
||||||
procedure lblFlamecomClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure lblCreditClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
URL :String;
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
AboutForm: TAboutForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, ShellAPI;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TAboutForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.Label4Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://www.apophysis.org'),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.lblFlamecomClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://flam3.com'),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
lblCredit.Caption := MainCp.Nick;
|
|
||||||
URL := MainCp.URL;
|
|
||||||
if URL <> '' then lblCredit.Font.color := clBlue else lblCredit.Font.color := clBlack;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.lblCreditClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if URL <> '' then
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar(URL),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
@ -1,320 +0,0 @@
|
|||||||
object AdjustForm: TAdjustForm
|
|
||||||
Left = 500
|
|
||||||
Top = 182
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'Adjust'
|
|
||||||
ClientHeight = 374
|
|
||||||
ClientWidth = 372
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFE2996DE2996DE2996D
|
|
||||||
E2996DFFFFFFE2996DE2996DE2996DE2996DFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFCD5208CD5208CD5208CD5208FFFFFFCD5208CD5208CD5208CD
|
|
||||||
5208FFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208CD5208CD5208000000000000CD5208FFFFFFFFBD96FFBD96FFBD96FFBD96
|
|
||||||
FFBD96FFBD96FFBD96FFBD96FFBD96FFFFFFD25C15FFFFFF000000000000CD52
|
|
||||||
08CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208CD5208CD5208CD5208000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000000100000001000000010000000100000001000000010000000100000001
|
|
||||||
0000000100000001000000010000000100000001000000010000FFFF0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefault
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object PrevPnl: TPanel
|
|
||||||
Left = 105
|
|
||||||
Top = 5
|
|
||||||
Width = 162
|
|
||||||
Height = 122
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clAppWorkSpace
|
|
||||||
TabOrder = 0
|
|
||||||
object PreviewImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 160
|
|
||||||
Height = 120
|
|
||||||
Anchors = []
|
|
||||||
Center = True
|
|
||||||
IncrementalDisplay = True
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 128
|
|
||||||
Width = 357
|
|
||||||
Height = 129
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 1
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 24
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Gamma:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 48
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Brightness:'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 72
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Vibrancy:'
|
|
||||||
end
|
|
||||||
object lblContrast: TLabel
|
|
||||||
Left = 56
|
|
||||||
Top = 100
|
|
||||||
Width = 101
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Background color:'
|
|
||||||
end
|
|
||||||
object scrollGamma: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 24
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 500
|
|
||||||
Min = 100
|
|
||||||
PageSize = 0
|
|
||||||
Position = 100
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrollGammaChange
|
|
||||||
OnScroll = scrollGammaScroll
|
|
||||||
end
|
|
||||||
object txtGamma: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 20
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtGammaExit
|
|
||||||
OnKeyPress = txtGammaKeyPress
|
|
||||||
end
|
|
||||||
object scrollBrightness: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 48
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 100
|
|
||||||
Max = 10000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = scrollBrightnessChange
|
|
||||||
OnScroll = scrollBrightnessScroll
|
|
||||||
end
|
|
||||||
object txtBrightness: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 44
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtBrightnessExit
|
|
||||||
OnKeyPress = txtBrightnessKeyPress
|
|
||||||
end
|
|
||||||
object scrollVibrancy: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 72
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = scrollVibrancyChange
|
|
||||||
OnScroll = scrollVibrancyScroll
|
|
||||||
end
|
|
||||||
object txtVibrancy: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 68
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtVibrancyExit
|
|
||||||
OnKeyPress = txtVibrancyKeyPress
|
|
||||||
end
|
|
||||||
object ColorPanel: TPanel
|
|
||||||
Left = 168
|
|
||||||
Top = 96
|
|
||||||
Width = 177
|
|
||||||
Height = 25
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = ColorPanelClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 264
|
|
||||||
Width = 357
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Camera'
|
|
||||||
TabOrder = 2
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 24
|
|
||||||
Width = 30
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'Zoom:'
|
|
||||||
end
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 24
|
|
||||||
Top = 44
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'X:'
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 24
|
|
||||||
Top = 68
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'Y:'
|
|
||||||
end
|
|
||||||
object scrollZoom: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 24
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 300
|
|
||||||
Min = -300
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrollZoomChange
|
|
||||||
OnScroll = scrollZoomScroll
|
|
||||||
end
|
|
||||||
object txtZoom: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 20
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtZoomExit
|
|
||||||
OnKeyPress = txtZoomKeyPress
|
|
||||||
end
|
|
||||||
object scrollCenterX: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 48
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 1000
|
|
||||||
Min = -1000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = scrollCenterXChange
|
|
||||||
OnScroll = scrollCenterXScroll
|
|
||||||
end
|
|
||||||
object txtCenterX: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 44
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtCenterXExit
|
|
||||||
OnKeyPress = txtCenterXKeyPress
|
|
||||||
end
|
|
||||||
object scrollCenterY: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 72
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 1000
|
|
||||||
Min = -1000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = scrollCenterYChange
|
|
||||||
OnScroll = scrollCenterYScroll
|
|
||||||
end
|
|
||||||
object txtCenterY: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 68
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtCenterYExit
|
|
||||||
OnKeyPress = txtCenterYKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object QualityPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 16
|
|
||||||
Top = 16
|
|
||||||
object mnuLowQuality: TMenuItem
|
|
||||||
Caption = 'Low Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuLowQualityClick
|
|
||||||
end
|
|
||||||
object mnuMediumQuality: TMenuItem
|
|
||||||
Caption = 'Medium Quality'
|
|
||||||
Checked = True
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuMediumQualityClick
|
|
||||||
end
|
|
||||||
object mnuHighQuality: TMenuItem
|
|
||||||
Caption = 'High Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHighQualityClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ColorDialog: TColorDialog
|
|
||||||
Ctl3D = True
|
|
||||||
Options = [cdFullOpen]
|
|
||||||
Left = 376
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,613 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Adjust;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, ComCtrls, ControlPoint, Render, Buttons, Menus, cmap;
|
|
||||||
|
|
||||||
const
|
|
||||||
WM_UPDATE_PARAMS = WM_APP + 5439;
|
|
||||||
|
|
||||||
type
|
|
||||||
TAdjustForm = class(TForm)
|
|
||||||
QualityPopup: TPopupMenu;
|
|
||||||
mnuLowQuality: TMenuItem;
|
|
||||||
mnuMediumQuality: TMenuItem;
|
|
||||||
mnuHighQuality: TMenuItem;
|
|
||||||
ColorDialog: TColorDialog;
|
|
||||||
PrevPnl: TPanel;
|
|
||||||
PreviewImage: TImage;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
Label8: TLabel;
|
|
||||||
scrollGamma: TScrollBar;
|
|
||||||
txtGamma: TEdit;
|
|
||||||
Label9: TLabel;
|
|
||||||
scrollBrightness: TScrollBar;
|
|
||||||
txtBrightness: TEdit;
|
|
||||||
Label10: TLabel;
|
|
||||||
scrollVibrancy: TScrollBar;
|
|
||||||
txtVibrancy: TEdit;
|
|
||||||
lblContrast: TLabel;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label5: TLabel;
|
|
||||||
scrollZoom: TScrollBar;
|
|
||||||
txtZoom: TEdit;
|
|
||||||
Label6: TLabel;
|
|
||||||
scrollCenterX: TScrollBar;
|
|
||||||
txtCenterX: TEdit;
|
|
||||||
scrollCenterY: TScrollBar;
|
|
||||||
txtCenterY: TEdit;
|
|
||||||
Label1: TLabel;
|
|
||||||
ColorPanel: TPanel;
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure DrawPreview;
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure btnCanelClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure mnuLowQualityClick(Sender: TObject);
|
|
||||||
procedure mnuMediumQualityClick(Sender: TObject);
|
|
||||||
procedure mnuHighQualityClick(Sender: TObject);
|
|
||||||
procedure txtZoomKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtZoomExit(Sender: TObject);
|
|
||||||
procedure txtCenterXKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtCenterXExit(Sender: TObject);
|
|
||||||
procedure txtCenterYKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtCenterYExit(Sender: TObject);
|
|
||||||
procedure txtGammaKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtGammaExit(Sender: TObject);
|
|
||||||
procedure txtBrightnessKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtBrightnessExit(Sender: TObject);
|
|
||||||
procedure txtVibrancyKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtVibrancyExit(Sender: TObject);
|
|
||||||
procedure scrollZoomScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollCenterXScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollCenterYScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollGammaScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollBrightnessScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
procedure scrollVibrancyScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
procedure scrollVibrancyChange(Sender: TObject);
|
|
||||||
procedure scrollGammaChange(Sender: TObject);
|
|
||||||
procedure scrollBrightnessChange(Sender: TObject);
|
|
||||||
procedure scrollZoomChange(Sender: TObject);
|
|
||||||
procedure scrollCenterXChange(Sender: TObject);
|
|
||||||
procedure scrollCenterYChange(Sender: TObject);
|
|
||||||
procedure ColorPanelClick(Sender: TObject);
|
|
||||||
procedure scrollContrastScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
private
|
|
||||||
Resetting: boolean;
|
|
||||||
Render: TRenderer;
|
|
||||||
bm: TBitmap;
|
|
||||||
public
|
|
||||||
PreviewDensity: double;
|
|
||||||
cp: TControlPoint;
|
|
||||||
// cmap: TColorMap;
|
|
||||||
// Sample_Density, Zoom: double;
|
|
||||||
// Center: array[0..1] of double;
|
|
||||||
procedure UpdateDisplay;
|
|
||||||
procedure UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
AdjustForm: TAdjustForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, Registry, Mutate, Editor;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TAdjustForm.UpdateDisplay;
|
|
||||||
var
|
|
||||||
pw, ph: integer;
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
pw := PrevPnl.Width - 2;
|
|
||||||
ph := PrevPnl.Height - 2;
|
|
||||||
cp.copy(MainCp);
|
|
||||||
if cp.width > cp.height then
|
|
||||||
begin
|
|
||||||
PreviewImage.Width := pw;
|
|
||||||
r := cp.width / PreviewImage.Width;
|
|
||||||
PreviewImage.height := round(cp.height / r);
|
|
||||||
PreviewImage.Left := 1;
|
|
||||||
PreviewImage.Top := (ph - PreviewImage.Height) div 2;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
PreviewImage.Height := ph;
|
|
||||||
r := cp.height / PreviewImage.height;
|
|
||||||
PreviewImage.Width := round(cp.Width / r);
|
|
||||||
PreviewImage.Top := 1;
|
|
||||||
PreviewImage.Left := (pw - PreviewImage.Width) div 2;
|
|
||||||
end;
|
|
||||||
cp.cmap := MainCp.cmap;
|
|
||||||
AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
|
|
||||||
// zoom := MainForm.zoom;
|
|
||||||
// cp.zoom := zoom;
|
|
||||||
Resetting := True; // So the preview doesn't get drawn with these changes..
|
|
||||||
scrollGamma.Position := trunc(cp.Gamma * 100);
|
|
||||||
scrollBrightness.Position := trunc(cp.Brightness * 100);
|
|
||||||
scrollVibrancy.Position := trunc(cp.vibrancy * 100);
|
|
||||||
scrollZoom.Position := trunc(cp.zoom * 100);
|
|
||||||
scrollCenterX.Position := trunc(cp.Center[0] * 100);
|
|
||||||
scrollCenterY.Position := trunc(cp.Center[1] * 100);
|
|
||||||
ColorPanel.color := cp.background[2] shl 16 +
|
|
||||||
cp.background[1] shl 8 + cp.background[0];
|
|
||||||
Resetting := False;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.UpdateFlame;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.Copy(cp);
|
|
||||||
// MainCp.cmap := cmap;
|
|
||||||
// MainForm.zoom := zoom;
|
|
||||||
// MainForm.Center[0] := Center[0];
|
|
||||||
// MainForm.Center[1] := Center[1];
|
|
||||||
if EditForm.Visible then EditForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.DrawPreview;
|
|
||||||
begin
|
|
||||||
if not Resetting then begin
|
|
||||||
Render.Stop;
|
|
||||||
// AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
|
|
||||||
cp.sample_density := PreviewDensity;
|
|
||||||
cp.spatial_oversample := defOversample;
|
|
||||||
cp.spatial_filter_radius := defFilterRadius;
|
|
||||||
// cp.Zoom := Zoom;
|
|
||||||
// cp.center[0] := Center[0];
|
|
||||||
// cp.center[1] := Center[1];
|
|
||||||
Render.Compatibility := compatibility;
|
|
||||||
Render.SetCP(cp);
|
|
||||||
Render.Render;
|
|
||||||
BM.Assign(Render.GetImage);
|
|
||||||
PreviewImage.Picture.Graphic := bm;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm := TbitMap.Create;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
case AdjustPrevQual of
|
|
||||||
0: begin
|
|
||||||
mnuLowQuality.Checked := true;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
end;
|
|
||||||
1: begin
|
|
||||||
mnuMediumQuality.Checked := true;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
mnuHighQuality.Checked := true;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Adjust', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', AdjustForm.Top);
|
|
||||||
Registry.WriteInteger('Left', AdjustForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
// bStop := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm.free;
|
|
||||||
cp.free;
|
|
||||||
Render.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnCanelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
if LimitVibrancy then scrollVibrancy.Max := 100 else scrollVibrancy.Max := 300;
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Adjust', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
AdjustForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
AdjustForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuLowQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuLowQuality.Checked := True;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
AdjustPrevQual := 0;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuMediumQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuMediumQuality.Checked := True;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
AdjustPrevQual := 1;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuHighQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuHighQuality.Checked := True;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
AdjustPrevQual := 2;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtZoomKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtZoom.Text) * 100);
|
|
||||||
if v > scrollZoom.Max then v := scrollZoom.Max;
|
|
||||||
if v < scrollZoom.Min then v := scrollZoom.Min;
|
|
||||||
if v <> ScrollZoom.Position then begin
|
|
||||||
ScrollZoom.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtZoomExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtZoom.Text) * 100);
|
|
||||||
if v > scrollZoom.Max then v := scrollZoom.Max;
|
|
||||||
if v < scrollZoom.Min then v := scrollZoom.Min;
|
|
||||||
if v <> ScrollZoom.Position then begin
|
|
||||||
ScrollZoom.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
except on EConvertError do
|
|
||||||
txtZoom.Text := FloatToStr(cp.zoom)
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterXKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterX.Text) * 100);
|
|
||||||
if v > scrollCenterX.Max then v := scrollCenterX.Max;
|
|
||||||
if v < scrollCenterX.Min then v := scrollCenterX.Min;
|
|
||||||
ScrollCenterX.Position := v;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterXExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterX.Text) * 100);
|
|
||||||
if v > scrollCenterX.Max then v := scrollCenterX.Max;
|
|
||||||
if v < scrollCenterX.Min then v := scrollCenterX.Min;
|
|
||||||
ScrollCenterX.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtCenterX.Text := FloatToStr(cp.center[0]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterYKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterY.Text) * 100);
|
|
||||||
if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
|
|
||||||
if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
|
|
||||||
ScrollCenterY.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterYExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterY.Text) * 100);
|
|
||||||
if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
|
|
||||||
if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
|
|
||||||
ScrollCenterY.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtCenterY.Text := FloatToStr(cp.center[1]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtGammaExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtGamma.Text) * 100);
|
|
||||||
if v > scrollGamma.Max then v := scrollGamma.Max;
|
|
||||||
if v < scrollGamma.Min then v := scrollGamma.Min;
|
|
||||||
ScrollGamma.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtGamma.Text := FloatToStr(cp.gamma);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtGammaKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtGamma.Text) * 100);
|
|
||||||
if v > scrollGamma.Max then v := scrollGamma.Max;
|
|
||||||
if v < scrollGamma.Min then v := scrollGamma.Min;
|
|
||||||
ScrollGamma.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtBrightnessExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtBrightness.Text) * 100);
|
|
||||||
if v > scrollBrightness.Max then v := scrollBrightness.Max;
|
|
||||||
if v < scrollBrightness.Min then v := scrollBrightness.Min;
|
|
||||||
ScrollBrightness.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtBrightness.Text := FloatToStr(cp.brightness);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtBrightnessKeyPress(Sender: TObject;
|
|
||||||
var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtBrightness.Text) * 100);
|
|
||||||
if v > scrollBrightness.Max then v := scrollBrightness.Max;
|
|
||||||
if v < scrollBrightness.Min then v := scrollBrightness.Min;
|
|
||||||
ScrollBrightness.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtVibrancyKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
|
|
||||||
if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
|
|
||||||
if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
|
|
||||||
ScrollVibrancy.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtVibrancyExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
|
|
||||||
if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
|
|
||||||
if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
|
|
||||||
ScrollVibrancy.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtVibrancy.Text := FloatToStr(cp.Vibrancy);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollZoomScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterXScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterYScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollGammaScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollBrightnessScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollVibrancyScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollVibrancyChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Vibrancy := ScrollVibrancy.Position / 100;
|
|
||||||
txtVibrancy.text := FloatToStr(cp.Vibrancy);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollGammaChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Gamma := scrollGamma.Position / 100;
|
|
||||||
txtGamma.text := FloatToStr(cp.Gamma);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollBrightnessChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Brightness := ScrollBrightness.Position / 100;
|
|
||||||
txtBrightness.text := FloatToStr(cp.Brightness);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollZoomChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.zoom := scrollZoom.Position / 100;
|
|
||||||
txtZoom.text := FloatToStr(cp.zoom);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterXChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.center[0] := scrollCenterX.Position / 100;
|
|
||||||
txtCenterX.text := FloatToStr(cp.center[0]);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterYChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.center[1] := scrollCenterY.Position / 100;
|
|
||||||
txtCentery.text := FloatToStr(cp.center[1]);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.ColorPanelClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
col: Longint;
|
|
||||||
begin
|
|
||||||
ColorDialog.Color := COlorPanel.Color;
|
|
||||||
if ColorDialog.Execute then
|
|
||||||
begin
|
|
||||||
ColorPanel.Color := ColorDialog.Color;
|
|
||||||
col := ColorToRGB(ColorDialog.Color);
|
|
||||||
cp.background[0] := col and 255;
|
|
||||||
cp.background[1] := col shr 8 and 255;
|
|
||||||
cp.background[2] := col shr 16 and 255;
|
|
||||||
DrawPreview;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollContrastScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,878 +0,0 @@
|
|||||||
object GradientBrowser: TGradientBrowser
|
|
||||||
Left = 494
|
|
||||||
Top = 299
|
|
||||||
Width = 380
|
|
||||||
Height = 188
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
Caption = 'Gradient Browser'
|
|
||||||
Color = clBtnFace
|
|
||||||
Constraints.MinHeight = 120
|
|
||||||
Constraints.MinWidth = 380
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000FFF5F0FFF1E9FFEFE6FFEFE6FFF0E7FFF1E8FFF1E9FFF3EBFFF3ECFF
|
|
||||||
F4EDFFF6F0000000000000000000000000000000FFF4EDFFEEE4FFEBDFFFEBDF
|
|
||||||
FFEBE0FFECE2FFEDE2FFEEE4FFEFE5FFEFE6FFF1EA0000000000000000000000
|
|
||||||
00000000FFF1E9CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208FFEDE3000000000000000000000000000000FFEFE6CD5208E26518EB7A37
|
|
||||||
FFA772FFD1B2FFF7EDC2E9FF42ADF7CD5208FFE9DC0000000000000000000000
|
|
||||||
00000000FFEDE2CD5208E16519E97835FFA770FFD1B2FFF7ECC2E9FF40ADF7CD
|
|
||||||
5208FFE5D6000000000000000000000000000000FFEBDFCD5208E16518EB7836
|
|
||||||
FFA770FFD1B2FFF7ECC2E9FF42ADF7CD5208FFE1D00000000000000000000000
|
|
||||||
00000000FFE9DBCD5208E16519EC7935FFA770FFD0B2FFF7ECC2E9FF40AEF7CD
|
|
||||||
5208FFDFCD000000000000000000000000000000FFE7D8CD5208E16519EB7935
|
|
||||||
FFA570FFD1B2FFF7ECC2E9FF40ADF7CD5208FFE1D00000000000000000000000
|
|
||||||
00000000FFE4D5CD5208E3651AEB7A39FFA874FFD1B3FFF7ECC4E9FF44AEF7CD
|
|
||||||
5208FFE9DC000000000000000000000000000000FFE3D1CD5208ED7935F99457
|
|
||||||
FFBC8DFFE1C5FFFFF90000000000000000000000000000000000000000000000
|
|
||||||
00000000FFE1CFCD5208CD5208CD5208CD5208CD5208CD5208000000E17D41EB
|
|
||||||
925E000000000000000000000000000000000000FFE2D1FFD7BFFFD0B4FFCEB1
|
|
||||||
FFCFB3FFD0B4FFD3B8000000F5A7790000000000000000000000000000000000
|
|
||||||
00000000FFE7DAFFE2D0FFDECBFFDECAFFDDC9FFDECAFFDFCD00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800300008003000080030000800300008003000080030000800300008003
|
|
||||||
000080030000800300008003000080070000800F0000801F0000803F0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object RightPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 4
|
|
||||||
Width = 372
|
|
||||||
Height = 106
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 0
|
|
||||||
object ListView: TListView
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 106
|
|
||||||
Align = alClient
|
|
||||||
Columns = <
|
|
||||||
item
|
|
||||||
Caption = 'Title'
|
|
||||||
Width = 150
|
|
||||||
end>
|
|
||||||
HideSelection = False
|
|
||||||
LargeImages = LargeImages
|
|
||||||
ReadOnly = True
|
|
||||||
RowSelect = True
|
|
||||||
PopupMenu = PopupMenu
|
|
||||||
SmallImages = SmallImages
|
|
||||||
SortType = stText
|
|
||||||
TabOrder = 0
|
|
||||||
ViewStyle = vsList
|
|
||||||
OnChange = ListViewChange
|
|
||||||
OnDblClick = SpeedButton1Click
|
|
||||||
OnEdited = ListViewEdited
|
|
||||||
OnKeyPress = ListViewKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object pnlMain: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 4
|
|
||||||
Align = alTop
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object pnlControls: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 110
|
|
||||||
Width = 372
|
|
||||||
Height = 51
|
|
||||||
Align = alBottom
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 2
|
|
||||||
object btnDefGradient: TSpeedButton
|
|
||||||
Left = 333
|
|
||||||
Top = 14
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Open...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -12
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnDefGradientClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 405
|
|
||||||
Top = 97
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object pnlPreview: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 6
|
|
||||||
Width = 325
|
|
||||||
Height = 40
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 1
|
|
||||||
object Image: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 323
|
|
||||||
Height = 38
|
|
||||||
Align = alClient
|
|
||||||
Stretch = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SmallImages: TImageList
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Bitmap = {
|
|
||||||
494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
|
||||||
0000000000003600000028000000400000001000000001002000000000000010
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080008080
|
|
||||||
8000808080008080800080808000FFFFFF000000000000808000008080000080
|
|
||||||
8000000000007F7F7F0000000000000000007F7F7F0000000000000000007F7F
|
|
||||||
7F000000000000000000BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007F7F
|
|
||||||
7F0000000000000000007F7F7F00000000000080800000808000000000000000
|
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF5F000FFF1
|
|
||||||
E900FFEFE600FFEFE600FFF0E700FFF1E800FFF1E900FFF3EB00FFF3EC00FFF4
|
|
||||||
ED00FFF6F0000000000000000000000000000000000000808000008080000080
|
|
||||||
8000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF4ED00FFEE
|
|
||||||
E400FFEBDF00FFEBDF00FFEBE000FFECE200FFEDE200FFEEE400FFEFE500FFEF
|
|
||||||
E600FFF1EA00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF1E900CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800FFEDE300000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00000000007F7F
|
|
||||||
7F000000000000000000BBCCD500BBCCD5000000000000000000FFEFE600CD52
|
|
||||||
0800E2651800EB7A3700FFA77200FFD1B200FFF7ED00C2E9FF0042ADF700CD52
|
|
||||||
0800FFE9DC00000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFEDE200CD52
|
|
||||||
0800E1651900E9783500FFA77000FFD1B200FFF7EC00C2E9FF0040ADF700CD52
|
|
||||||
0800FFE5D6000000000000000000000000000000000000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000688DA200688D
|
|
||||||
A200688DA200688DA200688DA200688DA200FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFEBDF00CD52
|
|
||||||
0800E1651800EB783600FFA77000FFD1B200FFF7EC00C2E9FF0042ADF700CD52
|
|
||||||
0800FFE1D000000000000000000000000000FFF1EA0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFF5F000FFF1E900FFEFE600FFEFE600FFF0E700FFF1
|
|
||||||
E800FFF1E900FFF3EB00FFF3EC00FFF4ED00FFF6F00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FFE9DB00CD52
|
|
||||||
0800E1651900EC793500FFA77000FFD0B200FFF7EC00C2E9FF0040AEF700CD52
|
|
||||||
0800FFDFCD00000000000000000000000000FFE9DC0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFF1E900CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FFEDE30000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00688DA200688DA200688D
|
|
||||||
A200688DA200688DA200688DA200688DA2000000000000000000FFE7D800CD52
|
|
||||||
0800E1651900EB793500FFA57000FFD1B200FFF7EC00C2E9FF0040ADF700CD52
|
|
||||||
0800FFE1D000000000000000000000000000FFE1D00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00688D
|
|
||||||
A200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFEDE200CD520800E1651900E9783500FFA77000FFD1
|
|
||||||
B200FFF7EC00C2E9FF0040ADF700CD520800FFE5D60000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FFE4D500CD52
|
|
||||||
0800E3651A00EB7A3900FFA87400FFD1B300FFF7EC00C4E9FF0044AEF700CD52
|
|
||||||
0800FFE9DC00000000000000000000000000FFE1D00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE9DB00CD520800E1651900EC793500FFA77000FFD0
|
|
||||||
B200FFF7EC00C2E9FF0040AEF700CD520800FFDFCD0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000FFE3D100CD52
|
|
||||||
0800ED793500F9945700FFBC8D00FFE1C500FFFFF90000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00688D
|
|
||||||
A200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE4D500CD520800E3651A00EB7A3900FFA87400FFD1
|
|
||||||
B300FFF7EC00C4E9FF0044AEF700CD520800FFE9DC0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000FFE1CF00CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD52080000000000E17D4100EB92
|
|
||||||
5E0000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE1CF00CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD52080000000000E17D4100EB925E0000000000FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00BBCCD500BBCCD5000000000000000000FFE2D100FFD7
|
|
||||||
BF00FFD0B400FFCEB100FFCFB300FFD0B400FFD3B80000000000F5A779000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE7DA00FFE2D000FFDECB00FFDECA00FFDDC900FFDE
|
|
||||||
CA00FFDFCD000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFE7DA00FFE2
|
|
||||||
D000FFDECB00FFDECA00FFDDC900FFDECA00FFDFCD0000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00BBCCD500BBCCD500424D3E000000000000003E000000
|
|
||||||
2800000040000000100000000100010000000000800000000000000000000000
|
|
||||||
000000000000000000000000FFFFFF00FFFFCD00000000008003C900FFDECA00
|
|
||||||
8003CB00FFDECA008003DA00FFE2D0008003EA00000000008003EA00DDE6EA00
|
|
||||||
8003EA00DDE6EA008003EA00DDE6EA0080030000000000008003000000000000
|
|
||||||
800300000000000080030000000000008007EA0000000000800F000000000000
|
|
||||||
801F000020000000803F8F1F0000000000000000000000000000000000000000
|
|
||||||
000000000000}
|
|
||||||
end
|
|
||||||
object PopupMenu: TPopupMenu
|
|
||||||
Left = 40
|
|
||||||
Top = 16
|
|
||||||
object DeleteItem: TMenuItem
|
|
||||||
Caption = 'Delete'
|
|
||||||
ShortCut = 16430
|
|
||||||
OnClick = DeleteItemClick
|
|
||||||
end
|
|
||||||
object RenameItem: TMenuItem
|
|
||||||
Caption = 'Rename'
|
|
||||||
ShortCut = 113
|
|
||||||
OnClick = RenameItemClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object OpenDialog: TOpenDialog
|
|
||||||
DefaultExt = 'ugr'
|
|
||||||
Filter = 'Gradient files (*.ugr)|*.ugr|Fractint map files (*.map)|*.map'
|
|
||||||
Left = 72
|
|
||||||
Top = 16
|
|
||||||
end
|
|
||||||
object LargeImages: TImageList
|
|
||||||
Height = 32
|
|
||||||
Width = 32
|
|
||||||
Left = 104
|
|
||||||
Top = 16
|
|
||||||
Bitmap = {
|
|
||||||
494C010101000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
|
||||||
0000000000003600000028000000800000002000000001002000000000000040
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E000FDE2D300FCCFB300B3644B00C06D5300BB695000BC6A4F00BC6A5100BC6A
|
|
||||||
5100A35B4500B9886F00FCC8A800FCC9AA00FCCAAC00FCD0B600FDD6BC00FDD9
|
|
||||||
C100FEDFCC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E000FDE2D300FCCFB300FBC8AA00FAC6A500FAC5A400FBC5A400FBC5A400FBC6
|
|
||||||
A500FBC7A600FBC7A600FCC8A800FCC9AA00FCCAAC00FCD0B600FDD6BC00FDD9
|
|
||||||
C100FEDFCC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F4DA
|
|
||||||
CA00F2D2BD00ECBC9F00EAB59400E9B29000E8AF8D00E9AF8D00E9B08C00E9AF
|
|
||||||
8D00E8AF8D00E9B08D00E8B08D00E8B18E00EAB28F00EAB79900EDBDA000EDC1
|
|
||||||
A600F0C8B00000000000DDE6EA00DDE6EA0023232300BAEBFF00B3EAFF00B0E8
|
|
||||||
FF00ACE7FF00A8E6FF00A5E6FF00A4E4FF009FE1FF009DE1FF009BE2FF0097E0
|
|
||||||
FF0095DFFF0092DDFF008FDDFF008DDDFF008BDBFF0087D9FF0084D8FF0083D8
|
|
||||||
FF007ED6FF007ED3FF0078D1FF00262626000000000000000000000000000000
|
|
||||||
0000FFFEFB00FFFEFA00FFFEF800FFFEF700FFFDF700FFFDF600FFFEF600FFFE
|
|
||||||
F700FFFFF700FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFA00FFFFFB00FFFF
|
|
||||||
FC00FFFFFC00FFFFFC00FFFFFD00FFFFFE000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000E7A88300EBB69600EDC1A700F0C9
|
|
||||||
B300F3D4C10000000000DDE6EA00DDE6EA002323230023232300232323002323
|
|
||||||
2300232323002323230023232300232323002323230023232300232323002323
|
|
||||||
2300232323002323230023232300232323002323230023232300232323002323
|
|
||||||
2300232323002323230023232300DDE6EA00DDE6EA00DDE6EA0000000000FDEA
|
|
||||||
DF00FCE1D000FBCCB000ED886800F38C6B00E8856500E9856600E9856600EB86
|
|
||||||
6600D97C5F00DCA18300FBC5A400FBC7A700FBC9AA00FCD3B800FDDAC400FDDF
|
|
||||||
CD00FEE7D80000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEA
|
|
||||||
DF00FCE1D000FBCCB000FAC6A700F9C3A200FAC19F00FAC2A000FBC3A100FBC3
|
|
||||||
A300FAC4A300FBC4A300FBC5A400FBC7A700FBC9AA00FCD3B800FDDAC400FDDF
|
|
||||||
CD00FEE7D80000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F4D7
|
|
||||||
C600F1CDB800EBB69600E8AE8C00E7AB8600E7A98200E6A88300E7A98300E7A8
|
|
||||||
8300E6A98200E7A88300E7A98300E7AA86000000000000000000000000000000
|
|
||||||
0000FFFDFA00FFFCF800FFFBF500FFFBF400FFFBF300FFFAF200FFFBF300FFFB
|
|
||||||
F300FFFCF400FFFCF400FFFDF500FFFEF500FFFDF500FFFEF600FFFEF600FFFF
|
|
||||||
F700FFFFF800FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFB00FFFFFC00FFFF
|
|
||||||
FC0000000000000000000000000000000000F9BE9D00F8BF9E00F9C09E00F9C0
|
|
||||||
9F00F9C19F00F9C1A000F9C2A200F9C5A500F9C8AB00F9833C00FF985A00FFAC
|
|
||||||
770000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CF
|
|
||||||
BB00EEC5AB00E8AA8500E6A37B00E49F7400E39B7000E39C7100E49B7000E39C
|
|
||||||
7100E39C7100E39B7000E39C7200E49F7500E5A37A00F9833C00FF985A00FFAC
|
|
||||||
770000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00BAEEFC00B7ED
|
|
||||||
FD00B6ECFC00B2E9FB00B0E8FC00ADE8FB00AAE7FC00A7E6FC00A6E5FC003740
|
|
||||||
4500DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDE9
|
|
||||||
DE00FCE0CF00FACAAD00FAC3A400F9C09E00F9BF9C00F9C09D00F9C09D00FAC1
|
|
||||||
A000FAC1A000F9C1A100FAC3A200FAC5A500FBC7A900FCD4BC00FDDDCA00FDE4
|
|
||||||
D500FEECE20000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDE9
|
|
||||||
DE00FCE0CF00FACAAD00FAC3A400F9C09E000000000000000000000000000000
|
|
||||||
0000FFFCF800FFFBF600FFFAF200FFF9F000FFF8EF00FFF7EE00FFF9EE00FFF9
|
|
||||||
EF00FFF9EF00FFF9F000FFFAF000FFFAF200FFFBF200FFFCF300FFFCF300FFFC
|
|
||||||
F400FFFCF400FFFDF500FFFEF500FFFFF600FFFFF700FFFFF700FFFFF700FFFF
|
|
||||||
FA0000000000000000000000000000000000DDE6EA00DDE6EA0000000000FCEA
|
|
||||||
DF00FBE2D200F9CEB400F8C8AB00F9C6A700F9C5A500F9C5A500F9C6A500F8C6
|
|
||||||
A700F9C6A800F9C6A700F9C8A900FAC9AC00FACDB100FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FCEA
|
|
||||||
DF00FBE2D200F9CEB400F8C8AB00F9C6A700F9C5A500F9C5A500F9C6A500F8C6
|
|
||||||
A700F9C6A800F9C6A700F9C8A900FAC9AC00FACDB100FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CE
|
|
||||||
B900EEC4AB00E7AC8800E5A57F00E4A17900E49F7600E49F7600E49F7500E59F
|
|
||||||
7600E49F7700E49F7600E49F7700E5A17900E5A57E00FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0023232300C1F1
|
|
||||||
FD00BFEFFD00BAEEFC00B9EDFC00B6ECFC00B2EAFB00AFE9FB00ADE8FB00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFFBF700FFFAF300FFF8EF00FFF6EC00FFF6EB00FFF5EB00FFF5EA00FFF6
|
|
||||||
EB00FFF6EB00FFF7EB00FFF7ED00FFF8ED00FFF8EE00FFF9EE00FFF9F000FFFA
|
|
||||||
F000FFFAF000FFFAF200FFFBF200FFFBF200FFFCF300FFFCF300FFFDF400FFFD
|
|
||||||
F60000000000000000000000000000000000EEC3A90000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E200FCE5D700FAD5BF00F9D1B800F9CEB400F9CDB300F9CDB300F9CEB300F9CF
|
|
||||||
B500F9CFB500FACFB500F9D0B600FAD1B800FAD4BC00FFBA8B00FFCFA9000000
|
|
||||||
0000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E200FCE5D700FAD5BF00F9D1B800F9CEB400F9CDB300F9CDB300F9CEB300F9CF
|
|
||||||
B500F9CFB500FACFB500F9D0B600FAD1B800FAD4BC00FFBA8B00FFCFA9000000
|
|
||||||
0000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CE
|
|
||||||
B900EEC6AE00E9B29200E7AD8800E6A98400E6A78100E7A88100E6A78100E7A7
|
|
||||||
8200E7A78200E6A78200E6A78200E6A984000000000000000000000000000000
|
|
||||||
0000FFFAF600FFF8F200FFF6ED00FFF4E900FFF4E600FFF3E600FFF3E600FFF4
|
|
||||||
E700FFF4E700FFF5E800FFF5E800FFF5E900FFF5E900FFF5EB00FFF6EB00FFF7
|
|
||||||
EB00FFF7EC00FFF8ED00FFF8EE00FFF8EE00FFF9EF00FFF9F000FFFAF000FFFA
|
|
||||||
F200000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDF1
|
|
||||||
E900FDEEE500FCE8DC00FCE6D900FCE5D800FCE5D700FCE5D700FCE5D700FCE6
|
|
||||||
D800FCE6D800FCE6D900FCE6D900FCE7DA00FCE8DC0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDF1
|
|
||||||
E900FDEEE500FCE8DC00FCE6D900FCE5D8000000000000000000000000000000
|
|
||||||
0000FFFAF400FFF7F000FFF4EA00FFF2E600FFF1E300FFF0E200FFF0E200FFF1
|
|
||||||
E200FFF2E300FFF2E400FFF2E500FFF3E500FFF3E500FFF4E600FFF5E700FFF4
|
|
||||||
E700FFF5E800FFF5E900FFF5E900FFF5EA00FFF5EA00FFF6EB00FFF7ED00FFF8
|
|
||||||
EF0000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF9F300FFF6EE00FFF2E800FFF0E300FFEEE000FFEEDF00FFEEDE00FFEE
|
|
||||||
DF00FFEEE000FFEFE000FFEFE000FFEFE100FFF0E100FFF1E200FFF1E200FFF2
|
|
||||||
E400FFF2E400FFF2E400FFF3E600FFF3E600FFF4E600FFF5E700FFF5E900FFF6
|
|
||||||
EB0000000000000000000000000000000000FFFFF000FFFFF200FFFFF200FFFF
|
|
||||||
F400FFFFF500FFFFF500FFFFF60000000000DDE6EA00DDE6EA0000000000FFFC
|
|
||||||
F800FFFBF600FFF9F000FFF8EF00FFF7EE00FFF9EF00FFF9EF00FFF9F000FFFA
|
|
||||||
F200FFFBF200FFFCF300FFFCF400FFFCF400FFFDF500FFFFF600FFFFF700FFFF
|
|
||||||
F700FFFFFA0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FFFD
|
|
||||||
FA00FFFCF800FFFBF400FFFBF300FFFAF200FFFBF300FFFCF400FFFCF400FFFE
|
|
||||||
F500FFFDF500FFFEF600FFFFF700FFFFF800FFFFF800FFFFF900FFFFFA00FFFF
|
|
||||||
FB00FFFFFC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FFFD
|
|
||||||
FA00FFFCF800FFFBF400FFFBF300FFFAF200FFFBF300FFFCF400FFFCF400FFFE
|
|
||||||
F500FFFDF500FFFEF600FFFFF700FFFFF800FFFFF800FFFFF900FFFFFA00FFFF
|
|
||||||
FB00FFFFFC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFF800FFFEF600FFFFF400FFFF
|
|
||||||
F200FFFFF300FFFFF300FFFFF400FFFFF4000000000000000000000000000000
|
|
||||||
0000FFF8F200FFF5EC00FFF0E500FFEDDF00CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FFF1E300FFF2E300FFF2E400FFF3
|
|
||||||
E60000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF7F100FFF3EA00FFEEE300FFECDD00CD520800DA804A00DC7E4400E285
|
|
||||||
4C00EB956200F5AA7D00FEBE9700FFCCB000FFDCC800FFEFE300F7F8F800CEEA
|
|
||||||
FD0092CEF70060B8F3003CA3F000CD520800FFEEDF00FFEEDF00FFF0E100FFF0
|
|
||||||
E30000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFEFB00FFFEFA00FFFEF800FFFEF700FFFDF700FFFDF600FFFEF600FFFE
|
|
||||||
F700FFFFF700FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFA00FFFFFB00FFFF
|
|
||||||
FC00FFFFFC00FFFFFC00FFFFFD00FFFFFE00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000BADDF900ABD5F80097CBF60089C4F5007EBFF40077BCF30076BBF30075BA
|
|
||||||
F30074BAF30075BAF20075BAF30075BAF30074BAF40075BBF40075BAF40074BB
|
|
||||||
F40074BAF40075BBF40075BAF40074BBF40074BBF40076BBF40078BCF4007EBF
|
|
||||||
F50000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF6EF00FFF1E900FFECDF00FFE9D900CD520800DD855200DB7C4000E282
|
|
||||||
4800EA925E00F4A77900FDBC9400FFCCAE00FFDCC700FFEFE400F7F8F900CDEA
|
|
||||||
FD008FCDF7005CB5F30038A1F000CD520800FFEBDB00FFECDC00FFEDDD00FFEF
|
|
||||||
E00000000000000000000000000000000000BBCCD500BBCCD500DDE6EA000000
|
|
||||||
0000FFFDFA00FFFCF800FFFBF500FFFBF400FFFBF300FFFAF200FFFBF300FFFB
|
|
||||||
F300FFFCF400FFFCF400FFFDF500FFFEF500FFFDF500FFFEF600FFFEF600FFFF
|
|
||||||
F700FFFFF800FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFB00FFFFFC00FFFF
|
|
||||||
FC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000C1DFF900B2D8F9009FCFF70091C8F60087C3F40080C0F4007FBFF4007EBF
|
|
||||||
F3007DBFF4007DBFF3007EBFF3007DBFF3007EBFF3007EBFF3007DBFF4007EBF
|
|
||||||
F4007EBFF4007DBFF4007DBEF3007EBFF4007DBEF3007EBFF40080C0F50086C2
|
|
||||||
F60000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF5EE00FFF1E700FFEADD00FFE7D600CD520800DC855000DB7B4100E180
|
|
||||||
4700EA905C00F4A67800FDBC9400FFCBAE00FFDBC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005BB5F40037A1EF00CD520800FFE9D700FFE9D700FFEAD900FFEC
|
|
||||||
DC0000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFCF800FFFBF60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF7F100FFF3EA00FFF3EA00FFEEE300FFEEE300FFECDD00FFECDD00CD52
|
|
||||||
0800CD520800FBE6DA00FBE6DA00FBDED100FBDED100FBD0B900FBD0B900FBD3
|
|
||||||
C000FBC4A300FBC4A300FBB99100FBB99100FBFAFB00FBFAFB00FBF6F600FBF6
|
|
||||||
F600FBE6DA00FBE6DA00FB996400FB996400FBA87B00FBA87B00FB823F00FBDC
|
|
||||||
CB00FBDCCB00F7C2A500F7C2A500CD520800CD520800FFEEDF00FFEEDF00FFEE
|
|
||||||
DF00FFEEDF00FFF0E100FFF0E100FFF0E300FFF0E30000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFE9DB00FFE5D300CD520800DC855000DB7C4100E181
|
|
||||||
4800EA905C00F4A67800FDBC9400FFCCAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005BB5F30037A1EF00CD520800FFE5D300FFE6D400FFE7D500FFE9
|
|
||||||
D80000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF6EF00FFF1E900FFF1E900FFECDF00FFECDF00FFE9D900FFE9D900CD52
|
|
||||||
0800CD520800FEE6DB00FEE6DB00FEDBC800FEDBC800FED9C200FED9C200FED1
|
|
||||||
B700FEAF8100FEAF8100FEF9F800FEF9F800FEF3EE00FEF3EE00FEFEFE00FEFE
|
|
||||||
FE00FEAB7B00FEAB7B00FEAB7A00FEAB7A00FE975F00FE975F00FE9C6200FEF3
|
|
||||||
F100FEF3F100FBB08600FBB08600CD520800CD520800FFEBDB00FFEBDB00FFEC
|
|
||||||
DC00FFECDC00FFEDDD00FFEDDD00FFEFE000FFEFE00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFE7D800FFE3D000CD520800DC855000DB7C4000E281
|
|
||||||
4800EA905C00F4A67800FEBC9400FFCCAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005CB5F30037A1EF00CD520800FFE3CF00FFE3CF00FFE5D100FFE6
|
|
||||||
D50000000000000000000000000000000000FEDBC800FED9C200FED9C200FED1
|
|
||||||
B700FEAF8100FEAF8100FEF9F800FEF9F800FEF3EE00FEF3EE00FEFEFE00FEFE
|
|
||||||
FE00FEAB7B00FEAB7B00FEAB7A00FEAB7A00FE975F00FE975F00FE9C6200FEF3
|
|
||||||
F100FEF3F100FBB08600FBB08600CD520800CD520800FFEBDB00FFEBDB00FFEC
|
|
||||||
DC00FFECDC00FFEDDD00FFEDDD00FFEFE000FFEFE00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500688DA200BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFE5D500FFE0CD00CD520800DC865100DB7C4000E281
|
|
||||||
4700EA905C00F4A67800FEBC9400FFCBAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005CB5F30036A1EF00CD520800FFE0CC00FFE0CC00FFE1CE00FFE3
|
|
||||||
D10000000000000000000000000000000000FE823900FE823900FEDAC200FED8
|
|
||||||
C300FED8C300FBA27300FBA27300CD520800CD520800FFE9D700FFE9D700FFE9
|
|
||||||
D700FFE9D700FFEAD900FFEAD900FFECDC00FFECDC0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD50053C7
|
|
||||||
FF0051C6FF004FC5FF004CC4FF0049C4FF0047C2FF0044C1FF0042C0FF003FC0
|
|
||||||
FF003DBDFF003AB9FF0038B6FF00214F4A000000000000000000000000000000
|
|
||||||
0000FFF1E900FFEBDF00FFE3D200FFDEC900CD520800DC865100DB7B4100E281
|
|
||||||
4800EB915C00F5A67800FEBB9400FFCCAE00FFDCC700FFEFE400F7F8F900CDEA
|
|
||||||
FD008FCDF7005CB5F40036A1EF00CD520800FFDDC700FFDEC800FFDFCB00FFE2
|
|
||||||
CE0000000000000000000000000000000000FFE9D80000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD5008BDB
|
|
||||||
FF0082D9FF007BD7FF0077D5FF0073D4FF0071D2FF006ED1FF006AD0FF0068CF
|
|
||||||
FF0065CFFF0063CDFF0061CDFF005FCCFF005DCAFF005AC9FF0058C9FF0055C8
|
|
||||||
FF0053C7FF0050C5FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF1E800FFEADE00FFE2D000FFDBC600CD520800DC855100DB7C4100E281
|
|
||||||
4800EB915C00F5A77800FDBC9400FFCBAE00FFDBC700FFEFE300F6F8F800CCEA
|
|
||||||
FD008FCDF7005BB6F30037A1EF00CD520800FFDBC300FFDBC400FFDDC700FFDF
|
|
||||||
CA0000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200BBCCD500DDE6EA00DDE6
|
|
||||||
EA00688DA200BBCCD500688DA200DDE6EA00688DA200BBCCD500DDE6EA00DDE6
|
|
||||||
EA00688DA200BBCCD500688DA200DDE6EA00DDE6EA00BBCCD500DDE6EA00D9EB
|
|
||||||
FA00D9EAF900D9EAFA00D9EAFA00D9EAFA00D9EBFA00D9EBFA00DAEBF900DBEC
|
|
||||||
FA0000000000DDE6EA00DDE6EA00DDE6EA00232323009FE2FF0098E0FF008DDD
|
|
||||||
FF0084D9FF007ED6FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFEFE500FFE9DB00FFE9DB00FFE5D300FFE5D300CD52
|
|
||||||
0800CD520800FEE1CE00FEE1CE00FEE4D8000000000000000000000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE0CD00FED9C300CD520800DC855000DB7C4100E181
|
|
||||||
4700EA915C00F5A77800FEBB9400FFCCAE00FFDCC800FFEFE300F6F8F800CCEA
|
|
||||||
FD008FCDF7005BB5F30036A1EF00CD520800FFD7BF00FFD8C000FFDAC200FFDC
|
|
||||||
C70000000000000000000000000000000000688DA200BBCCD500688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688DA200688D
|
|
||||||
A200BBCCD500BBCCD500688DA200DDE6EA00BBCCD500688DA200688DA200688D
|
|
||||||
A200BBCCD500BBCCD500688DA200688DA200BBCCD500688DA200BBCCD5000000
|
|
||||||
0000F4F9FE00F1F8FD00EFF5FC00EBF5FC00EAF3FA00EAF2FA00E9F2FA007478
|
|
||||||
7D003A3C3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D
|
|
||||||
3F003A3D3F00E9F3FB0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFEFE500FFE9DB00FFE9DB00FFE5D300FFE5D300CD52
|
|
||||||
0800CD520800FEE1CE00FEE1CE00FEE4D800FEE4D800FEB89000FEB89000FECA
|
|
||||||
A900FEFEFE00FEFEFE00FEEBE100FEEBE100FEFDFE00FEFDFE00FEB78C00FEB7
|
|
||||||
8C00FEA16D00FEA16D00FE975C00FE975C000000000000000000000000000000
|
|
||||||
0000FFEFE500FFE8DA00FEDDCB00FDD7C000CD520800DD855100DB7B4000E181
|
|
||||||
4700EB915C00F5A67700FEBB9400FFCCAE00FFDBC700FFEFE400F6F8F900CCEA
|
|
||||||
FD008FCDF7005BB5F30036A1F000CD520800FFD5BB00FFD5BD00FFD8BF00FFDA
|
|
||||||
C20000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500100F
|
|
||||||
0E0000000000CFBEB000FFEAD900FFEBDB00FFEBDB00FFECDC00FFEDDD00FFEF
|
|
||||||
E00000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FCFDFE00FBFCFE0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFEEE300FFE7D800FFE7D800FFE3D000FFE3D000CD52
|
|
||||||
0800CD520800FEE4D300FEE4D300FEE1D100FEE1D100FEA67500FEA67500FEF6
|
|
||||||
F100FEEFE900FEEFE900FEEBE200FEEBE200FEFBFA00FEFBFA00FE945900FE94
|
|
||||||
5900FEA97C00FEA97C00FE925000FE925000FEFEFE00FEFEFE00FEB98D00FEC3
|
|
||||||
A100FEC3A100FBBC9200FBBC9200CD520800CD520800FFE3CF00FFE3CF00FFE3
|
|
||||||
CF00FFE3CF00FFE5D100FFE5D100FFE6D5000000000000000000000000000000
|
|
||||||
0000FEEEE400FEE6D800FEDDC800FDD5BC00CD520800DD865200DB7C4200E183
|
|
||||||
4900EA925F00F4A77A00FDBD9500FFCCAE00FFDCC800FFEFE400F6F8F800CDEA
|
|
||||||
FD0090CDF7005DB6F30038A1F000CD520800FFD3B800FFD3BA00FFD6BC00FFD8
|
|
||||||
C00000000000000000000000000000000000BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFF5EE00FFF1E700FFEADD00FFE7D600FFE4D100FFE2CF00FFE2CE00FFE2
|
|
||||||
CF00CFB8A80040393400EFD6C300FFE5D100FFE5D200FFE5D200FFE5D300EFD8
|
|
||||||
C700403A3500BFADA00000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFEEE300FFE7D800FFE7D800FFE3D000FFE3D000CD52
|
|
||||||
0800CD520800FEE4D300FEE4D300FEE1D100FEE1D100FEA67500FEA67500FEF6
|
|
||||||
F100FEEFE900FEEFE900FEEBE200FEEBE200FEFBFA00FEFBFA00FE945900FE94
|
|
||||||
5900FEA97C00FEA97C00FE925000FE925000FEFEFE00FEFEFE00FEB98D00FEC3
|
|
||||||
A100FEC3A100FBBC9200FBBC9200CD520800CD520800FFE3CF00FFE3CF00FFE3
|
|
||||||
CF00FFE3CF00FFE5D100FFE5D100FFE6D500FFE6D50000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD5000000000000000000000000000000
|
|
||||||
0000FEEDE200FEE5D600FDDBC500FDD3BA00CD520800DD885600DD804800E388
|
|
||||||
5000EB976600F5AB8100FDBF9B00FFCEB200FFDECB00FFF0E400F6F8F800CFEB
|
|
||||||
FD0096D0F70064B9F30041A6F000CD520800FED2B700FED3BB00FED5BD00FED8
|
|
||||||
C1000000000000000000000000000000000000000000FFFFFF00000000000000
|
|
||||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFEDE200FFE5D500FFE5D500FFE0CD00FFE0CD00CD52
|
|
||||||
0800CD520800FEEADD00FEEADD00FEC7A700FEC7A700FEC09B00FEC09B00FEFB
|
|
||||||
FB00FEEAE000FEEAE000FEEFE700FEEFE700FEF0EB00FEF0EB00FE844100FE84
|
|
||||||
4100FEA97800FEA97800FEC8AA00FEC8AA00FEFAFA00FEFAFA00FEAF7F00FEBD
|
|
||||||
9A00FEBD9A00FBB07B00FBB07B00CD520800CD520800FFE0CC00FFE0CC00FFE0
|
|
||||||
CC00FFE0CC00FFE1CE00FFE1CE00FFE3D100FFE3D10000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FEECE100FDE3D500FCD9C300FCD1B500CD520800DE8A5700DF885400E593
|
|
||||||
6000EEA17400F8B38D00FEC6A500FFD3BA00FFE1D000FFF2E700F7F8F900D4ED
|
|
||||||
FE00A0D5F80073C0F50054B0F100CD520800FED2B800FDD4BC00FDD7C000FEDA
|
|
||||||
C50000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFEDE200FFE5D500FFE5D500FFE0CD00FFE0CD00CD52
|
|
||||||
0800CD520800FEEADD00FEEADD00FEC7A700FEC7A700FEC09B00FEC09B00FEFB
|
|
||||||
FB00FEEAE000FEEAE000FEEFE700FEEFE700FEF0EB00FEF0EB00FE844100FE84
|
|
||||||
4100FEA97800FEA97800FEC8AA00FEC8AA00FEFAFA00FEFAFA00FEAF7F00FEBD
|
|
||||||
9A00FEBD9A00FBB07B00FBB07B00CD520800CD520800FFE0CC00FFE0CC00FFE0
|
|
||||||
CC00FFE0CC00FFE1CE00FFE1CE00FFE3D100FFE3D10000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200688DA200BBCCD500688DA200BBCCD500688DA200BBCC
|
|
||||||
D500688DA200BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEBE000FDE2D300FCD7C100FCCFB300CD520800E2966A00E3976800EA9F
|
|
||||||
7000F1B28D00F8C1A100FED0B400FFD9C500FFE5D700FFF4EC00F8F6F600DBEC
|
|
||||||
F600B2DAF5008DC6EE0073BCEF00CD520800FDD6BC00FDD9C100FDDCC700FEDF
|
|
||||||
CC0000000000000000000000000000000000FEB08600FEDFCB00FEDFCB00FEF7
|
|
||||||
F300FEE7DA00FEE7DA00FEF0EA00FEF0EA00FEEBE100FEEBE100FE813A00FE81
|
|
||||||
3A00FEAD7800FEAD7800FEE4D900FEE4D900FEE3DB00FEE3DB00FED1B000EFC5
|
|
||||||
B400EFC5B400E99B7300E99B7300CD520800CD520800FFDDC700FFDDC700FFDE
|
|
||||||
C800FFDEC800FFDFCB00FFDFCB00FFE2CE00FFE2CE0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEADF00FCE1D000FBD5BE00FBCCB000CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FDDAC400FDDFCD00FDE3D300FEE7
|
|
||||||
D80000000000000000000000000000000000FEE3DB00FEE3DB00FED1B000EFC5
|
|
||||||
B400EFC5B400E99B7300E99B7300CD520800CD520800FFDDC700FFDDC700FFDE
|
|
||||||
C800FFDEC800FFDFCB00FFDFCB00FFE2CE00FFE2CE0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000000000000000000000000000000000005BCAFF0058C9FF0056C7FF0053C7
|
|
||||||
FF0051C4FF004DBFFF0049BBFF00214F4A000000000000000000000000000000
|
|
||||||
0000FDE9DE00FCE0CF00FAD4BB00FACAAD00FAC3A400F9C09E00F9BF9C00F9BF
|
|
||||||
9C00F9C09D00F9C09D00FAC09F00FAC1A000FAC1A000F9C1A100F9C2A100FAC3
|
|
||||||
A200FAC5A500FBC7A900FCCCB100FCD4BC00FDDDCA00FDE4D500FDE9DC00FEEC
|
|
||||||
E20000000000000000000000000000000000FFDFCA0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FCE9DD00FBDFCD00FAD2BB00F9C9AB00F9C2A200F8BF9D00F8BE9A00F8BD
|
|
||||||
9A00F8BE9B00F8BE9C00F9BF9D00F8C09D00F9C09E00F9C09F00F9C09F00F9C2
|
|
||||||
A100FAC4A400FBC7A80000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500FFF7
|
|
||||||
EB00FFF7EC00FFF8ED00FFF8EE00FFF8EE00FFF9EF00FFF9F000FFFAF000FFFA
|
|
||||||
F20000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFBF700FFFAF30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF1E800FFEADE00FFEADE00FFE2D000FFE2D000FFDBC600FFDBC600CD52
|
|
||||||
0800CD520800FEE9DD00FEE9DD00FEA56E000000000000000000000000000000
|
|
||||||
0000FDE9DD00FCE0CF00FAD4BC00F8CAAD00F8C4A400F8C09F00F8BF9D00F9BE
|
|
||||||
9D00F8BF9E00F9C09E00F9C09F00F9C09F00F9C19F00F9C1A000F9C1A000F9C2
|
|
||||||
A200F9C5A500F9C8AB0000000000F9833C00FF985A00FFAC7700FFC195000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFF7F100FFF3EA00FFEEE300FFECDD00CD520800FBE6DA00FBDED100FBD0
|
|
||||||
B900FBD3C000FBC4A300FBB99100FBFAFB00FBF6F600FBE6DA00FB996400FBA8
|
|
||||||
7B00FB823F00FBDCCB0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF1E800FFEADE00FFEADE00FFE2D000FFE2D000FFDBC600FFDBC600CD52
|
|
||||||
0800CD520800FEE9DD00FEE9DD00FEA56E00FEA56E00FEE5D900FEE5D900FEF6
|
|
||||||
F500FEE4D400FEE4D400FEEBE400FEEBE400FEEEE400FEEEE400FE7A3200FE7A
|
|
||||||
3200FEAB7500FEAB7500FED1B800FED1B8000000000000000000000000000000
|
|
||||||
0000FCEADF00FBE2D200FAD6C100F9CEB400F8C8AB00F9C6A700F8C4A500F9C5
|
|
||||||
A500F9C5A500F9C6A500F8C6A600F8C6A700F9C6A800F9C6A700F9C6A800F9C8
|
|
||||||
A900FAC9AC00FACDB10000000000FF9F6400FFB38100FFC89F00000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FEFA
|
|
||||||
FA00FEAF7F00FEBD9A00FBB07B00CD520800FFE0CC00FFE0CC00FFE1CE00FFE3
|
|
||||||
D10000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFF3EC00FFEEE30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE9DC00FFE0CD00FFE0CD00FED9C300FED9C300CD52
|
|
||||||
0800CD520800FEE4D600FEE4D600FEA16D00FEA16D00FEE9E100FEE9E100FEF6
|
|
||||||
F300FEEBDF00FEEBDF00FEF1EB00FEF1EB00FEF9FB00FEF9FB00FE824200FE82
|
|
||||||
4200FEA96F00FEA96F00FEBC8D00FEBC8D00FEFEFE00FEFEFE00FEFDFE00FEE2
|
|
||||||
D500FEE2D500FBDED200FBDED200CD520800CD520800FFD7BF00FFD7BF00FFD8
|
|
||||||
C000FFD8C000FFDAC200FFDAC200FFDCC7000000000000000000000000000000
|
|
||||||
0000FDEBE200FCE5D700FADCC900FAD5BF00F9D1B800F9CEB400F9CEB300F9CD
|
|
||||||
B300F9CDB300F9CEB300F9CEB400F9CFB500F9CFB500FACFB500FACFB500F9D0
|
|
||||||
B600FAD1B800FAD4BC0000000000FFBA8B00FFCFA90000000000000000000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFEFE500FFE8DA00FEDDCB00FDD7C000CD520800FEE4D700FE9F6600FEE9
|
|
||||||
DD00FEF0E900FEE7DB00FEE7DF00FEFEFE00FEA37300FE8B3D00FEC69200FEE0
|
|
||||||
D600FDFEFE00FEE2D30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE9DC00FFE0CD00FFE0CD00FED9C300FED9C300CD52
|
|
||||||
0800CD520800FEE4D600FEE4D600FEA16D00FEA16D00FEE9E100FEE9E100FEF6
|
|
||||||
F300FEEBDF00FEEBDF00FEF1EB00FEF1EB00FEF9FB00FEF9FB00FE824200FE82
|
|
||||||
4200FEA96F00FEA96F00FEBC8D00FEBC8D00FEFEFE00FEFEFE00FEFDFE00FEE2
|
|
||||||
D500FEE2D500FBDED200FBDED200CD520800CD520800FFD7BF00FFD7BF00FFD8
|
|
||||||
C000FFD8C000FFDAC200FFDAC200FFDCC700FFDCC70000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEEE600FCEADF00FCE4D600FBE0CF00FBDDCB00FADBC800FADBC700FADB
|
|
||||||
C700FADBC800FADBC800FADBC800FADCC900FBDCC900FADCC900FADCC900FADC
|
|
||||||
CA00FBDDCB00FBE0CE0000000000FFD6B3000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FDEBE000FDE2D30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFEFE500FFE8DA00FFE8DA00FEDDCB00FEDDCB00FDD7C000FDD7C000CD52
|
|
||||||
0800CD520800FEE4D700FEE4D700FE9F6600FE9F6600FEE9DD00FEE9DD00FEF0
|
|
||||||
E900FEE7DB00FEE7DB00FEE7DF00FEE7DF00FEFEFE00FEFEFE00FEA37300FEA3
|
|
||||||
7300FE8B3D00FE8B3D00FEC69200FEC69200FEE0D600FEE0D600FDFEFE00FEE2
|
|
||||||
D300FEE2D300F1A98A00F1A98A00CD520800CD520800FFD5BB00FFD5BB00FFD5
|
|
||||||
BD00FFD5BD00FFD8BF00FFD8BF00FFDAC200FFDAC20000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDF1E900FDEEE500FCEAE000FCE8DC00FCE6D900FCE5D800FCE5D700FCE5
|
|
||||||
D700FCE5D700FCE5D700FCE5D800FCE6D800FCE6D800FCE6D900FCE6D900FCE6
|
|
||||||
D900FCE7DA00FCE8DC0000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFEFE500FFE8DA00FFE8DA00FEDDCB00FEDDCB00FDD7C000FDD7C000CD52
|
|
||||||
0800CD520800FEE4D700FEE4D700FE9F6600FE9F6600FEE9DD00FEE9DD00FEF0
|
|
||||||
E900FEE7DB00FEE7DB00FEE7DF00FEE7DF00FEFEFE00FEFEFE00FEA37300FEA3
|
|
||||||
7300FE8B3D00FE8B3D00FEC69200FEC69200FEE0D600FEE0D600FDFEFE00FEE2
|
|
||||||
D300FEE2D300F1A98A00F1A98A00CD520800CD520800FFD5BB00FFD5BB00FFD5
|
|
||||||
BD00FFD5BD00FFD8BF00FFD8BF00FFDAC200FFDAC20000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA20000000000FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FE9B6000FEDFCD00FEDFCD00FEF2
|
|
||||||
EF00FEE3D900FEE3D900FEE0D300FEE0D300FEF8F800FEF8F800FEE8E300FEE8
|
|
||||||
E300FE833B00FE833B00FEBB7300FEBB7300FEDFC000FEDFC000F9CEC200FED8
|
|
||||||
CA00FED8CA00FBD2BF00FBD2BF00CD520800CD520800FFD3B800FFD3B800FFD3
|
|
||||||
BA00FFD3BA00FFD6BC00FFD6BC00FFD8C000FFD8C00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA20000000000FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00424D3E000000000000003E000000
|
|
||||||
2800000080000000200000000100010000000000000200000000000000000000
|
|
||||||
000000000000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E00000F7000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E000000F000000000000000000000000
|
|
||||||
E000001F000000000000000000000000E000003F000000000000000000000000
|
|
||||||
E000007F000000000000000000000000E00000FFFFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00001FF10022F031F022F0320FFFF0000000000000000000000000000000000
|
|
||||||
000000000000}
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,509 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Browser;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, ComCtrls, ControlPoint, ToolWin, ImgList, Render, StdCtrls,
|
|
||||||
Cmap, Menus, Global, Buttons;
|
|
||||||
|
|
||||||
const
|
|
||||||
PixelCountMax = 32768;
|
|
||||||
|
|
||||||
type
|
|
||||||
TGradientBrowser = class(TForm)
|
|
||||||
RightPanel: TPanel;
|
|
||||||
SmallImages: TImageList;
|
|
||||||
ListView: TListView;
|
|
||||||
pnlMain: TPanel;
|
|
||||||
PopupMenu: TPopupMenu;
|
|
||||||
DeleteItem: TMenuItem;
|
|
||||||
RenameItem: TMenuItem;
|
|
||||||
btnDefGradient: TSpeedButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
pnlPreview: TPanel;
|
|
||||||
Image: TImage;
|
|
||||||
pnlControls: TPanel;
|
|
||||||
OpenDialog: TOpenDialog;
|
|
||||||
LargeImages: TImageList;
|
|
||||||
procedure ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure DeleteItemClick(Sender: TObject);
|
|
||||||
procedure RenameItemClick(Sender: TObject);
|
|
||||||
procedure ListViewEdited(Sender: TObject; Item: TListItem;
|
|
||||||
var S: string);
|
|
||||||
procedure btnDefGradientClick(Sender: TObject);
|
|
||||||
procedure SpeedButton1Click(Sender: TObject);
|
|
||||||
procedure ListViewKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
private
|
|
||||||
procedure DrawPalette;
|
|
||||||
procedure Apply;
|
|
||||||
public
|
|
||||||
PreviewDensity: double;
|
|
||||||
FlameIndex, GradientIndex: Integer;
|
|
||||||
Extension, Identifier, Filename: string;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Palette: TColorMap;
|
|
||||||
zoom: double;
|
|
||||||
Center: array[0..1] of double;
|
|
||||||
Render: TRenderer;
|
|
||||||
procedure ListFileContents;
|
|
||||||
function LoadFractintMap(filen: string): TColorMap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
type
|
|
||||||
EFormatInvalid = class(Exception);
|
|
||||||
pRGBTripleArray = ^TRGBTripleArray;
|
|
||||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
|
||||||
|
|
||||||
var
|
|
||||||
GradientBrowser: TGradientBrowser;
|
|
||||||
FlameString: string;
|
|
||||||
|
|
||||||
function CreatePalette(strng: string): TColorMap;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Options, Editor, Gradient, Registry, Adjust, Mutate;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
|
|
||||||
procedure RGBBlend(a, b: integer; var Palette: TColorMap);
|
|
||||||
{ Linear blend between to indices of a palette }
|
|
||||||
var
|
|
||||||
c, v: real;
|
|
||||||
vrange, range: real;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
if a = b then
|
|
||||||
begin
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
range := b - a;
|
|
||||||
vrange := Palette[b mod 256][0] - Palette[a mod 256][0];
|
|
||||||
c := Palette[a mod 256][0];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := (a + 1) to (b - 1) do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][0] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][1] - Palette[a mod 256][1];
|
|
||||||
c := Palette[a mod 256][1];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][1] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][2] - Palette[a mod 256][2];
|
|
||||||
c := Palette[a mod 256][2];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][2] := Round(c);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
var
|
|
||||||
p: integer;
|
|
||||||
begin
|
|
||||||
p := Pos('=', token);
|
|
||||||
Delete(Token, 1, p);
|
|
||||||
Result := Token;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{Changes tab characters in a string to spaces}
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to Length(str) do
|
|
||||||
begin
|
|
||||||
if str[i] = #9 then
|
|
||||||
begin
|
|
||||||
Delete(str, i, 1);
|
|
||||||
Insert(#32, str, i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := str;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientBrowser.LoadFractintMap(filen: string): TColorMap;
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
pal: TColorMap;
|
|
||||||
MapFile: TextFile;
|
|
||||||
begin
|
|
||||||
{ Load a map file }
|
|
||||||
AssignFile(MapFile, Filen);
|
|
||||||
try
|
|
||||||
Reset(MapFile);
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Read(MapFile, Pal[i][0]);
|
|
||||||
Read(MapFile, Pal[i][1]);
|
|
||||||
Read(MapFile, Pal[i][2]);
|
|
||||||
Read(MapFile, s);
|
|
||||||
end;
|
|
||||||
CloseFile(MapFile);
|
|
||||||
Result := Pal;
|
|
||||||
except
|
|
||||||
on EInOutError do Application.MessageBox(PChar('Cannot Open File: ' +
|
|
||||||
FileName), PCHAR('Apophysis'), 16);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function CreatePalette(strng: string): TColorMap;
|
|
||||||
{ Loads a palette from a gradient string }
|
|
||||||
var
|
|
||||||
Strings: TStringList;
|
|
||||||
index, i: integer;
|
|
||||||
Tokens: TStringList;
|
|
||||||
Indices, Colors: TStringList;
|
|
||||||
a, b: integer;
|
|
||||||
begin
|
|
||||||
Strings := TStringList.Create;
|
|
||||||
Tokens := TStringList.Create;
|
|
||||||
Indices := TStringList.Create;
|
|
||||||
Colors := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
Strings.Text := strng;
|
|
||||||
if Pos('}', Strings.Text) = 0 then raise EFormatInvalid.Create('No closing brace');
|
|
||||||
if Pos('{', Strings[0]) = 0 then raise EFormatInvalid.Create('No opening brace.');
|
|
||||||
GetTokens(ReplaceTabs(strings.text), tokens);
|
|
||||||
Tokens.Text := Trim(Tokens.text);
|
|
||||||
i := 0;
|
|
||||||
while (Pos('}', Tokens[i]) = 0) and (Pos('opacity:', Lowercase(Tokens[i])) = 0) do
|
|
||||||
begin
|
|
||||||
if Pos('index=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Indices.Add(GetVal(Tokens[i]))
|
|
||||||
else if Pos('color=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Colors.Add(GetVal(Tokens[i]));
|
|
||||||
inc(i)
|
|
||||||
end;
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Result[i][0] := 0;
|
|
||||||
Result[i][1] := 0;
|
|
||||||
Result[i][2] := 0;
|
|
||||||
end;
|
|
||||||
if Indices.Count = 0 then raise EFormatInvalid.Create('No color info');
|
|
||||||
for i := 0 to Indices.Count - 1 do
|
|
||||||
begin
|
|
||||||
index := StrToInt(Indices[i]);
|
|
||||||
index := Round(Index * (255 / 399));
|
|
||||||
indices[i] := IntToStr(index);
|
|
||||||
Result[index][0] := StrToInt(Colors[i]) mod 256;
|
|
||||||
Result[index][1] := trunc(StrToInt(Colors[i]) / 256) mod 256;
|
|
||||||
Result[index][2] := trunc(StrToInt(Colors[i]) / 65536);
|
|
||||||
end;
|
|
||||||
i := 1;
|
|
||||||
repeat
|
|
||||||
a := StrToInt(Trim(Indices[i - 1]));
|
|
||||||
b := StrToInt(Trim(Indices[i]));
|
|
||||||
RGBBlend(a, b, Result);
|
|
||||||
inc(i);
|
|
||||||
until i = Indices.Count;
|
|
||||||
if (Indices[0] <> '0') or (Indices[Indices.Count - 1] <> '255') then
|
|
||||||
begin
|
|
||||||
a := StrToInt(Trim(Indices[Indices.Count - 1]));
|
|
||||||
b := StrToInt(Trim(Indices[0])) + 256;
|
|
||||||
RGBBlend(a, b, Result);
|
|
||||||
end;
|
|
||||||
except on EFormatInvalid do
|
|
||||||
begin
|
|
||||||
// Result := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Tokens.Free;
|
|
||||||
Strings.Free;
|
|
||||||
Indices.Free;
|
|
||||||
Colors.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.DrawPalette;
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
BitMap: TBitMap;
|
|
||||||
begin
|
|
||||||
BitMap := TBitMap.Create;
|
|
||||||
try
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 1;
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Palette[i][0];
|
|
||||||
rgbtGreen := Palette[i][1];
|
|
||||||
rgbtBlue := Palette[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
Image.Picture.Graphic := Bitmap;
|
|
||||||
Image.Refresh;
|
|
||||||
finally
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListFileContents;
|
|
||||||
{ List identifiers in file }
|
|
||||||
var
|
|
||||||
i, p: integer;
|
|
||||||
Title: string;
|
|
||||||
ListItem: TListItem;
|
|
||||||
FStrings: TStringList;
|
|
||||||
begin
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
FStrings.LoadFromFile(filename);
|
|
||||||
try
|
|
||||||
ListView.Items.BeginUpdate;
|
|
||||||
ListView.Items.Clear;
|
|
||||||
if Lowercase(ExtractFileExt(filename)) = '.map' then
|
|
||||||
begin
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
Listitem.Caption := Trim(filename);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if (Pos('{', FStrings.Text) <> 0) then
|
|
||||||
begin
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
begin
|
|
||||||
p := Pos('{', FStrings[i]);
|
|
||||||
if (p <> 0) and (Pos('(3D)', FStrings[i]) = 0) then
|
|
||||||
begin
|
|
||||||
Title := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
if Title <> '' then
|
|
||||||
begin { Otherwise bad format }
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
Listitem.Caption := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ListView.Items.EndUpdate;
|
|
||||||
ListView.Selected := ListView.Items[0];
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
var
|
|
||||||
Tokens, FStrings: TStringList;
|
|
||||||
EntryStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
Application.ProcessMessages;
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
EntryStrings := TStringList.Create;
|
|
||||||
Tokens := TStringList.Create;
|
|
||||||
try
|
|
||||||
if Lowercase(ExtractFileExt(filename)) = '.map' then
|
|
||||||
begin
|
|
||||||
Palette := LoadFractintMap(filename);
|
|
||||||
DrawPalette;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if (ListView.SelCount <> 0) and (ListView.Selected.Caption <> Identifier) then
|
|
||||||
begin
|
|
||||||
Identifier := ListView.Selected.Caption;
|
|
||||||
FStrings.LoadFromFile(Filename);
|
|
||||||
for i := 0 to FStrings.count - 1 do
|
|
||||||
if Pos(Lowercase(ListView.Selected.Caption) + ' ', Trim(Lowercase(FStrings[i]))) = 1 then break;
|
|
||||||
EntryStrings.Add(FStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
EntryStrings.Add(FStrings[i]);
|
|
||||||
until Pos('}', FStrings[i]) <> 0;
|
|
||||||
Palette := CreatePalette(EntryStrings.Text);
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
EntryStrings.Free;
|
|
||||||
FStrings.Free;
|
|
||||||
Tokens.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
cp.gamma := defGamma;
|
|
||||||
cp.brightness := defBrightness;
|
|
||||||
cp.vibrancy := defVibrancy;
|
|
||||||
cp.spatial_oversample := defOversample;
|
|
||||||
cp.spatial_filter_radius := defFilterRadius;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
FlameIndex := 0;
|
|
||||||
GradientIndex := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Render.Free;
|
|
||||||
cp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Browser', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
GradientBrowser.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
GradientBrowser.Top := Registry.ReadInteger('Top');
|
|
||||||
if Registry.ValueExists('Width') then
|
|
||||||
GradientBrowser.Width := Registry.ReadInteger('Width');
|
|
||||||
if Registry.ValueExists('Height') then
|
|
||||||
GradientBrowser.Height := Registry.ReadInteger('Height');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
if FileExists(filename) then ListFileContents;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.DeleteItemClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
c: boolean;
|
|
||||||
begin
|
|
||||||
if ListView.SelCount <> 0 then
|
|
||||||
begin
|
|
||||||
if ConfirmDelete then
|
|
||||||
c := Application.MessageBox(
|
|
||||||
PChar('Are you sure you want to permanently delete' + ' "'
|
|
||||||
+ ListView.Selected.Caption + '"'), 'Apophysis', 36) = IDYES
|
|
||||||
else
|
|
||||||
c := True;
|
|
||||||
if c then
|
|
||||||
if ListView.Focused and (ListView.SelCount <> 0) then
|
|
||||||
begin
|
|
||||||
Application.ProcessMessages;
|
|
||||||
if DeleteEntry(ListView.Selected.Caption, Filename) then
|
|
||||||
begin
|
|
||||||
ListView.Items.Delete(ListView.Selected.Index);
|
|
||||||
ListView.Selected := ListView.ItemFocused;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.RenameItemClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if ListView.SelCount <> 0 then
|
|
||||||
ListView.Items[ListView.Selected.Index].EditCaption;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewEdited(Sender: TObject; Item: TListItem;
|
|
||||||
var S: string);
|
|
||||||
begin
|
|
||||||
// if s <> Item.Caption then
|
|
||||||
// if not RenameIFS(Item.Caption, s, Filename) then
|
|
||||||
// s := Item.Caption;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.btnDefGradientClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.InitialDir := BrowserPath;
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
Filename := OpenDialog.FileName;
|
|
||||||
GradientFile := Filename;
|
|
||||||
BrowserPath := ExtractFilePath(OpenDialog.FileName);
|
|
||||||
ListFileContents;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.Apply;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.cmap := Palette;
|
|
||||||
gradientForm.UpdateGradient(Palette);
|
|
||||||
if EditForm.Visible then EditForm.UpdateDisplay;
|
|
||||||
// if AdjustForm.Visible then AdjustForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.SpeedButton1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewKeyPress(Sender: TObject;
|
|
||||||
var Key: Char);
|
|
||||||
begin
|
|
||||||
if Key = #13 then Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Browser', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', GradientBrowser.Top);
|
|
||||||
Registry.WriteInteger('Left', GradientBrowser.Left);
|
|
||||||
Registry.WriteInteger('Width', GradientBrowser.Width);
|
|
||||||
Registry.WriteInteger('Height', GradientBrowser.Height);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,646 +0,0 @@
|
|||||||
object EditForm: TEditForm
|
|
||||||
Left = 516
|
|
||||||
Top = 218
|
|
||||||
Width = 582
|
|
||||||
Height = 471
|
|
||||||
Caption = 'Editor'
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00000000000000000000000000000000000000FFFF000000
|
|
||||||
00000000000000000000000000000000000000000000FFFF0000000000000000
|
|
||||||
0000000000000000000000000000FFFF00000000000000000000000000000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF0000FF0000FF
|
|
||||||
00FFFF0000FF0000FF0000FF0000FF0000FF00000000FFFF0000000000000000
|
|
||||||
000000000000000000FF00000000000000000000FFFF0000000000000000FF00
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
00000000000000FFFF0000FF00000000000000000000FFFF0000000000000000
|
|
||||||
000000000000000000FF0000000000000000000000000000FF00FFFF00000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
0000000000FF00000000000000FFFF00000000000000FFFF0000000000000000
|
|
||||||
000000000000000000FF0000000000000000FF00000000000000000000000000
|
|
||||||
FFFF00000000FFFF0000000000000000000000000000000000FF0000000000FF
|
|
||||||
00000000000000000000000000000000000000FFFF00FFFF0000000000000000
|
|
||||||
000000000000000000FF0000FF00000000000000000000000000000000000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800100008001000080010000800100008001000080010000800100008001
|
|
||||||
0000800100008001000080010000800100008001000080010000FFFF0000}
|
|
||||||
KeyPreview = True
|
|
||||||
OldCreateOrder = True
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnResize = FormResize
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object GrphPnl: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 394
|
|
||||||
Height = 422
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object GraphImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 392
|
|
||||||
Height = 420
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = EditPopup
|
|
||||||
OnDblClick = GraphImageDblClick
|
|
||||||
OnMouseDown = GraphImageMouseDown
|
|
||||||
OnMouseMove = GraphImageMouseMove
|
|
||||||
OnMouseUp = GraphImageMouseUp
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object StatusBar: TStatusBar
|
|
||||||
Left = 0
|
|
||||||
Top = 422
|
|
||||||
Width = 574
|
|
||||||
Height = 15
|
|
||||||
Panels = <
|
|
||||||
item
|
|
||||||
Width = 60
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 60
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 150
|
|
||||||
end>
|
|
||||||
SimplePanel = False
|
|
||||||
end
|
|
||||||
object ControlPanel: TPanel
|
|
||||||
Left = 394
|
|
||||||
Top = 0
|
|
||||||
Width = 180
|
|
||||||
Height = 422
|
|
||||||
Align = alRight
|
|
||||||
Alignment = taLeftJustify
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 2
|
|
||||||
DesignSize = (
|
|
||||||
180
|
|
||||||
422)
|
|
||||||
object lblTransform: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 128
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Transform'
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
end
|
|
||||||
object PrevPnl: TPanel
|
|
||||||
Left = 10
|
|
||||||
Top = 0
|
|
||||||
Width = 162
|
|
||||||
Height = 122
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object PreviewImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 160
|
|
||||||
Height = 120
|
|
||||||
Align = alClient
|
|
||||||
IncrementalDisplay = True
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object cbTransforms: TComboBox
|
|
||||||
Left = 75
|
|
||||||
Top = 125
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = cbTransformsChange
|
|
||||||
end
|
|
||||||
object PageControl: TPageControl
|
|
||||||
Left = 10
|
|
||||||
Top = 148
|
|
||||||
Width = 167
|
|
||||||
Height = 277
|
|
||||||
ActivePage = TabSheet2
|
|
||||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
|
||||||
MultiLine = True
|
|
||||||
TabIndex = 3
|
|
||||||
TabOrder = 2
|
|
||||||
TabStop = False
|
|
||||||
object TabSheet1: TTabSheet
|
|
||||||
Caption = 'Triangle'
|
|
||||||
object Label7: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 12
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Ax:'
|
|
||||||
end
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 36
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Ay:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 60
|
|
||||||
Width = 16
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Bx:'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 84
|
|
||||||
Width = 16
|
|
||||||
Height = 13
|
|
||||||
Caption = 'By:'
|
|
||||||
end
|
|
||||||
object Label11: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 108
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Cx:'
|
|
||||||
end
|
|
||||||
object Label12: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 132
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Cy:'
|
|
||||||
end
|
|
||||||
object txtAx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtAy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 32
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtBx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 56
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtBy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 80
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtCx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 104
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtCy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 128
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object chkPreserve: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 168
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Preserve weights'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 6
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object XForm: TTabSheet
|
|
||||||
Caption = 'Transform'
|
|
||||||
object lbla: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 12
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'a:'
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 36
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'b:'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 60
|
|
||||||
Width = 9
|
|
||||||
Height = 13
|
|
||||||
Caption = 'c:'
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 84
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'd:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 108
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'e:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 132
|
|
||||||
Width = 8
|
|
||||||
Height = 13
|
|
||||||
Caption = 'f:'
|
|
||||||
end
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 156
|
|
||||||
Width = 38
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Weight:'
|
|
||||||
end
|
|
||||||
object Label29: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 180
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Symmetry:'
|
|
||||||
end
|
|
||||||
object txtA: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtB: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 32
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtC: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 56
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtD: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 80
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtE: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 104
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtF: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 128
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtP: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 152
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 6
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtPExit
|
|
||||||
OnKeyPress = txtPKeyPress
|
|
||||||
end
|
|
||||||
object txtSymmetry: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 176
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 7
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtSymmetryExit
|
|
||||||
OnKeyPress = txtSymmetryKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object TabSheet3: TTabSheet
|
|
||||||
Caption = 'Variations'
|
|
||||||
object VEVars: TValueListEditor
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 159
|
|
||||||
Height = 231
|
|
||||||
Align = alClient
|
|
||||||
ScrollBars = ssVertical
|
|
||||||
TabOrder = 0
|
|
||||||
TitleCaptions.Strings = (
|
|
||||||
'Variation'
|
|
||||||
'Value')
|
|
||||||
OnExit = VEVarsExit
|
|
||||||
OnKeyPress = VEVarsKeyPress
|
|
||||||
OnValidate = VEVarsValidate
|
|
||||||
ColWidths = (
|
|
||||||
93
|
|
||||||
60)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object TabSheet2: TTabSheet
|
|
||||||
Caption = 'Colors'
|
|
||||||
ImageIndex = 3
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 0
|
|
||||||
Width = 145
|
|
||||||
Height = 73
|
|
||||||
Caption = 'Transform color'
|
|
||||||
TabOrder = 0
|
|
||||||
object scrlXFormColor: TScrollBar
|
|
||||||
Left = 8
|
|
||||||
Top = 48
|
|
||||||
Width = 129
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrlXFormColorChange
|
|
||||||
OnScroll = scrlXFormColorScroll
|
|
||||||
end
|
|
||||||
object pnlXFormColor: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Width = 65
|
|
||||||
Height = 25
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object txtXFormColor: TEdit
|
|
||||||
Left = 80
|
|
||||||
Top = 16
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 2
|
|
||||||
OnExit = txtXFormColorExit
|
|
||||||
OnKeyPress = txtXFormColorKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 80
|
|
||||||
Width = 145
|
|
||||||
Height = 137
|
|
||||||
Caption = 'Graph'
|
|
||||||
TabOrder = 1
|
|
||||||
object Label20: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 56
|
|
||||||
Width = 82
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Background color'
|
|
||||||
end
|
|
||||||
object Label21: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 96
|
|
||||||
Width = 89
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Reference triangle'
|
|
||||||
end
|
|
||||||
object pnlBackColor: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 72
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = pnlBackColorClick
|
|
||||||
end
|
|
||||||
object chkUseXFormColor: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Use transform color'
|
|
||||||
TabOrder = 1
|
|
||||||
OnClick = chkUseXFormColorClick
|
|
||||||
end
|
|
||||||
object chkFlameBack: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 36
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Use flame background'
|
|
||||||
TabOrder = 2
|
|
||||||
OnClick = chkFlameBackClick
|
|
||||||
end
|
|
||||||
object pnlReference: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 112
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clGray
|
|
||||||
TabOrder = 3
|
|
||||||
OnClick = pnlReferenceClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object EditPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 312
|
|
||||||
Top = 8
|
|
||||||
object mnuAutoZoom: TMenuItem
|
|
||||||
Caption = 'Auto Zoom'
|
|
||||||
Hint = 'Zooms the triangle display to the best fit.'
|
|
||||||
OnClick = mnuAutoZoomClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuDelete: TMenuItem
|
|
||||||
Caption = 'Delete'
|
|
||||||
Hint = 'Deletes the selected triangle.'
|
|
||||||
ImageIndex = 9
|
|
||||||
OnClick = mnuDeleteClick
|
|
||||||
end
|
|
||||||
object mnuDuplicate: TMenuItem
|
|
||||||
Caption = 'Duplicate'
|
|
||||||
Hint = 'Duplicates the selected triangle.'
|
|
||||||
OnClick = mnuDupClick
|
|
||||||
end
|
|
||||||
object MenuItem2: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuAdd: TMenuItem
|
|
||||||
Caption = 'Add'
|
|
||||||
Hint = 'Adds a new triangle.'
|
|
||||||
OnClick = mnuAddClick
|
|
||||||
end
|
|
||||||
object N4: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuFlipVertical: TMenuItem
|
|
||||||
Caption = 'Flip Vertical'
|
|
||||||
OnClick = mnuFlipVerticalClick
|
|
||||||
end
|
|
||||||
object mnuFlipHorizontal: TMenuItem
|
|
||||||
Caption = 'Flip Horizontal'
|
|
||||||
OnClick = mnuFlipHorizontalClick
|
|
||||||
end
|
|
||||||
object N5: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuVerticalFlipAll: TMenuItem
|
|
||||||
Caption = 'Flip All Vertical '
|
|
||||||
OnClick = mnuVerticalFlipAllClick
|
|
||||||
end
|
|
||||||
object mnuHorizintalFlipAll: TMenuItem
|
|
||||||
Caption = 'Flip All Horizontal'
|
|
||||||
OnClick = mnuHorizintalFlipAllClick
|
|
||||||
end
|
|
||||||
object MenuItem1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuLockSel: TMenuItem
|
|
||||||
Caption = 'Lock'
|
|
||||||
OnClick = mnuLockClick
|
|
||||||
end
|
|
||||||
object N6: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuUndo: TMenuItem
|
|
||||||
Caption = 'Undo'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 4
|
|
||||||
ShortCut = 16474
|
|
||||||
OnClick = mnuUndoClick
|
|
||||||
end
|
|
||||||
object mnuRedo: TMenuItem
|
|
||||||
Caption = 'Redo'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 5
|
|
||||||
ShortCut = 16473
|
|
||||||
OnClick = mnuRedoClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object QualityPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 344
|
|
||||||
Top = 8
|
|
||||||
object mnuLowQuality: TMenuItem
|
|
||||||
Caption = 'Low Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuLowQualityClick
|
|
||||||
end
|
|
||||||
object mnuMediumQuality: TMenuItem
|
|
||||||
Caption = 'Medium Quality'
|
|
||||||
Checked = True
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuMediumQualityClick
|
|
||||||
end
|
|
||||||
object mnuHighQuality: TMenuItem
|
|
||||||
Caption = 'High Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHighQualityClick
|
|
||||||
end
|
|
||||||
object N3: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuResetLocation: TMenuItem
|
|
||||||
Caption = 'Reset Location'
|
|
||||||
Checked = True
|
|
||||||
OnClick = mnuResetLocationClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
File diff suppressed because it is too large
Load Diff
@ -1,344 +0,0 @@
|
|||||||
object ExportDialog: TExportDialog
|
|
||||||
Left = 313
|
|
||||||
Top = 276
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Export Flame'
|
|
||||||
ClientHeight = 270
|
|
||||||
ClientWidth = 424
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poScreenCenter
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object btnOK: TButton
|
|
||||||
Left = 336
|
|
||||||
Top = 178
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&OK'
|
|
||||||
Default = True
|
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = btnOKClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 336
|
|
||||||
Top = 210
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 5
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Destination'
|
|
||||||
TabOrder = 2
|
|
||||||
object btnBrowse: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 16
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Browse...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnBrowseClick
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 48
|
|
||||||
Height = 13
|
|
||||||
Caption = 'File name:'
|
|
||||||
end
|
|
||||||
object txtFilename: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 20
|
|
||||||
Width = 281
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'txtFilename'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox3: TGroupBox
|
|
||||||
Left = 216
|
|
||||||
Top = 66
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 3
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 71
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Oversample:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Filter Radius:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 35
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Quality:'
|
|
||||||
end
|
|
||||||
object txtOversample: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 68
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '2'
|
|
||||||
OnChange = txtOversampleChange
|
|
||||||
end
|
|
||||||
object txtFilterRadius: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtFilterRadiusChange
|
|
||||||
end
|
|
||||||
object txtDensity: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = txtDensityChange
|
|
||||||
end
|
|
||||||
object udOversample: TUpDown
|
|
||||||
Left = 169
|
|
||||||
Top = 68
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtOversample
|
|
||||||
Min = 1
|
|
||||||
Max = 4
|
|
||||||
Position = 2
|
|
||||||
TabOrder = 3
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 66
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Size'
|
|
||||||
TabOrder = 4
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 28
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Width'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Height:'
|
|
||||||
end
|
|
||||||
object chkMaintain: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 76
|
|
||||||
Width = 161
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Maintain aspect ratio'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkMaintainClick
|
|
||||||
end
|
|
||||||
object cbWidth: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtWidthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'320'
|
|
||||||
'640'
|
|
||||||
'800'
|
|
||||||
'1024'
|
|
||||||
'1280'
|
|
||||||
'1600'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
object cbHeight: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = txtHeightChange
|
|
||||||
Items.Strings = (
|
|
||||||
'200'
|
|
||||||
'240'
|
|
||||||
'480'
|
|
||||||
'600'
|
|
||||||
'768'
|
|
||||||
'1024'
|
|
||||||
'1200'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox4: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 176
|
|
||||||
Width = 313
|
|
||||||
Height = 89
|
|
||||||
Caption = 'Hqi'
|
|
||||||
TabOrder = 5
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 42
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Batches:'
|
|
||||||
end
|
|
||||||
object Label7: TLabel
|
|
||||||
Left = 152
|
|
||||||
Top = 23
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Buffer depth:'
|
|
||||||
end
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 55
|
|
||||||
Width = 29
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Strips:'
|
|
||||||
end
|
|
||||||
object txtBatches: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '1'
|
|
||||||
OnChange = txtBatchesChange
|
|
||||||
end
|
|
||||||
object udBatches: TUpDown
|
|
||||||
Left = 121
|
|
||||||
Top = 20
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtBatches
|
|
||||||
Min = 1
|
|
||||||
Max = 10000
|
|
||||||
Position = 1
|
|
||||||
TabOrder = 1
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
object cmbDepth: TComboBox
|
|
||||||
Left = 224
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = cmbDepthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'16 bits'
|
|
||||||
'32 bits'
|
|
||||||
'64 bits')
|
|
||||||
end
|
|
||||||
object chkRender: TCheckBox
|
|
||||||
Left = 224
|
|
||||||
Top = 54
|
|
||||||
Width = 65
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Render'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object txtStrips: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 52
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '1'
|
|
||||||
OnChange = txtBatchesChange
|
|
||||||
end
|
|
||||||
object udStrips: TUpDown
|
|
||||||
Left = 121
|
|
||||||
Top = 52
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtStrips
|
|
||||||
Min = 1
|
|
||||||
Max = 512
|
|
||||||
Position = 1
|
|
||||||
TabOrder = 5
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'jpg'
|
|
||||||
Filter =
|
|
||||||
'JPEG Image (*.jpg)|*.jpg|PPM Image (*.ppm)|*.ppm|PNG Images (*.p' +
|
|
||||||
'ng)|*.png'
|
|
||||||
Left = 392
|
|
||||||
Top = 24
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,216 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormExport;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, Buttons, ComCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TExportDialog = class(TForm)
|
|
||||||
btnOK: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
btnBrowse: TSpeedButton;
|
|
||||||
Label10: TLabel;
|
|
||||||
txtFilename: TEdit;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
GroupBox3: TGroupBox;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
txtOversample: TEdit;
|
|
||||||
txtFilterRadius: TEdit;
|
|
||||||
txtDensity: TEdit;
|
|
||||||
udOversample: TUpDown;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
chkMaintain: TCheckBox;
|
|
||||||
cbWidth: TComboBox;
|
|
||||||
cbHeight: TComboBox;
|
|
||||||
GroupBox4: TGroupBox;
|
|
||||||
Label6: TLabel;
|
|
||||||
txtBatches: TEdit;
|
|
||||||
udBatches: TUpDown;
|
|
||||||
Label7: TLabel;
|
|
||||||
cmbDepth: TComboBox;
|
|
||||||
chkRender: TCheckBox;
|
|
||||||
Label8: TLabel;
|
|
||||||
txtStrips: TEdit;
|
|
||||||
udStrips: TUpDown;
|
|
||||||
procedure btnBrowseClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure txtWidthChange(Sender: TObject);
|
|
||||||
procedure chkMaintainClick(Sender: TObject);
|
|
||||||
procedure txtHeightChange(Sender: TObject);
|
|
||||||
procedure txtDensityChange(Sender: TObject);
|
|
||||||
procedure txtFilterRadiusChange(Sender: TObject);
|
|
||||||
procedure txtOversampleChange(Sender: TObject);
|
|
||||||
procedure txtBatchesChange(Sender: TObject);
|
|
||||||
procedure cmbDepthChange(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
Filename: string;
|
|
||||||
ImageWidth, ImageHeight, Oversample, Batches, Strips: Integer;
|
|
||||||
Sample_Density, Filter_Radius: double;
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
ExportDialog: TExportDialog;
|
|
||||||
Ratio: double;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
uses Global, Main;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TExportDialog.btnBrowseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.InitialDir := ExtractFileDir(txtFilename.text);
|
|
||||||
SaveDialog.Filename := txtFilename.Text;
|
|
||||||
case ExportFileFormat of
|
|
||||||
0: SaveDialog.DefaultExt := 'jpg';
|
|
||||||
1: SaveDialog.DefaultExt := 'ppm';
|
|
||||||
end;
|
|
||||||
SaveDialog.filterIndex := ExportFileFormat;
|
|
||||||
SaveDialog.Filter := 'JPEG image (*.jpg) |*.jpg|PPM image (*.ppm)|*.ppm|PNG Image (*.png)|*.png';
|
|
||||||
if SaveDialog.Execute then
|
|
||||||
begin
|
|
||||||
case SaveDialog.FilterIndex of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.ppm');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
end;
|
|
||||||
ExportFileFormat := SaveDialog.FilterIndex;
|
|
||||||
renderPath := ExtractFilePath(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
txtFilename.Text := Filename;
|
|
||||||
cbWidth.Text := IntToStr(MainCp.Width);
|
|
||||||
cbHeight.Text := IntToStr(MainCp.Height);
|
|
||||||
ImageWidth := MainCp.Width;
|
|
||||||
ImageHeight := MainCp.Height;
|
|
||||||
txtDensity.text := FloatToStr(Sample_density);
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4));
|
|
||||||
txtFilterRadius.text := FloatToStr(Filter_Radius);
|
|
||||||
txtOversample.text := IntToSTr(Oversample);
|
|
||||||
udOversample.Position := Oversample;
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Filename := txtFilename.text;
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtWidthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
if chkMaintain.checked and cbWidth.Focused then
|
|
||||||
begin
|
|
||||||
ImageHeight := Round(ImageWidth / ratio);
|
|
||||||
cbHeight.Text := IntToStr(ImageHeight)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.chkMaintainClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtHeightChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
if chkMaintain.checked and cbHeight.Focused then
|
|
||||||
begin
|
|
||||||
ImageWidth := Round(ImageHeight * ratio);
|
|
||||||
cbWidth.Text := IntToStr(ImageWidth)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtDensityChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Sample_Density := StrToFloat(txtDensity.Text);
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4));
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtFilterRadiusChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Filter_Radius := StrToFloat(txtFilterRadius.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtOversampleChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtOversample.Text) > udOversample.Max then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Max);
|
|
||||||
if StrToInt(txtOversample.Text) < udOversample.Min then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Min);
|
|
||||||
try
|
|
||||||
Oversample := StrToInt(txtOversample.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtBatchesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtBatches.Text) > udBatches.Max then
|
|
||||||
txtBatches.Text := IntToStr(udBatches.Max);
|
|
||||||
if StrToInt(txtBatches.Text) < udBatches.Min then
|
|
||||||
txtBatches.Text := IntToStr(udBatches.Min);
|
|
||||||
try
|
|
||||||
Batches := StrToInt(txtBatches.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.cmbDepthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4))
|
|
||||||
else
|
|
||||||
txtBatches.text := IntToStr(1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
object FavoritesForm: TFavoritesForm
|
|
||||||
Left = 457
|
|
||||||
Top = 267
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Favorite Scripts'
|
|
||||||
ClientHeight = 237
|
|
||||||
ClientWidth = 303
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poScreenCenter
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object PageControl1: TPageControl
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 289
|
|
||||||
Height = 193
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object ListView: TListView
|
|
||||||
Left = 16
|
|
||||||
Top = 16
|
|
||||||
Width = 193
|
|
||||||
Height = 177
|
|
||||||
Columns = <
|
|
||||||
item
|
|
||||||
Caption = 'Name'
|
|
||||||
Width = 189
|
|
||||||
end>
|
|
||||||
HideSelection = False
|
|
||||||
ReadOnly = True
|
|
||||||
RowSelect = True
|
|
||||||
ShowColumnHeaders = False
|
|
||||||
TabOrder = 1
|
|
||||||
ViewStyle = vsReport
|
|
||||||
OnChange = ListViewChange
|
|
||||||
end
|
|
||||||
object btnAdd: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 16
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Add'
|
|
||||||
TabOrder = 2
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnAddClick
|
|
||||||
end
|
|
||||||
object btnRemove: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 48
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Remove'
|
|
||||||
TabOrder = 3
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnRemoveClick
|
|
||||||
end
|
|
||||||
object btnMoveUp: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 80
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Move &Up'
|
|
||||||
TabOrder = 4
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnMoveUpClick
|
|
||||||
end
|
|
||||||
object btnMoveDown: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 112
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Move &Down'
|
|
||||||
TabOrder = 5
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnMoveDownClick
|
|
||||||
end
|
|
||||||
object btnOK: TButton
|
|
||||||
Left = 144
|
|
||||||
Top = 208
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&OK'
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = btnOKClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 224
|
|
||||||
Top = 208
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Cancel'
|
|
||||||
TabOrder = 7
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,206 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormFavorites;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, ComCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TFavoritesForm = class(TForm)
|
|
||||||
PageControl1: TPageControl;
|
|
||||||
ListView: TListView;
|
|
||||||
btnAdd: TButton;
|
|
||||||
btnRemove: TButton;
|
|
||||||
btnMoveUp: TButton;
|
|
||||||
btnMoveDown: TButton;
|
|
||||||
btnOK: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure btnAddClick(Sender: TObject);
|
|
||||||
procedure btnRemoveClick(Sender: TObject);
|
|
||||||
procedure ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
procedure btnMoveUpClick(Sender: TObject);
|
|
||||||
procedure btnMoveDownClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
Faves: TStringList;
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
FavoritesForm: TFavoritesForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Global, ScriptForm;
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
ListItem: TListItem;
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
Faves.Text := Favorites.text;
|
|
||||||
ListView.Items.Clear;
|
|
||||||
for i := 0 to Favorites.Count - 1 do
|
|
||||||
begin
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
s := ExtractFileName(Favorites[i]);
|
|
||||||
s := Copy(s, 0, length(s) - 4);
|
|
||||||
Listitem.Caption := s;
|
|
||||||
end;
|
|
||||||
if Favorites.Count <> 0 then ListView.Selected := ListView.Items[0];
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Close
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
Faves.SaveToFile(AppPath + 'favorites');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Faves := TStringList.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Faves.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnAddClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
ListItem: TListItem;
|
|
||||||
i : integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
ScriptEditor.MainOpenDialog.InitialDir := ScriptPath;
|
|
||||||
if ScriptEditor.mainOpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
for i := 0 to Faves.Count - 1 do
|
|
||||||
begin
|
|
||||||
if ScriptEditor.MainOpenDialog.Filename = Faves[i] then exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Faves.add(ScriptEditor.MainOpenDialog.Filename);
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
s := ExtractFileName(ScriptEditor.MainOpenDialog.Filename);
|
|
||||||
s := Copy(s, 0, length(s) - 4);
|
|
||||||
Listitem.Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[ListView.Items.Count - 1];
|
|
||||||
btnRemove.Enabled := True;
|
|
||||||
end;
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnRemoveClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
Faves.Delete(i);
|
|
||||||
ListView.Items[i].delete;
|
|
||||||
if ListView.Items.Count <> 0 then
|
|
||||||
if i < ListView.Items.Count then
|
|
||||||
ListView.Selected := ListView.Items[i]
|
|
||||||
else
|
|
||||||
ListView.Selected := ListView.Items[ListView.Items.Count - 1]
|
|
||||||
else
|
|
||||||
btnRemove.Enabled := False;
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
begin
|
|
||||||
if (Item.Index = ListView.Items.Count - 1) then
|
|
||||||
btnMoveDown.Enabled := False
|
|
||||||
else
|
|
||||||
btnMoveDown.Enabled := True;
|
|
||||||
if (Item.Index = 0) then
|
|
||||||
btnMoveUp.Enabled := False
|
|
||||||
else
|
|
||||||
btnMoveUp.Enabled := True;
|
|
||||||
|
|
||||||
if (ListView.Items.Count <= 1) then
|
|
||||||
begin
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnMoveUpClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
s := faves[i];
|
|
||||||
Faves[i] := Faves[i - 1];
|
|
||||||
Faves[i - 1] := s;
|
|
||||||
s := ListView.Selected.Caption;
|
|
||||||
ListView.Selected.Caption := Listview.Items[i - 1].Caption;
|
|
||||||
ListView.Items[i - 1].Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[i - 1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnMoveDownClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
s := faves[i];
|
|
||||||
Faves[i] := Faves[i + 1];
|
|
||||||
Faves[i + 1] := s;
|
|
||||||
s := ListView.Selected.Caption;
|
|
||||||
ListView.Selected.Caption := Listview.Items[i + 1].Caption;
|
|
||||||
ListView.Items[i + 1].Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[i + 1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,431 +0,0 @@
|
|||||||
object RenderForm: TRenderForm
|
|
||||||
Left = 280
|
|
||||||
Top = 279
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'RenderForm'
|
|
||||||
ClientHeight = 400
|
|
||||||
ClientWidth = 424
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000005F97013B5500000000000000
|
|
||||||
0000000000000000000000000000000000000000000000005F97013B55000000
|
|
||||||
000000005F97181818000000000000005F971818180000000000000000000000
|
|
||||||
00000000000000005F97013B55005F97005F97005F971818181A0155005F9700
|
|
||||||
5F97181818000000000000000000000000000000005F97E4F2FB0088D9005F97
|
|
||||||
1A015537BBFD0088D91A0155005F970088D90088D91818180000000000000000
|
|
||||||
00000000005F97005F97E4F2FB0088D985E8FF85E8FF85E8FF37BBFD0088D9E4
|
|
||||||
F2FB181818005F97000000000000000000000000005F97013B55005F9785E8FF
|
|
||||||
37BBFD005F97005F9737BBFD85E8FF0088D9005F97005F970000000000000000
|
|
||||||
00000000013B5585E8FF85E8FF85E8FF005F9737BBFD0088D9005F9785E8FF85
|
|
||||||
E8FFE4F2FB005F97000000000000000000000000000000005F970088D9005F97
|
|
||||||
005F9785E8FF0088D9005F97005F970088D9005F970000000000000000000000
|
|
||||||
00000000000000005F97E8E8E80088D9005F9785E8FF0088D9005F970088D9E4
|
|
||||||
F2FB005F970000000000000000000000000000000000000088D9005F97000000
|
|
||||||
005F9785E8FF0088D9005F970000000088D90088D90000000000000000000000
|
|
||||||
00000000000000000000000000000000005F97E4F2FBE4F2FB005F9700000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000005F97005F970000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000FFFF0000FE7F0000E6670000E0070000C0030000C0030000C0030000C003
|
|
||||||
0000E0070000E0070000E4270000FC3F0000FE7F0000FFFF0000FFFF0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCloseQuery = FormCloseQuery
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object ProgressBar: TProgressBar
|
|
||||||
Left = 8
|
|
||||||
Top = 330
|
|
||||||
Width = 409
|
|
||||||
Height = 13
|
|
||||||
Min = 0
|
|
||||||
Max = 100
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object btnRender: TButton
|
|
||||||
Left = 256
|
|
||||||
Top = 352
|
|
||||||
Width = 75
|
|
||||||
Height = 23
|
|
||||||
Caption = 'Render'
|
|
||||||
Default = True
|
|
||||||
TabOrder = 5
|
|
||||||
OnClick = btnRenderClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 344
|
|
||||||
Top = 350
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Close'
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 69
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Destination'
|
|
||||||
TabOrder = 1
|
|
||||||
object btnBrowse: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 16
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Browse...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnBrowseClick
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 48
|
|
||||||
Height = 13
|
|
||||||
Caption = 'File name:'
|
|
||||||
end
|
|
||||||
object txtFilename: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 20
|
|
||||||
Width = 281
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'txtFilename'
|
|
||||||
OnChange = txtFilenameChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 130
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Size'
|
|
||||||
TabOrder = 2
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 28
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Width'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Height:'
|
|
||||||
end
|
|
||||||
object chkMaintain: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 76
|
|
||||||
Width = 161
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Maintain aspect ratio'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkMaintainClick
|
|
||||||
end
|
|
||||||
object cbWidth: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtWidthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'320'
|
|
||||||
'640'
|
|
||||||
'800'
|
|
||||||
'1024'
|
|
||||||
'1280'
|
|
||||||
'1600'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
object cbHeight: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = txtHeightChange
|
|
||||||
Items.Strings = (
|
|
||||||
'200'
|
|
||||||
'240'
|
|
||||||
'480'
|
|
||||||
'600'
|
|
||||||
'768'
|
|
||||||
'1024'
|
|
||||||
'1200'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox3: TGroupBox
|
|
||||||
Left = 216
|
|
||||||
Top = 130
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 3
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 71
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Oversample:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Filter Radius:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 35
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Quality:'
|
|
||||||
end
|
|
||||||
object txtOversample: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 68
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '2'
|
|
||||||
OnChange = txtOversampleChange
|
|
||||||
end
|
|
||||||
object txtFilterRadius: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtFilterRadiusChange
|
|
||||||
end
|
|
||||||
object txtDensity: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = txtDensityChange
|
|
||||||
end
|
|
||||||
object udOversample: TUpDown
|
|
||||||
Left = 169
|
|
||||||
Top = 68
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtOversample
|
|
||||||
Min = 1
|
|
||||||
Max = 4
|
|
||||||
Position = 2
|
|
||||||
TabOrder = 3
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox4: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 238
|
|
||||||
Width = 409
|
|
||||||
Height = 81
|
|
||||||
Caption = 'Memory usage'
|
|
||||||
TabOrder = 4
|
|
||||||
object lblApproxMem: TLabel
|
|
||||||
Left = 202
|
|
||||||
Top = 46
|
|
||||||
Width = 119
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Approx. memory required:'
|
|
||||||
end
|
|
||||||
object lblPhysical: TLabel
|
|
||||||
Left = 202
|
|
||||||
Top = 20
|
|
||||||
Width = 121
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Available phycial memory:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 46
|
|
||||||
Width = 86
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Maximum memory:'
|
|
||||||
end
|
|
||||||
object cbMaxMemory: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
Items.Strings = (
|
|
||||||
'32'
|
|
||||||
'64'
|
|
||||||
'128'
|
|
||||||
'256'
|
|
||||||
'512')
|
|
||||||
end
|
|
||||||
object chkLimitMem: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 20
|
|
||||||
Width = 145
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Limit memory usage'
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkLimitMemClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object btnPause: TButton
|
|
||||||
Left = 168
|
|
||||||
Top = 350
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Pause'
|
|
||||||
TabOrder = 7
|
|
||||||
OnClick = btnPauseClick
|
|
||||||
end
|
|
||||||
object chkSave: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 354
|
|
||||||
Width = 113
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Save parameters'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 8
|
|
||||||
end
|
|
||||||
object GroupBox5: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Preset'
|
|
||||||
TabOrder = 9
|
|
||||||
object btnSavePreset: TSpeedButton
|
|
||||||
Left = 344
|
|
||||||
Top = 18
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Save Preset'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnSavePresetClick
|
|
||||||
end
|
|
||||||
object btnDeletePreset: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 18
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Delete Preset'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnDeletePresetClick
|
|
||||||
end
|
|
||||||
object cmbPreset: TComboBox
|
|
||||||
Left = 10
|
|
||||||
Top = 20
|
|
||||||
Width = 327
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = cmbPresetChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object StatusBar: TStatusBar
|
|
||||||
Left = 0
|
|
||||||
Top = 381
|
|
||||||
Width = 424
|
|
||||||
Height = 19
|
|
||||||
Panels = <
|
|
||||||
item
|
|
||||||
Width = 161
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 150
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 50
|
|
||||||
end>
|
|
||||||
SimplePanel = False
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
Left = 368
|
|
||||||
Top = 256
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,675 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormRender;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ControlPoint, RenderThread, ComCtrls, Math, Buttons, Registry, cmap,
|
|
||||||
ImageDLLLoader, ICOLoader, PNGLOader, HIPSLoader, BMPLoader, PCXLoader, WMFLoader,
|
|
||||||
LinarBitmap, ExtCtrls, FileUtils, JPEGLoader, JPEG;
|
|
||||||
|
|
||||||
const
|
|
||||||
WM_THREAD_COMPLETE = WM_APP + 5437;
|
|
||||||
WM_THREAD_TERMINATE = WM_APP + 5438;
|
|
||||||
|
|
||||||
type
|
|
||||||
TRenderForm = class(TForm)
|
|
||||||
ProgressBar: TProgressBar;
|
|
||||||
btnRender: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
btnBrowse: TSpeedButton;
|
|
||||||
Label10: TLabel;
|
|
||||||
txtFilename: TEdit;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
GroupBox3: TGroupBox;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
txtOversample: TEdit;
|
|
||||||
txtFilterRadius: TEdit;
|
|
||||||
txtDensity: TEdit;
|
|
||||||
GroupBox4: TGroupBox;
|
|
||||||
lblApproxMem: TLabel;
|
|
||||||
lblPhysical: TLabel;
|
|
||||||
Label9: TLabel;
|
|
||||||
cbMaxMemory: TComboBox;
|
|
||||||
chkLimitMem: TCheckBox;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
btnPause: TButton;
|
|
||||||
chkSave: TCheckBox;
|
|
||||||
GroupBox5: TGroupBox;
|
|
||||||
btnSavePreset: TSpeedButton;
|
|
||||||
cmbPreset: TComboBox;
|
|
||||||
btnDeletePreset: TSpeedButton;
|
|
||||||
udOversample: TUpDown;
|
|
||||||
chkMaintain: TCheckBox;
|
|
||||||
cbWidth: TComboBox;
|
|
||||||
cbHeight: TComboBox;
|
|
||||||
StatusBar: TStatusBar;
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure btnRenderClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure txtWidthChange(Sender: TObject);
|
|
||||||
procedure txtHeightChange(Sender: TObject);
|
|
||||||
procedure txtOversampleChange(Sender: TObject);
|
|
||||||
procedure chkLimitMemClick(Sender: TObject);
|
|
||||||
procedure txtFilenameChange(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure txtDensityChange(Sender: TObject);
|
|
||||||
procedure txtFilterRadiusChange(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure btnPauseClick(Sender: TObject);
|
|
||||||
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
||||||
procedure btnSavePresetClick(Sender: TObject);
|
|
||||||
procedure btnBrowseClick(Sender: TObject);
|
|
||||||
procedure btnDeletePresetClick(Sender: TObject);
|
|
||||||
procedure cmbPresetChange(Sender: TObject);
|
|
||||||
procedure chkMaintainClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
|
|
||||||
StartTime: TDateTime;
|
|
||||||
Remainder: TDateTime;
|
|
||||||
|
|
||||||
procedure HandleThreadCompletion(var Message: TMessage);
|
|
||||||
message WM_THREAD_COMPLETE;
|
|
||||||
procedure HandleThreadTermination(var Message: TMessage);
|
|
||||||
message WM_THREAD_TERMINATE;
|
|
||||||
procedure ListPresets;
|
|
||||||
public
|
|
||||||
Renderer: TRenderThread;
|
|
||||||
PhysicalMemory, ApproxMemory: int64;
|
|
||||||
ColorMap: TColorMap;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Filename: string;
|
|
||||||
ImageWidth, ImageHeight, Oversample: Integer;
|
|
||||||
zoom, Sample_Density, Brightness, Gamma, Vibrancy, Filter_Radius: double;
|
|
||||||
center: array[0..1] of double;
|
|
||||||
|
|
||||||
procedure OnProgress(prog: double);
|
|
||||||
procedure ShowMemoryStatus;
|
|
||||||
procedure ResetControls;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
RenderForm: TRenderForm;
|
|
||||||
Ratio: double;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, SavePreset, FileCtrl;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TRenderForm.ResetControls;
|
|
||||||
begin
|
|
||||||
txtFilename.Enabled := true;
|
|
||||||
btnBrowse.Enabled := true;
|
|
||||||
cbWidth.Enabled := true;
|
|
||||||
cbHeight.Enabled := true;
|
|
||||||
txtDensity.Enabled := true;
|
|
||||||
txtFilterRadius.enabled := true;
|
|
||||||
txtOversample.Enabled := true;
|
|
||||||
chkLimitMem.Enabled := true;
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.Checked;
|
|
||||||
btnRender.Enabled := true;
|
|
||||||
cmbPreset.enabled := true;
|
|
||||||
chkSave.enabled := true;
|
|
||||||
btnSavePreset.enabled := true;
|
|
||||||
btnDeletePreset.enabled := true;
|
|
||||||
btnCancel.Caption := 'Close';
|
|
||||||
btnPause.enabled := false;
|
|
||||||
ProgressBar.Position := 0;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.ShowMemoryStatus;
|
|
||||||
var
|
|
||||||
GlobalMemoryInfo: TMemoryStatus; // holds the global memory status information
|
|
||||||
begin
|
|
||||||
GlobalMemoryInfo.dwLength := SizeOf(GlobalMemoryInfo);
|
|
||||||
GlobalMemoryStatus(GlobalMemoryInfo);
|
|
||||||
PhysicalMemory := GlobalMemoryInfo.dwAvailPhys div 1048576;
|
|
||||||
ApproxMemory := 32 * Oversample * Oversample;
|
|
||||||
ApproxMemory := ApproxMemory * ImageHeight * ImageWidth;
|
|
||||||
ApproxMemory := ApproxMemory div 1048576;
|
|
||||||
// ApproxMemory := (32 * Oversample * Oversample * ImageHeight * ImageWidth) div 1048576; // or 1000000?
|
|
||||||
lblPhysical.Caption := 'Physical memory available: ' + Format('%d', [PhysicalMemory]) + ' MB';
|
|
||||||
lblApproxMem.Caption := 'Approximate memory required: ' + Format('%d', [ApproxMemory]) + ' MB';
|
|
||||||
if ApproxMemory > PhysicalMemory then
|
|
||||||
; // show warning icon.
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.HandleThreadCompletion(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
with TLinearBitmap.Create do
|
|
||||||
try
|
|
||||||
Assign(Renderer.GetImage);
|
|
||||||
JPEGLoader.Default.Quality := JPEGQuality;
|
|
||||||
SaveToFile(RenderForm.FileName);
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
ResetControls;
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.HandleThreadTermination(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
ResetControls;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.OnProgress(prog: double);
|
|
||||||
var
|
|
||||||
Elapsed: TDateTime;
|
|
||||||
e, r: string;
|
|
||||||
begin
|
|
||||||
|
|
||||||
prog := (Renderer.Slice + Prog) / Renderer.NrSlices;
|
|
||||||
|
|
||||||
if ShowProgress then ProgressBar.Position := round(100 * prog);
|
|
||||||
|
|
||||||
Elapsed := Now - StartTime;
|
|
||||||
e := Format('Elapsed %2.2d:%2.2d:%2.2d.%2.2d',
|
|
||||||
[Trunc(Elapsed * 24),
|
|
||||||
Trunc((Elapsed * 24 - Trunc(Elapsed * 24)) * 60),
|
|
||||||
Trunc((Elapsed * 24 * 60 - Trunc(Elapsed * 24 * 60)) * 60),
|
|
||||||
Trunc((Elapsed * 24 * 60 * 60 - Trunc(Elapsed * 24 * 60 * 60)) * 100)]);
|
|
||||||
|
|
||||||
if prog > 0 then
|
|
||||||
Remainder := Min(Remainder, Elapsed * (power(1 / prog, 1.2) - 1));
|
|
||||||
|
|
||||||
r := Format('Remaining %2.2d:%2.2d:%2.2d.%2.2d',
|
|
||||||
[Trunc(Remainder * 24),
|
|
||||||
Trunc((Remainder * 24 - Trunc(Remainder * 24)) * 60),
|
|
||||||
Trunc((Remainder * 24 * 60 - Trunc(Remainder * 24 * 60)) * 60),
|
|
||||||
Trunc((Remainder * 24 * 60 * 60 - Trunc(Remainder * 24 * 60 * 60)) * 100)]);
|
|
||||||
|
|
||||||
StatusBar.Panels[0].text := e;
|
|
||||||
StatusBar.Panels[1].text := r;
|
|
||||||
StatusBar.Panels[2].text := 'Slice ' + IntToStr(Renderer.Slice + 1) + ' of ' + IntToStr(Renderer.nrSlices);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
ImageDLLLoader.Default.FindDLLs(ProgramPath);
|
|
||||||
cbMaxMemory.ItemIndex := 1;
|
|
||||||
MainForm.Buttons.GetBitmap(2, btnSavePreset.Glyph);
|
|
||||||
MainForm.Buttons.GetBitmap(9, btnDeletePreset.Glyph);
|
|
||||||
ListPresets;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if assigned(Renderer) then Renderer.Free;
|
|
||||||
cp.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnRenderClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
t: string;
|
|
||||||
begin
|
|
||||||
ImageWidth := StrToInt(cbWidth.text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.text);
|
|
||||||
if (not chkLimitMem.checked) and (ApproxMemory > PhysicalMemory) then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('You do not have enough memory for this render. Please use memory limiting.', 'Apophysis', 48);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if chkLimitMem.checked and (PhysicalMemory < StrToInt(cbMaxMemory.text)) and (Approxmemory > PhysicalMemory) then begin
|
|
||||||
Application.MessageBox('You do not have enough memory for this render. Please use a lower Maximum memory setting.', 'Apophysis', 48);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
t := txtFilename.Text;
|
|
||||||
if t = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox(PChar('Please enter a file name.'), 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
if FileExists(t) then
|
|
||||||
if Application.MessageBox(PChar(t + ' already exists.' + chr(13) + 'Do you want to replace it?'),
|
|
||||||
'Apophysis', 52) = ID_NO then exit;
|
|
||||||
if not DirectoryExists(ExtractFileDir(t)) then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('The directory does not exist.', 'Apophyis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
{Check for invalid values }
|
|
||||||
if sample_density <= 0 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Sample Density value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if filter_radius <= 0 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Filter Radius value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if Oversample < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Oversmple value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if ImageWidth < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid image width', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if ImageHeight < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid image height', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
txtFilename.Enabled := false;
|
|
||||||
btnBrowse.Enabled := false;
|
|
||||||
cbWidth.Enabled := False;
|
|
||||||
cbHeight.Enabled := false;
|
|
||||||
txtDensity.Enabled := false;
|
|
||||||
txtFilterRadius.enabled := false;
|
|
||||||
txtOversample.Enabled := false;
|
|
||||||
chkLimitMem.Enabled := false;
|
|
||||||
cbMaxMemory.Enabled := false;
|
|
||||||
cmbPreset.enabled := false;
|
|
||||||
chkSave.enabled := false;
|
|
||||||
btnSavePreset.enabled := false;
|
|
||||||
btnDeletePreset.enabled := false;
|
|
||||||
btnRender.Enabled := false;
|
|
||||||
btnPause.enabled := true;
|
|
||||||
btnCancel.Caption := 'Stop';
|
|
||||||
StartTime := Now;
|
|
||||||
Remainder := 365;
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if Assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if not Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
cp.sample_density := Sample_density;
|
|
||||||
cp.spatial_oversample := Oversample;
|
|
||||||
cp.spatial_filter_radius := Filter_Radius;
|
|
||||||
AdjustScale(cp, ImageWidth, ImageHeight);
|
|
||||||
renderPath := ExtractFilePath(Filename);
|
|
||||||
if chkSave.checked then
|
|
||||||
MainForm.SaveXMLFlame(cp, ExtractFileName(FileName), renderPath + 'renders.flame');
|
|
||||||
Renderer := TRenderThread.Create;
|
|
||||||
if chkLimitMem.checked then
|
|
||||||
(*
|
|
||||||
if cbMaxMemory.ItemIndex = 0 then Renderer.MaxMem := 32
|
|
||||||
else if cbMaxMemory.ItemIndex = 1 then Renderer.MaxMem := 64
|
|
||||||
else if cbMaxMemory.ItemIndex = 2 then Renderer.MaxMem := 128
|
|
||||||
else if cbMaxMemory.ItemIndex = 3 then Renderer.MaxMem := 256
|
|
||||||
else if cbMaxMemory.ItemIndex = 4 then Renderer.MaxMem := 512;
|
|
||||||
*)
|
|
||||||
Renderer.MaxMem := StrToInt(cbMaxMemory.text);
|
|
||||||
Renderer.OnProgress := OnProgress;
|
|
||||||
Renderer.TargetHandle := RenderForm.Handle;
|
|
||||||
Renderer.Compatibility := compatibility;
|
|
||||||
Renderer.SetCP(cp);
|
|
||||||
Renderer.Priority := tpLower;
|
|
||||||
Renderer.Resume;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Render', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
RenderForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
RenderForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
SaveDialog.FileName := Filename;
|
|
||||||
case renderFileFormat of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.bmp');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
end;
|
|
||||||
txtOversample.Text := IntToStr(renderOversample);
|
|
||||||
txtFilterRadius.Text := FloatToStr(renderFilterRadius);
|
|
||||||
cbWidth.Text := IntToStr(MainForm.Image.Width);
|
|
||||||
cbHeight.Text := IntToStr(MainForm.Image.Height);
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
txtDensity.Text := FloatToStr(renderDensity);
|
|
||||||
ShowMemoryStatus;
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtWidthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
if chkMaintain.checked and cbWidth.Focused then
|
|
||||||
begin
|
|
||||||
ImageHeight := Round(ImageWidth / ratio);
|
|
||||||
cbHeight.Text := IntToStr(ImageHeight)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtHeightChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
if chkMaintain.checked and cbHeight.Focused then
|
|
||||||
begin
|
|
||||||
ImageWidth := Round(ImageHeight * ratio);
|
|
||||||
cbWidth.Text := IntToStr(ImageWidth)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtOversampleChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtOversample.Text) > udOversample.Max then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Max);
|
|
||||||
if StrToInt(txtOversample.Text) < udOversample.Min then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Min);
|
|
||||||
try
|
|
||||||
Oversample := StrToInt(txtOversample.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.chkLimitMemClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.Checked;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtFilenameChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
filename := txtFilename.text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
Renderer.Terminate
|
|
||||||
else
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtDensityChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Sample_Density := StrToFloat(txtDensity.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtFilterRadiusChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Filter_Radius := StrToFloat(txtFilterRadius.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Ext: string;
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Ext := ExtractFileExt(txtFileName.Text);
|
|
||||||
if Ext = '.bmp' then renderFileFormat := 1;
|
|
||||||
if Ext = '.png' then renderFileFormat := 2;
|
|
||||||
if (Ext = '.jpg') or (Ext = '.jpeg') then renderFileFormat := 3;
|
|
||||||
renderFilterRadius := Filter_Radius;
|
|
||||||
renderWidth := ImageWidth;
|
|
||||||
renderHeight := ImageHeight;
|
|
||||||
renderDensity := Sample_density;
|
|
||||||
renderOversample := Oversample;
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Render', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', RenderForm.Top);
|
|
||||||
Registry.WriteInteger('Left', RenderForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnPauseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
if Renderer.Suspended = false then
|
|
||||||
begin
|
|
||||||
renderer.suspend;
|
|
||||||
btnPause.caption := 'Resume';
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderer.resume;
|
|
||||||
btnPause.caption := 'Pause';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormCloseQuery(Sender: TObject;
|
|
||||||
var CanClose: Boolean);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
if Application.MessageBox('Do you want to abort the current render?', 'Apophysis', 36) = ID_NO then
|
|
||||||
CanClose := False
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnSavePresetClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
IFile: TextFile;
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
SavePresetForm.txtPresetName.Text := cmbPreset.Text;
|
|
||||||
if SavePresetForm.ShowModal = mrOK then
|
|
||||||
begin
|
|
||||||
Title := Trim(SavePresetForm.txtPresetName.Text);
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
try
|
|
||||||
AssignFile(IFile, FileName);
|
|
||||||
if FileExists(FileName) then
|
|
||||||
begin
|
|
||||||
if EntryExists(Title, FileName) then DeleteEntry(Title, FileName);
|
|
||||||
Append(IFile);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
ReWrite(IFile);
|
|
||||||
WriteLn(IFile, Title + ' {');
|
|
||||||
WriteLn(IFile, Trim(cbWidth.text));
|
|
||||||
WriteLn(IFile, Trim(cbHeight.text));
|
|
||||||
WriteLn(IFile, Trim(txtDensity.text));
|
|
||||||
WriteLn(IFile, Trim(txtFilterRadius.text));
|
|
||||||
WriteLn(IFile, Trim(txtOversample.text));
|
|
||||||
WriteLn(IFile, ExtractFileExt(txtFileName.Text));
|
|
||||||
if chkLimitMem.Checked then
|
|
||||||
WriteLn(IFile, 'true')
|
|
||||||
else
|
|
||||||
WriteLn(IFile, 'false');
|
|
||||||
WriteLn(IFile, IntToStr(cbMaxMemory.ItemIndex));
|
|
||||||
WriteLn(IFile, cbMaxMemory.Text);
|
|
||||||
WriteLn(IFile, '}');
|
|
||||||
WriteLn(IFile, '');
|
|
||||||
CloseFile(IFile);
|
|
||||||
except on EInOutError do
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Cannot save preset.', 'Apophysis', 16);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ListPresets;
|
|
||||||
cmbPreset.ItemIndex := cmbPreset.Items.count - 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnBrowseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.Filename := Filename;
|
|
||||||
case renderFileFormat of
|
|
||||||
1: SaveDialog.DefaultExt := 'bmp';
|
|
||||||
2: SaveDialog.DefaultExt := 'png';
|
|
||||||
3: SaveDialog.DefaultExt := 'jpg';
|
|
||||||
end;
|
|
||||||
SaveDialog.filterIndex := renderFileFormat;
|
|
||||||
SaveDialog.Filter := 'Bitmap image (*.bmp) | *.bmp|PNG Image (*.png)|*.png|JPEG image (*.jpg;*.jpeg)|*.jpg;*.jpeg';
|
|
||||||
if SaveDialog.Execute then
|
|
||||||
begin
|
|
||||||
case SaveDialog.FilterIndex of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.bmp');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
end;
|
|
||||||
renderFileFormat := SaveDialog.FilterIndex;
|
|
||||||
renderPath := ExtractFilePath(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.ListPresets;
|
|
||||||
{ List identifiers in file }
|
|
||||||
var
|
|
||||||
i, p: integer;
|
|
||||||
Title: string;
|
|
||||||
FStrings: TStringList;
|
|
||||||
begin
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
if fileExists(AppPath + 'render presets') then
|
|
||||||
try
|
|
||||||
FStrings.LoadFromFile(AppPath + 'render presets');
|
|
||||||
cmbPreset.Clear;
|
|
||||||
if (Pos('{', FStrings.Text) <> 0) then
|
|
||||||
begin
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
begin
|
|
||||||
p := Pos('{', FStrings[i]);
|
|
||||||
if (p <> 0) then
|
|
||||||
begin
|
|
||||||
Title := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
if Title <> '' then
|
|
||||||
begin
|
|
||||||
cmbPreset.Items.add(Copy(FStrings[i], 1, p - 1));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnDeletePresetClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
Title := Trim(cmbPreset.Text);
|
|
||||||
if Title = '' then exit;
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
if EntryExists(Title, FileName) then DeleteEntry(Title, FileName);
|
|
||||||
ListPresets;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.cmbPresetChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
chk: boolean;
|
|
||||||
i, j: integer;
|
|
||||||
FStrings: TStringList;
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
Title := Trim(cmbPreset.Text);
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
if Title = '' then exit;
|
|
||||||
if EntryExists(Title, FileName) then
|
|
||||||
begin
|
|
||||||
// Load preset
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
FStrings.LoadFromFile(Filename);
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
if Pos(LowerCase(Title) + ' {', Lowercase(FStrings[i])) <> 0 then
|
|
||||||
begin
|
|
||||||
chk := chkMaintain.checked;
|
|
||||||
chkMaintain.Checked := False;
|
|
||||||
j := i + 1;
|
|
||||||
cbWidth.Text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
cbHeight.text := FStrings[j];
|
|
||||||
chkMaintain.Checked := chk;
|
|
||||||
inc(j);
|
|
||||||
txtDensity.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtFilterRadius.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtOversample.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtFileName.Text := ChangeFileExt(txtFileName.Text, FStrings[j]);
|
|
||||||
inc(j);
|
|
||||||
if Fstrings[j] = 'true' then chkLimitMem.checked := true else chkLimitMem.checked := false;
|
|
||||||
inc(j);
|
|
||||||
cbMaxMemory.ItemIndex := StrToInt(Fstrings[j]);
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.checked;
|
|
||||||
inc(j);
|
|
||||||
cbMaxMemory.Text := Fstrings[j];
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.chkMaintainClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
object FullscreenForm: TFullscreenForm
|
|
||||||
Left = 438
|
|
||||||
Top = 324
|
|
||||||
BorderStyle = bsNone
|
|
||||||
Caption = 'FullscreenForm'
|
|
||||||
ClientHeight = 133
|
|
||||||
ClientWidth = 188
|
|
||||||
Color = clBlack
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnKeyPress = FormKeyPress
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Image: TImage
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 188
|
|
||||||
Height = 133
|
|
||||||
Align = alClient
|
|
||||||
OnDblClick = ImageDblClick
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,180 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Fullscreen;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
Menus, ControlPoint, RenderThread, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TFullscreenForm = class(TForm)
|
|
||||||
Image: TImage;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure ImageDblClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
Remainder, StartTime, Now: Extended;
|
|
||||||
Renderer: TRenderThread;
|
|
||||||
procedure showTaskbar;
|
|
||||||
procedure hideTaskbar;
|
|
||||||
procedure DrawFlame;
|
|
||||||
procedure OnProgress(prog: double);
|
|
||||||
procedure HandleThreadCompletion(var Message: TMessage);
|
|
||||||
message WM_THREAD_COMPLETE;
|
|
||||||
procedure HandleThreadTermination(var Message: TMessage);
|
|
||||||
message WM_THREAD_TERMINATE;
|
|
||||||
public
|
|
||||||
Calculate : boolean;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Zoom: double;
|
|
||||||
center: array[0..1] of double;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
FullscreenForm: TFullscreenForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Math, Global;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
|
|
||||||
procedure TFullscreenForm.DrawFlame;
|
|
||||||
begin
|
|
||||||
AdjustScale(cp, Image.Width, Image.Height);
|
|
||||||
// cp.Zoom := MainForm.Zoom;
|
|
||||||
// cp.center[0] := MainForm.center[0];
|
|
||||||
// cp.center[1] := MainForm.center[1];
|
|
||||||
cp.sample_density := defSampleDensity;
|
|
||||||
StartTime := Now;
|
|
||||||
Remainder := 1;
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if Assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if not Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer := TRenderThread.Create;
|
|
||||||
Renderer.TargetHandle := Handle;
|
|
||||||
Renderer.OnProgress := OnProgress;
|
|
||||||
Renderer.Compatibility := Compatibility;
|
|
||||||
Renderer.SetCP(cp);
|
|
||||||
Renderer.Resume;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.HandleThreadCompletion(var Message: TMessage);
|
|
||||||
var
|
|
||||||
bm: TBitmap;
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
bm := TBitmap.Create;
|
|
||||||
bm.assign(Renderer.GetImage);
|
|
||||||
Image.Picture.Graphic := bm;
|
|
||||||
|
|
||||||
// Canvas.StretchDraw(Rect(0, 0, ClientWidth, ClientHeight), bm);
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
bm.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.HandleThreadTermination(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.OnProgress(prog: double);
|
|
||||||
begin
|
|
||||||
prog := (Renderer.Slice + Prog) / Renderer.NrSlices;
|
|
||||||
Canvas.Brush.Color := clTeal;
|
|
||||||
Canvas.FrameRect(Rect(5, ClientHeight - 15, ClientWidth - 5, ClientHeight - 5));
|
|
||||||
Canvas.Brush.Color := clTeal;
|
|
||||||
Canvas.Fillrect(Rect(7, ClientHeight - 13, 7 + Round(prog * (ClientWidth - 14)), ClientHeight - 7));
|
|
||||||
Canvas.Brush.Color := clBlack;
|
|
||||||
Canvas.Fillrect(Rect(7 + Round(prog * (ClientWidth - 14)), ClientHeight - 13, ClientWidth - 7, ClientHeight - 7));
|
|
||||||
Application.ProcessMessages;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.hideTaskbar;
|
|
||||||
var wndHandle: THandle;
|
|
||||||
wndClass: array[0..50] of Char;
|
|
||||||
begin
|
|
||||||
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
|
|
||||||
wndHandle := FindWindow(@wndClass[0], nil);
|
|
||||||
ShowWindow(wndHandle, SW_HIDE);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.showTaskbar;
|
|
||||||
var wndHandle: THandle;
|
|
||||||
wndClass: array[0..50] of Char;
|
|
||||||
begin
|
|
||||||
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
|
|
||||||
wndHandle := FindWindow(@wndClass[0], nil);
|
|
||||||
ShowWindow(wndHandle, SW_RESTORE);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.mnuShowFull.enabled := true;
|
|
||||||
HideTaskbar;
|
|
||||||
if calculate then
|
|
||||||
DrawFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
ShowTaskbar;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if assigned(Renderer) then Renderer.Free;
|
|
||||||
cp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
begin
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.ImageDblClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,379 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
{$D-,L-,O+,Q-,R-,Y-,S-}
|
|
||||||
unit Global;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses SysUtils, Classes, SyncObjs, Controls, Graphics, Math, MyTypes, controlpoint;
|
|
||||||
type
|
|
||||||
EFormatInvalid = class(Exception);
|
|
||||||
|
|
||||||
{ Weight manipulation }
|
|
||||||
{ Triangle transformations }
|
|
||||||
function triangle_area(t: TTriangle): double;
|
|
||||||
function transform_affine(const t: TTriangle; const Triangles: TTriangles): boolean;
|
|
||||||
function line_dist(x, y, x1, y1, x2, y2: double): double;
|
|
||||||
function dist(x1, y1, x2, y2: double): double;
|
|
||||||
{ Parsing functions }
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{ Palette and gradient functions }
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
{ Misc }
|
|
||||||
function det(a, b, c, d: double): double;
|
|
||||||
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
|
||||||
var a, b, e: double): double;
|
|
||||||
|
|
||||||
|
|
||||||
const
|
|
||||||
APP_NAME: string = 'Apophysis 2.0';
|
|
||||||
prefilter_white: integer = 1024;
|
|
||||||
eps: double = 1E-10;
|
|
||||||
White_level = 200;
|
|
||||||
clyellow1 = TColor($17FCFF);
|
|
||||||
clplum2 = TColor($ECA9E6);
|
|
||||||
clSlateGray = TColor($837365);
|
|
||||||
FT_BMP = 1; FT_PNG = 2; FT_JPG = 3;
|
|
||||||
|
|
||||||
var
|
|
||||||
MainTriangles: TTriangles;
|
|
||||||
ConfirmDelete: boolean; // Flag confirmation of entry deletion
|
|
||||||
// FlameTitle: string;
|
|
||||||
Transforms: integer; // Count of Tranforms
|
|
||||||
AppPath: string; // Path of applicatio file
|
|
||||||
OpenFile: string; // Name of currently open file
|
|
||||||
CanDrawOnResize: boolean;
|
|
||||||
PreserveWeights: boolean;
|
|
||||||
{UPR Options}
|
|
||||||
UPRSampleDensity: integer;
|
|
||||||
UPRFilterRadius: double;
|
|
||||||
UPROversample: integer;
|
|
||||||
UPRAdjustDensity: boolean;
|
|
||||||
UPRColoringIdent: string;
|
|
||||||
UPRColoringFile: string;
|
|
||||||
UPRFormulaIdent: string;
|
|
||||||
UPRFormulaFile: string;
|
|
||||||
UPRWidth: Integer;
|
|
||||||
UPRHeight: Integer;
|
|
||||||
ImageFolder: string;
|
|
||||||
UPRPath: string; // Name and folder of last UPR file
|
|
||||||
UpdateGradient: boolean;
|
|
||||||
cmap_index: integer; // Index to current gradient
|
|
||||||
Variation: TVariation; // Current variation
|
|
||||||
NumTries, TryLength: integer; // Settings for smooth palette
|
|
||||||
SmoothPaletteFile: string;
|
|
||||||
{ Display }
|
|
||||||
defSampleDensity, defPreviewDensity: Double;
|
|
||||||
defGamma, defBrightness, defVibrancy, defFilterRadius: Double;
|
|
||||||
defOversample: integer;
|
|
||||||
{ Render }
|
|
||||||
renderDensity, renderFilterRadius: double;
|
|
||||||
renderOversample, renderWidth, renderHeight: integer;
|
|
||||||
renderPath: string;
|
|
||||||
JPEGQuality: integer;
|
|
||||||
renderFileFormat: integer;
|
|
||||||
{ Defaults }
|
|
||||||
SavePath, SmoothPalettePath: string;
|
|
||||||
RandomPrefix, RandomDate: string;
|
|
||||||
RandomIndex: integer;
|
|
||||||
FlameFile, GradientFile, GradientEntry, FlameEntry: string;
|
|
||||||
ParamFolder: string;
|
|
||||||
prevLowQuality, prevMediumQuality, prevHighQuality: double;
|
|
||||||
defSmoothPaletteFile: string;
|
|
||||||
BrowserPath: string; // Stored path of browser open dialog
|
|
||||||
EditPrevQual, MutatePrevQual, AdjustPrevQual: Integer;
|
|
||||||
randMinTransforms, randMaxTransforms: integer;
|
|
||||||
mutantMinTransforms, mutantMaxTransforms: integer;
|
|
||||||
KeepBackground: boolean;
|
|
||||||
randGradient: Integer;
|
|
||||||
defFlameFile: string;
|
|
||||||
SymmetryType: integer;
|
|
||||||
SymmetryOrder: integer;
|
|
||||||
Variations: array[0..NVARS - 1] of boolean;
|
|
||||||
VariationOptions: integer;
|
|
||||||
{ For random gradients }
|
|
||||||
MinNodes, MaxNodes, MinHue, MaxHue, MinSat, MaxSat, MinLum, MaxLum: integer;
|
|
||||||
FixedReference: boolean;
|
|
||||||
BatchSize: Integer;
|
|
||||||
Compatibility: integer; //0 = original, 1 = Drave's
|
|
||||||
Favorites: TStringList;
|
|
||||||
Script: string;
|
|
||||||
ScriptPath: string;
|
|
||||||
SheepServer, SheepNick, SheepURL, SheepPW, HqiPath: string;
|
|
||||||
ExportBatches, ExportOversample, ExportWidth, ExportHeight, ExportFileFormat: Integer;
|
|
||||||
ExportFilter, ExportDensity: Double;
|
|
||||||
OpenFileType: TFileType;
|
|
||||||
ResizeOnLoad: Boolean;
|
|
||||||
ShowProgress: Boolean;
|
|
||||||
defLibrary: string;
|
|
||||||
LimitVibrancy: Boolean;
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses dialogs, Main;
|
|
||||||
|
|
||||||
{ IFS }
|
|
||||||
|
|
||||||
function det(a, b, c, d: double): double;
|
|
||||||
begin
|
|
||||||
Result := (a * d - b * c);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
|
||||||
var a, b, e: double): double;
|
|
||||||
var
|
|
||||||
det1: double;
|
|
||||||
begin
|
|
||||||
det1 := x1 * det(y2, 1.0, z2, 1.0) - x2 * det(y1, 1.0, z1, 1.0)
|
|
||||||
+ 1 * det(y1, y2, z1, z2);
|
|
||||||
if (det1 = 0.0) then
|
|
||||||
begin
|
|
||||||
Result := det1;
|
|
||||||
EXIT;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
a := (x1h * det(y2, 1.0, z2, 1.0) - x2 * det(y1h, 1.0, z1h, 1.0)
|
|
||||||
+ 1 * det(y1h, y2, z1h, z2)) / det1;
|
|
||||||
b := (x1 * det(y1h, 1.0, z1h, 1.0) - x1h * det(y1, 1.0, z1, 1.0)
|
|
||||||
+ 1 * det(y1, y1h, z1, z1h)) / det1;
|
|
||||||
e := (x1 * det(y2, y1h, z2, z1h) - x2 * det(y1, y1h, z1, z1h)
|
|
||||||
+ x1h * det(y1, y2, z1, z2)) / det1;
|
|
||||||
a := Round6(a);
|
|
||||||
b := Round6(b);
|
|
||||||
e := Round6(e);
|
|
||||||
Result := det1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function dist(x1, y1, x2, y2: double): double;
|
|
||||||
var
|
|
||||||
d2: double;
|
|
||||||
begin
|
|
||||||
{ From FDesign source
|
|
||||||
{ float pt_pt_distance(float x1, float y1, float x2, float y2) }
|
|
||||||
d2 := (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
|
|
||||||
if (d2 = 0.0) then
|
|
||||||
begin
|
|
||||||
Result := 0.0;
|
|
||||||
exit;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := sqrt(d2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function line_dist(x, y, x1, y1, x2, y2: double): double;
|
|
||||||
var
|
|
||||||
a, b, e, c: double;
|
|
||||||
begin
|
|
||||||
if ((x = x1) and (y = y1)) then
|
|
||||||
a := 0.0
|
|
||||||
else
|
|
||||||
a := sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
|
|
||||||
if ((x = x2) and (y = y2)) then
|
|
||||||
b := 0.0
|
|
||||||
else
|
|
||||||
b := sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
|
|
||||||
if ((x1 = x2) and (y1 = y2)) then
|
|
||||||
e := 0.0
|
|
||||||
else
|
|
||||||
e := sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
|
|
||||||
if ((a * a + e * e) < (b * b)) then
|
|
||||||
Result := a
|
|
||||||
else if ((b * b + e * e) < (a * a)) then
|
|
||||||
Result := b
|
|
||||||
else if (e <> 0.0) then
|
|
||||||
begin
|
|
||||||
c := (b * b - a * a - e * e) / (-2 * e);
|
|
||||||
if ((a * a - c * c) < 0.0) then
|
|
||||||
Result := 0.0
|
|
||||||
else
|
|
||||||
Result := sqrt(a * a - c * c);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := a;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function transform_affine(const t: TTriangle; const Triangles: TTriangles): boolean;
|
|
||||||
var
|
|
||||||
ra, rb, rc, a, b, c: double;
|
|
||||||
begin
|
|
||||||
Result := True;
|
|
||||||
ra := dist(Triangles[-1].y[0], Triangles[-1].x[0],
|
|
||||||
Triangles[-1].y[1], Triangles[-1].x[1]);
|
|
||||||
rb := dist(Triangles[-1].y[1], Triangles[-1].x[1],
|
|
||||||
Triangles[-1].y[2], Triangles[-1].x[2]);
|
|
||||||
rc := dist(Triangles[-1].y[2], Triangles[-1].x[2],
|
|
||||||
Triangles[-1].y[0], Triangles[-1].x[0]);
|
|
||||||
a := dist(t.y[0], t.x[0], t.y[1], t.x[1]);
|
|
||||||
b := dist(t.y[1], t.x[1], t.y[2], t.x[2]);
|
|
||||||
c := dist(t.y[2], t.x[2], t.y[0], t.x[0]);
|
|
||||||
if (a > ra) then
|
|
||||||
Result := False
|
|
||||||
else if (b > rb) then
|
|
||||||
Result := False
|
|
||||||
else if (c > rc) then
|
|
||||||
Result := False
|
|
||||||
else if ((a = ra) and (b = rb) and (c = rc)) then
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function triangle_area(t: TTriangle): double;
|
|
||||||
var
|
|
||||||
base, height: double;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
base := dist(t.x[0], t.y[0], t.x[1], t.y[1]);
|
|
||||||
height := line_dist(t.x[2], t.y[2], t.x[1], t.y[1],
|
|
||||||
t.x[0], t.y[0]);
|
|
||||||
if (base < 1.0) then
|
|
||||||
Result := height
|
|
||||||
else if (height < 1.0) then
|
|
||||||
Result := base
|
|
||||||
else
|
|
||||||
Result := 0.5 * base * height;
|
|
||||||
except on E: EMathError do
|
|
||||||
Result := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ Weight manipulation }
|
|
||||||
|
|
||||||
|
|
||||||
{ Parse }
|
|
||||||
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
var
|
|
||||||
p: integer;
|
|
||||||
begin
|
|
||||||
p := Pos('=', token);
|
|
||||||
Delete(Token, 1, p);
|
|
||||||
Result := Token;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{Changes tab characters in a string to spaces}
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to Length(str) do
|
|
||||||
begin
|
|
||||||
if str[i] = #9 then
|
|
||||||
begin
|
|
||||||
Delete(str, i, 1);
|
|
||||||
Insert(#32, str, i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := str;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ Palette and gradient functions }
|
|
||||||
|
|
||||||
function RGBToColor(Pal: TMapPalette; index: integer): Tcolor;
|
|
||||||
begin
|
|
||||||
{ Converts the RGB values from a palette index to the TColor type ...
|
|
||||||
could maybe change it to SHLs }
|
|
||||||
Result := (Pal.Blue[index] * 65536) + (Pal.Green[index] * 256)
|
|
||||||
+ Pal.Red[index];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure rgb2hsv(const rgb: array of double; out hsv: array of double);
|
|
||||||
var
|
|
||||||
maxval, minval: double;
|
|
||||||
del: double;
|
|
||||||
begin
|
|
||||||
Maxval := Max(rgb[0], Max(rgb[1], rgb[2]));
|
|
||||||
Minval := Min(rgb[0], Min(rgb[1], rgb[2]));
|
|
||||||
|
|
||||||
hsv[2] := maxval; // v
|
|
||||||
|
|
||||||
if (Maxval > 0) and (maxval <> minval) then begin
|
|
||||||
del := maxval - minval;
|
|
||||||
hsv[1] := del / Maxval; //s
|
|
||||||
|
|
||||||
hsv[0] := 0;
|
|
||||||
if (rgb[0] > rgb[1]) and (rgb[0] > rgb[2]) then begin
|
|
||||||
hsv[0] := (rgb[1] - rgb[2]) / del;
|
|
||||||
end else if (rgb[1] > rgb[2]) then begin
|
|
||||||
hsv[0] := 2 + (rgb[2] - rgb[0]) / del;
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 4 + (rgb[0] - rgb[1]) / del;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if hsv[0] < 0 then
|
|
||||||
hsv[0] := hsv[0] + 6;
|
|
||||||
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 0;
|
|
||||||
hsv[1] := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure hsv2rgb(const hsv: array of double; out rgb: array of double);
|
|
||||||
var
|
|
||||||
j: integer;
|
|
||||||
f, p, q, t, v: double;
|
|
||||||
begin
|
|
||||||
j := floor(hsv[0]);
|
|
||||||
f := hsv[0] - j;
|
|
||||||
v := hsv[2];
|
|
||||||
p := hsv[2] * (1 - hsv[1]);
|
|
||||||
q := hsv[2] * (1 - hsv[1] * f);
|
|
||||||
t := hsv[2] * (1 - hsv[1] * (1 - f));
|
|
||||||
|
|
||||||
case j of
|
|
||||||
0: begin rgb[0] := v; rgb[1] := t; rgb[2] := p; end;
|
|
||||||
1: begin rgb[0] := q; rgb[1] := v; rgb[2] := p; end;
|
|
||||||
2: begin rgb[0] := p; rgb[1] := v; rgb[2] := t; end;
|
|
||||||
3: begin rgb[0] := p; rgb[1] := q; rgb[2] := v; end;
|
|
||||||
4: begin rgb[0] := t; rgb[1] := p; rgb[2] := v; end;
|
|
||||||
5: begin rgb[0] := v; rgb[1] := p; rgb[2] := t; end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
var
|
|
||||||
FileStrings: TStringList;
|
|
||||||
GradStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
FileStrings := TStringList.Create;
|
|
||||||
GradStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
FileStrings.LoadFromFile(FileName);
|
|
||||||
for i := 0 to FileStrings.count - 1 do
|
|
||||||
if Pos(Entry + ' ', Trim(FileStrings[i])) = 1 then break;
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
until Pos('}', FileStrings[i]) <> 0;
|
|
||||||
GetGradient := GradStrings.Text;
|
|
||||||
except on exception do
|
|
||||||
Result := '';
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
GradStrings.Free;
|
|
||||||
FileStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,488 +0,0 @@
|
|||||||
object GradientForm: TGradientForm
|
|
||||||
Left = 565
|
|
||||||
Top = 216
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'Gradient'
|
|
||||||
ClientHeight = 172
|
|
||||||
ClientWidth = 372
|
|
||||||
Color = clBtnFace
|
|
||||||
DragMode = dmAutomatic
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000DA7F48DE7F46E68C56F1A273FDBA92FFCDB1FFE1CFFFF4EDE3F2FCA2
|
|
||||||
D5F862B9F339A1F0000000000000000000000000DA7D46DD7D41E68952F09F6F
|
|
||||||
FCB88FFFCDAFFFE1CEFFF4EEE2F2FD9FD4F85EB6F3349FF00000000000000000
|
|
||||||
00000000D97D45DD7C42E58750F09E6EFCB88FFFCCAFFFE0CEFFF4EDE2F2FD9F
|
|
||||||
D4F85DB6F4339FEF000000000000000000000000D97D45DD7D42E58851F09E6E
|
|
||||||
FCB88FFFCDAFFFE1CEFFF4EDE2F2FD9FD4F85DB6F3339FEF0000000000000000
|
|
||||||
00000000D97D45DD7D41E68851F09E6EFDB88FFFCCAFFFE1CEFFF4EDE2F2FD9F
|
|
||||||
D4F85EB6F3329FEF000000000000000000000000D97D45DD7C42E68851F19E6E
|
|
||||||
FDB78FFFCDAFFFE1CEFFF4EEE2F2FD9FD4F85EB6F4329FEF0000000000000000
|
|
||||||
00000000D97D45DD7D42E68851F19F6EFCB88FFFCCAFFFE0CEFFF4EDE1F2FD9F
|
|
||||||
D4F85DB7F3339FEF000000000000000000000000D97D45DD7D42E58850F19F6E
|
|
||||||
FDB78FFFCDAFFFE0CFFFF4EDE1F2FD9FD4F85DB6F3329FEF0000000000000000
|
|
||||||
00000000DA7D46DD7C41E68952F19E6EFDB88FFFCDAFFFE0CEFFF4EEE1F2FD9F
|
|
||||||
D4F85EB6F3339FF0000000000000000000000000DA7F48DE7F46E68C56F0A173
|
|
||||||
FCBA93FFCEB1FFE1D0FFF4EDE2F2FDA3D5F862B8F338A1F00000000000000000
|
|
||||||
00000000DB834EE08752E89563F3A97EFDC09CFFD2B8FFE4D4FFF5EFE4F3FDAA
|
|
||||||
D9F96FBEF449AAF1000000000000000000000000DD8A58E39565ECA57AF5B692
|
|
||||||
FDCAABFFD9C3FFE8DBFFF7F2E8F5FDB7DFFA85C8F763B6F20000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800100008001000080010000800100008001000080010000800100008001
|
|
||||||
0000800100008001000080010000800100008001000080010000FFFF0000}
|
|
||||||
OldCreateOrder = True
|
|
||||||
Position = poDefault
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object pnlPalette: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 102
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 0
|
|
||||||
object GradientImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 370
|
|
||||||
Height = 100
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = PopupMenu
|
|
||||||
Stretch = True
|
|
||||||
OnDblClick = mnuRandomizeClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object pnlControls: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 102
|
|
||||||
Width = 372
|
|
||||||
Height = 70
|
|
||||||
Align = alBottom
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 1
|
|
||||||
object btnMenu: TSpeedButton
|
|
||||||
Left = 8
|
|
||||||
Top = 10
|
|
||||||
Width = 57
|
|
||||||
Height = 22
|
|
||||||
Caption = 'Rotate'
|
|
||||||
Flat = True
|
|
||||||
PopupMenu = Popup
|
|
||||||
OnClick = btnMenuClick
|
|
||||||
end
|
|
||||||
object lblVal: TLabel
|
|
||||||
Left = 344
|
|
||||||
Top = 16
|
|
||||||
Width = 6
|
|
||||||
Height = 13
|
|
||||||
Caption = '0'
|
|
||||||
end
|
|
||||||
object btnOpen: TSpeedButton
|
|
||||||
Left = 312
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Gradient Browser'
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
76030000424D7603000000000000360000002800000011000000100000000100
|
|
||||||
18000000000040030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FF00FF00FFFF00FF000000FFF5F0FFF1E9FFEFE6
|
|
||||||
FFEFE6FFF0E7FFF1E8FFF1E9FFF3EBFFF3ECFFF4EDFFF6F0000000FF00FFFF00
|
|
||||||
FF00FF00FFFF00FF000000FFF4EDFFEEE4FFEBDFFFEBDFFFEBE0FFECE2FFEDE2
|
|
||||||
FFEEE4FFEFE5FFEFE6FFF1EA000000FF00FFFF00FF00FF00FFFF00FF000000FF
|
|
||||||
F1E9CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208FFEDE3
|
|
||||||
000000FF00FFFF00FF00FF00FFFF00FF000000FFEFE6CD5208E26518EB7A37FF
|
|
||||||
A772FFD1B2FFF7EDC2E9FF42ADF7CD5208FFE9DC000000FF00FFFF00FF00FF00
|
|
||||||
FFFF00FF000000FFEDE2CD5208E16519E97835FFA770FFD1B2FFF7ECC2E9FF40
|
|
||||||
ADF7CD5208FFE5D6000000FF00FFFF00FF00FF00FFFF00FF000000FFEBDFCD52
|
|
||||||
08E16518EB7836FFA770FFD1B2FFF7ECC2E9FF42ADF7CD5208FFE1D0000000FF
|
|
||||||
00FFFF00FF00FF00FFFF00FF000000FFE9DBCD5208E16519EC7935FFA770FFD0
|
|
||||||
B2FFF7ECC2E9FF40AEF7CD5208FFDFCD000000FF00FFFF00FF00FF00FFFF00FF
|
|
||||||
000000FFE7D8CD5208E16519EB7935FFA570FFD1B2FFF7ECC2E9FF40ADF7CD52
|
|
||||||
08FFE1D0000000FF00FFFF00FF00FF00FFFF00FF000000FFE4D5CD5208E3651A
|
|
||||||
EB7A39FFA874FFD1B3FFF7ECC4E9FF44AEF7CD5208FFE9DC000000FF00FFFF00
|
|
||||||
FF00FF00FFFF00FF000000FFE3D1CD5208ED7935F99457FFBC8DFFE1C5FFFFF9
|
|
||||||
000000000000000000000000000000FF00FFFF00FF00FF00FFFF00FF000000FF
|
|
||||||
E1CFCD5208CD5208CD5208CD5208CD5208CD5208000000E17D41EB925E000000
|
|
||||||
FF00FFFF00FFFF00FF00FF00FFFF00FF000000FFE2D1FFD7BFFFD0B4FFCEB1FF
|
|
||||||
CFB3FFD0B4FFD3B8000000F5A779000000FF00FFFF00FFFF00FFFF00FF00FF00
|
|
||||||
FFFF00FF000000FFE7DAFFE2D0FFDECBFFDECAFFDDC9FFDECAFFDFCD00000000
|
|
||||||
0000FF00FFFF00FFFF00FFFF00FFFF00FF00FF00FFFF00FF0000000000000000
|
|
||||||
00000000000000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00}
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnOpenClick
|
|
||||||
end
|
|
||||||
object btnSmoothPalette: TSpeedButton
|
|
||||||
Left = 336
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Smooth Palette'
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000FF00FFFF00FF000000
|
|
||||||
374BA83A53AB3E5DB14368B74876BF4E84C65493CE5BA3D661B2DE67C0E66CCE
|
|
||||||
EC71DAF3000000FF00FFFF00FF000000374BA83A53AB3E5DB14368B74876BF4E
|
|
||||||
84C65593CE5BA2D661B2DE67C0E66CCEED71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5DB14369B84876BE4F84C65593CE5BA3D661B1DE67C1E66CCD
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A53AB3E5CB14369B74876BE4E
|
|
||||||
84C65494CE5BA2D661B2DE66C1E56CCEEC71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A53AC3E5DB14368B74975BE4F84C65593CE5AA2D661B2DE67C0E56CCE
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A52AC3E5DB14368B84976BF4E
|
|
||||||
84C65493CE5BA3D661B2DE66C0E56CCEEC71D9F3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5CB14369B74975BE4F84C65494CD5BA2D661B1DE66C0E56CCE
|
|
||||||
ED71DAF3000000FF00FFFF00FF000000374BA83A53AC3E5CB14368B74876BF4E
|
|
||||||
84C65493CE5BA2D660B2DE67C0E56DCEEC71D9F3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5CB24368B74975BE4E84C65594CE5AA3D661B2DE67C1E66DCE
|
|
||||||
EC71D9F3000000FF00FFFF00FF000000374BA83A52AC3E5CB14369B74875BF4F
|
|
||||||
84C65493CE5AA3D661B2DE66C0E66DCEEC71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5DB14368B74976BF4F84C65593CE5BA3D660B2DE67C0E56CCD
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A53AC3E5CB14268B74876BF4F
|
|
||||||
84C65593CE5BA3D661B2DE67C1E66CCEED71DAF3000000FF00FFFF00FF000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = mnuSmoothPaletteClick
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 43
|
|
||||||
Width = 57
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Preset'
|
|
||||||
end
|
|
||||||
object btnPaste: TSpeedButton
|
|
||||||
Left = 288
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
|
|
||||||
0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FF
|
|
||||||
FFFFE39A6FFFFFFFE3996CE2996DE3996DFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE29566E39363FFFFFFE39262E29363FFFFFF000000FF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE3915FE28C58FFFFFFFFFFFFE29364FFFFFF000000FF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000
|
|
||||||
00000000000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE29160FFFFFFFFFFFF000000FFFFFF000000FF00FFFF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000
|
|
||||||
00FF00FFFF00FFFF00FFFF00FF00000056B9F500000000000000000000000000
|
|
||||||
0000000000000000000000000000000000FF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
56B9F5000000BBE5F9BBE5F9BBE5F9BBE5F9BBE5F9BBE5F900000056B9F50000
|
|
||||||
00FF00FFFF00FFFF00FFFF00FF00000056B9F556B9F5000000BBE5F900000000
|
|
||||||
0000BBE5F900000056B9F556B9F5000000FF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000000000000000000000BBE5F9BBE5F9000000000000000000000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000
|
|
||||||
0000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
OnClick = btnPasteClick
|
|
||||||
end
|
|
||||||
object btnCopy: TSpeedButton
|
|
||||||
Left = 264
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFE39A6FFFFFFFE3996CE2
|
|
||||||
996DE3996DFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FFFF00FF000000FFFFFFE29566E39363000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE39A6FFFFFFFE3996CE2996DE399
|
|
||||||
6DFFFFFF000000FF00FFFF00FFFF00FF000000FFFFFFE3915FE28C58000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE29566E39363FFFFFFE39262E293
|
|
||||||
63FFFFFF000000FF00FFFF00FFFF00FF000000FFFFFFE29160FFFFFF000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE3915FE28C58FFFFFFFFFFFFE293
|
|
||||||
64FFFFFF000000FF00FFFF00FFFF00FF000000000000000000000000000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000FFFFFFE29160FFFFFFFFFFFF000000FFFF
|
|
||||||
FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
OnClick = btnCopyClick
|
|
||||||
end
|
|
||||||
object cmbPalette: TComboBox
|
|
||||||
Left = 72
|
|
||||||
Top = 42
|
|
||||||
Width = 177
|
|
||||||
Height = 19
|
|
||||||
Style = csOwnerDrawFixed
|
|
||||||
Color = clBlack
|
|
||||||
DropDownCount = 20
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWhite
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
ItemHeight = 13
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = False
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = cmbPaletteChange
|
|
||||||
OnDrawItem = cmbPaletteDrawItem
|
|
||||||
Items.Strings = (
|
|
||||||
'south-sea-bather'
|
|
||||||
'sky-flesh'
|
|
||||||
'blue-bather'
|
|
||||||
'no-name'
|
|
||||||
'pillows'
|
|
||||||
'mauve-splat'
|
|
||||||
'facial-treescape 6'
|
|
||||||
'fasion-bug'
|
|
||||||
'leafy-face'
|
|
||||||
'mouldy-sun'
|
|
||||||
'sunny-harvest'
|
|
||||||
'peach-tree'
|
|
||||||
'fire-dragon'
|
|
||||||
'ice-dragon'
|
|
||||||
'german-landscape'
|
|
||||||
'no-name'
|
|
||||||
'living-mud-bomb'
|
|
||||||
'cars'
|
|
||||||
'unhealthy-tan'
|
|
||||||
'daffodil'
|
|
||||||
'rose'
|
|
||||||
'healthy-skin'
|
|
||||||
'orange'
|
|
||||||
'white-ivy'
|
|
||||||
'summer-makeup'
|
|
||||||
'glow-buzz'
|
|
||||||
'deep-water'
|
|
||||||
'afternoon-beach'
|
|
||||||
'dim-beach'
|
|
||||||
'cloudy-brick'
|
|
||||||
'burning-wood'
|
|
||||||
'aquatic-garden'
|
|
||||||
'no-name'
|
|
||||||
'fall-quilt'
|
|
||||||
'night-blue-sky'
|
|
||||||
'shadow-iris'
|
|
||||||
'solid-sky'
|
|
||||||
'misty-field'
|
|
||||||
'wooden-highlight'
|
|
||||||
'jet-tundra'
|
|
||||||
'pastel-lime'
|
|
||||||
'hell'
|
|
||||||
'indian-coast'
|
|
||||||
'dentist-decor'
|
|
||||||
'greenland'
|
|
||||||
'purple-dress'
|
|
||||||
'no-name'
|
|
||||||
'spring-flora'
|
|
||||||
'andi'
|
|
||||||
'gig-o835'
|
|
||||||
'rie02'
|
|
||||||
'rie05'
|
|
||||||
'rie11'
|
|
||||||
'etretat.ppm'
|
|
||||||
'the-hollow-needle-at-etretat.ppm'
|
|
||||||
'rouen-cathedral-sunset.ppm'
|
|
||||||
'the-houses-of-parliament.ppm'
|
|
||||||
'starry-night.ppm'
|
|
||||||
'water-lilies-sunset.ppm'
|
|
||||||
'gogh.chambre-arles.ppm'
|
|
||||||
'gogh.entrance.ppm'
|
|
||||||
'gogh.the-night-cafe.ppm'
|
|
||||||
'gogh.vegetable-montmartre.ppm'
|
|
||||||
'matisse.bonheur-vivre.ppm'
|
|
||||||
'matisse.flowers.ppm'
|
|
||||||
'matisse.lecon-musique.ppm'
|
|
||||||
'modigliani.nude-caryatid.ppm'
|
|
||||||
'braque.instruments.ppm'
|
|
||||||
'calcoast09.ppm'
|
|
||||||
'dodge102.ppm'
|
|
||||||
'ernst.anti-pope.ppm'
|
|
||||||
'ernst.ubu-imperator.ppm'
|
|
||||||
'fighting-forms.ppm'
|
|
||||||
'fog25.ppm'
|
|
||||||
'geyser27.ppm'
|
|
||||||
'gris.josette.ppm'
|
|
||||||
'gris.landscape-ceret.ppm'
|
|
||||||
'kandinsky.comp-9.ppm'
|
|
||||||
'kandinsky.yellow-red-blue.ppm'
|
|
||||||
'klee.insula-dulcamara.ppm'
|
|
||||||
'nile.ppm'
|
|
||||||
'picasso.jfille-chevre.ppm'
|
|
||||||
'pollock.lavender-mist.ppm'
|
|
||||||
'yngpaint.ppm')
|
|
||||||
end
|
|
||||||
object ScrollBar: TScrollBar
|
|
||||||
Left = 72
|
|
||||||
Top = 16
|
|
||||||
Width = 257
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 15
|
|
||||||
Max = 255
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = ScrollBarChange
|
|
||||||
OnScroll = ScrollBarScroll
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object PopupMenu: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
object mnuRandomize: TMenuItem
|
|
||||||
Caption = 'Randomize'
|
|
||||||
OnClick = mnuRandomizeClick
|
|
||||||
end
|
|
||||||
object N7: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuInvert: TMenuItem
|
|
||||||
Caption = 'Invert'
|
|
||||||
OnClick = mnuInvertClick
|
|
||||||
end
|
|
||||||
object mnuReverse: TMenuItem
|
|
||||||
Caption = '&Reverse'
|
|
||||||
OnClick = mnuReverseClick
|
|
||||||
end
|
|
||||||
object N3: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuSmoothPalette: TMenuItem
|
|
||||||
Caption = 'Smooth Palette...'
|
|
||||||
ImageIndex = 34
|
|
||||||
OnClick = mnuSmoothPaletteClick
|
|
||||||
end
|
|
||||||
object mnuGradientBrowser: TMenuItem
|
|
||||||
Caption = 'Gradient Browser...'
|
|
||||||
ImageIndex = 22
|
|
||||||
OnClick = btnOpenClick
|
|
||||||
end
|
|
||||||
object N4: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object SaveGradient1: TMenuItem
|
|
||||||
Caption = 'Save Gradient...'
|
|
||||||
ImageIndex = 2
|
|
||||||
OnClick = SaveGradient1Click
|
|
||||||
end
|
|
||||||
object SaveasMapfile1: TMenuItem
|
|
||||||
Caption = 'Save as Map file...'
|
|
||||||
OnClick = SaveasMapfile1Click
|
|
||||||
end
|
|
||||||
object N6: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuSaveasDefault: TMenuItem
|
|
||||||
Caption = 'Save as Default'
|
|
||||||
OnClick = mnuSaveasDefaultClick
|
|
||||||
end
|
|
||||||
object N5: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuCopy: TMenuItem
|
|
||||||
Caption = 'Copy'
|
|
||||||
ImageIndex = 7
|
|
||||||
OnClick = btnCopyClick
|
|
||||||
end
|
|
||||||
object mnuPaste: TMenuItem
|
|
||||||
Caption = 'Paste'
|
|
||||||
ImageIndex = 8
|
|
||||||
OnClick = btnPasteClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Popup: TPopupMenu
|
|
||||||
AutoHotkeys = maManual
|
|
||||||
AutoPopup = False
|
|
||||||
Left = 40
|
|
||||||
Top = 8
|
|
||||||
object mnuRotate: TMenuItem
|
|
||||||
Caption = 'Rotate'
|
|
||||||
OnClick = mnuRotateClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuHue: TMenuItem
|
|
||||||
Caption = 'Hue'
|
|
||||||
OnClick = mnuHueClick
|
|
||||||
end
|
|
||||||
object mnuSaturation: TMenuItem
|
|
||||||
Caption = 'Saturation'
|
|
||||||
OnClick = mnuSaturationClick
|
|
||||||
end
|
|
||||||
object mnuBrightness: TMenuItem
|
|
||||||
Caption = 'Brightness'
|
|
||||||
OnClick = mnuBrightnessClick
|
|
||||||
end
|
|
||||||
object Contrast1: TMenuItem
|
|
||||||
Caption = 'Contrast'
|
|
||||||
OnClick = Contrast1Click
|
|
||||||
end
|
|
||||||
object N2: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuBlur: TMenuItem
|
|
||||||
Caption = 'Blur'
|
|
||||||
OnClick = mnuBlurClick
|
|
||||||
end
|
|
||||||
object mnuFrequency: TMenuItem
|
|
||||||
Caption = 'Frequency'
|
|
||||||
OnClick = mnuFrequencyClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'map'
|
|
||||||
Filter = 'Map files|*.map'
|
|
||||||
Left = 72
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
object ApplicationEvents: TApplicationEvents
|
|
||||||
OnActivate = ApplicationEventsActivate
|
|
||||||
Left = 104
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,856 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Gradient;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, StdCtrls, ComCtrls, Registry, cmap, Menus, ToolWin, Buttons,
|
|
||||||
AppEvnts;
|
|
||||||
const
|
|
||||||
PixelCountMax = 32768;
|
|
||||||
|
|
||||||
type
|
|
||||||
pRGBTripleArray = ^TRGBTripleArray;
|
|
||||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
|
||||||
|
|
||||||
type
|
|
||||||
TGradientForm = class(TForm)
|
|
||||||
pnlPalette: TPanel;
|
|
||||||
pnlControls: TPanel;
|
|
||||||
cmbPalette: TComboBox;
|
|
||||||
GradientImage: TImage;
|
|
||||||
PopupMenu: TPopupMenu;
|
|
||||||
mnuReverse: TMenuItem;
|
|
||||||
mnuInvert: TMenuItem;
|
|
||||||
btnMenu: TSpeedButton;
|
|
||||||
Popup: TPopupMenu;
|
|
||||||
mnuHue: TMenuItem;
|
|
||||||
mnuRotate: TMenuItem;
|
|
||||||
N1: TMenuItem;
|
|
||||||
mnuSaturation: TMenuItem;
|
|
||||||
mnuBrightness: TMenuItem;
|
|
||||||
N2: TMenuItem;
|
|
||||||
ScrollBar: TScrollBar;
|
|
||||||
lblVal: TLabel;
|
|
||||||
mnuBlur: TMenuItem;
|
|
||||||
btnOpen: TSpeedButton;
|
|
||||||
N3: TMenuItem;
|
|
||||||
mnuGradientBrowser: TMenuItem;
|
|
||||||
mnuSmoothPalette: TMenuItem;
|
|
||||||
btnSmoothPalette: TSpeedButton;
|
|
||||||
N4: TMenuItem;
|
|
||||||
SaveGradient1: TMenuItem;
|
|
||||||
SaveasMapfile1: TMenuItem;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
Label1: TLabel;
|
|
||||||
btnPaste: TSpeedButton;
|
|
||||||
btnCopy: TSpeedButton;
|
|
||||||
N5: TMenuItem;
|
|
||||||
mnuCopy: TMenuItem;
|
|
||||||
mnuPaste: TMenuItem;
|
|
||||||
ApplicationEvents: TApplicationEvents;
|
|
||||||
mnuSaveasDefault: TMenuItem;
|
|
||||||
N6: TMenuItem;
|
|
||||||
mnuRandomize: TMenuItem;
|
|
||||||
N7: TMenuItem;
|
|
||||||
mnuFrequency: TMenuItem;
|
|
||||||
Contrast1: TMenuItem;
|
|
||||||
procedure cmbPaletteChange(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnApplyClick(Sender: TObject);
|
|
||||||
procedure DrawPalette;
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure mnuReverseClick(Sender: TObject);
|
|
||||||
procedure mnuInvertClick(Sender: TObject);
|
|
||||||
procedure btnMenuClick(Sender: TObject);
|
|
||||||
procedure mnuRotateClick(Sender: TObject);
|
|
||||||
procedure mnuHueClick(Sender: TObject);
|
|
||||||
procedure mnuSaturationClick(Sender: TObject);
|
|
||||||
procedure ScrollBarChange(Sender: TObject);
|
|
||||||
procedure mnuBrightnessClick(Sender: TObject);
|
|
||||||
procedure mnuBlurClick(Sender: TObject);
|
|
||||||
procedure btnOpenClick(Sender: TObject);
|
|
||||||
procedure mnuSmoothPaletteClick(Sender: TObject);
|
|
||||||
procedure SaveGradient1Click(Sender: TObject);
|
|
||||||
procedure SaveasMapfile1Click(Sender: TObject);
|
|
||||||
procedure cmbPaletteDrawItem(Control: TWinControl; Index: Integer;
|
|
||||||
Rect: TRect; State: TOwnerDrawState);
|
|
||||||
procedure ScrollBarScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure btnCopyClick(Sender: TObject);
|
|
||||||
procedure btnPasteClick(Sender: TObject);
|
|
||||||
procedure ApplicationEventsActivate(Sender: TObject);
|
|
||||||
procedure mnuSaveasDefaultClick(Sender: TObject);
|
|
||||||
procedure mnuRandomizeClick(Sender: TObject);
|
|
||||||
procedure mnuFrequencyClick(Sender: TObject);
|
|
||||||
procedure Contrast1Click(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
private
|
|
||||||
procedure Apply;
|
|
||||||
function Blur(const radius: integer; const pal: TColorMap): TColorMap;
|
|
||||||
function Frequency(const times: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
procedure SaveMap(FileName: string);
|
|
||||||
public
|
|
||||||
Palette: TColorMap;
|
|
||||||
BackupPal: TColorMap;
|
|
||||||
procedure UpdateGradient(Pal: TColorMap);
|
|
||||||
function RandomGradient: TColorMap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
GradientForm: TGradientForm;
|
|
||||||
pCmap: integer;
|
|
||||||
|
|
||||||
function GradientInClipboard: boolean;
|
|
||||||
procedure RGBToHSV(R, G, B: byte; var H, S, V: real);
|
|
||||||
procedure HSVToRGB(H, S, V: real; var Rb, Gb, Bb: integer);
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, cmapdata, Math, Browser, Editor, Global, Save, Adjust, Mutate, ClipBrd;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TGradientForm.Apply;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.CmapIndex := cmbPalette.ItemIndex;
|
|
||||||
MainCp.cmap := Palette;
|
|
||||||
if EditForm.visible then EditForm.UpdateDisplay;
|
|
||||||
// if AdjustForm.visible then AdjustForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveMap(FileName: string);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
l: string;
|
|
||||||
MapFile: TextFile;
|
|
||||||
begin
|
|
||||||
{ Save a map file }
|
|
||||||
AssignFile(MapFile, FileName);
|
|
||||||
try
|
|
||||||
ReWrite(MapFile);
|
|
||||||
{ first line with comment }
|
|
||||||
l := Format(' %3d %3d %3d Exported from Apophysis 2.0', [Palette[0][0], palette[0][1],
|
|
||||||
palette[0][2]]);
|
|
||||||
Writeln(MapFile, l);
|
|
||||||
{ now the rest }
|
|
||||||
for i := 1 to 255 do
|
|
||||||
begin
|
|
||||||
l := Format(' %3d %3d %3d', [Palette[i][0], palette[i][1],
|
|
||||||
palette[i][2]]);
|
|
||||||
Writeln(MapFile, l);
|
|
||||||
end;
|
|
||||||
CloseFile(MapFile);
|
|
||||||
except
|
|
||||||
on EInOutError do Application.MessageBox(PChar('Cannot Open File: ' +
|
|
||||||
FileName), 'Apophysis', 16);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.UpdateGradient(Pal: TColorMap);
|
|
||||||
begin
|
|
||||||
Palette := Pal;
|
|
||||||
BackupPal := Pal;
|
|
||||||
DrawPalette;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure HSVToRGB(H, S, V: real; var Rb, Gb, Bb: integer);
|
|
||||||
var
|
|
||||||
R, G, B, Sa, Va, Hue, i, f, p, q, t: real;
|
|
||||||
begin
|
|
||||||
R := 0;
|
|
||||||
G := 0;
|
|
||||||
B := 0;
|
|
||||||
Sa := S / 100;
|
|
||||||
Va := V / 100;
|
|
||||||
if S = 0 then
|
|
||||||
begin
|
|
||||||
R := Va;
|
|
||||||
G := Va;
|
|
||||||
B := Va;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Hue := H / 60;
|
|
||||||
if Hue = 6 then Hue := 0;
|
|
||||||
i := Int(Hue);
|
|
||||||
f := Hue - i;
|
|
||||||
p := Va * (1 - Sa);
|
|
||||||
q := Va * (1 - (Sa * f));
|
|
||||||
t := Va * (1 - (Sa * (1 - f)));
|
|
||||||
case Round(i) of
|
|
||||||
0: begin
|
|
||||||
R := Va;
|
|
||||||
G := t;
|
|
||||||
B := p;
|
|
||||||
end;
|
|
||||||
1: begin
|
|
||||||
R := q;
|
|
||||||
G := Va;
|
|
||||||
B := p;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
R := p;
|
|
||||||
G := Va;
|
|
||||||
B := t;
|
|
||||||
end;
|
|
||||||
3: begin
|
|
||||||
R := p;
|
|
||||||
G := q;
|
|
||||||
B := Va;
|
|
||||||
end;
|
|
||||||
4: begin
|
|
||||||
R := t;
|
|
||||||
G := p;
|
|
||||||
B := Va;
|
|
||||||
end;
|
|
||||||
5: begin
|
|
||||||
R := Va;
|
|
||||||
G := p;
|
|
||||||
B := q;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Rb := Round(Int(255.9999 * R));
|
|
||||||
Gb := Round(Int(255.9999 * G));
|
|
||||||
Bb := Round(Int(255.9999 * B));
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure RGBToHSV(R, G, B: byte; var H, S, V: real);
|
|
||||||
var
|
|
||||||
vRed, vGreen, vBlue, Mx, Mn, Va, Sa, rc, gc, bc: real;
|
|
||||||
begin
|
|
||||||
vRed := R / 255;
|
|
||||||
vGreen := G / 255;
|
|
||||||
vBlue := B / 255;
|
|
||||||
Mx := vRed;
|
|
||||||
if vGreen > Mx then Mx := vGreen;
|
|
||||||
if vBlue > Mx then Mx := vBlue;
|
|
||||||
Mn := vRed;
|
|
||||||
if vGreen < Mn then Mn := vGreen;
|
|
||||||
if vBlue < Mn then Mn := vBlue;
|
|
||||||
Va := Mx;
|
|
||||||
if Mx <> 0 then
|
|
||||||
Sa := (Mx - Mn) / Mx
|
|
||||||
else
|
|
||||||
Sa := 0;
|
|
||||||
if Sa = 0 then
|
|
||||||
H := 0
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
rc := (Mx - vRed) / (Mx - Mn);
|
|
||||||
gc := (Mx - vGreen) / (Mx - Mn);
|
|
||||||
bc := (Mx - vBlue) / (Mx - Mn);
|
|
||||||
if Mx = vRed then
|
|
||||||
H := bc - gc
|
|
||||||
else if Mx = vGreen then
|
|
||||||
H := 2 + rc - bc
|
|
||||||
else if Mx = vBlue then
|
|
||||||
H := 4 + gc - rc;
|
|
||||||
H := H * 60;
|
|
||||||
if H < 0 then H := H + 360;
|
|
||||||
end;
|
|
||||||
S := Sa * 100;
|
|
||||||
V := Va * 100;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.Blur(const Radius: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
var
|
|
||||||
r, g, b, n, i, j, k: Integer;
|
|
||||||
begin
|
|
||||||
Result := Pal;
|
|
||||||
if Radius <> 0 then
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
n := -1;
|
|
||||||
r := 0;
|
|
||||||
g := 0;
|
|
||||||
b := 0;
|
|
||||||
for j := i - radius to i + radius do
|
|
||||||
begin
|
|
||||||
inc(n);
|
|
||||||
k := (256 + j) mod 256;
|
|
||||||
if k <> i then begin
|
|
||||||
r := r + Pal[k][0];
|
|
||||||
g := g + Pal[k][1];
|
|
||||||
b := b + Pal[k][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if n <> 0 then begin
|
|
||||||
Result[i][0] := r div n;
|
|
||||||
Result[i][1] := g div n;
|
|
||||||
Result[i][2] := b div n;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.Frequency(const times: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
{ This can be improved }
|
|
||||||
var
|
|
||||||
n, i, j: Integer;
|
|
||||||
begin
|
|
||||||
Result := Pal;
|
|
||||||
if times <> 1 then
|
|
||||||
begin
|
|
||||||
n := 256 div times;
|
|
||||||
for j := 0 to times do
|
|
||||||
for i := 0 to n do
|
|
||||||
begin
|
|
||||||
if (i + j * n) < 256 then
|
|
||||||
begin
|
|
||||||
Result[i + j * n][0] := pal[i * times][0];
|
|
||||||
Result[i + j * n][1] := pal[i * times][1];
|
|
||||||
Result[i + j * n][2] := pal[i * times][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.DrawPalette;
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
BitMap: TBitMap;
|
|
||||||
begin
|
|
||||||
BitMap := TBitMap.Create;
|
|
||||||
try
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 1;
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Palette[i][0];
|
|
||||||
rgbtGreen := Palette[i][1];
|
|
||||||
rgbtBlue := Palette[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
GradientImage.Picture.Graphic := Bitmap;
|
|
||||||
GradientImage.Refresh;
|
|
||||||
finally
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.cmbPaletteChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
i := cmbPalette.ItemIndex;
|
|
||||||
GetCmap(i, 1, Palette);
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
DrawPalette;
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Gradient', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
GradientForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
GradientForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Gradient', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', GradientForm.Top);
|
|
||||||
Registry.WriteInteger('Left', GradientForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TGradientForm.btnApplyClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuReverseClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
pal: TColorMap;
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do begin
|
|
||||||
pal[i][0] := Palette[255 - i][0];
|
|
||||||
pal[i][1] := Palette[255 - i][1];
|
|
||||||
pal[i][2] := Palette[255 - i][2];
|
|
||||||
end;
|
|
||||||
UpdateGradient(pal);
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuInvertClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := 255 - Palette[i][0];
|
|
||||||
Palette[i][1] := 255 - Palette[i][1];
|
|
||||||
Palette[i][2] := 255 - Palette[i][2];
|
|
||||||
end;
|
|
||||||
UpdateGradient(palette);
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnMenuClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Popup.Popup(btnMenu.ClientOrigin.x, btnMenu.ClientOrigin.y + btnMenu.Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ScrollBarChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
intens, i, r, g, b: integer;
|
|
||||||
h, s, v: real;
|
|
||||||
begin
|
|
||||||
lblVal.Caption := IntToStr(ScrollBar.Position);
|
|
||||||
if btnMenu.Caption = 'Hue' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
RGBToHSV(BackupPal[i][0], BackupPal[i][1], BackupPal[i][2], h, s, v);
|
|
||||||
h := Round(360 + h + ScrollBar.Position) mod 360;
|
|
||||||
HSVToRGB(h, s, v, Palette[i][0], Palette[i][1], Palette[i][2]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Saturation' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
RGBToHSV(BackupPal[i][0], BackupPal[i][1], BackupPal[i][2], h, s, v);
|
|
||||||
s := s + ScrollBar.Position;
|
|
||||||
if s > 100 then s := 100;
|
|
||||||
if s < 0 then s := 0;
|
|
||||||
HSVToRGB(h, s, v, Palette[i][0], Palette[i][1], Palette[i][2]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Contrast' then
|
|
||||||
begin
|
|
||||||
intens := scrollBar.Position;
|
|
||||||
if intens > 0 then intens := intens * 2;
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
r := BackupPal[i][0];
|
|
||||||
g := BackupPal[i][1];
|
|
||||||
b := BackupPal[i][2];
|
|
||||||
r := round(r + intens / 100 * (r - 127));
|
|
||||||
g := round(g + intens / 100 * (g - 127));
|
|
||||||
b := round(b + intens / 100 * (b - 127));
|
|
||||||
if R > 255 then R := 255 else if R < 0 then R := 0;
|
|
||||||
if G > 255 then G := 255 else if G < 0 then G := 0;
|
|
||||||
if B > 255 then B := 255 else if B < 0 then B := 0;
|
|
||||||
Palette[i][0] := r;
|
|
||||||
Palette[i][1] := g;
|
|
||||||
Palette[i][2] := b;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Brightness' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := BackupPal[i][0] + ScrollBar.Position;
|
|
||||||
if Palette[i][0] > 255 then Palette[i][0] := 255;
|
|
||||||
if Palette[i][0] < 0 then Palette[i][0] := 0;
|
|
||||||
Palette[i][1] := BackupPal[i][1] + ScrollBar.Position;
|
|
||||||
if Palette[i][1] > 255 then Palette[i][1] := 255;
|
|
||||||
if Palette[i][1] < 0 then Palette[i][1] := 0;
|
|
||||||
Palette[i][2] := BackupPal[i][2] + ScrollBar.Position;
|
|
||||||
if Palette[i][2] > 255 then Palette[i][2] := 255;
|
|
||||||
if Palette[i][2] < 0 then Palette[i][2] := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Rotate' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := BackupPal[(255 + i - ScrollBar.Position) mod 256][0];
|
|
||||||
Palette[i][1] := BackupPal[(255 + i - ScrollBar.Position) mod 256][1];
|
|
||||||
Palette[i][2] := BackupPal[(255 + i - ScrollBar.Position) mod 256][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Blur' then
|
|
||||||
begin
|
|
||||||
Palette := Blur(ScrollBar.Position, BackupPal);
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Frequency' then
|
|
||||||
begin
|
|
||||||
Palette := Frequency(ScrollBar.Position, BackupPal);
|
|
||||||
end;
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ ***************************** Adjust menu ********************************* }
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuRotateClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Rotate';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 255;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuHueClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Hue';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 360;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuBrightnessClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Brightness';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -255;
|
|
||||||
ScrollBar.Max := 255;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSaturationClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Saturation';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -100;
|
|
||||||
ScrollBar.Max := 100;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuBlurClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Blur';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 127;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuFrequencyClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Frequency';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 1;
|
|
||||||
ScrollBar.Max := 10;
|
|
||||||
ScrollBar.LargeChange := 1;
|
|
||||||
ScrollBar.Position := 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnOpenClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
GradientBrowser.Filename := GradientFile;
|
|
||||||
GradientBrowser.Show;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSmoothPaletteClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.SmoothPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveGradient1Click(Sender: TObject);
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
SaveForm.Caption := 'Save Gradient';
|
|
||||||
SaveForm.Filename := GradientFile;
|
|
||||||
SaveForm.Title := MainCp.name;
|
|
||||||
if SaveForm.ShowModal = mrOK then
|
|
||||||
begin
|
|
||||||
gradstr.add(CleanIdentifier(SaveForm.Title) + ' {');
|
|
||||||
gradstr.add(MainForm.GradientFromPalette(Palette, SaveForm.Title));
|
|
||||||
gradstr.add('}');
|
|
||||||
if MainForm.SaveGradient(gradstr.text, SaveForm.Title, SaveForm.Filename) then
|
|
||||||
GradientFile := SaveForm.FileName;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
gradstr.free
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveasMapfile1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.Filename := MainCp.name + '.map';
|
|
||||||
if SaveDialog.execute then
|
|
||||||
SaveMap(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.cmbPaletteDrawItem(Control: TWinControl;
|
|
||||||
Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
Bitmap: TBitmap;
|
|
||||||
pal: TColorMap;
|
|
||||||
PalName: string;
|
|
||||||
begin
|
|
||||||
{ Draw the preset palettes on the combo box items }
|
|
||||||
GetCMap(index, 1, pal);
|
|
||||||
GetCmapName(index, PalName);
|
|
||||||
|
|
||||||
BitMap := TBitMap.create;
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 100;
|
|
||||||
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Pal[i][0];
|
|
||||||
rgbtGreen := Pal[i][1];
|
|
||||||
rgbtBlue := Pal[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
with Control as TComboBox do
|
|
||||||
begin
|
|
||||||
Canvas.Rectangle(Rect);
|
|
||||||
|
|
||||||
Canvas.TextOut(4, Rect.Top, PalName);
|
|
||||||
Rect.Left := (Rect.Left + rect.Right) div 2;
|
|
||||||
Canvas.StretchDraw(Rect, Bitmap);
|
|
||||||
end;
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ScrollBarScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnCopyClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
gradstr.add(CleanIdentifier(MainCp.name) + ' {');
|
|
||||||
gradstr.add('gradient:');
|
|
||||||
gradstr.add(' title="' + MainCp.name + '" smooth=no');
|
|
||||||
gradstr.add(GradientString(Palette));
|
|
||||||
gradstr.add('}');
|
|
||||||
Clipboard.SetTextBuf(PChar(gradstr.text));
|
|
||||||
btnPaste.enabled := true;
|
|
||||||
mnuPaste.enabled := true;
|
|
||||||
MainForm.btnPaste.enabled := False;
|
|
||||||
MainForm.mnuPaste.enabled := False;
|
|
||||||
finally
|
|
||||||
gradstr.free
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnPasteClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Clipboard.HasFormat(CF_TEXT) then
|
|
||||||
begin
|
|
||||||
UpdateGradient(CreatePalette(Clipboard.AsText));
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GradientInClipboard: boolean;
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
{ returns true if gradient in clipboard - can be tricked }
|
|
||||||
result := true;
|
|
||||||
if Clipboard.HasFormat(CF_TEXT) then
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
gradstr.text := Clipboard.AsText;
|
|
||||||
if (Pos('}', gradstr.text) = 0) or (Pos('{', gradstr.text) = 0) or
|
|
||||||
(Pos('gradient:', gradstr.text) = 0) or (Pos('fractal:', gradstr.text) <> 0) then
|
|
||||||
begin
|
|
||||||
result := false;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
gradstr.free;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result := false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ApplicationEventsActivate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if GradientInClipboard then begin
|
|
||||||
mnuPaste.enabled := true;
|
|
||||||
btnPaste.enabled := true;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
mnuPaste.enabled := false;
|
|
||||||
btnPaste.enabled := false;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSaveasDefaultClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.DefaultPalette := Palette;
|
|
||||||
SaveMap(AppPath + 'default.map');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure RGBBlend(a, b: integer; var Palette: TColorMap);
|
|
||||||
{ Linear blend between to indices of a palette }
|
|
||||||
var
|
|
||||||
c, v: real;
|
|
||||||
vrange, range: real;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
if a = b then
|
|
||||||
begin
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
range := b - a;
|
|
||||||
vrange := Palette[b mod 256][0] - Palette[a mod 256][0];
|
|
||||||
c := Palette[a mod 256][0];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := (a + 1) to (b - 1) do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][0] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][1] - Palette[a mod 256][1];
|
|
||||||
c := Palette[a mod 256][1];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][1] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][2] - Palette[a mod 256][2];
|
|
||||||
c := Palette[a mod 256][2];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][2] := Round(c);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.RandomGradient: TColorMap;
|
|
||||||
var
|
|
||||||
a, b, n, nodes: integer;
|
|
||||||
rgb: array[0..2] of double;
|
|
||||||
hsv: array[0..2] of double;
|
|
||||||
pal: TColorMap;
|
|
||||||
begin
|
|
||||||
inc(MainForm.Seed);
|
|
||||||
RandSeed := MainForm.seed;
|
|
||||||
nodes := random((MaxNodes - 1) - (MinNodes - 2)) + (MinNodes - 1);
|
|
||||||
n := 256 div nodes;
|
|
||||||
b := 0;
|
|
||||||
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100;
|
|
||||||
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100;
|
|
||||||
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100;
|
|
||||||
hsv2rgb(hsv, rgb);
|
|
||||||
Pal[0][0] := Round(rgb[0] * 255);
|
|
||||||
Pal[0][1] := Round(rgb[1] * 255);
|
|
||||||
Pal[0][2] := Round(rgb[2] * 255);
|
|
||||||
repeat
|
|
||||||
a := b;
|
|
||||||
b := b + n;
|
|
||||||
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100;
|
|
||||||
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100;
|
|
||||||
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100;
|
|
||||||
hsv2rgb(hsv, rgb);
|
|
||||||
if b > 255 then b := 255;
|
|
||||||
Pal[b][0] := Round(rgb[0] * 255);
|
|
||||||
Pal[b][1] := Round(rgb[1] * 255);
|
|
||||||
Pal[b][2] := Round(rgb[2] * 255);
|
|
||||||
RGBBlend(a, b, pal);
|
|
||||||
until b = 255;
|
|
||||||
Result := Pal;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuRandomizeClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
GradientForm.UpdateGradient(RandomGradient);
|
|
||||||
GradientForm.Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.Contrast1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Contrast';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -100;
|
|
||||||
ScrollBar.Max := 100;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Sendmessage(cmbPalette.Handle, CB_SETDROPPEDWIDTH , cmbPalette.width * 2, 0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
|||||||
{.$DEFINE DELPHI3}
|
|
||||||
{.$DEFINE _WIN64}
|
|
||||||
{.$DEFINE HTMLHELP11}
|
|
||||||
{$DEFINE HTMLHELP12}
|
|
||||||
{.$DEFINE HTMLHELP_DYNAMIC_LINK}
|
|
||||||
{.$DEFINE HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
@ -1,862 +0,0 @@
|
|||||||
{******************************************************************}
|
|
||||||
{ }
|
|
||||||
{ Borland Delphi Runtime Library }
|
|
||||||
{ HTML Help interface unit }
|
|
||||||
{ }
|
|
||||||
{ Portions created by Microsoft are }
|
|
||||||
{ Copyright (C) 1995-1999 Microsoft Corporation. }
|
|
||||||
{ All Rights Reserved. }
|
|
||||||
{ }
|
|
||||||
{ The original file is: htmlhelp.h, released 12 May 1999. }
|
|
||||||
{ The original Pascal code is: HTMLHelp.pas, released 9 Jun 1999. }
|
|
||||||
{ The initial developer of the Pascal code is Marcel van Brakel }
|
|
||||||
{ (brakelm@bart.nl). }
|
|
||||||
{ }
|
|
||||||
{ Portions created by Marcel van Brakel are }
|
|
||||||
{ Copyright (C) 1999 Marcel van Brakel. }
|
|
||||||
{ }
|
|
||||||
{ Contributor(s): Robert Chandler (robert@helpware.net) }
|
|
||||||
{ Kurt Senfer (ks@siemens.dk) }
|
|
||||||
{ }
|
|
||||||
{ Obtained through: }
|
|
||||||
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
||||||
{ }
|
|
||||||
{ You may retrieve the latest version of this file at the Project }
|
|
||||||
{ JEDI home page, located at http://delphi-jedi.org }
|
|
||||||
{ }
|
|
||||||
{ The contents of this file are used with permission, subject to }
|
|
||||||
{ the Mozilla Public License Version 1.1 (the "License"); you may }
|
|
||||||
{ not use this file except in compliance with the License. You may }
|
|
||||||
{ obtain a copy of the License at }
|
|
||||||
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
||||||
{ }
|
|
||||||
{ Software distributed under the License is distributed on an }
|
|
||||||
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
|
|
||||||
{ implied. See the License for the specific language governing }
|
|
||||||
{ rights and limitations under the License. }
|
|
||||||
{ }
|
|
||||||
{******************************************************************}
|
|
||||||
|
|
||||||
unit HtmlHlp;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
(*$HPPEMIT '#include "htmlhelp.h"'*)
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
(*$HPPEMIT 'typedef struct tagHH_LAST_ERROR'*)
|
|
||||||
(*$HPPEMIT '{'*)
|
|
||||||
(*$HPPEMIT ' int cbStruct ;'*)
|
|
||||||
(*$HPPEMIT ' HRESULT hr ;'*)
|
|
||||||
(*$HPPEMIT ' BSTR description ;'*)
|
|
||||||
(*$HPPEMIT '} HH_LAST_ERROR ;'*)
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows;
|
|
||||||
|
|
||||||
{$I HTMLHLP.INC}
|
|
||||||
|
|
||||||
type
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
{$IFNDEF _WIN64}
|
|
||||||
DWORD_PTR = DWORD;
|
|
||||||
{$ENDIF}
|
|
||||||
{$ENDIF}
|
|
||||||
PCSTR = LPCSTR;
|
|
||||||
|
|
||||||
// Commands to pass to HtmlHelp()
|
|
||||||
|
|
||||||
const
|
|
||||||
HH_DISPLAY_TOPIC = $0000;
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TOPIC}
|
|
||||||
HH_HELP_FINDER = $0000; // WinHelp equivalent
|
|
||||||
{$EXTERNALSYM HH_HELP_FINDER}
|
|
||||||
HH_DISPLAY_TOC = $0001; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TOC}
|
|
||||||
HH_DISPLAY_INDEX = $0002; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_INDEX}
|
|
||||||
HH_DISPLAY_SEARCH = $0003; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_SEARCH}
|
|
||||||
HH_SET_WIN_TYPE = $0004;
|
|
||||||
{$EXTERNALSYM HH_SET_WIN_TYPE}
|
|
||||||
HH_GET_WIN_TYPE = $0005;
|
|
||||||
{$EXTERNALSYM HH_GET_WIN_TYPE}
|
|
||||||
HH_GET_WIN_HANDLE = $0006;
|
|
||||||
{$EXTERNALSYM HH_GET_WIN_HANDLE}
|
|
||||||
HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_INFO_TYPE}
|
|
||||||
HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
|
|
||||||
{$EXTERNALSYM HH_SET_INFO_TYPE}
|
|
||||||
HH_SYNC = $0009;
|
|
||||||
{$EXTERNALSYM HH_SYNC}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_ADD_NAV_UI = $000A; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_ADD_NAV_UI}
|
|
||||||
HH_ADD_BUTTON = $000B; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_ADD_BUTTON}
|
|
||||||
HH_GETBROWSER_APP = $000C; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_GETBROWSER_APP}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_RESERVED1 = $000A;
|
|
||||||
{$EXTERNALSYM HH_RESERVED1}
|
|
||||||
HH_RESERVED2 = $000B;
|
|
||||||
{$EXTERNALSYM HH_RESERVED2}
|
|
||||||
HH_RESERVED3 = $000C;
|
|
||||||
{$EXTERNALSYM HH_RESERVED3}
|
|
||||||
{$ENDIF}
|
|
||||||
HH_KEYWORD_LOOKUP = $000D;
|
|
||||||
{$EXTERNALSYM HH_KEYWORD_LOOKUP}
|
|
||||||
HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TEXT_POPUP}
|
|
||||||
HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
|
|
||||||
{$EXTERNALSYM HH_HELP_CONTEXT}
|
|
||||||
HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
|
|
||||||
{$EXTERNALSYM HH_TP_HELP_CONTEXTMENU}
|
|
||||||
HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
|
|
||||||
{$EXTERNALSYM HH_TP_HELP_WM_HELP}
|
|
||||||
HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
|
|
||||||
{$EXTERNALSYM HH_CLOSE_ALL}
|
|
||||||
HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
|
|
||||||
{$EXTERNALSYM HH_ALINK_LOOKUP}
|
|
||||||
HH_GET_LAST_ERROR = $0014; // not currently implemented, See HHERROR.h
|
|
||||||
{$EXTERNALSYM HH_GET_LAST_ERROR}
|
|
||||||
HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_CATEGORY}
|
|
||||||
HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_CATEGORY_IT}
|
|
||||||
HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
|
|
||||||
{$EXTERNALSYM HH_RESET_IT_FILTER}
|
|
||||||
HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
|
|
||||||
{$EXTERNALSYM HH_SET_INCLUSIVE_FILTER}
|
|
||||||
HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
|
|
||||||
{$EXTERNALSYM HH_SET_EXCLUSIVE_FILTER}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
|
|
||||||
{$EXTERNALSYM HH_SET_GUID}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_INITIALIZE = $001C; // Initializes the help system.
|
|
||||||
{$EXTERNALSYM HH_INITIALIZE}
|
|
||||||
HH_UNINITIALIZE = $001D; // Uninitializes the help system.
|
|
||||||
{$EXTERNALSYM HH_UNINITIALIZE}
|
|
||||||
HH_PRETRANSLATEMESSAGE = $00FD; // Pumps messages. (NULL, NULL, MSG*).
|
|
||||||
{$EXTERNALSYM HH_PRETRANSLATEMESSAGE}
|
|
||||||
HH_SET_GLOBAL_PROPERTY = $00FC; // Set a global property. (NULL, NULL, HH_GPROP)
|
|
||||||
{$EXTERNALSYM HH_SET_GLOBAL_PROPERTY}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_INTERNAL = $00FF; // Used internally.
|
|
||||||
{$EXTERNALSYM HH_INTERNAL}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_AUTOHIDESHOW}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window (not currently implemented)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_ONTOP}
|
|
||||||
HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NOTITLEBAR}
|
|
||||||
HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NODEF_STYLES}
|
|
||||||
HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NODEF_EXSTYLES}
|
|
||||||
HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TRI_PANE}
|
|
||||||
HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NOTB_TEXT}
|
|
||||||
HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_POST_QUIT}
|
|
||||||
HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_AUTO_SYNC}
|
|
||||||
HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TRACKING}
|
|
||||||
HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_SEARCH}
|
|
||||||
HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_PROP_TAB_BOOKMARKS = (1 shl 12); // include bookmark tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_CHANGE_TITLE}
|
|
||||||
HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NAV_ONLY_WIN}
|
|
||||||
HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NO_TOOLBAR}
|
|
||||||
HHWIN_PROP_MENU = (1 shl 16); // Menu
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_MENU}
|
|
||||||
HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI.
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_ADVSEARCH}
|
|
||||||
HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/Position
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_USER_POS}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM1}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM2}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM3}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM4}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM5}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM6}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM7}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM8}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM9}
|
|
||||||
HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin
|
|
||||||
{$EXTERNALSYM HHWIN_TB_MARGIN}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_PROPERTIES}
|
|
||||||
HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_STYLES}
|
|
||||||
HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_EXSTYLES}
|
|
||||||
HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_RECT}
|
|
||||||
HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_NAV_WIDTH}
|
|
||||||
HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_SHOWSTATE}
|
|
||||||
HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_INFOTYPES}
|
|
||||||
HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TB_FLAGS}
|
|
||||||
HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_EXPANSION}
|
|
||||||
HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TABPOS}
|
|
||||||
HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TABORDER}
|
|
||||||
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_HISTORY_COUNT}
|
|
||||||
HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_CUR_TAB}
|
|
||||||
|
|
||||||
HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_EXPAND}
|
|
||||||
HHWIN_BUTTON_BACK = (1 shl 2); // Back button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BACK}
|
|
||||||
HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_FORWARD}
|
|
||||||
HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_STOP}
|
|
||||||
HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_REFRESH}
|
|
||||||
HHWIN_BUTTON_HOME = (1 shl 6); // Home button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_HOME}
|
|
||||||
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_FWD}
|
|
||||||
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_BCK}
|
|
||||||
HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_NOTES}
|
|
||||||
HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_CONTENTS}
|
|
||||||
HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_SYNC}
|
|
||||||
HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_OPTIONS}
|
|
||||||
HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_PRINT}
|
|
||||||
HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_INDEX}
|
|
||||||
HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_SEARCH}
|
|
||||||
HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_BUTTON_BOOKMARKS = (1 shl 17); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_BUTTON_JUMP1 = (1 shl 18);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_JUMP1}
|
|
||||||
HHWIN_BUTTON_JUMP2 = (1 shl 19);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_JUMP2}
|
|
||||||
HHWIN_BUTTON_ZOOM = (1 shl 20);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_ZOOM}
|
|
||||||
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_TOC_NEXT}
|
|
||||||
HHWIN_BUTTON_TOC_PREV = (1 shl 22);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_TOC_PREV}
|
|
||||||
|
|
||||||
HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND or HHWIN_BUTTON_BACK or
|
|
||||||
HHWIN_BUTTON_OPTIONS or HHWIN_BUTTON_PRINT;
|
|
||||||
{$EXTERNALSYM HHWIN_DEF_BUTTONS}
|
|
||||||
|
|
||||||
// Button IDs
|
|
||||||
|
|
||||||
IDTB_EXPAND = 200;
|
|
||||||
{$EXTERNALSYM IDTB_EXPAND}
|
|
||||||
IDTB_CONTRACT = 201;
|
|
||||||
{$EXTERNALSYM IDTB_CONTRACT}
|
|
||||||
IDTB_STOP = 202;
|
|
||||||
{$EXTERNALSYM IDTB_STOP}
|
|
||||||
IDTB_REFRESH = 203;
|
|
||||||
{$EXTERNALSYM IDTB_REFRESH}
|
|
||||||
IDTB_BACK = 204;
|
|
||||||
{$EXTERNALSYM IDTB_BACK}
|
|
||||||
IDTB_HOME = 205;
|
|
||||||
{$EXTERNALSYM IDTB_HOME}
|
|
||||||
IDTB_SYNC = 206;
|
|
||||||
{$EXTERNALSYM IDTB_SYNC}
|
|
||||||
IDTB_PRINT = 207;
|
|
||||||
{$EXTERNALSYM IDTB_PRINT}
|
|
||||||
IDTB_OPTIONS = 208;
|
|
||||||
{$EXTERNALSYM IDTB_OPTIONS}
|
|
||||||
IDTB_FORWARD = 209;
|
|
||||||
{$EXTERNALSYM IDTB_FORWARD}
|
|
||||||
IDTB_NOTES = 210; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_NOTES}
|
|
||||||
IDTB_BROWSE_FWD = 211;
|
|
||||||
{$EXTERNALSYM IDTB_BROWSE_FWD}
|
|
||||||
IDTB_BROWSE_BACK = 212;
|
|
||||||
{$EXTERNALSYM IDTB_BROWSE_BACK}
|
|
||||||
IDTB_CONTENTS = 213; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_CONTENTS}
|
|
||||||
IDTB_INDEX = 214; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_INDEX}
|
|
||||||
IDTB_SEARCH = 215; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_SEARCH}
|
|
||||||
IDTB_HISTORY = 216; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
IDTB_BOOKMARKS = 217; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
IDTB_FAVORITES = 217; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
IDTB_JUMP1 = 218;
|
|
||||||
{$EXTERNALSYM IDTB_JUMP1}
|
|
||||||
IDTB_JUMP2 = 219;
|
|
||||||
{$EXTERNALSYM IDTB_JUMP2}
|
|
||||||
IDTB_CUSTOMIZE = 221;
|
|
||||||
{$EXTERNALSYM IDTB_CUSTOMIZE}
|
|
||||||
IDTB_ZOOM = 222;
|
|
||||||
{$EXTERNALSYM IDTB_ZOOM}
|
|
||||||
IDTB_TOC_NEXT = 223;
|
|
||||||
{$EXTERNALSYM IDTB_TOC_NEXT}
|
|
||||||
IDTB_TOC_PREV = 224;
|
|
||||||
{$EXTERNALSYM IDTB_TOC_PREV}
|
|
||||||
|
|
||||||
// Notification codes
|
|
||||||
|
|
||||||
HHN_FIRST = -860;
|
|
||||||
{$EXTERNALSYM HHN_FIRST}
|
|
||||||
HHN_LAST = -879;
|
|
||||||
{$EXTERNALSYM HHN_LAST}
|
|
||||||
|
|
||||||
HHN_NAVCOMPLETE = (HHN_FIRST - 0);
|
|
||||||
{$EXTERNALSYM HHN_NAVCOMPLETE}
|
|
||||||
HHN_TRACK = (HHN_FIRST - 1);
|
|
||||||
{$EXTERNALSYM HHN_TRACK}
|
|
||||||
HHN_WINDOW_CREATE = (HHN_FIRST - 2);
|
|
||||||
{$EXTERNALSYM HHN_WINDOW_CREATE}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHLastError = ^THHLastError;
|
|
||||||
tagHH_LAST_ERROR = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
hr: HRESULT; // the last error code.
|
|
||||||
description: PWideChar; // a description of the error (unicode string - BSTR).
|
|
||||||
end;
|
|
||||||
THHLastError = tagHH_LAST_ERROR;
|
|
||||||
|
|
||||||
PHHNNotify = ^THHNNotify;
|
|
||||||
tagHHN_NOTIFY = packed record
|
|
||||||
hdr: NMHDR;
|
|
||||||
pszUrl: PCSTR; // multibyte null-terminated string
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHHN_NOTIFY}
|
|
||||||
HHN_NOTIFY = tagHHN_NOTIFY;
|
|
||||||
{$EXTERNALSYM HHN_NOTIFY}
|
|
||||||
THHNNotify = tagHHN_NOTIFY;
|
|
||||||
|
|
||||||
PHHPopup = ^THHPopup;
|
|
||||||
tagHH_POPUP = packed record
|
|
||||||
cbStruct: Integer; // sizeof this structure
|
|
||||||
hinst: HINST; // instance handle for string resource
|
|
||||||
idString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp call
|
|
||||||
pszText: LPCTSTR; // used if idString is zero
|
|
||||||
pt: TPoint; // top center of popup window
|
|
||||||
clrForeGround: TColorRef; // use -1 for default
|
|
||||||
clrBackground: TColorRef; // use -1 for default
|
|
||||||
rcMargins: TRect; // amount of space between edges of window and text, -1 for each member to ignore
|
|
||||||
pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_POPUP}
|
|
||||||
HH_POPUP = tagHH_POPUP;
|
|
||||||
{$EXTERNALSYM HH_POPUP}
|
|
||||||
THHPopup = tagHH_POPUP;
|
|
||||||
|
|
||||||
PHHAKLink = ^THHAKLink;
|
|
||||||
tagHH_AKLINK = packed record
|
|
||||||
cbStruct: Integer; // sizeof this structure
|
|
||||||
fReserved: BOOL; // must be FALSE (really!)
|
|
||||||
pszKeywords: LPCTSTR; // semi-colon separated keywords
|
|
||||||
pszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)
|
|
||||||
pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
|
|
||||||
pszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
|
|
||||||
pszWindow: LPCTSTR; // Window to display URL in
|
|
||||||
fIndexOnFail: BOOL; // Displays index if keyword lookup fails.
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_AKLINK}
|
|
||||||
HH_AKLINK = tagHH_AKLINK;
|
|
||||||
{$EXTERNALSYM HH_AKLINK}
|
|
||||||
THHAKLink = tagHH_AKLINK;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHWIN_NAVTYPE_TOC = 0;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_TOC}
|
|
||||||
HHWIN_NAVTYPE_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_INDEX}
|
|
||||||
HHWIN_NAVTYPE_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_SEARCH}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_NAVTYPE_BOOKMARKS = 3;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_BOOKMARKS}
|
|
||||||
HHWIN_NAVTYPE_HISTORY = 4; //not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_NAVTYPE_FAVORITES = 3;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_FAVORITES}
|
|
||||||
HHWIN_NAVTYPE_HISTORY = 4; //not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
|
|
||||||
HHWIN_NAVTYPE_AUTHOR = 5;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_AUTHOR}
|
|
||||||
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_CUSTOM_FIRST}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
IT_INCLUSIVE = 0;
|
|
||||||
{$EXTERNALSYM IT_INCLUSIVE}
|
|
||||||
IT_EXCLUSIVE = 1;
|
|
||||||
{$EXTERNALSYM IT_EXCLUSIVE}
|
|
||||||
IT_HIDDEN = 2;
|
|
||||||
{$EXTERNALSYM IT_HIDDEN}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHEnumIT = ^THHEnumIT;
|
|
||||||
tagHH_ENUM_IT = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
iType: Integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
|
|
||||||
pszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULL
|
|
||||||
pszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
|
|
||||||
pszITDescription: LPCSTR; // volitile pointer to the description of the infotype.
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_ENUM_IT}
|
|
||||||
HH_ENUM_IT = tagHH_ENUM_IT;
|
|
||||||
{$EXTERNALSYM HH_ENUM_IT}
|
|
||||||
PHH_ENUM_IT = ^tagHH_ENUM_IT;
|
|
||||||
{$EXTERNALSYM PHH_ENUM_IT}
|
|
||||||
THHEnumIT = tagHH_ENUM_IT;
|
|
||||||
|
|
||||||
PHHEnumCat = ^THHEnumCat;
|
|
||||||
tagHH_ENUM_CAT = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
pszCatName: LPCSTR; // volitile pointer to the category name
|
|
||||||
pszCatDescription: LPCSTR; // volitile pointer to the category description
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_ENUM_CAT}
|
|
||||||
HH_ENUM_CAT = tagHH_ENUM_CAT;
|
|
||||||
{$EXTERNALSYM HH_ENUM_CAT}
|
|
||||||
PHH_ENUM_CAT = ^tagHH_ENUM_CAT;
|
|
||||||
{$EXTERNALSYM PHH_ENUM_CAT}
|
|
||||||
THHEnumCat = tagHH_ENUM_CAT;
|
|
||||||
|
|
||||||
PHHSetInfoType = ^THHSetInfoType;
|
|
||||||
tagHH_SET_INFOTYPE = packed record
|
|
||||||
cbStruct: Integer; // the size of this structure
|
|
||||||
pszCatName: LPCSTR; // the name of the category, if any, the InfoType is a member of.
|
|
||||||
pszInfoTypeName: LPCSTR; // the name of the info type to add to the filter
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_SET_INFOTYPE}
|
|
||||||
HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
|
|
||||||
{$EXTERNALSYM HH_SET_INFOTYPE}
|
|
||||||
PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
|
|
||||||
{$EXTERNALSYM PHH_SET_INFOTYPE}
|
|
||||||
THHSetInfoType = tagHH_SET_INFOTYPE;
|
|
||||||
|
|
||||||
HH_INFOTYPE = DWORD;
|
|
||||||
{$EXTERNALSYM HH_INFOTYPE}
|
|
||||||
PHH_INFOTYPE = ^HH_INFOTYPE;
|
|
||||||
{$EXTERNALSYM PHH_INFOTYPE}
|
|
||||||
PHHInfoType = ^THHInfoType;
|
|
||||||
THHInfoType = HH_INFOTYPE;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHWIN_NAVTAB_TOP = 0;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_TOP}
|
|
||||||
HHWIN_NAVTAB_LEFT = 1;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_LEFT}
|
|
||||||
HHWIN_NAVTAB_BOTTOM = 2;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_BOTTOM}
|
|
||||||
|
|
||||||
HH_MAX_TABS = 19;
|
|
||||||
{$EXTERNALSYM HH_MAX_TABS}
|
|
||||||
|
|
||||||
HH_TAB_CONTENTS = 0;
|
|
||||||
{$EXTERNALSYM HH_TAB_CONTENTS}
|
|
||||||
HH_TAB_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HH_TAB_INDEX}
|
|
||||||
HH_TAB_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HH_TAB_SEARCH}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_TAB_BOOKMARKS = 3;
|
|
||||||
{$EXTERNALSYM HH_TAB_BOOKMARKS}
|
|
||||||
HH_TAB_HISTORY = 4;
|
|
||||||
{$EXTERNALSYM HH_TAB_HISTORY}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_TAB_FAVORITES = 3;
|
|
||||||
{$EXTERNALSYM HH_TAB_FAVORITES}
|
|
||||||
HH_TAB_HISTORY = 4;
|
|
||||||
{$EXTERNALSYM HH_TAB_HISTORY}
|
|
||||||
HH_TAB_AUTHOR = 5;
|
|
||||||
{$EXTERNALSYM HH_TAB_AUTHOR}
|
|
||||||
|
|
||||||
HH_TAB_CUSTOM_FIRST = 11;
|
|
||||||
{$EXTERNALSYM HH_TAB_CUSTOM_FIRST}
|
|
||||||
HH_TAB_CUSTOM_LAST = HH_MAX_TABS;
|
|
||||||
{$EXTERNALSYM HH_TAB_CUSTOM_LAST}
|
|
||||||
|
|
||||||
HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
|
|
||||||
{$EXTERNALSYM HH_MAX_TABS_CUSTOM}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
// HH_DISPLAY_SEARCH Command Related Structures and Constants
|
|
||||||
|
|
||||||
HH_FTS_DEFAULT_PROXIMITY = -1;
|
|
||||||
{$EXTERNALSYM HH_FTS_DEFAULT_PROXIMITY}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHFtsQuery = ^THHFtsQuery;
|
|
||||||
tagHH_FTS_QUERY = packed record
|
|
||||||
cbStruct: Integer; // Sizeof structure in bytes.
|
|
||||||
fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
|
|
||||||
pszSearchQuery: LPCTSTR; // String containing the search query.
|
|
||||||
iProximity: LongInt; // Word proximity.
|
|
||||||
fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
|
|
||||||
fTitleOnly: BOOL; // TRUE for Title search only.
|
|
||||||
fExecute: BOOL; // TRUE to initiate the search.
|
|
||||||
pszWindow: LPCTSTR; // Window to display in
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_FTS_QUERY}
|
|
||||||
HH_FTS_QUERY = tagHH_FTS_QUERY;
|
|
||||||
{$EXTERNALSYM HH_FTS_QUERY}
|
|
||||||
THHFtsQuery = tagHH_FTS_QUERY;
|
|
||||||
|
|
||||||
PHHWinType = ^THHWinType;
|
|
||||||
tagHH_WINTYPE = packed record
|
|
||||||
cbStruct: Integer; // IN: size of this structure including all Information Types
|
|
||||||
fUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODE
|
|
||||||
pszType: LPCTSTR; // IN/OUT: Name of a type of window
|
|
||||||
fsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)
|
|
||||||
fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)
|
|
||||||
|
|
||||||
pszCaption: LPCTSTR; // IN/OUT: Window title
|
|
||||||
dwStyles: DWORD; // IN/OUT: Window styles
|
|
||||||
dwExStyles: DWORD; // IN/OUT: Extended Window styles
|
|
||||||
rcWindowPos: TRect; // IN: Starting position, OUT: current position
|
|
||||||
nShowState: Integer; // IN: show state (e.g., SW_SHOW)
|
|
||||||
|
|
||||||
hwndHelp: HWND; // OUT: window handle
|
|
||||||
hwndCaller: HWND; // OUT: who called this window
|
|
||||||
|
|
||||||
paInfoTypes: PHHInfoType; // IN: Pointer to an array of Information Types
|
|
||||||
|
|
||||||
{ The following members are only valid if HHWIN_PROP_TRI_PANE is set }
|
|
||||||
|
|
||||||
hwndToolBar: HWND; // OUT: toolbar window in tri-pane window
|
|
||||||
hwndNavigation: HWND; // OUT: navigation window in tri-pane window
|
|
||||||
hwndHTML: HWND; // OUT: window displaying HTML in tri-pane window
|
|
||||||
iNavWidth: Integer; // IN/OUT: width of navigation window
|
|
||||||
rcHTML: TRect; // OUT: HTML window coordinates
|
|
||||||
|
|
||||||
pszToc: LPCTSTR; // IN: Location of the table of contents file
|
|
||||||
pszIndex: LPCTSTR; // IN: Location of the index file
|
|
||||||
pszFile: LPCTSTR; // IN: Default location of the html file
|
|
||||||
pszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clicked
|
|
||||||
fsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbar
|
|
||||||
fNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current state
|
|
||||||
curNavType: Integer; // IN/OUT: UI to display in the navigational pane
|
|
||||||
tabpos: Integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
|
|
||||||
idNotify: Integer; // IN: ID to use for WM_NOTIFY messages
|
|
||||||
tabOrder: array[0..HH_MAX_TABS] of Byte; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
|
|
||||||
cHistory: Integer; // IN/OUT: number of history items to keep (default is 30)
|
|
||||||
pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1
|
|
||||||
pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2
|
|
||||||
pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1
|
|
||||||
pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2
|
|
||||||
rcMinSize: TRect; // Minimum size for window (ignored in version 1)
|
|
||||||
cbInfoTypes: Integer; // size of paInfoTypes;
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
pszCustomTabs: LPCTSTR; // multiple zero-terminated Strings
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_WINTYPE}
|
|
||||||
HH_WINTYPE = tagHH_WINTYPE;
|
|
||||||
{$EXTERNALSYM HH_WINTYPE}
|
|
||||||
PHH_WINTYPE = ^tagHH_WINTYPE;
|
|
||||||
{$EXTERNALSYM PHH_WINTYPE}
|
|
||||||
THHWinType = tagHH_WINTYPE;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHACT_TAB_CONTENTS = 0;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_CONTENTS}
|
|
||||||
HHACT_TAB_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_INDEX}
|
|
||||||
HHACT_TAB_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_SEARCH}
|
|
||||||
HHACT_TAB_HISTORY = 3;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_HISTORY}
|
|
||||||
HHACT_TAB_FAVORITES = 4;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_FAVORITES}
|
|
||||||
HHACT_EXPAND = 5;
|
|
||||||
{$EXTERNALSYM HHACT_EXPAND}
|
|
||||||
HHACT_CONTRACT = 6;
|
|
||||||
{$EXTERNALSYM HHACT_CONTRACT}
|
|
||||||
HHACT_BACK = 7;
|
|
||||||
{$EXTERNALSYM HHACT_BACK}
|
|
||||||
HHACT_FORWARD = 8;
|
|
||||||
{$EXTERNALSYM HHACT_FORWARD}
|
|
||||||
HHACT_STOP = 9;
|
|
||||||
{$EXTERNALSYM HHACT_STOP}
|
|
||||||
HHACT_REFRESH = 10;
|
|
||||||
{$EXTERNALSYM HHACT_REFRESH}
|
|
||||||
HHACT_HOME = 11;
|
|
||||||
{$EXTERNALSYM HHACT_HOME}
|
|
||||||
HHACT_SYNC = 12;
|
|
||||||
{$EXTERNALSYM HHACT_SYNC}
|
|
||||||
HHACT_OPTIONS = 13;
|
|
||||||
{$EXTERNALSYM HHACT_OPTIONS}
|
|
||||||
HHACT_PRINT = 14;
|
|
||||||
{$EXTERNALSYM HHACT_PRINT}
|
|
||||||
HHACT_HIGHLIGHT = 15;
|
|
||||||
{$EXTERNALSYM HHACT_HIGHLIGHT}
|
|
||||||
HHACT_CUSTOMIZE = 16;
|
|
||||||
{$EXTERNALSYM HHACT_CUSTOMIZE}
|
|
||||||
HHACT_JUMP1 = 17;
|
|
||||||
{$EXTERNALSYM HHACT_JUMP1}
|
|
||||||
HHACT_JUMP2 = 18;
|
|
||||||
{$EXTERNALSYM HHACT_JUMP2}
|
|
||||||
HHACT_ZOOM = 19;
|
|
||||||
{$EXTERNALSYM HHACT_ZOOM}
|
|
||||||
HHACT_TOC_NEXT = 20;
|
|
||||||
{$EXTERNALSYM HHACT_TOC_NEXT}
|
|
||||||
HHACT_TOC_PREV = 21;
|
|
||||||
{$EXTERNALSYM HHACT_TOC_PREV}
|
|
||||||
HHACT_NOTES = 22;
|
|
||||||
{$EXTERNALSYM HHACT_NOTES}
|
|
||||||
HHACT_LAST_ENUM = 23;
|
|
||||||
{$EXTERNALSYM HHACT_LAST_ENUM}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHNTrack = ^THHNTrack;
|
|
||||||
tagHHNTRACK = packed record
|
|
||||||
hdr: NMHDR;
|
|
||||||
pszCurUrl: PCSTR; // Multi-byte, null-terminated string
|
|
||||||
idAction: Integer; // HHACT_ value
|
|
||||||
phhWinType: PHHWinType; // Current window type structure
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHHNTRACK}
|
|
||||||
HHNTRACK = tagHHNTRACK;
|
|
||||||
{$EXTERNALSYM HHNTRACK}
|
|
||||||
THHNTrack = tagHHNTRACK;
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
type
|
|
||||||
THtmlHelpA = function (hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}dwData: DWORD): HWND; stdcall;{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}dwData: DWORD_PTR): HWND; stdcall;{$ENDIF}
|
|
||||||
THtmlHelpW = function (hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}dwData: DWORD): HWND; stdcall;{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}dwData: DWORD_PTR): HWND; stdcall;{$ENDIF}
|
|
||||||
THtmlHelp = THtmlHelpA;
|
|
||||||
|
|
||||||
var
|
|
||||||
HtmlHelpA: THtmlHelpA = nil;
|
|
||||||
HtmlHelpW: THtmlHelpW = nil;
|
|
||||||
HtmlHelp: THtmlHelp = nil;
|
|
||||||
{$ELSE}
|
|
||||||
function HtmlHelpA(hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelpA}
|
|
||||||
function HtmlHelpW(hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelpW}
|
|
||||||
function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelp}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
// Use the following for GetProcAddress to load from hhctrl.ocx
|
|
||||||
|
|
||||||
const
|
|
||||||
ATOM_HTMLHELP_API_ANSI = LPTSTR(DWORD(WORD(14)));
|
|
||||||
{$EXTERNALSYM ATOM_HTMLHELP_API_ANSI}
|
|
||||||
ATOM_HTMLHELP_API_UNICODE = LPTSTR(DWORD(WORD(15)));
|
|
||||||
{$EXTERNALSYM ATOM_HTMLHELP_API_UNICODE}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
// Global Control Properties
|
|
||||||
|
|
||||||
const
|
|
||||||
HH_GPROPID_SINGLETHREAD = 1; // VARIANT_BOOL: True for single thread
|
|
||||||
{$EXTERNALSYM HH_GPROPID_SINGLETHREAD}
|
|
||||||
HH_GPROPID_TOOLBAR_MARGIN = 2; // long: Provides a left/right margin around the toolbar.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_TOOLBAR_MARGIN}
|
|
||||||
HH_GPROPID_UI_LANGUAGE = 3; // long: LangId of the UI.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_UI_LANGUAGE}
|
|
||||||
HH_GPROPID_CURRENT_SUBSET = 4; // BSTR: Current subset.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_CURRENT_SUBSET}
|
|
||||||
HH_GPROPID_CONTENT_LANGUAGE = 5; // long: LandId for desired content.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_CONTENT_LANGUAGE}
|
|
||||||
|
|
||||||
type
|
|
||||||
HH_GPROPID = HH_GPROPID_SINGLETHREAD..HH_GPROPID_CONTENT_LANGUAGE;
|
|
||||||
{$EXTERNALSYM HH_GPROPID}
|
|
||||||
THHGPropID = HH_GPROPID;
|
|
||||||
|
|
||||||
// Global Property structure
|
|
||||||
|
|
||||||
PHHGlobalProperty = ^THHGlobalProperty;
|
|
||||||
tagHH_GLOBAL_PROPERTY = record
|
|
||||||
id: THHGPropID;
|
|
||||||
Dummy: Integer; // JEDI: Added to enforce 8-byte packing
|
|
||||||
var_: OleVariant;
|
|
||||||
end;
|
|
||||||
HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
|
|
||||||
THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
function HtmlHelpLoaded: Boolean;
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
||||||
function LoadHtmlHelp: Boolean;
|
|
||||||
function UnLoadHtmlHelp: Boolean;
|
|
||||||
{$ENDIF}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
uses
|
|
||||||
Registry, SysUtils;
|
|
||||||
|
|
||||||
var
|
|
||||||
HtmlHelpLib: THandle = 0;
|
|
||||||
|
|
||||||
function GetOCXPath(var Path: string): Boolean;
|
|
||||||
const
|
|
||||||
HHPathRegKey = 'CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
|
|
||||||
begin
|
|
||||||
with TRegistry.Create do
|
|
||||||
try
|
|
||||||
RootKey := HKEY_CLASSES_ROOT;
|
|
||||||
if OpenKeyReadOnly(HHPathRegKey) then Path := ReadString('');
|
|
||||||
Result := (Path <> '') and FileExists(Path);
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function HtmlHelpLoaded: Boolean;
|
|
||||||
begin
|
|
||||||
Result := HtmlHelpLib <> 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function UnLoadHtmlHelp: Boolean;
|
|
||||||
begin
|
|
||||||
Result := True;
|
|
||||||
if HtmlHelpLoaded then
|
|
||||||
begin
|
|
||||||
if Assigned(HtmlHelp) then HtmlHelp(0, nil, HH_CLOSE_ALL, 0);
|
|
||||||
Result := FreeLibrary(HtmlHelpLib);
|
|
||||||
HtmlHelpLib := 0;
|
|
||||||
@HtmlHelpA := nil;
|
|
||||||
@HtmlHelpW := nil;
|
|
||||||
@HtmlHelp := nil;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function LoadHtmlHelp: Boolean;
|
|
||||||
const
|
|
||||||
ProcNameA = 'HtmlHelpA';
|
|
||||||
ProcNameW = 'HtmlHelpW';
|
|
||||||
ProcName = ProcNameA;
|
|
||||||
var
|
|
||||||
HHOCXPath: string;
|
|
||||||
begin
|
|
||||||
Result := HtmlHelpLoaded;
|
|
||||||
if (not Result) and GetOCXPath(HHOCXPath) then
|
|
||||||
begin
|
|
||||||
HtmlHelpLib := LoadLibrary(PChar(HHOCXPath));
|
|
||||||
if HtmlHelpLoaded then
|
|
||||||
begin
|
|
||||||
@HtmlHelpA := GetProcAddress(HtmlHelpLib, ProcNameA);
|
|
||||||
@HtmlHelpW := GetProcAddress(HtmlHelpLib, ProcNameW);
|
|
||||||
@HtmlHelp := GetProcAddress(HtmlHelpLib, ProcName);
|
|
||||||
Result := Assigned(HtmlHelpA) and Assigned(HtmlHelpW);
|
|
||||||
if not Result then UnLoadHtmlHelp;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
const
|
|
||||||
hhctrl = 'hhctrl.ocx';
|
|
||||||
|
|
||||||
function HtmlHelpA; external hhctrl Name 'HtmlHelpA';
|
|
||||||
{$EXTERNALSYM HtmlHelpA}
|
|
||||||
function HtmlHelpW; external hhctrl Name 'HtmlHelpW';
|
|
||||||
{$EXTERNALSYM HtmlHelpW}
|
|
||||||
function HtmlHelp; external hhctrl Name 'HtmlHelpA';
|
|
||||||
{$EXTERNALSYM HtmlHelp}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
initialization
|
|
||||||
{$IFNDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
||||||
LoadHtmlHelp;
|
|
||||||
{$ENDIF}
|
|
||||||
finalization
|
|
||||||
UnLoadHtmlHelp;
|
|
||||||
{$ENDIF}
|
|
||||||
end.
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,123 +0,0 @@
|
|||||||
unit MsMultiPartFormData;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
SysUtils, Classes;
|
|
||||||
|
|
||||||
const
|
|
||||||
CONTENT_TYPE = 'multipart/form-data; boundary=';
|
|
||||||
CRLF = #13#10;
|
|
||||||
CONTENT_DISPOSITION = 'Content-Disposition: form-data; name="%s"';
|
|
||||||
FILE_NAME_PLACE_HOLDER = '; filename="%s"';
|
|
||||||
CONTENT_TYPE_PLACE_HOLDER = 'Content-Type: %s' + crlf + crlf;
|
|
||||||
CONTENT_LENGTH = 'Content-Length: %d' + crlf;
|
|
||||||
|
|
||||||
type
|
|
||||||
TMsMultiPartFormDataStream = class(TMemoryStream)
|
|
||||||
private
|
|
||||||
FBoundary: string;
|
|
||||||
FRequestContentType: string;
|
|
||||||
FInitial: Boolean;
|
|
||||||
function GenerateUniqueBoundary: string;
|
|
||||||
public
|
|
||||||
procedure AddFormField(const FieldName, FieldValue: string);
|
|
||||||
procedure AddFile(const FieldName, FileName, ContentType: string; FileData: TStream); overload;
|
|
||||||
procedure AddFile(const FieldName, FileName, ContentType: string); overload;
|
|
||||||
procedure PrepareStreamForDispatch;
|
|
||||||
constructor Create;
|
|
||||||
property Boundary: string read FBoundary;
|
|
||||||
property RequestContentType: string read FRequestContentType;
|
|
||||||
end;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{ TMsMultiPartFormDataStream }
|
|
||||||
|
|
||||||
constructor TMsMultiPartFormDataStream.Create;
|
|
||||||
begin
|
|
||||||
inherited;
|
|
||||||
FInitial := True;
|
|
||||||
FBoundary := GenerateUniqueBoundary;
|
|
||||||
FRequestContentType := CONTENT_TYPE + FBoundary;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMsMultiPartFormDataStream.AddFile(const FieldName, FileName,
|
|
||||||
ContentType: string; FileData: TStream);
|
|
||||||
var
|
|
||||||
sFormFieldInfo: string;
|
|
||||||
Buffer: PChar;
|
|
||||||
iSize: Int64;
|
|
||||||
begin
|
|
||||||
iSize := FileData.Size;
|
|
||||||
// Malikyar -- Removed the Content_length parameter since the web buffer did not contain it.
|
|
||||||
{
|
|
||||||
sFormFieldInfo := Format(CRLF + '--' + Boundary + CRLF + CONTENT_DISPOSITION +
|
|
||||||
FILE_NAME_PLACE_HOLDER + CRLF + CONTENT_LENGTH +
|
|
||||||
CONTENT_TYPE_PLACE_HOLDER, [FieldName, FileName, iSize, ContentType]);
|
|
||||||
}
|
|
||||||
sFormFieldInfo := Format(CRLF + '--' + Boundary + CRLF + CONTENT_DISPOSITION +
|
|
||||||
FILE_NAME_PLACE_HOLDER + CRLF +
|
|
||||||
CONTENT_TYPE_PLACE_HOLDER, [FieldName, FileName, ContentType]);
|
|
||||||
|
|
||||||
Write(Pointer(sFormFieldInfo)^, Length(sFormFieldInfo));
|
|
||||||
FileData.Position := 0;
|
|
||||||
GetMem(Buffer, iSize);
|
|
||||||
try
|
|
||||||
FileData.Read(Buffer^, iSize);
|
|
||||||
Write(Buffer^, iSize);
|
|
||||||
finally
|
|
||||||
FreeMem(Buffer, iSize);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMsMultiPartFormDataStream.AddFile(const FieldName, FileName,
|
|
||||||
ContentType: string);
|
|
||||||
var
|
|
||||||
FileStream: TFileStream;
|
|
||||||
begin
|
|
||||||
FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
|
|
||||||
try
|
|
||||||
AddFile(FieldName, FileName, ContentType, FileStream);
|
|
||||||
finally
|
|
||||||
FileStream.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMsMultiPartFormDataStream.AddFormField(const FieldName,
|
|
||||||
FieldValue: string);
|
|
||||||
var
|
|
||||||
sFormFieldInfo: string;
|
|
||||||
begin
|
|
||||||
// Add a check to see if it's the initial field being added. If so, then do not preface with a CRLF.
|
|
||||||
if FInitial then
|
|
||||||
begin
|
|
||||||
sFormFieldInfo :=
|
|
||||||
Format('--' + Boundary + CRLF + CONTENT_DISPOSITION + CRLF + CRLF +
|
|
||||||
FieldValue, [FieldName]);
|
|
||||||
FInitial := False;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
sFormFieldInfo :=
|
|
||||||
Format(CRLF + '--' + Boundary + CRLF + CONTENT_DISPOSITION + CRLF + CRLF +
|
|
||||||
FieldValue, [FieldName]);
|
|
||||||
Write(Pointer(sFormFieldInfo)^, Length(sFormFieldInfo));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TMsMultiPartFormDataStream.GenerateUniqueBoundary: string;
|
|
||||||
begin
|
|
||||||
Result := '---------------------------' + FormatDateTime('mmddyyhhnnsszzz', Now);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMsMultiPartFormDataStream.PrepareStreamForDispatch;
|
|
||||||
var
|
|
||||||
sFormFieldInfo: string;
|
|
||||||
begin
|
|
||||||
sFormFieldInfo := CRLF + '--' + Boundary + '--' + CRLF;
|
|
||||||
Write(Pointer(sFormFieldInfo)^, Length(sFormFieldInfo));
|
|
||||||
Position := 0;
|
|
||||||
FInitial := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,375 +0,0 @@
|
|||||||
object MutateForm: TMutateForm
|
|
||||||
Left = 857
|
|
||||||
Top = 311
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'Mutation'
|
|
||||||
ClientHeight = 383
|
|
||||||
ClientWidth = 372
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000056B9F5000000
|
|
||||||
00000000000000000056B9F500000000000000000000000056B9F50000000000
|
|
||||||
0000000000000000000056B9F500000000000000000000000056B9F500000000
|
|
||||||
000000000000000056B9F500000000000000000000000000000056B9F5000000
|
|
||||||
00000000000000000056B9F500000000000000000000000056B9F50000000000
|
|
||||||
0056B9F556B9F556B9F556B9F500000056B9F556B9F556B9F556B9F500000056
|
|
||||||
B9F556B9F556B9F556B9F5000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000056B9F500000000000000000000000056B9F500000000
|
|
||||||
000000000000000056B9F500000000000000000000000000000056B9F5000000
|
|
||||||
00000000000000000056B9F500000000000000000000000056B9F50000000000
|
|
||||||
0000000000000000000056B9F500000000000000000000000056B9F500000000
|
|
||||||
000000000000000056B9F500000000000056B9F556B9F556B9F556B9F5000000
|
|
||||||
56B9F556B9F556B9F556B9F500000056B9F556B9F556B9F556B9F50000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000056B9F5000000
|
|
||||||
00000000000000000056B9F500000000000000000000000056B9F50000000000
|
|
||||||
0000000000000000000056B9F500000000000000000000000056B9F500000000
|
|
||||||
000000000000000056B9F500000000000000000000000000000056B9F5000000
|
|
||||||
00000000000000000056B9F500000000000000000000000056B9F50000000000
|
|
||||||
0056B9F556B9F556B9F556B9F500000056B9F556B9F556B9F556B9F500000056
|
|
||||||
B9F556B9F556B9F556B9F5000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
000084210000842100008421000084210000FFFF000084210000842100008421
|
|
||||||
000084210000FFFF000084210000842100008421000084210000FFFF0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefault
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 357
|
|
||||||
Height = 283
|
|
||||||
Caption = 'Directions'
|
|
||||||
TabOrder = 0
|
|
||||||
object Panel1: TPanel
|
|
||||||
Left = 12
|
|
||||||
Top = 20
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 1
|
|
||||||
object Image1: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel2: TPanel
|
|
||||||
Left = 124
|
|
||||||
Top = 20
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 2
|
|
||||||
object Image2: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel3: TPanel
|
|
||||||
Left = 236
|
|
||||||
Top = 20
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 3
|
|
||||||
object Image3: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel8: TPanel
|
|
||||||
Left = 12
|
|
||||||
Top = 104
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 4
|
|
||||||
object Image8: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel0: TPanel
|
|
||||||
Left = 124
|
|
||||||
Top = 104
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
HelpContext = 2003
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object Image0: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = Image0Click
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel4: TPanel
|
|
||||||
Left = 236
|
|
||||||
Top = 104
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 5
|
|
||||||
object Image4: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel7: TPanel
|
|
||||||
Left = 12
|
|
||||||
Top = 188
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 6
|
|
||||||
object Image7: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel6: TPanel
|
|
||||||
Left = 124
|
|
||||||
Top = 188
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 7
|
|
||||||
object Image6: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel5: TPanel
|
|
||||||
Left = 236
|
|
||||||
Top = 188
|
|
||||||
Width = 108
|
|
||||||
Height = 80
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl3'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 8
|
|
||||||
object Image5: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 106
|
|
||||||
Height = 78
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
Stretch = True
|
|
||||||
OnClick = MutantClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 296
|
|
||||||
Width = 357
|
|
||||||
Height = 81
|
|
||||||
Caption = 'Controls'
|
|
||||||
TabOrder = 1
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 52
|
|
||||||
Width = 31
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Trend:'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 23
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Speed:'
|
|
||||||
end
|
|
||||||
object lblTime: TLabel
|
|
||||||
Left = 320
|
|
||||||
Top = 23
|
|
||||||
Width = 6
|
|
||||||
Height = 13
|
|
||||||
Caption = '0'
|
|
||||||
end
|
|
||||||
object scrollTime: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 24
|
|
||||||
Width = 265
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 5
|
|
||||||
Max = 50
|
|
||||||
Min = 1
|
|
||||||
PageSize = 0
|
|
||||||
Position = 1
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrollTimeChange
|
|
||||||
end
|
|
||||||
object cmbTrend: TComboBox
|
|
||||||
Left = 56
|
|
||||||
Top = 48
|
|
||||||
Width = 145
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = cmbTrendChange
|
|
||||||
Items.Strings = (
|
|
||||||
'Random'
|
|
||||||
'Linear'
|
|
||||||
'Sinusoidal'
|
|
||||||
'Spherical'
|
|
||||||
'Swirl'
|
|
||||||
'Horseshoe'
|
|
||||||
'Polar'
|
|
||||||
'Handkerchief'
|
|
||||||
'Heart'
|
|
||||||
'Disc'
|
|
||||||
'Spiral'
|
|
||||||
'Hyperbolic'
|
|
||||||
'Diamond'
|
|
||||||
'Ex'
|
|
||||||
'Julia'
|
|
||||||
'Bent'
|
|
||||||
'Waves'
|
|
||||||
'Fisheye'
|
|
||||||
'Popcorn')
|
|
||||||
end
|
|
||||||
object chkSameNum: TCheckBox
|
|
||||||
Left = 208
|
|
||||||
Top = 50
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Same no. of transforms'
|
|
||||||
TabOrder = 2
|
|
||||||
OnClick = chkSameNumClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Timer: TTimer
|
|
||||||
Enabled = False
|
|
||||||
Interval = 100
|
|
||||||
OnTimer = TimerTimer
|
|
||||||
Left = 80
|
|
||||||
Top = 40
|
|
||||||
end
|
|
||||||
object QualityPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 144
|
|
||||||
Top = 40
|
|
||||||
object mnuLowQuality: TMenuItem
|
|
||||||
Caption = 'Low Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuLowQualityClick
|
|
||||||
end
|
|
||||||
object mnuMediumQuality: TMenuItem
|
|
||||||
Caption = 'Medium Quality'
|
|
||||||
Checked = True
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuMediumQualityClick
|
|
||||||
end
|
|
||||||
object mnuHighQuality: TMenuItem
|
|
||||||
Caption = 'High Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHighQualityClick
|
|
||||||
end
|
|
||||||
object N3: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuBack: TMenuItem
|
|
||||||
Caption = 'Previous'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 4
|
|
||||||
OnClick = mnuBackClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuMaintainSym: TMenuItem
|
|
||||||
Caption = 'Maintain Symmetry'
|
|
||||||
Checked = True
|
|
||||||
OnClick = mnuMaintainSymClick
|
|
||||||
end
|
|
||||||
object N2: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuResetLocation: TMenuItem
|
|
||||||
Caption = 'Reset Location'
|
|
||||||
Checked = True
|
|
||||||
OnClick = mnuResetLocationClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,632 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Mutate;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, StdCtrls, ControlPoint, Render, ComCtrls, Menus, Buttons, Cmap;
|
|
||||||
|
|
||||||
type
|
|
||||||
TMutateForm = class(TForm)
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
Panel0: TPanel;
|
|
||||||
Panel1: TPanel;
|
|
||||||
Panel2: TPanel;
|
|
||||||
Panel3: TPanel;
|
|
||||||
Panel8: TPanel;
|
|
||||||
Panel4: TPanel;
|
|
||||||
Panel7: TPanel;
|
|
||||||
Panel6: TPanel;
|
|
||||||
Panel5: TPanel;
|
|
||||||
Image1: TImage;
|
|
||||||
Image2: TImage;
|
|
||||||
Image3: TImage;
|
|
||||||
Image4: TImage;
|
|
||||||
Image5: TImage;
|
|
||||||
Image6: TImage;
|
|
||||||
Image7: TImage;
|
|
||||||
Image8: TImage;
|
|
||||||
Image0: TImage;
|
|
||||||
Timer: TTimer;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
scrollTime: TScrollBar;
|
|
||||||
cmbTrend: TComboBox;
|
|
||||||
lblTime: TLabel;
|
|
||||||
chkSameNum: TCheckBox;
|
|
||||||
QualityPopup: TPopupMenu;
|
|
||||||
mnuLowQuality: TMenuItem;
|
|
||||||
mnuMediumQuality: TMenuItem;
|
|
||||||
mnuHighQuality: TMenuItem;
|
|
||||||
N3: TMenuItem;
|
|
||||||
mnuResetLocation: TMenuItem;
|
|
||||||
mnuBack: TMenuItem;
|
|
||||||
N1: TMenuItem;
|
|
||||||
mnuMaintainSym: TMenuItem;
|
|
||||||
N2: TMenuItem;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure Image0Click(Sender: TObject);
|
|
||||||
procedure MutantClick(Sender: TObject);
|
|
||||||
procedure sbTimeChange(Sender: TObject);
|
|
||||||
procedure TimerTimer(Sender: TObject);
|
|
||||||
procedure scrollTimeChange(Sender: TObject);
|
|
||||||
procedure cmbTrendChange(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure mnuHighQualityClick(Sender: TObject);
|
|
||||||
procedure mnuLowQualityClick(Sender: TObject);
|
|
||||||
procedure mnuMediumQualityClick(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure chkSameNumClick(Sender: TObject);
|
|
||||||
procedure mnuResetLocationClick(Sender: TObject);
|
|
||||||
procedure mnuBackClick(Sender: TObject);
|
|
||||||
procedure mnuMaintainSymClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
name, nick, url: string;
|
|
||||||
bm: TBitmap;
|
|
||||||
PreviewDensity: double;
|
|
||||||
Updating: boolean;
|
|
||||||
cps: array[0..8] of TControlPoint;
|
|
||||||
Mutants: array[0..8] of TControlPoint;
|
|
||||||
Render: TRenderer;
|
|
||||||
Time: double;
|
|
||||||
bstop: boolean;
|
|
||||||
brightness, gamma, vibrancy: double;
|
|
||||||
seed, InitSeed: integer;
|
|
||||||
procedure RandomSet;
|
|
||||||
procedure ShowMain;
|
|
||||||
procedure ShowMutants;
|
|
||||||
procedure Interpolate;
|
|
||||||
public
|
|
||||||
Zoom: Double;
|
|
||||||
Center: array[0..1] of double;
|
|
||||||
cmap: TColorMap;
|
|
||||||
procedure UpdateDisplay;
|
|
||||||
procedure UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
MutateForm: TMutateForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, Registry, Editor, Adjust;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TMutateForm.UpdateFlame;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.Copy(cps[0]);
|
|
||||||
Transforms := MainForm.TrianglesFromCP(MainCp, MainTriangles);
|
|
||||||
MainCp.cmap := cmap;
|
|
||||||
MainCp.name := name;
|
|
||||||
MainCp.nick := nick;
|
|
||||||
mainCp.url := url;
|
|
||||||
if mnuResetLocation.checked then
|
|
||||||
begin
|
|
||||||
MainForm.Mainzoom := cps[0].zoom;
|
|
||||||
MainForm.Center[0] := cps[0].Center[0];
|
|
||||||
MainForm.Center[1] := cps[0].Center[1];
|
|
||||||
end;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
if EditForm.Visible then EditForm.UpdateDisplay;
|
|
||||||
// if AdjustForm.Visible then AdjustForm.UpdateDisplay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.UpdateDisplay;
|
|
||||||
begin
|
|
||||||
cps[0].copy(MainCp);
|
|
||||||
AdjustScale(cps[0], Image0.Width, Image0.Height);
|
|
||||||
cps[0].cmap := MainCp.cmap;
|
|
||||||
cmap := MainCp.cmap;
|
|
||||||
name := Maincp.name;
|
|
||||||
nick := maincp.nick;
|
|
||||||
url := maincp.url;
|
|
||||||
zoom := MainCp.zoom;
|
|
||||||
center[0] := MainCp.center[0];
|
|
||||||
center[1] := MainCp.center[1];
|
|
||||||
vibrancy := cps[0].vibrancy;
|
|
||||||
gamma := cps[0].gamma;
|
|
||||||
brightness := cps[0].brightness;
|
|
||||||
Interpolate;
|
|
||||||
ShowMain;
|
|
||||||
Application.ProcessMessages;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.ShowMain;
|
|
||||||
begin
|
|
||||||
cps[0].Width := Image0.Width;
|
|
||||||
cps[0].Height := Image0.Height;
|
|
||||||
cps[0].spatial_oversample := defOversample;
|
|
||||||
cps[0].spatial_filter_radius := defFilterRadius;
|
|
||||||
cps[0].sample_density := PreviewDensity;
|
|
||||||
cps[0].brightness := brightness;
|
|
||||||
cps[0].gamma := gamma;
|
|
||||||
cps[0].vibrancy := vibrancy;
|
|
||||||
cps[0].sample_density := PreviewDensity;
|
|
||||||
cps[0].cmap := cmap;
|
|
||||||
cps[0].background := MainCp.background;
|
|
||||||
if mnuResetLocation.checked then begin
|
|
||||||
cps[0].CalcBoundbox;
|
|
||||||
zoom := 0;
|
|
||||||
center[0] := cps[0].center[0];
|
|
||||||
center[1] := cps[0].Center[1];
|
|
||||||
end;
|
|
||||||
cps[0].zoom := zoom;
|
|
||||||
cps[0].center[0] := center[0];
|
|
||||||
cps[0].center[1] := center[1];
|
|
||||||
Render.Compatibility := compatibility;
|
|
||||||
Render.SetCP(cps[0]);
|
|
||||||
Render.Render;
|
|
||||||
BM.Assign(Render.GetImage);
|
|
||||||
Image0.Picture.Graphic := bm;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.ShowMutants;
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
Updating := true;
|
|
||||||
for i := 1 to 8 do
|
|
||||||
begin
|
|
||||||
mutants[i].Width := Image1.Width;
|
|
||||||
mutants[i].Height := Image1.Height;
|
|
||||||
mutants[i].spatial_filter_radius := defFilterRadius;
|
|
||||||
mutants[i].spatial_oversample := defOversample;
|
|
||||||
mutants[i].sample_density := PreviewDensity;
|
|
||||||
mutants[i].brightness := brightness;
|
|
||||||
mutants[i].gamma := gamma;
|
|
||||||
mutants[i].vibrancy := vibrancy;
|
|
||||||
|
|
||||||
{ mutants[i].zoom := 0;
|
|
||||||
mutants[i].CalcBoundbox;
|
|
||||||
if not mnuResetLocation.checked then begin
|
|
||||||
mutants[i].zoom := MainCp.zoom;
|
|
||||||
mutants[i].CalcBoundbox;
|
|
||||||
mutants[i].center[0] := MainCp.Center[0];
|
|
||||||
mutants[i].center[1] := MainCp.Center[1];
|
|
||||||
end;
|
|
||||||
{ if mnuResetLocation.checked then begin
|
|
||||||
mutants[i].CalcBoundbox;
|
|
||||||
zoom := 0;
|
|
||||||
center[0] := cps[0].center[0];
|
|
||||||
center[1] := cps[0].Center[1];
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
|
|
||||||
if mnuResetLocation.checked then
|
|
||||||
begin
|
|
||||||
mutants[i].CalcBoundbox;
|
|
||||||
mutants[i].zoom := 0;
|
|
||||||
// center[0] := cps[0].center[0];
|
|
||||||
// center[1] := cps[0].Center[1];
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
mutants[i].zoom := zoom;
|
|
||||||
mutants[i].center[0] := center[0];
|
|
||||||
mutants[i].center[1] := center[1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
Render.Compatibility := compatibility;
|
|
||||||
Render.SetCP(mutants[i]);
|
|
||||||
Render.Render;
|
|
||||||
BM.Assign(Render.GetImage);
|
|
||||||
case i of
|
|
||||||
1: begin
|
|
||||||
Image1.Picture.Graphic := bm;
|
|
||||||
Image1.Refresh;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
Image2.Picture.Graphic := bm;
|
|
||||||
Image2.Refresh;
|
|
||||||
end;
|
|
||||||
3: begin
|
|
||||||
Image3.Picture.Graphic := bm;
|
|
||||||
Image3.Refresh;
|
|
||||||
end;
|
|
||||||
4: begin
|
|
||||||
Image4.Picture.Graphic := bm;
|
|
||||||
Image4.Refresh;
|
|
||||||
end;
|
|
||||||
5: begin
|
|
||||||
Image5.Picture.Graphic := bm;
|
|
||||||
Image5.Refresh;
|
|
||||||
end;
|
|
||||||
6: begin
|
|
||||||
Image6.Picture.Graphic := bm;
|
|
||||||
Image6.Refresh;
|
|
||||||
end;
|
|
||||||
7: begin
|
|
||||||
Image7.Picture.Graphic := bm;
|
|
||||||
Image7.Refresh;
|
|
||||||
end;
|
|
||||||
8: begin
|
|
||||||
Image8.Picture.Graphic := bm;
|
|
||||||
Image8.Refresh;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Updating := false;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.Interpolate;
|
|
||||||
var i, j, k: Integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to 8 do
|
|
||||||
begin
|
|
||||||
if bstop then exit;
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[i].Time := 1;
|
|
||||||
Mutants[i].clear;
|
|
||||||
Mutants[i].InterpolateX(cps[0], cps[i], Time / 100);
|
|
||||||
Mutants[i].cmapindex := cps[0].cmapindex;
|
|
||||||
Mutants[i].cmap := cps[0].cmap;
|
|
||||||
Mutants[i].background := MainCp.background;
|
|
||||||
if mnuMaintainSym.Checked then // maintain symmetry
|
|
||||||
begin
|
|
||||||
for j := 0 to transforms - 1 do
|
|
||||||
begin
|
|
||||||
if cps[0].xform[j].Symmetry = 1 then
|
|
||||||
begin
|
|
||||||
mutants[i].xform[j].Symmetry := 1;
|
|
||||||
mutants[i].xform[j].Color := cps[0].xform[j].color;
|
|
||||||
mutants[i].xform[j].Density := cps[0].xform[j].Density;
|
|
||||||
mutants[i].xform[j].c[0][0] := cps[0].xform[j].c[0][0];
|
|
||||||
mutants[i].xform[j].c[0][1] := cps[0].xform[j].c[0][1];
|
|
||||||
mutants[i].xform[j].c[1][0] := cps[0].xform[j].c[1][0];
|
|
||||||
mutants[i].xform[j].c[1][1] := cps[0].xform[j].c[1][1];
|
|
||||||
mutants[i].xform[j].c[2][0] := cps[0].xform[j].c[2][0];
|
|
||||||
mutants[i].xform[j].c[2][1] := cps[0].xform[j].c[2][1];
|
|
||||||
for k := 0 to NVARS - 1 do
|
|
||||||
mutants[i].xform[j].vars[k] := cps[0].xform[j].vars[k];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.RandomSet;
|
|
||||||
var i: Integer;
|
|
||||||
begin
|
|
||||||
RandSeed := seed;
|
|
||||||
for i := 1 to 8 do
|
|
||||||
begin
|
|
||||||
cps[i].clear;
|
|
||||||
if chkSameNum.checked then
|
|
||||||
cps[i].RandomCP(transforms, transforms, false)
|
|
||||||
else
|
|
||||||
cps[i].RandomCP(mutantMinTransforms, mutantMaxTransforms, false);
|
|
||||||
cps[i].SetVariation(TVariation(cmbTrend.Items.Objects[cmbTrend.ItemIndex]));
|
|
||||||
end;
|
|
||||||
Interpolate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Mutate', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
MutateForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
MutateForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
Interpolate;
|
|
||||||
ShowMain;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.FormCreate(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
cmbTrend.Items.clear;
|
|
||||||
cmbTrend.AddItem('Random', Tobject(vRandom));
|
|
||||||
for i:= 0 to NVars -1 do begin
|
|
||||||
cmbTrend.AddItem(varnames[i], Tobject(i));
|
|
||||||
end;
|
|
||||||
|
|
||||||
bm := TBitMap.Create;
|
|
||||||
case MutatePrevQual of
|
|
||||||
0: begin
|
|
||||||
mnuLowQuality.Checked := true;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
end;
|
|
||||||
1: begin
|
|
||||||
mnuMediumQuality.Checked := true;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
mnuHighQuality.Checked := true;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
for i := 0 to 8 do
|
|
||||||
begin
|
|
||||||
cps[i] := TControlPoint.Create;
|
|
||||||
Mutants[i] := TControlPoint.Create;
|
|
||||||
end;
|
|
||||||
Time := 35;
|
|
||||||
scrollTime.Position := 25;
|
|
||||||
cmbTrend.ItemIndex := 0;
|
|
||||||
InitSeed := random(1234567890);
|
|
||||||
seed := InitSeed;
|
|
||||||
RandomSet;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.FormDestroy(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
Render.Free;
|
|
||||||
for i := 0 to 8 do
|
|
||||||
begin
|
|
||||||
cps[i].Free;
|
|
||||||
Mutants[i].Free;
|
|
||||||
end;
|
|
||||||
bm.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.Image0Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
mnuBack.Enabled := true;
|
|
||||||
inc(seed);
|
|
||||||
RandomSet;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.MutantClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
cpt: TControlPoint;
|
|
||||||
begin
|
|
||||||
cpt := TControlPoint.Create;
|
|
||||||
cpt.Copy(cps[0]);
|
|
||||||
bstop := true;
|
|
||||||
if sender = Image1 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[1].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[1], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image2 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[2].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[2], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image3 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[3].Time := 1;
|
|
||||||
cps[0].InterpolateX(cps[0], cps[3], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image4 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[4].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[4], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image5 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[5].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[5], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image6 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[6].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[6], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image7 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[7].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[7], Time / 100);
|
|
||||||
end
|
|
||||||
else if sender = Image8 then
|
|
||||||
begin
|
|
||||||
cps[0].Time := 0;
|
|
||||||
cps[8].Time := 1;
|
|
||||||
cps[0].Interpolatex(cps[0], cps[8], Time / 100);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if mnuMaintainSym.Checked then // maintain symmetry
|
|
||||||
begin
|
|
||||||
for i := 0 to transforms - 1 do
|
|
||||||
begin
|
|
||||||
if cpt.xform[i].Symmetry = 1 then
|
|
||||||
begin
|
|
||||||
cps[0].xform[i].Symmetry := 1;
|
|
||||||
cps[0].xform[i].Color := cpt.xform[i].color;
|
|
||||||
cps[0].xform[i].Density := cpt.xform[i].Density;
|
|
||||||
cps[0].xform[i].c[0][0] := cpt.xform[i].c[0][0];
|
|
||||||
cps[0].xform[i].c[0][1] := cpt.xform[i].c[0][1];
|
|
||||||
cps[0].xform[i].c[1][0] := cpt.xform[i].c[1][0];
|
|
||||||
cps[0].xform[i].c[1][1] := cpt.xform[i].c[1][1];
|
|
||||||
cps[0].xform[i].c[2][0] := cpt.xform[i].c[2][0];
|
|
||||||
cps[0].xform[i].c[2][1] := cpt.xform[i].c[2][1];
|
|
||||||
for j := 0 to NVARS - 1 do
|
|
||||||
cps[0].xform[i].vars[j] := cpt.xform[i].vars[j];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
bstop := false;
|
|
||||||
ShowMain;
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
UpdateFlame;
|
|
||||||
cpt.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.sbTimeChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bstop := true;
|
|
||||||
Render.Stop;
|
|
||||||
Time := scrollTime.Position;
|
|
||||||
bstop := false;
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.TimerTimer(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Timer.Enabled := false;
|
|
||||||
if (Time <> scrollTime.Position) and (not updating) then
|
|
||||||
begin
|
|
||||||
Time := scrollTime.Position;
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.scrollTimeChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Timer.Enabled := true;
|
|
||||||
lblTime.Caption := FloatToStr(scrollTime.Position / 100);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.cmbTrendChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to 8 do begin
|
|
||||||
cps[i].SetVariation(TVariation(cmbTrend.Items.Objects[cmbTrend.ItemIndex]));
|
|
||||||
end;
|
|
||||||
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuHighQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuHighQuality.Checked := True;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
MutatePrevQual := 2;
|
|
||||||
ShowMain;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuLowQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuLowQuality.Checked := True;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
MutatePrevQual := 0;
|
|
||||||
ShowMain;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuMediumQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuMediumQuality.Checked := True;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
MutatePrevQual := 1;
|
|
||||||
ShowMain;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Mutate', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', MutateForm.Top);
|
|
||||||
Registry.WriteInteger('Left', MutateForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.chkSameNumClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
RandomSet;
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuResetLocationClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuResetLocation.Checked := not mnuResetLocation.Checked;
|
|
||||||
if not mnuResetLocation.checked then
|
|
||||||
begin
|
|
||||||
cps[0].width := MainCp.width;
|
|
||||||
cps[0].height := MainCp.height;
|
|
||||||
cps[0].pixels_per_unit := MainCp.pixels_per_unit;
|
|
||||||
AdjustScale(cps[0], Image0.width, Image0.Height);
|
|
||||||
cps[0].zoom := MainCp.zoom;
|
|
||||||
cps[0].center[0] := MainCp.center[0];
|
|
||||||
cps[0].center[1] := MainCp.center[1];
|
|
||||||
zoom := cps[0].zoom;
|
|
||||||
center[0] := cps[0].center[0];
|
|
||||||
center[1] := cps[0].center[1];
|
|
||||||
end;
|
|
||||||
ShowMain;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuBackClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
if seed > InitSeed then
|
|
||||||
dec(seed);
|
|
||||||
if seed = InitSeed then mnuBack.enabled := false;
|
|
||||||
RandomSet;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMutateForm.mnuMaintainSymClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuMaintainSym.Checked := not mnuMaintainSym.Checked;
|
|
||||||
Interpolate;
|
|
||||||
ShowMutants;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit MyTypes;
|
|
||||||
|
|
||||||
|
|
||||||
interface
|
|
||||||
uses ControlPoint;
|
|
||||||
|
|
||||||
type
|
|
||||||
TTriangle = record
|
|
||||||
x: array[0..2] of double;
|
|
||||||
y: array[0..2] of double;
|
|
||||||
end;
|
|
||||||
TTriangles = array[-1..NXFORMS] of TTriangle;
|
|
||||||
TSPoint = record
|
|
||||||
x: double;
|
|
||||||
y: double;
|
|
||||||
end;
|
|
||||||
TMapPalette = record
|
|
||||||
Red: array[0..255] of byte;
|
|
||||||
Green: array[0..255] of byte;
|
|
||||||
Blue: array[0..255] of byte;
|
|
||||||
end;
|
|
||||||
TColorMaps = record
|
|
||||||
Identifier: string;
|
|
||||||
UGRFile: string;
|
|
||||||
end;
|
|
||||||
pPixArray = ^TPixArray;
|
|
||||||
TPixArray = array[0..1279, 0..1023, 0..3] of integer;
|
|
||||||
pPreviewPixArray = ^TPreviewPixArray;
|
|
||||||
TPreviewPixArray = array[0..159, 0..119, 0..3] of integer;
|
|
||||||
TFileType = (ftIfs, ftFla, ftXML);
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
end.
|
|
File diff suppressed because it is too large
Load Diff
@ -1,590 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
{$D-,L-,O+,Q-,R-,Y-,S-}
|
|
||||||
unit Options;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ComCtrls, ExtCtrls, Buttons, Registry, Mask, CheckLst;
|
|
||||||
|
|
||||||
type
|
|
||||||
TOptionsForm = class(TForm)
|
|
||||||
btnOK: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
OpenDialog: TOpenDialog;
|
|
||||||
Tabs: TPageControl;
|
|
||||||
GeneralPage: TTabSheet;
|
|
||||||
chkConfirmDel: TCheckBox;
|
|
||||||
GroupBox13: TGroupBox;
|
|
||||||
JPEG: TGroupBox;
|
|
||||||
txtJPEGQuality: TEdit;
|
|
||||||
DisplayPage: TTabSheet;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label4: TLabel;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label30: TLabel;
|
|
||||||
txtLowQuality: TEdit;
|
|
||||||
txtMediumQuality: TEdit;
|
|
||||||
txtHighQuality: TEdit;
|
|
||||||
grpRendering: TGroupBox;
|
|
||||||
lblSampleDensity: TLabel;
|
|
||||||
lblGamma: TLabel;
|
|
||||||
lblBrightness: TLabel;
|
|
||||||
lblVibrancy: TLabel;
|
|
||||||
lblOversample: TLabel;
|
|
||||||
lblFilterRadius: TLabel;
|
|
||||||
txtSampleDensity: TEdit;
|
|
||||||
txtGamma: TEdit;
|
|
||||||
txtBrightness: TEdit;
|
|
||||||
txtVibrancy: TEdit;
|
|
||||||
txtOversample: TEdit;
|
|
||||||
txtFilterRadius: TEdit;
|
|
||||||
RandomPage: TTabSheet;
|
|
||||||
gpNumberOfTransforms: TGroupBox;
|
|
||||||
Label28: TLabel;
|
|
||||||
Label29: TLabel;
|
|
||||||
txtMinXForms: TEdit;
|
|
||||||
txtMaxXforms: TEdit;
|
|
||||||
chkKeepBackground: TCheckBox;
|
|
||||||
TabSheet6: TTabSheet;
|
|
||||||
UPRPage: TPageControl;
|
|
||||||
GroupBox11: TGroupBox;
|
|
||||||
Label26: TLabel;
|
|
||||||
Label27: TLabel;
|
|
||||||
txtUPRWidth: TEdit;
|
|
||||||
txtUPRHeight: TEdit;
|
|
||||||
gpFlameTitlePrefix: TGroupBox;
|
|
||||||
txtRandomPrefix: TEdit;
|
|
||||||
gpMutationTransforms: TGroupBox;
|
|
||||||
Label2: TLabel;
|
|
||||||
Label3: TLabel;
|
|
||||||
txtMinMutate: TEdit;
|
|
||||||
txtMaxMutate: TEdit;
|
|
||||||
gpForcedSymmetry: TGroupBox;
|
|
||||||
cmbSymType: TComboBox;
|
|
||||||
txtSymOrder: TEdit;
|
|
||||||
Label7: TLabel;
|
|
||||||
Label9: TLabel;
|
|
||||||
VariationsPage: TTabSheet;
|
|
||||||
GroupBox17: TGroupBox;
|
|
||||||
btnSetAll: TButton;
|
|
||||||
btnClearAll: TButton;
|
|
||||||
Label8: TLabel;
|
|
||||||
txtNumtries: TEdit;
|
|
||||||
Label10: TLabel;
|
|
||||||
txtTryLength: TEdit;
|
|
||||||
TabSheet1: TTabSheet;
|
|
||||||
grpGradient: TRadioGroup;
|
|
||||||
GroupBox3: TGroupBox;
|
|
||||||
txtMinNodes: TEdit;
|
|
||||||
txtMaxNodes: TEdit;
|
|
||||||
Label18: TLabel;
|
|
||||||
Label19: TLabel;
|
|
||||||
txtMinHue: TEdit;
|
|
||||||
txtMaxHue: TEdit;
|
|
||||||
Label31: TLabel;
|
|
||||||
Label32: TLabel;
|
|
||||||
Label33: TLabel;
|
|
||||||
txtMinSat: TEdit;
|
|
||||||
Label34: TLabel;
|
|
||||||
txtMaxSat: TEdit;
|
|
||||||
Label35: TLabel;
|
|
||||||
txtMinLum: TEdit;
|
|
||||||
Label36: TLabel;
|
|
||||||
txtMaxLum: TEdit;
|
|
||||||
udMinNodes: TUpDown;
|
|
||||||
udMaxNodes: TUpDown;
|
|
||||||
udMinHue: TUpDown;
|
|
||||||
udMaxHue: TUpDown;
|
|
||||||
udMinSat: TUpDown;
|
|
||||||
udmaxSat: TUpDown;
|
|
||||||
udMinLum: TUpDown;
|
|
||||||
udMaxLum: TUpDown;
|
|
||||||
udMinXforms: TUpDown;
|
|
||||||
udMaxXForms: TUpDown;
|
|
||||||
udMinMutate: TUpDown;
|
|
||||||
udMaxMutate: TUpDown;
|
|
||||||
udSymOrder: TUpDown;
|
|
||||||
chkFixedReference: TCheckBox;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
txtBatchSize: TEdit;
|
|
||||||
udBatchSize: TUpDown;
|
|
||||||
GroupBox9: TGroupBox;
|
|
||||||
Label20: TLabel;
|
|
||||||
Label21: TLabel;
|
|
||||||
Label22: TLabel;
|
|
||||||
txtFIterDensity: TEdit;
|
|
||||||
txtUPRFilterRadius: TEdit;
|
|
||||||
txtUPROversample: TEdit;
|
|
||||||
GroupBox4: TGroupBox;
|
|
||||||
Label11: TLabel;
|
|
||||||
Label12: TLabel;
|
|
||||||
txtFCIdent: TEdit;
|
|
||||||
txtFCFile: TEdit;
|
|
||||||
GroupBox5: TGroupBox;
|
|
||||||
Label13: TLabel;
|
|
||||||
Label14: TLabel;
|
|
||||||
txtFFIdent: TEdit;
|
|
||||||
txtFFFile: TEdit;
|
|
||||||
chkAdjustDensity: TCheckBox;
|
|
||||||
TabSheet2: TTabSheet;
|
|
||||||
GroupBox6: TGroupBox;
|
|
||||||
Label5: TLabel;
|
|
||||||
Label6: TLabel;
|
|
||||||
txtNick: TEdit;
|
|
||||||
txtURL: TEdit;
|
|
||||||
Label15: TLabel;
|
|
||||||
txtPassword: TEdit;
|
|
||||||
GroupBox8: TGroupBox;
|
|
||||||
Label17: TLabel;
|
|
||||||
txtServer: TEdit;
|
|
||||||
chkResize: TCheckBox;
|
|
||||||
Paths: TTabSheet;
|
|
||||||
GroupBox10: TGroupBox;
|
|
||||||
btnDefGradient: TSpeedButton;
|
|
||||||
Label25: TLabel;
|
|
||||||
txtDefParameterFile: TEdit;
|
|
||||||
GroupBox12: TGroupBox;
|
|
||||||
Label23: TLabel;
|
|
||||||
txtDefSmoothFile: TEdit;
|
|
||||||
btnSmooth: TSpeedButton;
|
|
||||||
GroupBox7: TGroupBox;
|
|
||||||
btnRenderer: TSpeedButton;
|
|
||||||
Label16: TLabel;
|
|
||||||
txtRenderer: TEdit;
|
|
||||||
GroupBox14: TGroupBox;
|
|
||||||
SpeedButton2: TSpeedButton;
|
|
||||||
Label37: TLabel;
|
|
||||||
txtLibrary: TEdit;
|
|
||||||
clbVarEnabled: TCheckListBox;
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure btnDefGradientClick(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure btnSmoothClick(Sender: TObject);
|
|
||||||
procedure cmbSymTypeChange(Sender: TObject);
|
|
||||||
procedure btnSetAllClick(Sender: TObject);
|
|
||||||
procedure btnClearAllClick(Sender: TObject);
|
|
||||||
procedure txtMinNodesChange(Sender: TObject);
|
|
||||||
procedure txtMaxNodesChange(Sender: TObject);
|
|
||||||
procedure txtMaxHueChange(Sender: TObject);
|
|
||||||
procedure txtMaxSatChange(Sender: TObject);
|
|
||||||
procedure txtMaxLumChange(Sender: TObject);
|
|
||||||
procedure txtMinHueChange(Sender: TObject);
|
|
||||||
procedure txtMinSatChange(Sender: TObject);
|
|
||||||
procedure txtMinLumChange(Sender: TObject);
|
|
||||||
procedure txtMinXFormsChange(Sender: TObject);
|
|
||||||
procedure txtMaxXformsChange(Sender: TObject);
|
|
||||||
procedure txtMinMutateChange(Sender: TObject);
|
|
||||||
procedure txtMaxMutateChange(Sender: TObject);
|
|
||||||
procedure btnRendererClick(Sender: TObject);
|
|
||||||
procedure SpeedButton2Click(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
OptionsForm: TOptionsForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, Editor, ControlPoint;
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Options', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
OptionsForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
OptionsForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ General tab }
|
|
||||||
txtDefParameterFile.Text := DefFlameFile;
|
|
||||||
txtDefSmoothFile.Text := defSmoothPaletteFile;
|
|
||||||
txtNumtries.text := IntToStr(Numtries);
|
|
||||||
txtTryLength.text := IntToStr(Trylength);
|
|
||||||
chkConfirmDel.Checked := ConfirmDelete;
|
|
||||||
txtJPEGQuality.text := IntToStr(JPEGQuality);
|
|
||||||
chkFixedReference.Checked := FixedReference;
|
|
||||||
udBatchSize.Position := BatchSize;
|
|
||||||
chkResize.checked := ResizeOnLoad;
|
|
||||||
|
|
||||||
{ Display tab }
|
|
||||||
txtSampleDensity.Text := FloatToStr(defSampleDensity);
|
|
||||||
txtGamma.Text := FloatToStr(defGamma);
|
|
||||||
txtBrightness.Text := FloatToStr(defBrightness);
|
|
||||||
txtVibrancy.Text := FloatToStr(defVibrancy);
|
|
||||||
txtOversample.Text := IntToStr(defOversample);
|
|
||||||
txtFilterRadius.Text := FloatToStr(defFilterRadius);
|
|
||||||
txtLowQuality.Text := FloatToStr(prevLowQuality);
|
|
||||||
txtMediumQuality.Text := FloatToStr(prevMediumQuality);
|
|
||||||
txtHighQuality.Text := FloatToStr(prevHighQuality);
|
|
||||||
|
|
||||||
{ Random tab }
|
|
||||||
udMinXforms.Position := randMinTransforms;
|
|
||||||
udMaxXforms.Position := randMaxTransforms;
|
|
||||||
udMinMutate.Position := mutantMinTransforms;
|
|
||||||
udMaxMutate.Position := mutantMaxTransforms;
|
|
||||||
txtRandomPrefix.text := RandomPrefix;
|
|
||||||
chkKeepbackground.Checked := KeepBackground;
|
|
||||||
cmbSymType.ItemIndex := SymmetryType;
|
|
||||||
if (SymmetryType = 0) or (SymmetryType = 1) then txtSymOrder.enabled := false;
|
|
||||||
udSymOrder.Position := SymmetryOrder;
|
|
||||||
|
|
||||||
{ Variations tab }
|
|
||||||
UnpackVariations(VariationOptions);
|
|
||||||
for i := 0 to NVars -1 do
|
|
||||||
clbVarEnabled.Checked[i] := Variations[i];
|
|
||||||
|
|
||||||
{ Gradient tab }
|
|
||||||
grpGradient.ItemIndex := randGradient;
|
|
||||||
udMinNodes.Position := MinNodes;
|
|
||||||
udMaxNodes.Position := MaxNodes;
|
|
||||||
udMinHue.Position := MinHue;
|
|
||||||
udMinSat.Position := MinSat;
|
|
||||||
udMinLum.Position := MinLum;
|
|
||||||
udMaxHue.Position := MaxHue;
|
|
||||||
udMaxSat.Position := MaxSat;
|
|
||||||
udMaxLum.Position := MaxLum;
|
|
||||||
|
|
||||||
{ UPR tab }
|
|
||||||
txtFIterDensity.text := IntToStr(UPRSampleDensity);
|
|
||||||
txtUPRFilterRadius.text := FloatToStr(UPRFilterRadius);
|
|
||||||
txtUPROversample.text := IntToStr(UPROversample);
|
|
||||||
txtFCIdent.text := UPRColoringIdent;
|
|
||||||
txtFCFile.text := UPRColoringFile;
|
|
||||||
txtFFIdent.text := UPRFormulaIdent;
|
|
||||||
txtFFFile.text := UPRFormulaFile;
|
|
||||||
txtUPRWidth.text := IntToStr(UPRWidth);
|
|
||||||
txtUPRHeight.text := IntToStr(UPRHeight);
|
|
||||||
chkAdjustDensity.checked := UPRAdjustDensity;
|
|
||||||
|
|
||||||
{ UPR tab }
|
|
||||||
txtNick.Text := SheepNick;
|
|
||||||
txtURL.Text := SheepURL;
|
|
||||||
txtPassword.Text := SheepPW;
|
|
||||||
txtRenderer.Text := HqiPath;
|
|
||||||
txtServer.Text := SheepServer;
|
|
||||||
|
|
||||||
txtLibrary.text := defLibrary;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnOKClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
|
|
||||||
{ Variations tab }
|
|
||||||
{ Get option values from controls. Disallow bad values }
|
|
||||||
for i := 0 to NVars -1 do
|
|
||||||
Variations[i] := clbVarEnabled.Checked[i];
|
|
||||||
|
|
||||||
v := PackVariations;
|
|
||||||
if v <> 0 then VariationOptions := v
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Application.MessageBox('You must select at least one variation.', 'Apophysis', 48);
|
|
||||||
Tabs.ActivePage := VariationsPage;
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ General tab }
|
|
||||||
defFlameFile := txtDefParameterFile.Text;
|
|
||||||
defSmoothPaletteFile := txtDefSmoothFile.Text;
|
|
||||||
JPEGQuality := StrToInt(txtJPEGQuality.text);
|
|
||||||
Numtries := StrToInt(txtNumtries.text);
|
|
||||||
if NumTries < 1 then Numtries := 1;
|
|
||||||
Trylength := StrToInt(txtTrylength.text);
|
|
||||||
if Trylength < 100 then trylength := 100;
|
|
||||||
if JPEGQuality > 100 then JPEGQuality := 100;
|
|
||||||
if JPEGQuality < 1 then JPEGQuality := 100;
|
|
||||||
BatchSize := udBatchSize.Position;
|
|
||||||
if BatchSize < 1 then BatchSize := 1;
|
|
||||||
if BatchSize > 300 then BatchSize := 300;
|
|
||||||
|
|
||||||
ConfirmDelete := chkConfirmDel.Checked;
|
|
||||||
FixedReference := chkFixedReference.Checked;
|
|
||||||
ResizeOnLoad := chkResize.checked;
|
|
||||||
{ Display tab }
|
|
||||||
defSampleDensity := StrToFloat(txtSampleDensity.Text);
|
|
||||||
if defSampleDensity > 100 then defSampleDensity := 100;
|
|
||||||
if defSampleDensity <= 0 then defSampleDensity := 0.1;
|
|
||||||
defGamma := StrToFloat(txtGamma.Text);
|
|
||||||
if defGamma < 0.1 then defGamma := 0.1;
|
|
||||||
defBrightness := StrToFloat(txtBrightness.Text);
|
|
||||||
if defBrightness < 0.1 then defBrightness := 0.1;
|
|
||||||
defVibrancy := StrToFloat(txtVibrancy.Text);
|
|
||||||
if defVibrancy < 0 then defVibrancy := 0.1;
|
|
||||||
defFilterRadius := StrToFloat(txtFilterRadius.Text);
|
|
||||||
if defFilterRadius <= 0 then defFilterRadius := 0.1;
|
|
||||||
defOversample := StrToInt(txtOversample.Text);
|
|
||||||
if defOversample > 4 then defOversample := 4;
|
|
||||||
if defOversample < 1 then defOversample := 1;
|
|
||||||
prevLowQuality := StrToFloat(txtLowQuality.Text);
|
|
||||||
if prevLowQuality > 100 then prevLowQuality := 100;
|
|
||||||
if prevLowQuality < 0.01 then prevLowQuality := 0.01;
|
|
||||||
prevMediumQuality := StrToFloat(txtMediumQuality.Text);
|
|
||||||
if prevMediumQuality > 100 then prevMediumQuality := 100;
|
|
||||||
if prevMediumQuality < 0.01 then prevMediumQuality := 0.01;
|
|
||||||
prevHighQuality := StrToFloat(txtHighQuality.Text);
|
|
||||||
if prevHighQuality > 100 then prevHighQuality := 100;
|
|
||||||
if prevHighQuality < 0.01 then prevHighQuality := 0.01;
|
|
||||||
|
|
||||||
{ Random tab }
|
|
||||||
randMinTransforms := udMinXforms.Position;
|
|
||||||
randMaxTransforms := udMaxXforms.Position;
|
|
||||||
mutantMinTransforms := udMinMutate.Position;
|
|
||||||
mutantMaxTransforms := udMaxMutate.Position;
|
|
||||||
RandomPrefix := txtRandomPrefix.text;
|
|
||||||
SymmetryType := cmbSymType.ItemIndex;
|
|
||||||
SymmetryOrder := udSymOrder.Position;
|
|
||||||
KeepBackground := chkKeepbackground.Checked;
|
|
||||||
|
|
||||||
{Gradient tab }
|
|
||||||
randGradient := grpGradient.ItemIndex;
|
|
||||||
MinNodes := udMinNodes.Position;
|
|
||||||
MaxNodes := udMaxNodes.Position;
|
|
||||||
MinHue := udMinHue.Position;
|
|
||||||
MinSat := udMinSat.Position;
|
|
||||||
MinLum := udMinLum.Position;
|
|
||||||
MaxHue := udMaxHue.Position;
|
|
||||||
MaxSat := udMaxSat.Position;
|
|
||||||
MaxLum := udMaxLum.Position;
|
|
||||||
|
|
||||||
{ UPR options }
|
|
||||||
UPRSampleDensity := StrToInt(txtFIterDensity.text);
|
|
||||||
UPRFilterRadius := StrToFloat(txtUPRFilterRadius.text);
|
|
||||||
UPROversample := StrToInt(txtUPROversample.text);
|
|
||||||
UPRColoringIdent := txtFCIdent.text;
|
|
||||||
UPRColoringFile := txtFCFile.text;
|
|
||||||
UPRFormulaIdent := txtFFIdent.text;
|
|
||||||
UPRFormulaFile := txtFFFile.text;
|
|
||||||
UPRAdjustDensity := chkAdjustDensity.checked;
|
|
||||||
UPRWidth := StrToInt(txtUPRWidth.text);
|
|
||||||
UPRHeight := StrToInt(txtUPRHeight.text);
|
|
||||||
|
|
||||||
{ Sheep options }
|
|
||||||
SheepNick := txtNick.Text;
|
|
||||||
SheepURL := txtURL.Text;
|
|
||||||
SheepPW := txtPassword.text;
|
|
||||||
HqiPath := txtRenderer.text;
|
|
||||||
SheepServer := txtServer.text;
|
|
||||||
|
|
||||||
{Paths}
|
|
||||||
defLibrary := txtLibrary.text;
|
|
||||||
|
|
||||||
Close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnDefGradientClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.Filter := 'Flame files (*.flame)|*.flame|Apophysis 1.0 parameters (*.apo;*.fla)|*.apo;*.fla';
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
txtDefParameterFile.text := OpenDialog.FileName;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Options', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', OptionsForm.Top);
|
|
||||||
Registry.WriteInteger('Left', OptionsForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnSmoothClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.Filter := 'Gradient files (*.ugr)|*.ugr';
|
|
||||||
OpenDialog.InitialDir := ExtractFilePath(defSmoothPaletteFile);
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
OpenDialog.DefaultExt := 'ugr';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
txtDefSmoothFile.text := OpenDialog.FileName;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.cmbSymTypeChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if (cmbSymType.ItemIndex = 0) or (cmbSymType.ItemIndex = 1) then
|
|
||||||
txtSymOrder.enabled := false
|
|
||||||
else
|
|
||||||
txtSymOrder.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnSetAllClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to NVars - 1 do
|
|
||||||
clbVarEnabled.Checked[i] := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnClearAllClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to NVars - 1 do
|
|
||||||
clbVarEnabled.Checked[i] := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinNodesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinNodes.Text) > udMaxNodes.position then
|
|
||||||
udMaxNodes.Position := StrToInt(txtMinNodes.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxNodesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxNodes.Text) < udMinNodes.position then
|
|
||||||
udMinNodes.Position := StrToInt(txtMaxNodes.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxHueChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxHue.Text) < udMinHue.position then
|
|
||||||
udMinHue.Position := StrToInt(txtMaxHue.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxSatChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxSat.Text) < udMinSat.position then
|
|
||||||
udMinSat.Position := StrToInt(txtMaxSat.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxLumChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxLum.Text) < udMinLum.position then
|
|
||||||
udMinLum.Position := StrToInt(txtMaxLum.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinHueChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinHue.Text) > udMaxHue.position then
|
|
||||||
udMaxHue.Position := StrToInt(txtMinHue.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinSatChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinSat.Text) > udMaxSat.position then
|
|
||||||
udMaxSat.Position := StrToInt(txtMinSat.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinLumChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinLum.Text) > udMaxLum.position then
|
|
||||||
udMaxLum.Position := StrToInt(txtMinLum.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinXFormsChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinXForms.Text) > udMaxXForms.position then
|
|
||||||
udMaxXFOrms.Position := StrToInt(txtMinXForms.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxXformsChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxXForms.Text) < udMinXForms.position then
|
|
||||||
udMinXForms.Position := StrToInt(txtMaxXforms.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMinMutateChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMinMutate.Text) > udMaxMutate.position then
|
|
||||||
udMaxMutate.Position := StrToInt(txtMinMutate.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.txtMaxMutateChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtMaxMutate.Text) < udMinMutate.position then
|
|
||||||
udMinMutate.Position := StrToInt(txtMaxMutate.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.btnRendererClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.Filter := 'Executables (*.exe)|*.exe';
|
|
||||||
OpenDialog.InitialDir := ExtractFilePath(HqiPath);
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
txtRenderer.text := OpenDialog.FileName;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.SpeedButton2Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.Filter := 'Script files (*.asc)|*.asc';
|
|
||||||
OpenDialog.InitialDir := ExtractFilePath(defLibrary);
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
txtLibrary.text := OpenDialog.FileName;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOptionsForm.FormCreate(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i:= 0 to NVARS - 1 do begin
|
|
||||||
clbVarEnabled.AddItem(Main.varnames[i],nil);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
object PreviewForm: TPreviewForm
|
|
||||||
Left = 336
|
|
||||||
Top = 228
|
|
||||||
Width = 212
|
|
||||||
Height = 181
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSizeToolWin
|
|
||||||
Caption = 'Preview'
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnKeyPress = FormKeyPress
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object BackPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 204
|
|
||||||
Height = 154
|
|
||||||
Align = alClient
|
|
||||||
BevelInner = bvLowered
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object Image: TImage
|
|
||||||
Left = 2
|
|
||||||
Top = 2
|
|
||||||
Width = 200
|
|
||||||
Height = 150
|
|
||||||
Align = alClient
|
|
||||||
AutoSize = True
|
|
||||||
Stretch = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,88 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Preview;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, ControlPoint, Render;
|
|
||||||
|
|
||||||
type
|
|
||||||
TPreviewForm = class(TForm)
|
|
||||||
BackPanel: TPanel;
|
|
||||||
Image: TImage;
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
private
|
|
||||||
public
|
|
||||||
cp: TControlPoint;
|
|
||||||
Render: TRenderer;
|
|
||||||
procedure DrawFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
PreviewForm: TPreviewForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, ScriptForm;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TPreviewForm.DrawFlame;
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
// ScriptEditor.GetCpFromFlame(cp);
|
|
||||||
cp.width := Image.width;
|
|
||||||
cp.Height := Image.Height;
|
|
||||||
Render.Compatibility := Compatibility;
|
|
||||||
Render.SetCP(cp);
|
|
||||||
Render.Render;
|
|
||||||
Image.Picture.Bitmap.Assign(Render.GetImage);
|
|
||||||
Application.ProcessMessages;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TPreviewForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPreviewForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Render.Free;
|
|
||||||
cp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPreviewForm.FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
begin
|
|
||||||
ScriptEditor.Stopped := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPreviewForm.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
begin
|
|
||||||
ScriptEditor.Stopped := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,910 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Regstry;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses graphics, Messages;
|
|
||||||
|
|
||||||
procedure ReadSettings;
|
|
||||||
procedure SaveSettings;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Windows, SysUtils, Forms, Registry, Global, Dialogs;
|
|
||||||
|
|
||||||
procedure ReadSettings;
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
DefaultPath: string;
|
|
||||||
begin
|
|
||||||
DefaultPath := ExtractFilePath(Application.Exename);
|
|
||||||
// ShowMessage(DefaultPath);
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Defaults', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('DefaultFlameFile') then
|
|
||||||
begin
|
|
||||||
defFlameFile := Registry.ReadString('DefaultFlameFile');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defFlameFile := '';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('GradientFile') then
|
|
||||||
begin
|
|
||||||
GradientFile := Registry.ReadString('GradientFile');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
GradientFile := ''
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('SavePath') then
|
|
||||||
begin
|
|
||||||
SavePath := Registry.ReadString('SavePath');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SavePath := DefaultPath + 'Parameters\My Flames.flame';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('SmoothPaletteFile') then
|
|
||||||
begin
|
|
||||||
defSmoothPaletteFile := Registry.ReadString('SmoothPaletteFIle');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defSmoothPaletteFile := DefaultPath + 'smooth.ugr';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ConfirmDelete') then
|
|
||||||
begin
|
|
||||||
ConfirmDelete := Registry.ReadBool('ConfirmDelete');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ConfirmDelete := True;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('KeepBackground') then
|
|
||||||
begin
|
|
||||||
KeepBackground := Registry.ReadBool('KeepBackground');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
KeepBackground := False;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('NumTries') then
|
|
||||||
begin
|
|
||||||
NumTries := Registry.ReadInteger('NumTries');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
NumTries := 10;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('TryLength') then
|
|
||||||
begin
|
|
||||||
TryLength := Registry.ReadInteger('TryLength');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
TryLength := 100000;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MinTransforms') then
|
|
||||||
begin
|
|
||||||
randMinTransforms := Registry.ReadInteger('MinTransforms');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
randMinTransforms := 2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MaxTransforms') then
|
|
||||||
begin
|
|
||||||
randMaxTransforms := Registry.ReadInteger('MaxTransforms');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
randMaxTransforms := 3;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MutationMinTransforms') then
|
|
||||||
begin
|
|
||||||
mutantMinTransforms := Registry.ReadInteger('MutationMinTransforms');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
mutantMinTransforms := 2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MutationMaxTransforms') then
|
|
||||||
begin
|
|
||||||
mutantMaxTransforms := Registry.ReadInteger('MutationMaxTransforms');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
mutantMaxTransforms := 6;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('RandomGradient') then
|
|
||||||
begin
|
|
||||||
randGradient := Registry.ReadInteger('RandomGradient');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
randGradient := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ParameterFolder') then
|
|
||||||
begin
|
|
||||||
ParamFolder := Registry.ReadString('ParameterFolder');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ParamFolder := DefaultPath + 'Parameters\';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('UPRPath') then
|
|
||||||
begin
|
|
||||||
UPRPath := Registry.ReadString('UPRPath');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRPath := DefaultPath;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ImageFolder') then
|
|
||||||
begin
|
|
||||||
ImageFolder := Registry.ReadString('ImageFolder');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ImageFolder := DefaultPath;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('UPRWidth') then
|
|
||||||
begin
|
|
||||||
UPRWidth := Registry.ReadInteger('UPRWidth');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRWidth := 640;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('UPRHeight') then
|
|
||||||
begin
|
|
||||||
UPRHeight := Registry.ReadInteger('UPRHeight');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRHeight := 480;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('BrowserPath') then
|
|
||||||
begin
|
|
||||||
BrowserPath := Registry.ReadString('BrowserPath');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
BrowserPath := DefaultPath;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('EditPreviewQaulity') then
|
|
||||||
begin
|
|
||||||
EditPrevQual := Registry.ReadInteger('EditPreviewQaulity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
EditPrevQual := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MutatePreviewQaulity') then
|
|
||||||
begin
|
|
||||||
MutatePrevQual := Registry.ReadInteger('MutatePreviewQaulity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MutatePrevQual := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('AdjustPreviewQaulity') then
|
|
||||||
begin
|
|
||||||
AdjustPrevQual := Registry.ReadInteger('AdjustPreviewQaulity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
AdjustPrevQual := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('RandomPrefix') then
|
|
||||||
begin
|
|
||||||
RandomPrefix := Registry.ReadString('RandomPrefix');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
RandomPrefix := 'Apophysis-'
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('RandomDate') then
|
|
||||||
begin
|
|
||||||
RandomDate := Registry.ReadString('RandomDate');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
RandomDate := ''
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('RandomIndex') then
|
|
||||||
begin
|
|
||||||
RandomIndex := Registry.ReadInteger('RandomIndex');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
RandomIndex := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('SymmetryType') then
|
|
||||||
begin
|
|
||||||
SymmetryType := Registry.ReadInteger('SymmetryType');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SymmetryType := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('SymmetryOrder') then
|
|
||||||
begin
|
|
||||||
SymmetryOrder := Registry.ReadInteger('SymmetryOrder');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SymmetryOrder := 4;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('VariationOptions') then
|
|
||||||
begin
|
|
||||||
VariationOptions := Registry.ReadInteger('VariationOptions');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
VariationOptions := 262143;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MinNodes') then
|
|
||||||
begin
|
|
||||||
MinNodes := Registry.ReadInteger('MinNodes');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MinNodes := 2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MinHue') then
|
|
||||||
begin
|
|
||||||
MinHue := Registry.ReadInteger('MinHue');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MinHue := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MinSat') then
|
|
||||||
begin
|
|
||||||
MinSat := Registry.ReadInteger('MinSat');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MinSat := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MinLum') then
|
|
||||||
begin
|
|
||||||
MinLum := Registry.ReadInteger('MinLum');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MinLum := 0;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MaxNodes') then
|
|
||||||
begin
|
|
||||||
MaxNodes := Registry.ReadInteger('MaxNodes');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MaxNodes := 10;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MaxHue') then
|
|
||||||
begin
|
|
||||||
MaxHue := Registry.ReadInteger('MaxHue');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MaxHue := 600;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MaxSat') then
|
|
||||||
begin
|
|
||||||
MaxSat := Registry.ReadInteger('MaxSat');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MaxSat := 100;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FixedReference') then
|
|
||||||
begin
|
|
||||||
FixedReference := Registry.ReadBool('FixedReference');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
FixedReference := False;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('MaxLum') then
|
|
||||||
begin
|
|
||||||
MaxLum := Registry.ReadInteger('MaxLum');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
MaxLum := 100;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('BatchSize') then
|
|
||||||
begin
|
|
||||||
BatchSize := Registry.ReadInteger('BatchSize');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
BatchSize := 100;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ScriptPath') then
|
|
||||||
begin
|
|
||||||
ScriptPath := Registry.ReadString('ScriptPath');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ScriptPath := DefaultPath + 'Scripts\';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FunctionLibrary') then
|
|
||||||
begin
|
|
||||||
defLibrary := Registry.ReadString('FunctionLibrary');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defLibrary := DefaultPath + 'Scripts\Functions.asc';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportFileFormat') then
|
|
||||||
begin
|
|
||||||
ExportFileFormat := Registry.ReadInteger('ExportFileFormat');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportFileFormat := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportWidth') then
|
|
||||||
begin
|
|
||||||
ExportWidth := Registry.ReadInteger('ExportWidth');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportWidth := 640;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportHeight') then
|
|
||||||
begin
|
|
||||||
ExportHeight := Registry.ReadInteger('ExportHeight');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportHeight := 480;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportDensity') then
|
|
||||||
begin
|
|
||||||
ExportDensity := Registry.ReadFloat('ExportDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportDensity := 100;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportOversample') then
|
|
||||||
begin
|
|
||||||
ExportOversample := Registry.ReadInteger('ExportOversample');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportOversample := 2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportFilter') then
|
|
||||||
begin
|
|
||||||
ExportFilter := Registry.ReadFloat('ExportFilter');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportFilter := 0.6;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ExportBatches') then
|
|
||||||
begin
|
|
||||||
ExportBatches := Registry.ReadInteger('ExportBatches');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ExportBatches := 3;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Nick') then
|
|
||||||
begin
|
|
||||||
SheepNick := Registry.ReadString('Nick');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SheepNick := '';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('URL') then
|
|
||||||
begin
|
|
||||||
SheepURL := Registry.ReadString('URL');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SheepURL := '';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Pass') then
|
|
||||||
begin
|
|
||||||
SheepPW := Registry.ReadString('Pass');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SheepPW := '';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Renderer') then
|
|
||||||
begin
|
|
||||||
HQIPath := Registry.ReadString('Renderer');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
HQIPath := DefaultPath + 'hqi.exe';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Server') then
|
|
||||||
begin
|
|
||||||
SheepServer := Registry.ReadString('Server');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SheepServer := 'http://v2d5.sheepserver.net/';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ResizeOnLoad') then
|
|
||||||
begin
|
|
||||||
ResizeOnLoad := Registry.ReadBool('ResizeOnLoad');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ResizeOnLoad := False;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('ShowProgress') then
|
|
||||||
begin
|
|
||||||
ShowProgress := Registry.ReadBool('ShowProgress');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
ShowProgress := true;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
FixedReference := false;
|
|
||||||
EditPrevQual := 1;
|
|
||||||
MutatePrevQual := 1;
|
|
||||||
AdjustPrevQual := 1;
|
|
||||||
GradientFile := '';
|
|
||||||
defFlameFile := '';
|
|
||||||
SavePath := DefaultPath + 'Parameters\My Flames.flame';
|
|
||||||
defSmoothPaletteFile := DefaultPath + 'smooth.ugr';
|
|
||||||
ConfirmDelete := True;
|
|
||||||
NumTries := 10;
|
|
||||||
TryLength := 100000;
|
|
||||||
randMinTransforms := 2;
|
|
||||||
randMaxTransforms := 3;
|
|
||||||
mutantMinTransforms := 2;
|
|
||||||
mutantMaxTransforms := 6;
|
|
||||||
randGradient := 0;
|
|
||||||
KeepBackground := False;
|
|
||||||
UPRPath := DefaultPath;
|
|
||||||
ImageFolder := DefaultPath;
|
|
||||||
ParamFolder := DefaultPath + 'Parameters\';
|
|
||||||
UPRWidth := 640;
|
|
||||||
UPRHeight := 480;
|
|
||||||
RandomPrefix := 'Apophysis-';
|
|
||||||
RandomIndex := 0;
|
|
||||||
RandomDate := '';
|
|
||||||
SymmetryType := 0;
|
|
||||||
SymmetryOrder := 4;
|
|
||||||
VariationOptions := 262143;
|
|
||||||
MinNodes := 2;
|
|
||||||
MaxNodes := 10;
|
|
||||||
MinHue := 0;
|
|
||||||
MinSat := 0;
|
|
||||||
MinLum := 0;
|
|
||||||
MaxHue := 600;
|
|
||||||
MaxSat := 100;
|
|
||||||
MaxLum := 100;
|
|
||||||
BatchSize := 100;
|
|
||||||
ScriptPath := DefaultPath + 'Scripts\';
|
|
||||||
defLibrary := DefaultPath + 'Scripts\Functions.asc';
|
|
||||||
ExportFileFormat := 1;
|
|
||||||
ExportWidth := 640;
|
|
||||||
ExportHeight := 480;
|
|
||||||
ExportDensity := 100;
|
|
||||||
ExportOversample := 2;
|
|
||||||
ExportFilter := 0.6;
|
|
||||||
ExportBatches := 3;
|
|
||||||
SheepNick := '';
|
|
||||||
SheepURL := '';
|
|
||||||
SheepPW := '';
|
|
||||||
HQIPath := DefaultPath + 'hqi.exe';
|
|
||||||
SheepServer := 'http://v2d5.sheepserver.net/';
|
|
||||||
ResizeOnLoad := False;
|
|
||||||
ShowProgress := true;
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
{ Render }
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Render', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Path') then
|
|
||||||
begin
|
|
||||||
RenderPath := Registry.ReadString('Path');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
RenderPath := DefaultPath;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('SampleDensity') then
|
|
||||||
begin
|
|
||||||
renderDensity := Registry.ReadFloat('SampleDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderDensity := 200;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FilterRadius') then
|
|
||||||
begin
|
|
||||||
renderFilterRadius := Registry.ReadFloat('FilterRadius');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderFilterRadius := 0.4;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Oversample') then
|
|
||||||
begin
|
|
||||||
renderOversample := Registry.ReadInteger('Oversample');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderOversample := 2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Width') then
|
|
||||||
begin
|
|
||||||
renderWidth := Registry.ReadInteger('Width');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderWidth := 1024;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Height') then
|
|
||||||
begin
|
|
||||||
renderHeight := Registry.ReadInteger('Height');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderHeight := 768;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('JPEGQuality') then
|
|
||||||
begin
|
|
||||||
JPEGQuality := Registry.ReadInteger('JPEGQuality');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
JPEGQuality := 80;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FileFormat') then
|
|
||||||
begin
|
|
||||||
renderFileFormat := Registry.ReadInteger('FileFormat');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderFileFormat := 3;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderFileFormat := 2;
|
|
||||||
JPEGQuality := 80;
|
|
||||||
renderPath := DefaultPath;
|
|
||||||
renderDensity := 200;
|
|
||||||
renderOversample := 2;
|
|
||||||
renderFilterRadius := 0.4;
|
|
||||||
renderWidth := 1024;
|
|
||||||
renderHeight := 768;
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
{UPR}
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\UPR', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('FlameColoringFile') then
|
|
||||||
begin
|
|
||||||
UPRColoringFile := Registry.ReadString('FlameColoringFile');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRColoringFile := 'apophysis.ucl';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameColoringIdent') then
|
|
||||||
begin
|
|
||||||
UPRColoringIdent := Registry.ReadString('FlameColoringIdent');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRColoringIdent := 'enr-flame-a';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameFormulaFile') then
|
|
||||||
begin
|
|
||||||
UPRFormulaFile := Registry.ReadString('FlameFormulaFile');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRFormulaFile := 'mt.ufm';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameFormulaIdent') then
|
|
||||||
begin
|
|
||||||
UPRFormulaIdent := Registry.ReadString('FlameFormulaIdent');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRFormulaIdent := 'mt-pixel';
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameIterDensity') then
|
|
||||||
begin
|
|
||||||
UPRSampleDensity := Registry.ReadInteger('FlameIterDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRSampleDensity := 35;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameFilterRadius') then
|
|
||||||
begin
|
|
||||||
UPRFilterRadius := Registry.ReadFloat('FlameFilterRadius');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRFilterRadius := 0.7;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameOversample') then
|
|
||||||
begin
|
|
||||||
UPROversample := Registry.ReadInteger('FlameOversample');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPROversample := 3;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FlameAdjustDensity') then
|
|
||||||
begin
|
|
||||||
UPRAdjustDensity := Registry.ReadBool('FlameAdjustDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRAdjustDensity := true;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
UPRColoringFile := 'apophysis.ucl';
|
|
||||||
UPRColoringIdent := 'enr-flame-a';
|
|
||||||
UPRFormulaFile := 'mt.ufm';
|
|
||||||
UPRFormulaIdent := 'mt-pixel';
|
|
||||||
UPRSampleDensity := 35;
|
|
||||||
UPRFilterRadius := 0.7;
|
|
||||||
UPROversample := 3;
|
|
||||||
UPRAdjustDensity := True; ;
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Display', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('SampleDensity') then
|
|
||||||
begin
|
|
||||||
defSampleDensity := Registry.ReadFloat('SampleDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defSampleDensity := 5;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Gamma') then
|
|
||||||
begin
|
|
||||||
defGamma := Registry.ReadFloat('Gamma');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defGamma := 4;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Brightness') then
|
|
||||||
begin
|
|
||||||
defBrightness := Registry.ReadFloat('Brightness');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defBrightness := 4;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Vibrancy') then
|
|
||||||
begin
|
|
||||||
defVibrancy := Registry.ReadFloat('Vibrancy');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defVibrancy := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('FilterRadius') then
|
|
||||||
begin
|
|
||||||
defFilterRadius := Registry.ReadFloat('FilterRadius');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defFilterRadius := 0.2;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('Oversample') then
|
|
||||||
begin
|
|
||||||
defOversample := Registry.ReadInteger('Oversample');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defOversample := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('PreviewDensity') then
|
|
||||||
begin
|
|
||||||
defPreviewDensity := Registry.ReadFloat('PreviewDensity');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defPreviewDensity := 0.5;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('PreviewLowQuality') then
|
|
||||||
begin
|
|
||||||
prevLowQuality := Registry.ReadFloat('PreviewLowQuality');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
prevLowQuality := 0.1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('PreviewMediumQuality') then
|
|
||||||
begin
|
|
||||||
prevMediumQuality := Registry.ReadFloat('PreviewMediumQuality');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
prevMediumQuality := 1;
|
|
||||||
end;
|
|
||||||
if Registry.ValueExists('PreviewHighQuality') then
|
|
||||||
begin
|
|
||||||
prevHighQuality := Registry.ReadFloat('PreviewHighQuality');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
prevHighQuality := 5;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
defSampleDensity := 5;
|
|
||||||
defGamma := 4;
|
|
||||||
defBrightness := 4;
|
|
||||||
defVibrancy := 1;
|
|
||||||
defFilterRadius := 0.2;
|
|
||||||
defOversample := 1;
|
|
||||||
defPreviewDensity := 0.5;
|
|
||||||
prevLowQuality := 0.1;
|
|
||||||
prevMediumQuality := 1;
|
|
||||||
prevHighQuality := 5;
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure SaveSettings;
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Defaults', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteString('GradientFile', GradientFile);
|
|
||||||
Registry.WriteString('SmoothPaletteFile', SmoothPaletteFile);
|
|
||||||
Registry.WriteBool('ConfirmDelete', ConfirmDelete);
|
|
||||||
Registry.WriteInteger('NumTries', NumTries);
|
|
||||||
Registry.WriteInteger('TryLength', TryLength);
|
|
||||||
Registry.WriteInteger('MinTransforms', randMinTransforms);
|
|
||||||
Registry.WriteInteger('MaxTransforms', randMaxTransforms);
|
|
||||||
Registry.WriteInteger('MutationMinTransforms', mutantMinTransforms);
|
|
||||||
Registry.WriteInteger('MutationMaxTransforms', mutantMaxTransforms);
|
|
||||||
Registry.WriteInteger('RandomGradient', randGradient);
|
|
||||||
Registry.WriteString('ParameterFolder', ParamFolder);
|
|
||||||
Registry.WriteString('UPRPath', UPRPath);
|
|
||||||
Registry.WriteString('ImageFolder', ImageFolder);
|
|
||||||
Registry.WriteString('SavePath', SavePath);
|
|
||||||
Registry.WriteInteger('UPRWidth', UPRWidth);
|
|
||||||
Registry.WriteInteger('UPRHeight', UPRHeight);
|
|
||||||
Registry.WriteString('BrowserPath', BrowserPath);
|
|
||||||
Registry.WriteInteger('EditPreviewQaulity', EditPrevQual);
|
|
||||||
Registry.WriteInteger('MutatePreviewQaulity', MutatePrevQual);
|
|
||||||
Registry.WriteInteger('AdjustPreviewQaulity', AdjustPrevQual);
|
|
||||||
Registry.WriteString('RandomPrefix', RandomPrefix);
|
|
||||||
Registry.WriteString('RandomDate', RandomDate);
|
|
||||||
Registry.WriteInteger('RandomIndex', RandomIndex);
|
|
||||||
Registry.WriteString('DefaultFlameFile', defFlameFile);
|
|
||||||
Registry.WriteString('SmoothPalettePath', SmoothPalettePath);
|
|
||||||
Registry.WriteString('GradientFile', GradientFile);
|
|
||||||
Registry.WriteInteger('TryLength', TryLength);
|
|
||||||
Registry.WriteInteger('NumTries', NumTries);
|
|
||||||
Registry.WriteString('SmoothPaletteFile', defSmoothPaletteFile);
|
|
||||||
Registry.WriteInteger('SymmetryType', SymmetryType);
|
|
||||||
Registry.WriteInteger('SymmetryOrder', SymmetryOrder);
|
|
||||||
Registry.WriteInteger('VariationOptions', VariationOptions);
|
|
||||||
Registry.WriteBool('FixedReference', FixedReference);
|
|
||||||
Registry.WriteInteger('MinNodes', MinNodes);
|
|
||||||
Registry.WriteInteger('MinHue', MinHue);
|
|
||||||
Registry.WriteInteger('MinSat', MinSat);
|
|
||||||
Registry.WriteInteger('MinLum', MinLum);
|
|
||||||
Registry.WriteInteger('MaxNodes', MaxNodes);
|
|
||||||
Registry.WriteInteger('MaxHue', MaxHue);
|
|
||||||
Registry.WriteInteger('MaxSat', MaxSat);
|
|
||||||
Registry.WriteInteger('MaxLum', MaxLum);
|
|
||||||
Registry.WriteInteger('BatchSize', BatchSize);
|
|
||||||
Registry.WriteString('ScriptPath', ScriptPath);
|
|
||||||
Registry.WriteInteger('ExportFileFormat', ExportFileFormat);
|
|
||||||
Registry.WriteInteger('ExportWidth', ExportWidth);
|
|
||||||
Registry.WriteInteger('ExportHeight', ExportHeight);
|
|
||||||
Registry.WriteFloat('ExportDensity', ExportDensity);
|
|
||||||
Registry.WriteFloat('ExportFilter', ExportFilter);
|
|
||||||
Registry.WriteInteger('ExportOversample', ExportOversample);
|
|
||||||
Registry.WriteInteger('ExportBatches', ExportBatches);
|
|
||||||
Registry.WriteString('Nick', SheepNick);
|
|
||||||
Registry.WriteString('URL', SheepURL);
|
|
||||||
Registry.WriteString('Renderer', HqiPath);
|
|
||||||
Registry.WriteString('Server', SheepServer);
|
|
||||||
Registry.WriteString('Pass', SheepPW);
|
|
||||||
Registry.WriteBool('ResizeOnLoad', ResizeOnLoad);
|
|
||||||
Registry.WriteBool('ShowProgress', ShowProgress);
|
|
||||||
Registry.WriteBool('KeepBackground', KeepBackground);
|
|
||||||
Registry.WriteString('FunctionLibrary', defLibrary);
|
|
||||||
end;
|
|
||||||
{ Display }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Display', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteFloat('SampleDensity', defSampleDensity);
|
|
||||||
Registry.WriteFloat('Gamma', defGamma);
|
|
||||||
Registry.WriteFloat('Brightness', defBrightness);
|
|
||||||
Registry.WriteFloat('Vibrancy', defVibrancy);
|
|
||||||
Registry.WriteFloat('FilterRadius', defFilterRadius);
|
|
||||||
Registry.WriteInteger('Oversample', defOversample);
|
|
||||||
Registry.WriteFloat('PreviewDensity', defPreviewDensity);
|
|
||||||
Registry.WriteFloat('PreviewLowQuality', prevLowQuality);
|
|
||||||
Registry.WriteFloat('PreviewMediumQuality', prevMediumQuality);
|
|
||||||
Registry.WriteFloat('PreviewHighQuality', prevHighQuality);
|
|
||||||
end;
|
|
||||||
{ UPR }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\UPR', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteString('FlameColoringFile', UPRColoringFile);
|
|
||||||
Registry.WriteString('FlameColoringIdent', UPRColoringIdent);
|
|
||||||
Registry.WriteString('FlameFormulaFile', UPRFormulaFile);
|
|
||||||
Registry.WriteString('FlameFormulaIdent', UPRFormulaIdent);
|
|
||||||
Registry.WriteInteger('FlameIterDensity', UPRSampleDensity);
|
|
||||||
Registry.WriteFloat('FlameFilterRadius', UPRFilterRadius);
|
|
||||||
Registry.WriteInteger('FlameOversample', UPROversample);
|
|
||||||
Registry.WriteBool('FlameAdjustDensity', UPRAdjustDensity);
|
|
||||||
end;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Render', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteString('Path', renderPath);
|
|
||||||
Registry.WriteFloat('SampleDensity', renderDensity);
|
|
||||||
Registry.WriteInteger('Oversample', renderOversample);
|
|
||||||
Registry.WriteFloat('FilterRadius', renderFilterRadius);
|
|
||||||
Registry.WriteInteger('Width', renderWidth);
|
|
||||||
Registry.WriteInteger('Height', renderHeight);
|
|
||||||
Registry.WriteInteger('JPEGQuality', JPEGQuality);
|
|
||||||
Registry.WriteInteger('FileFormat', renderFileFormat);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
Flame screensaver Copyright (C) 2002 Ronald Hordijk
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Render;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
RenderThread;
|
|
||||||
|
|
||||||
type
|
|
||||||
TRenderer = class(TRenderThread)
|
|
||||||
private
|
|
||||||
public
|
|
||||||
procedure Execute; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{ TRenderer }
|
|
||||||
|
|
||||||
procedure TRenderer.Execute;
|
|
||||||
begin
|
|
||||||
// do nothing TRenderer does not use the Thread capabilities
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,116 +0,0 @@
|
|||||||
object SaveForm: TSaveForm
|
|
||||||
Left = 246
|
|
||||||
Top = 327
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Save Parameters'
|
|
||||||
ClientHeight = 142
|
|
||||||
ClientWidth = 406
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poOwnerFormCenter
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 8
|
|
||||||
Width = 48
|
|
||||||
Height = 13
|
|
||||||
Caption = 'File name:'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 64
|
|
||||||
Width = 23
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Title:'
|
|
||||||
end
|
|
||||||
object btnDefGradient: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 22
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Browse...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnDefGradientClick
|
|
||||||
end
|
|
||||||
object txtFilename: TEdit
|
|
||||||
Left = 16
|
|
||||||
Top = 24
|
|
||||||
Width = 345
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'txtFilename'
|
|
||||||
end
|
|
||||||
object txtTitle: TEdit
|
|
||||||
Left = 16
|
|
||||||
Top = 80
|
|
||||||
Width = 345
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'txtTitle'
|
|
||||||
end
|
|
||||||
object btnSave: TButton
|
|
||||||
Left = 240
|
|
||||||
Top = 112
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Save'
|
|
||||||
Default = True
|
|
||||||
TabOrder = 2
|
|
||||||
OnClick = btnSaveClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 320
|
|
||||||
Top = 112
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
TabOrder = 3
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
Left = 368
|
|
||||||
Top = 64
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,165 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Save;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, Buttons;
|
|
||||||
|
|
||||||
type
|
|
||||||
TSaveForm = class(TForm)
|
|
||||||
txtFilename: TEdit;
|
|
||||||
txtTitle: TEdit;
|
|
||||||
btnSave: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
btnDefGradient: TSpeedButton;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
procedure btnSaveClick(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnDefGradientClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
public
|
|
||||||
Title: string;
|
|
||||||
Filename: string;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
SaveForm: TSaveForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, cmap;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
function EntryExists(En, Fl: string): boolean;
|
|
||||||
{ Searches for existing identifier in parameter files }
|
|
||||||
var
|
|
||||||
FStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
Result := False;
|
|
||||||
if FileExists(Fl) then
|
|
||||||
begin
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
FStrings.LoadFromFile(Fl);
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
if Pos(LowerCase(En) + ' {', Lowercase(FStrings[i])) = 1 then
|
|
||||||
Result := True;
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSaveForm.btnSaveClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
warn, t, f: string;
|
|
||||||
check: boolean;
|
|
||||||
begin
|
|
||||||
if caption = 'Save Parameters' then
|
|
||||||
warn := 'parameters'
|
|
||||||
else if caption = 'Save Gradient' then
|
|
||||||
warn := 'gradient'
|
|
||||||
else if caption = 'Export UPR' then
|
|
||||||
warn := 'UPR';
|
|
||||||
t := Trim(txtTitle.Text);
|
|
||||||
f := Trim(txtFilename.Text);
|
|
||||||
|
|
||||||
if t = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox(PChar('Please enter a title for the ' + warn + '.'), 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
if f = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Please enter a file name.', 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
if ExtractFileExt(f) = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid file name.', 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if warn = 'parameters' then
|
|
||||||
begin
|
|
||||||
check := XMLEntryExists(t, f);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
t := CleanIdentifier(t);
|
|
||||||
check := EntryExists(t, f);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if check then
|
|
||||||
if Application.MessageBox(PChar(t + ' in ' + f + ' already exists.' + chr(13) + 'Do you want to replace it?'),
|
|
||||||
'Apophysis', 52) = ID_NO then exit;
|
|
||||||
|
|
||||||
Title := t;
|
|
||||||
Filename := f;
|
|
||||||
ModalResult := mrOK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSaveForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSaveForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
txtFilename.Text := Filename;
|
|
||||||
txtTitle.Text := Title;
|
|
||||||
btnSave.SetFocus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSaveForm.btnDefGradientClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if caption = 'Save Parameters' then
|
|
||||||
begin
|
|
||||||
SaveDialog.Title := 'Select Parameter File';
|
|
||||||
SaveDialog.DefaultExt := 'flame';
|
|
||||||
SaveDialog.Filter := 'Flame files (*.flame)|*.flame|Apophysis 1.0 Parameters (*.fla)|*.fla|Fractint IFS Files (*.ifs)|*.ifs';
|
|
||||||
end
|
|
||||||
else if caption = 'Save Gradient' then
|
|
||||||
begin
|
|
||||||
SaveDialog.Title := 'Select Gradient File';
|
|
||||||
SaveDialog.DefaultExt := 'ugr';
|
|
||||||
SaveDialog.Filter := 'Gradient files (*.ugr)|*.ugr'
|
|
||||||
end
|
|
||||||
else if caption = 'Export UPR' then
|
|
||||||
begin
|
|
||||||
SaveDialog.Title := 'Select Ultra Fractal Parameter File';
|
|
||||||
SaveDialog.DefaultExt := 'upr';
|
|
||||||
SaveDialog.Filter := 'UPR Files (*.upr)|*.upr';
|
|
||||||
end;
|
|
||||||
SaveDialog.InitialDir := ExtractFilePath(txtFilename.Text);
|
|
||||||
if SaveDialog.Execute then
|
|
||||||
txtFileName.Text := SaveDialog.Filename;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
object SavePresetForm: TSavePresetForm
|
|
||||||
Left = 295
|
|
||||||
Top = 331
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Save Preset'
|
|
||||||
ClientHeight = 77
|
|
||||||
ClientWidth = 325
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 4
|
|
||||||
Width = 62
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Preset name:'
|
|
||||||
end
|
|
||||||
object txtPresetName: TEdit
|
|
||||||
Left = 8
|
|
||||||
Top = 20
|
|
||||||
Width = 305
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object Button1: TButton
|
|
||||||
Left = 88
|
|
||||||
Top = 48
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'OK'
|
|
||||||
Default = True
|
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 1
|
|
||||||
OnClick = Button1Click
|
|
||||||
end
|
|
||||||
object Button2: TButton
|
|
||||||
Left = 168
|
|
||||||
Top = 48
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit SavePreset;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TSavePresetForm = class(TForm)
|
|
||||||
txtPresetName: TEdit;
|
|
||||||
Label1: TLabel;
|
|
||||||
Button1: TButton;
|
|
||||||
Button2: TButton;
|
|
||||||
procedure Button1Click(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
SavePresetForm: TSavePresetForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TSavePresetForm.Button1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if txtPresetName.Text = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox(PChar('Please enter a name for the preset.'), 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
@ -1,394 +0,0 @@
|
|||||||
object ScriptEditor: TScriptEditor
|
|
||||||
Left = 312
|
|
||||||
Top = 383
|
|
||||||
Width = 539
|
|
||||||
Height = 390
|
|
||||||
Caption = 'Default Animation'
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Splitter1: TSplitter
|
|
||||||
Left = 0
|
|
||||||
Top = 244
|
|
||||||
Width = 531
|
|
||||||
Height = 4
|
|
||||||
Cursor = crVSplit
|
|
||||||
Align = alBottom
|
|
||||||
end
|
|
||||||
object ToolBar: TToolBar
|
|
||||||
Left = 508
|
|
||||||
Top = 0
|
|
||||||
Width = 23
|
|
||||||
Height = 244
|
|
||||||
Align = alRight
|
|
||||||
AutoSize = True
|
|
||||||
Caption = 'ToolBar'
|
|
||||||
Flat = True
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
TabOrder = 0
|
|
||||||
object btnNew: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Hint = 'New'
|
|
||||||
Caption = 'btnNew'
|
|
||||||
ImageIndex = 0
|
|
||||||
Wrap = True
|
|
||||||
OnClick = btnNewClick
|
|
||||||
end
|
|
||||||
object btnOpen: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 22
|
|
||||||
Hint = 'Open'
|
|
||||||
Caption = 'btnOpen'
|
|
||||||
ImageIndex = 1
|
|
||||||
Wrap = True
|
|
||||||
OnClick = btnOpenClick
|
|
||||||
end
|
|
||||||
object btnSave: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 44
|
|
||||||
Hint = 'Save'
|
|
||||||
Caption = 'btnSave'
|
|
||||||
ImageIndex = 2
|
|
||||||
Wrap = True
|
|
||||||
OnClick = btnSaveClick
|
|
||||||
end
|
|
||||||
object btnRun: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 66
|
|
||||||
Hint = 'Run'
|
|
||||||
Caption = 'btnRun'
|
|
||||||
ImageIndex = 43
|
|
||||||
Wrap = True
|
|
||||||
OnClick = btnRunClick
|
|
||||||
end
|
|
||||||
object btnStop: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 88
|
|
||||||
Hint = 'Stop'
|
|
||||||
Caption = 'btnStop'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 36
|
|
||||||
Wrap = True
|
|
||||||
OnClick = btnStopClick
|
|
||||||
end
|
|
||||||
object btnBreak: TToolButton
|
|
||||||
Left = 0
|
|
||||||
Top = 110
|
|
||||||
Hint = 'Break'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 38
|
|
||||||
OnClick = btnBreakClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object StatusBar: TStatusBar
|
|
||||||
Left = 0
|
|
||||||
Top = 337
|
|
||||||
Width = 531
|
|
||||||
Height = 19
|
|
||||||
Anchors = [akLeft, akRight]
|
|
||||||
Panels = <>
|
|
||||||
SimplePanel = False
|
|
||||||
end
|
|
||||||
object BackPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 508
|
|
||||||
Height = 244
|
|
||||||
Align = alClient
|
|
||||||
BevelInner = bvLowered
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'BackPanel'
|
|
||||||
TabOrder = 2
|
|
||||||
object Editor: TAdvMemo
|
|
||||||
Left = 2
|
|
||||||
Top = 2
|
|
||||||
Width = 504
|
|
||||||
Height = 240
|
|
||||||
Cursor = crIBeam
|
|
||||||
PopupMenu = PopupMenu
|
|
||||||
Align = alClient
|
|
||||||
AutoCompletion.Active = False
|
|
||||||
AutoCompletion.Font.Charset = DEFAULT_CHARSET
|
|
||||||
AutoCompletion.Font.Color = clWindowText
|
|
||||||
AutoCompletion.Font.Height = -11
|
|
||||||
AutoCompletion.Font.Name = 'MS Sans Serif'
|
|
||||||
AutoCompletion.Font.Style = []
|
|
||||||
AutoHintParameterPosition = hpBelowCode
|
|
||||||
AutoIndent = True
|
|
||||||
BlockShow = False
|
|
||||||
BlockColor = clWindow
|
|
||||||
BlockLineColor = clGray
|
|
||||||
BkColor = clWindow
|
|
||||||
BorderStyle = bsNone
|
|
||||||
Ctl3D = False
|
|
||||||
DelErase = True
|
|
||||||
GutterColorTo = clBtnFace
|
|
||||||
GutterWidth = 35
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -13
|
|
||||||
Font.Name = 'COURIER NEW'
|
|
||||||
Font.Style = []
|
|
||||||
HiddenCaret = False
|
|
||||||
LineNumbers = True
|
|
||||||
LineNumberStart = 1
|
|
||||||
Lines.Strings = (
|
|
||||||
'{ Rotate the reference triangle continuously }'
|
|
||||||
'{ Hit any key to stop }'
|
|
||||||
'Flame.SampleDensity := 1;'
|
|
||||||
'while not Stopped do'
|
|
||||||
'begin'
|
|
||||||
' RotateReference(3.6);'
|
|
||||||
' Preview;'
|
|
||||||
'end;')
|
|
||||||
PrintOptions.MarginLeft = 0
|
|
||||||
PrintOptions.MarginRight = 0
|
|
||||||
PrintOptions.MarginTop = 0
|
|
||||||
PrintOptions.MarginBottom = 0
|
|
||||||
PrintOptions.PageNr = False
|
|
||||||
RightMarginColor = 14869218
|
|
||||||
SelColor = clWhite
|
|
||||||
SelBkColor = clHighlight
|
|
||||||
SyntaxStyles = PascalStyler
|
|
||||||
TabOrder = 0
|
|
||||||
TabSize = 4
|
|
||||||
TabStop = True
|
|
||||||
UndoLimit = 100
|
|
||||||
UrlAware = False
|
|
||||||
UrlStyle.TextColor = clBlue
|
|
||||||
UrlStyle.BkColor = clWhite
|
|
||||||
UrlStyle.Style = [fsUnderline]
|
|
||||||
Version = '1.5.0.8'
|
|
||||||
WordWrap = wwNone
|
|
||||||
OnChange = EditorChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Console: TMemo
|
|
||||||
Left = 0
|
|
||||||
Top = 248
|
|
||||||
Width = 531
|
|
||||||
Height = 89
|
|
||||||
Align = alBottom
|
|
||||||
Constraints.MinHeight = 20
|
|
||||||
ReadOnly = True
|
|
||||||
ScrollBars = ssVertical
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object MainOpenDialog: TOpenDialog
|
|
||||||
DefaultExt = 'asc'
|
|
||||||
Filter = 'Apophysis Script Files (*.asc)|*.asc|Text files (*.txt)|*.txt'
|
|
||||||
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
|
|
||||||
Left = 456
|
|
||||||
Top = 32
|
|
||||||
end
|
|
||||||
object MainSaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'asc'
|
|
||||||
Filter = 'Apophysis Script Files (*.asc)|*.asc|Text files (*.txt)|*.txt'
|
|
||||||
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
|
|
||||||
Left = 424
|
|
||||||
Top = 32
|
|
||||||
end
|
|
||||||
object PopupMenu: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 392
|
|
||||||
Top = 32
|
|
||||||
object mnuUndo: TMenuItem
|
|
||||||
Caption = 'Undo'
|
|
||||||
ImageIndex = 4
|
|
||||||
OnClick = mnuUndoClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuCut: TMenuItem
|
|
||||||
Caption = 'Cut'
|
|
||||||
ImageIndex = 6
|
|
||||||
ShortCut = 16472
|
|
||||||
OnClick = mnuCutClick
|
|
||||||
end
|
|
||||||
object mnuCopy: TMenuItem
|
|
||||||
Caption = 'Copy'
|
|
||||||
ImageIndex = 7
|
|
||||||
OnClick = mnuCopyClick
|
|
||||||
end
|
|
||||||
object mnuPaste: TMenuItem
|
|
||||||
Caption = 'Paste'
|
|
||||||
ImageIndex = 8
|
|
||||||
OnClick = mnuPasteClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object PascalStyler: TAdvPascalMemoStyler
|
|
||||||
BlockStart = 'begin'
|
|
||||||
BlockEnd = 'end'
|
|
||||||
LineComment = '//'
|
|
||||||
MultiCommentLeft = '{'
|
|
||||||
MultiCommentRight = '}'
|
|
||||||
CommentStyle.TextColor = clNavy
|
|
||||||
CommentStyle.BkColor = clWindow
|
|
||||||
CommentStyle.Style = [fsItalic]
|
|
||||||
NumberStyle.TextColor = clWindowText
|
|
||||||
NumberStyle.BkColor = clWindow
|
|
||||||
NumberStyle.Style = []
|
|
||||||
AllStyles = <
|
|
||||||
item
|
|
||||||
KeyWords.Strings = (
|
|
||||||
'and'
|
|
||||||
'begin'
|
|
||||||
'break'
|
|
||||||
'class'
|
|
||||||
'class'
|
|
||||||
'const'
|
|
||||||
'constructor'
|
|
||||||
'continue'
|
|
||||||
'default'
|
|
||||||
'destructor'
|
|
||||||
'do'
|
|
||||||
'else'
|
|
||||||
'end'
|
|
||||||
'except'
|
|
||||||
'finalise'
|
|
||||||
'finally'
|
|
||||||
'for'
|
|
||||||
'function'
|
|
||||||
'if'
|
|
||||||
'implementation'
|
|
||||||
'inherited'
|
|
||||||
'initialise'
|
|
||||||
'interface'
|
|
||||||
'nil'
|
|
||||||
'not'
|
|
||||||
'or'
|
|
||||||
'override'
|
|
||||||
'private'
|
|
||||||
'procedure'
|
|
||||||
'property'
|
|
||||||
'protected'
|
|
||||||
'public'
|
|
||||||
'published'
|
|
||||||
'raise'
|
|
||||||
'repeat'
|
|
||||||
'stored'
|
|
||||||
'then'
|
|
||||||
'to'
|
|
||||||
'try'
|
|
||||||
'type'
|
|
||||||
'unit'
|
|
||||||
'until'
|
|
||||||
'uses'
|
|
||||||
'var'
|
|
||||||
'virtual'
|
|
||||||
'while'
|
|
||||||
'with')
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
BGColor = clWindow
|
|
||||||
StyleType = stKeyword
|
|
||||||
Bracket = #0
|
|
||||||
Info = 'Pascal Standard Default'
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
Font.Style = []
|
|
||||||
BGColor = clWindow
|
|
||||||
StyleType = stBracket
|
|
||||||
Bracket = #39
|
|
||||||
Info = 'Simple Quote'
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
Font.Style = []
|
|
||||||
BGColor = clWindowText
|
|
||||||
StyleType = stBracket
|
|
||||||
Bracket = '"'
|
|
||||||
Info = 'Double Quote'
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
Font.Style = []
|
|
||||||
BGColor = clWindow
|
|
||||||
StyleType = stSymbol
|
|
||||||
Bracket = #0
|
|
||||||
Symbols = ' ,;:.(){}[]=-*/^%<>#'#13#10
|
|
||||||
Info = 'Symbols Delimiters'
|
|
||||||
end>
|
|
||||||
AutoCompletion.Strings = (
|
|
||||||
'ShowMessage'
|
|
||||||
'MessageDlg')
|
|
||||||
HintParameter.TextColor = clBlack
|
|
||||||
HintParameter.BkColor = clInfoBk
|
|
||||||
HintParameter.HintCharStart = '('
|
|
||||||
HintParameter.HintCharEnd = ')'
|
|
||||||
HintParameter.HintCharDelimiter = ';'
|
|
||||||
HintParameter.HintCharWriteDelimiter = ','
|
|
||||||
HintParameter.Parameters.Strings = (
|
|
||||||
'ShowMessage(const Msg: string);'
|
|
||||||
|
|
||||||
'MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMs' +
|
|
||||||
'gDlgButtons; HelpCtx: Longint): Integer);')
|
|
||||||
HexIdentifier = '$'
|
|
||||||
Left = 328
|
|
||||||
Top = 32
|
|
||||||
end
|
|
||||||
object Scripter: TatPascalScripter
|
|
||||||
SourceCode.Strings = (
|
|
||||||
'')
|
|
||||||
Compiled = True
|
|
||||||
EventSupport = False
|
|
||||||
OnCompileError = ScripterCompileError
|
|
||||||
ShortBooleanEval = False
|
|
||||||
Left = 360
|
|
||||||
Top = 32
|
|
||||||
PCode = {
|
|
||||||
1B010000617450617363616C2045786563757461626C652046696C651A040F01
|
|
||||||
0000000000000000790000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000545046300D546174536372697074496E666F025F3108526F
|
|
||||||
7574696E65730E01044E616D6506044D41494E095661726961626C65730E000A
|
|
||||||
497346756E6374696F6E0808417267436F756E7402000C42795265664172674D
|
|
||||||
61736B02000B526573756C74496E6465780200000007476C6F62616C730E0000
|
|
||||||
001C0000000000000003000000010000000000000000000000000000004D4149
|
|
||||||
4E1E000000330000000200000000000000000000000000000000000000526573
|
|
||||||
756C7418000000410000000200000000000000000000000000000000000000}
|
|
||||||
end
|
|
||||||
object OpenDialog: TOpenDialog
|
|
||||||
DefaultExt = 'fla'
|
|
||||||
Filter =
|
|
||||||
'Flame files (*.flame)|*.flame|Apophysis 1.0 parameters (*.apo;*.' +
|
|
||||||
'fla)|*.apo;*.fla|All files (*.*)|*.*'
|
|
||||||
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
|
|
||||||
Left = 328
|
|
||||||
Top = 64
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'flame'
|
|
||||||
Filter = 'Flame files (*.flame)|*.flame'
|
|
||||||
Options = [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]
|
|
||||||
Left = 360
|
|
||||||
Top = 64
|
|
||||||
end
|
|
||||||
end
|
|
File diff suppressed because it is too large
Load Diff
@ -1,37 +0,0 @@
|
|||||||
object ScriptRenderForm: TScriptRenderForm
|
|
||||||
Left = 390
|
|
||||||
Top = 391
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'ScriptRenderForm'
|
|
||||||
ClientHeight = 62
|
|
||||||
ClientWidth = 268
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 96
|
|
||||||
Top = 32
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Cancel'
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
object ProgressBar: TProgressBar
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
Min = 0
|
|
||||||
Max = 100
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,139 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit ScriptRender;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ComCtrls, StdCtrls, Render, cmap, ControlPoint, ImageDLLLoader,
|
|
||||||
PNGLoader, BMPLoader, LinarBitmap, ExtCtrls, FileUtils, JPEGLoader, JPEG;
|
|
||||||
|
|
||||||
const
|
|
||||||
WM_THREAD_COMPLETE = WM_APP + 5437;
|
|
||||||
WM_THREAD_TERMINATE = WM_APP + 5438;
|
|
||||||
|
|
||||||
|
|
||||||
type
|
|
||||||
TScriptRenderForm = class(TForm)
|
|
||||||
btnCancel: TButton;
|
|
||||||
ProgressBar: TProgressBar;
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
PixelsPerUnit: double;
|
|
||||||
StartTime: TDateTime;
|
|
||||||
Remainder: TDateTime;
|
|
||||||
public
|
|
||||||
Renderer: TRenderer;
|
|
||||||
ColorMap: TColorMap;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Filename: string;
|
|
||||||
ImageWidth, ImageHeight, Oversample: Integer;
|
|
||||||
zoom, Sample_Density, Brightness, Gamma, Vibrancy, Filter_Radius: double;
|
|
||||||
center: array[0..1] of double;
|
|
||||||
procedure OnProgress(prog: double);
|
|
||||||
procedure Render;
|
|
||||||
procedure SetRenderBounds;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
ScriptRenderForm: TScriptRenderForm;
|
|
||||||
Cancelled: boolean;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Global, Math, FormRender, ScriptForm;
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.SetRenderBounds;
|
|
||||||
begin
|
|
||||||
cp.copy(ScriptEditor.cp);
|
|
||||||
cp.Width := ScriptEditor.Renderer.Width;
|
|
||||||
cp.Height := ScriptEditor.Renderer.Height;
|
|
||||||
cp.CalcBoundBox;
|
|
||||||
cp.center[0] := ScriptEditor.cp.center[0];
|
|
||||||
cp.center[1] := ScriptEditor.cp.center[1];
|
|
||||||
cp.zoom := ScriptEditor.cp.zoom;
|
|
||||||
PixelsPerUnit := cp.Pixels_per_unit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.Render;
|
|
||||||
begin
|
|
||||||
Cancelled := False;
|
|
||||||
ScriptEditor.Scripter.Paused := True;
|
|
||||||
StartTime := Now;
|
|
||||||
Remainder := 1;
|
|
||||||
cp.copy(ScriptEditor.cp);
|
|
||||||
Filename := ScriptEditor.Renderer.Filename;
|
|
||||||
cp.Width := ScriptEditor.Renderer.Width;
|
|
||||||
cp.Height := ScriptEditor.Renderer.Height;
|
|
||||||
cp.pixels_per_unit := PixelsPerUnit;
|
|
||||||
Renderer.OnProgress := OnProgress;
|
|
||||||
Renderer.Compatibility := Compatibility;
|
|
||||||
Renderer.SetCP(cp);
|
|
||||||
if (ScriptEditor.Renderer.MaxMemory > 0) then
|
|
||||||
Renderer.RenderMaxMem(ScriptEditor.Renderer.MaxMemory)
|
|
||||||
else Renderer.Render;
|
|
||||||
with TLinearBitmap.Create do
|
|
||||||
try
|
|
||||||
Assign(Renderer.GetImage);
|
|
||||||
JPEGLoader.Default.Quality := JPEGQuality;
|
|
||||||
if not cancelled then SaveToFile(FileName);
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
ScriptEditor.Scripter.Paused := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.OnProgress(prog: double);
|
|
||||||
var
|
|
||||||
Elapsed: TDateTime;
|
|
||||||
begin
|
|
||||||
prog := (Renderer.Slice + Prog) / Renderer.NrSlices;
|
|
||||||
ProgressBar.Position := round(100 * prog);
|
|
||||||
Elapsed := Now - StartTime;
|
|
||||||
if prog > 0 then
|
|
||||||
Remainder := Min(Remainder, Elapsed * (power(1 / prog, 1.2) - 1));
|
|
||||||
Application.ProcessMessages;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.free;
|
|
||||||
Renderer.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Renderer := TRenderer.Create;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
ImageDLLLoader.Default.FindDLLs(ProgramPath);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TScriptRenderForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ScriptEditor.Scripter.Halt;
|
|
||||||
Cancelled := True;
|
|
||||||
Renderer.Stop;
|
|
||||||
LastError := 'Render cancelled';
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,186 +0,0 @@
|
|||||||
object SheepDialog: TSheepDialog
|
|
||||||
Left = 478
|
|
||||||
Top = 274
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Post Sheep'
|
|
||||||
ClientHeight = 312
|
|
||||||
ClientWidth = 240
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000001000800680500001600000028000000100000002000
|
|
||||||
0000010008000000000000000000480000004800000000010000000000000402
|
|
||||||
0400846E7C005C4E5C002C323C00141A2C00C4AAC4000C0E0C009C8E9C00AC5E
|
|
||||||
B4005C5A5C00544654001C121C00745E6C007C828400443A4400141614002426
|
|
||||||
2400140E0C000C0A0400241A2400AC96A40074666C00847A84005C667C00443E
|
|
||||||
44000C0604009C828C00140E1C00846A8400946E9400844684003C2E4400DCD6
|
|
||||||
DC009492BC006C5A640054565400242224004C424C00040604008C6E9C006C4E
|
|
||||||
7C001C222C00ACBADC000C121C00646264001C161400141214002C1A2400BC9E
|
|
||||||
AC007C6A7C00444254009C869C0084727C0064567400342E34001C1A1C00C4AE
|
|
||||||
C4000C0E14009C8EA400645E64004C4E640074626C008C82A4004C3644001416
|
|
||||||
1C002C2A2C00140E14000C0A0C00241E2400B496B400746A7C00947A8C00646A
|
|
||||||
8C00444244000C0614009C82940014121C00846A8C003C3634009496BC005456
|
|
||||||
6C0004060C001C161C00000077003862FF00000BFF00A714FF000000FF00E000
|
|
||||||
C70070002700ED00F60077007700D800E400110027001A00F60000007700E001
|
|
||||||
000070000000ED0015007700000000010900000003000000100000000000A814
|
|
||||||
B2000E0017001A00F50000007700380100000000000001000000000000000000
|
|
||||||
3800000000001500A70000000000A800E000C50070001200ED0000007700B010
|
|
||||||
20000E0000001A00000000000000000020000000000015000000000000008500
|
|
||||||
0C00F4000000F5000E007700000000A8A40000C4C3000012D900000077000000
|
|
||||||
D8000000C300150012000000000085380000F4C50000F512000077000000A1BF
|
|
||||||
0000F4ED0000F5D600007777000008700200064F7F0015D900000077000038FF
|
|
||||||
E80000FFC300A7FF120000FF0000014B0000003B000000D4000000770000010D
|
|
||||||
38000045C60000D412000077000038008D00C6004A001200D4000000770096C4
|
|
||||||
A40039C6C300E7D4D900777777009E620200390B7F00E7140000770000003C82
|
|
||||||
20000000C600A7001200000000001C00230039000400E7000000770000000000
|
|
||||||
2300000004000000000000000000B0CC75000EF405001A860700000001003818
|
|
||||||
88000045C400A7D412000077000001BCBD0000024400007AD70000005A000888
|
|
||||||
6200C6C50B00121214000000000040006200F9000B0012001400000000004001
|
|
||||||
F800F9009500120033000000000009002F0048004200E900D70077005A00381C
|
|
||||||
620030C50B00E812140077000000FF000100FF000000FF000000FF0000009E40
|
|
||||||
000039F90000E71200007700000012BFC400EBEDC60041D6D400007777008000
|
|
||||||
C4006A4FC6001AD9D40000777700D9FF0C0057FF4500E7FFD70077FF5A001C18
|
|
||||||
620039450B00E7D4140077770000AF5D020079A10000D4D400007777000023B8
|
|
||||||
000004F400000086000000000000008282000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000002626000000000000000000002600
|
|
||||||
26264019260026000026002600262626002D0F002600262E2F26262626262600
|
|
||||||
0041245119060B351E1B260000262626261849100032482708450D2E00262651
|
|
||||||
001831162C0E2121281D091043260013364E073338091C2A3C1911264226000B
|
|
||||||
3122013A4B470A3E17000000264326003D051A3146023F1F5039002626432600
|
|
||||||
232014300C294213034351262626514329234918152F0000292B190026262651
|
|
||||||
51000000410F26004C04512626262626002626062E1900262600265119260000
|
|
||||||
0000002600000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poMainFormCenter
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 162
|
|
||||||
Width = 25
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Nick:'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 194
|
|
||||||
Width = 25
|
|
||||||
Height = 13
|
|
||||||
Caption = 'URL:'
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 226
|
|
||||||
Width = 49
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Password:'
|
|
||||||
end
|
|
||||||
object lblLink: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 262
|
|
||||||
Width = 209
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Creative Commons License'
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlue
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = [fsUnderline]
|
|
||||||
ParentFont = False
|
|
||||||
OnClick = lblLinkClick
|
|
||||||
end
|
|
||||||
object lblLicense: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 250
|
|
||||||
Width = 209
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Posted sheep are distributed under a'
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clBlack
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
ParentFont = False
|
|
||||||
end
|
|
||||||
object Button1: TButton
|
|
||||||
Left = 40
|
|
||||||
Top = 282
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Upload'
|
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 4
|
|
||||||
OnClick = Button1Click
|
|
||||||
end
|
|
||||||
object Button2: TButton
|
|
||||||
Left = 128
|
|
||||||
Top = 282
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
Default = True
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object PrevPnl: TPanel
|
|
||||||
Left = 37
|
|
||||||
Top = 5
|
|
||||||
Width = 162
|
|
||||||
Height = 122
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl'
|
|
||||||
TabOrder = 5
|
|
||||||
object PreviewImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 160
|
|
||||||
Height = 120
|
|
||||||
Align = alClient
|
|
||||||
IncrementalDisplay = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object txtNick: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 160
|
|
||||||
Width = 153
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object txtURL: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 192
|
|
||||||
Width = 153
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
|
||||||
object txtPassword: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 224
|
|
||||||
Width = 153
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object ScrollBar: TScrollBar
|
|
||||||
Left = 16
|
|
||||||
Top = 136
|
|
||||||
Width = 209
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 6
|
|
||||||
OnChange = ScrollBarChange
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,137 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Sheep;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, Global, ControlPoint, Render;
|
|
||||||
|
|
||||||
type
|
|
||||||
TSheepDialog = class(TForm)
|
|
||||||
Button1: TButton;
|
|
||||||
Button2: TButton;
|
|
||||||
PrevPnl: TPanel;
|
|
||||||
PreviewImage: TImage;
|
|
||||||
txtNick: TEdit;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
txtURL: TEdit;
|
|
||||||
Label3: TLabel;
|
|
||||||
txtPassword: TEdit;
|
|
||||||
ScrollBar: TScrollBar;
|
|
||||||
lblLicense: TLabel;
|
|
||||||
lblLink: TLabel;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure Button1Click(Sender: TObject);
|
|
||||||
procedure ScrollBarChange(Sender: TObject);
|
|
||||||
procedure lblLinkClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
Render: TRenderer;
|
|
||||||
bm: TBitmap;
|
|
||||||
|
|
||||||
procedure DrawPreview;
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
cp: TControlPoint;
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
SheepDialog: TSheepDialog;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, cmap, ShellAPI;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TSheepDialog.DrawPreview;
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
cp.Width := PreviewImage.Width;
|
|
||||||
cp.Height := PreviewImage.Height;
|
|
||||||
cp.sample_density := 10;
|
|
||||||
cp.spatial_oversample := 2;
|
|
||||||
cp.spatial_filter_radius := 0.4;
|
|
||||||
cp.Zoom := 0;
|
|
||||||
cp.center[0] := 0;
|
|
||||||
cp.center[1] := 0;
|
|
||||||
cp.pixels_per_unit := 60;
|
|
||||||
cp.gamma := 4;
|
|
||||||
cp.brightness := 4;
|
|
||||||
cp.vibrancy := 1;
|
|
||||||
GetCMap(cp.cmapindex, cp.hue_rotation, cp.cmap);
|
|
||||||
Render.Compatibility := compatibility;
|
|
||||||
Render.SetCP(cp);
|
|
||||||
Render.Render;
|
|
||||||
BM.Assign(Render.GetImage);
|
|
||||||
PreviewImage.Picture.Graphic := bm;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
scrollbar.position := 0;
|
|
||||||
txtNick.text := MainCp.nick;
|
|
||||||
txtURL.text := MainCp.URL;
|
|
||||||
txtPassword.text := SheepPW;
|
|
||||||
cp.copy(MainCp);
|
|
||||||
for i := 0 to 2 do cp.background[i] := 0;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm := TbitMap.Create;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm.free;
|
|
||||||
cp.free;
|
|
||||||
Render.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.Button1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SheepNick := txtNick.Text;
|
|
||||||
SheepURL := txtURL.Text;
|
|
||||||
SheepPW := txtPassword.Text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.ScrollBarChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.hue_rotation := ScrollBar.Position / 100;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSheepDialog.lblLinkClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://creativecommons.org/licenses/by-sa/1.0/'),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
|||||||
object SizeTool: TSizeTool
|
|
||||||
Left = 330
|
|
||||||
Top = 199
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Image Size'
|
|
||||||
ClientHeight = 113
|
|
||||||
ClientWidth = 152
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnActivate = FormActivate
|
|
||||||
OnClose = FormClose
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 18
|
|
||||||
Top = 23
|
|
||||||
Width = 28
|
|
||||||
Height = 13
|
|
||||||
Caption = '&Width'
|
|
||||||
FocusControl = txtWidth
|
|
||||||
end
|
|
||||||
object Bevel: TBevel
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 137
|
|
||||||
Height = 97
|
|
||||||
Shape = bsFrame
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 18
|
|
||||||
Top = 47
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = '&Height:'
|
|
||||||
FocusControl = txtHeight
|
|
||||||
end
|
|
||||||
object txtWidth: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 20
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = txtWidthChange
|
|
||||||
OnKeyPress = txtWidthKeyPress
|
|
||||||
end
|
|
||||||
object txtHeight: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 44
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtHeightChange
|
|
||||||
OnKeyPress = txtHeightKeyPress
|
|
||||||
end
|
|
||||||
object chkMaintain: TCheckBox
|
|
||||||
Left = 16
|
|
||||||
Top = 76
|
|
||||||
Width = 121
|
|
||||||
Height = 17
|
|
||||||
Caption = '&Maintain aspect ratio'
|
|
||||||
TabOrder = 2
|
|
||||||
OnClick = chkMaintainClick
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,176 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Size;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TSizeTool = class(TForm)
|
|
||||||
Label1: TLabel;
|
|
||||||
txtWidth: TEdit;
|
|
||||||
Bevel: TBevel;
|
|
||||||
txtHeight: TEdit;
|
|
||||||
Label2: TLabel;
|
|
||||||
chkMaintain: TCheckBox;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure FormActivate(Sender: TObject);
|
|
||||||
procedure txtHeightKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtWidthKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure chkMaintainClick(Sender: TObject);
|
|
||||||
procedure txtWidthChange(Sender: TObject);
|
|
||||||
procedure txtHeightChange(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
SizeTool: TSizeTool;
|
|
||||||
ImageHeight, ImageWidth: integer;
|
|
||||||
ratio: double;
|
|
||||||
xdif, ydif: integer;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Registry, Global;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TSizeTool.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\SizeTool', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
SizeTool.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
SizeTool.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
txtWidth.text := IntToStr(MainForm.Image.Width);
|
|
||||||
txtHeight.text := IntToStr(MainForm.Image.Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AdjustWindow;
|
|
||||||
var
|
|
||||||
xtot, ytot: integer;
|
|
||||||
begin
|
|
||||||
xtot := ImageWidth + xdif;
|
|
||||||
ytot := ImageHeight + ydif;
|
|
||||||
if xtot > Screen.Width then
|
|
||||||
begin
|
|
||||||
MainForm.Left := 0;
|
|
||||||
xtot := Screen.width;
|
|
||||||
end;
|
|
||||||
if ytot > Screen.height then
|
|
||||||
begin
|
|
||||||
MainForm.Top := 0;
|
|
||||||
ytot := Screen.height;
|
|
||||||
end;
|
|
||||||
MainForm.Width := xtot;
|
|
||||||
MainForm.Height := ytot;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\SizeTool', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', SizeTool.Top);
|
|
||||||
Registry.WriteInteger('Left', SizeTool.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.FormActivate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
xdif := MainForm.Width - MainForm.Image.Width;
|
|
||||||
ydif := MainForm.Height - MainForm.Image.Height;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.txtHeightKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
AdjustWindow;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.txtWidthKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
AdjustWindow;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.chkMaintainClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.txtWidthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageWidth := StrToInt(txtWidth.Text);
|
|
||||||
if chkMaintain.checked and txtWidth.Focused then
|
|
||||||
begin
|
|
||||||
ImageHeight := Round(ImageWidth / ratio);
|
|
||||||
txtHeight.Text := IntToStr(ImageHeight)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSizeTool.txtHeightChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageHeight := StrToInt(txtHeight.Text);
|
|
||||||
if chkMaintain.checked and txtHeight.Focused then
|
|
||||||
begin
|
|
||||||
ImageWidth := Round(ImageHeight * ratio);
|
|
||||||
txtWidth.Text := IntToStr(ImageWidth)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,584 +0,0 @@
|
|||||||
unit XForm;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
const
|
|
||||||
NVARS = 22;
|
|
||||||
EPS = 1E-10;
|
|
||||||
|
|
||||||
type
|
|
||||||
TCalcMethod = procedure of object;
|
|
||||||
|
|
||||||
type
|
|
||||||
TXForm = class
|
|
||||||
private
|
|
||||||
FNrFunctions: Integer;
|
|
||||||
FFunctionList: array[0..NVARS] of TCalcMethod;
|
|
||||||
|
|
||||||
FTx, FTy: double;
|
|
||||||
FPx, FPy: double;
|
|
||||||
FAngle: double;
|
|
||||||
FLength: double;
|
|
||||||
CalculateAngle: boolean;
|
|
||||||
CalculateLength: boolean;
|
|
||||||
|
|
||||||
procedure Linear; // var[0]
|
|
||||||
procedure Sinusoidal; // var[1]
|
|
||||||
procedure Spherical; // var[2]
|
|
||||||
procedure Swirl; // var[3]
|
|
||||||
procedure Horseshoe; // var[4]
|
|
||||||
procedure Polar; // var[5]
|
|
||||||
procedure FoldedHandkerchief; // var[6]
|
|
||||||
procedure Heart; // var[7]
|
|
||||||
procedure Disc; // var[8]
|
|
||||||
procedure Spiral; // var[9]
|
|
||||||
procedure hyperbolic; // var[10]
|
|
||||||
procedure Square; // var[11]
|
|
||||||
procedure Ex; // var[12]
|
|
||||||
procedure Julia; // var[13]
|
|
||||||
procedure Bent; // var[14]
|
|
||||||
procedure Waves; // var[15]
|
|
||||||
procedure Fisheye; // var[16]
|
|
||||||
procedure Popcorn; // var[17]
|
|
||||||
procedure Exponential; // var[18]
|
|
||||||
procedure Power; // var[19]
|
|
||||||
procedure Cosine; // var[20]
|
|
||||||
procedure SawTooth; // var[21]
|
|
||||||
|
|
||||||
|
|
||||||
public
|
|
||||||
vars: array[0..NVARS - 1] of double; // normalized interp coefs between variations
|
|
||||||
c: array[0..2, 0..1] of double; // the coefs to the affine part of the function
|
|
||||||
density: double; // prob is this function is chosen. 0 - 1
|
|
||||||
color: double; // color coord for this function. 0 - 1
|
|
||||||
symmetry: double;
|
|
||||||
c00, c01, c10, c11, c20, c21: double;
|
|
||||||
|
|
||||||
varType: integer;
|
|
||||||
|
|
||||||
Orientationtype: integer;
|
|
||||||
|
|
||||||
constructor Create;
|
|
||||||
procedure Prepare;
|
|
||||||
|
|
||||||
procedure NextPoint(var px, py, pc: double); overload;
|
|
||||||
procedure NextPoint(var px, py, pz, pc: double); overload;
|
|
||||||
end;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
SysUtils, Math;
|
|
||||||
|
|
||||||
{ TXForm }
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
constructor TXForm.Create;
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
density := 0;
|
|
||||||
Color := 0;
|
|
||||||
Vars[0] := 1;
|
|
||||||
for i := 1 to NVARS - 1 do begin
|
|
||||||
Vars[i] := 0;
|
|
||||||
end;
|
|
||||||
c[0, 0] := 1;
|
|
||||||
c[0, 1] := 0;
|
|
||||||
c[1, 0] := 0;
|
|
||||||
c[1, 1] := 1;
|
|
||||||
c[2, 0] := 0;
|
|
||||||
c[2, 1] := 0;
|
|
||||||
Symmetry := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Prepare;
|
|
||||||
begin
|
|
||||||
c00 := c[0][0];
|
|
||||||
c01 := c[0][1];
|
|
||||||
c10 := c[1][0];
|
|
||||||
c11 := c[1][1];
|
|
||||||
c20 := c[2][0];
|
|
||||||
c21 := c[2][1];
|
|
||||||
|
|
||||||
FNrFunctions := 0;
|
|
||||||
|
|
||||||
if (vars[0] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Linear;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[1] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Sinusoidal;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[2] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Spherical;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[3] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Swirl;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[4] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Horseshoe;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[5] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Polar;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[6] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := FoldedHandkerchief;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[7] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Heart;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[8] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Disc;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[9] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Spiral;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[10] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Hyperbolic;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[11] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Square;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[12] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Ex;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[13] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Julia;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[14] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Bent;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[15] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Waves;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[16] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Fisheye;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[17] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Popcorn;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[18] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Exponential;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[19] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Power;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[20] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := Cosine;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (vars[21] <> 0.0) then begin
|
|
||||||
FFunctionList[FNrFunctions] := SawTooth;
|
|
||||||
Inc(FNrFunctions);
|
|
||||||
end;
|
|
||||||
|
|
||||||
CalculateAngle := (vars[5] <> 0.0) or (vars[6] <> 0.0) or (vars[7] <> 0.0) or (vars[8] <> 0.0) or
|
|
||||||
(vars[9] <> 0.0) or (vars[10] <> 0.0) or (vars[11] <> 0.0) or (vars[12] <> 0.0) or
|
|
||||||
(vars[13] <> 0.0) or (vars[19] <> 0.0) or (vars[21] <> 0.0);
|
|
||||||
CalculateLength := False;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.NextPoint(var px,py,pc: double);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
// first compute the color coord
|
|
||||||
pc := (pc + color) * 0.5 * (1 - symmetry) + symmetry * pc;
|
|
||||||
|
|
||||||
FTx := c00 * px + c10 * py + c20;
|
|
||||||
FTy := c01 * px + c11 * py + c21;
|
|
||||||
|
|
||||||
if CalculateAngle then begin
|
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
|
||||||
FAngle := arctan2(FTx, FTy)
|
|
||||||
else
|
|
||||||
FAngle := 0.0;
|
|
||||||
end;
|
|
||||||
// if CalculateLength then begin
|
|
||||||
// FLength := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
// end;
|
|
||||||
|
|
||||||
Fpx := 0;
|
|
||||||
Fpy := 0;
|
|
||||||
|
|
||||||
for i:= 0 to FNrFunctions-1 do
|
|
||||||
FFunctionList[i];
|
|
||||||
|
|
||||||
px := FPx;
|
|
||||||
py := FPy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Linear;
|
|
||||||
begin
|
|
||||||
FPx := FPx + vars[0] * FTx;
|
|
||||||
FPy := FPy + vars[0] * FTy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Sinusoidal;
|
|
||||||
begin
|
|
||||||
FPx := FPx + vars[1] * sin(FTx);
|
|
||||||
FPy := FPy + vars[1] * sin(FTy);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Spherical;
|
|
||||||
var
|
|
||||||
r2: double;
|
|
||||||
begin
|
|
||||||
r2 := FTx * FTx + FTy * FTy + 1E-6;
|
|
||||||
FPx := FPx + vars[2] * (FTx / r2);
|
|
||||||
FPy := FPy + vars[2] * (FTy / r2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Swirl;
|
|
||||||
var
|
|
||||||
c1, c2, r2: double;
|
|
||||||
begin
|
|
||||||
r2 := FTx * FTx + FTy * FTy;
|
|
||||||
c1 := sin(r2);
|
|
||||||
c2 := cos(r2);
|
|
||||||
FPx := FPx + vars[3] * (c1 * FTx - c2 * FTy);
|
|
||||||
FPy := FPy + vars[3] * (c2 * FTx + c1 * FTy);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Horseshoe;
|
|
||||||
var
|
|
||||||
a, c1, c2: double;
|
|
||||||
begin
|
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
|
||||||
a := arctan2(FTx, FTy)
|
|
||||||
else
|
|
||||||
a := 0.0;
|
|
||||||
c1 := sin(a);
|
|
||||||
c2 := cos(a);
|
|
||||||
FPx := FPx + vars[4] * (c1 * FTx - c2 * FTy);
|
|
||||||
FPy := FPy + vars[4] * (c2 * FTx + c1 * FTy);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Polar;
|
|
||||||
var
|
|
||||||
ny: double;
|
|
||||||
begin
|
|
||||||
ny := sqrt(FTx * FTx + FTy * FTy) - 1.0;
|
|
||||||
FPx := FPx + vars[5] * (FAngle/PI);
|
|
||||||
FPy := FPy + vars[5] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.FoldedHandkerchief;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
FPx := FPx + vars[6] * sin(FAngle + r) * r;
|
|
||||||
FPy := FPy + vars[6] * cos(FAngle - r) * r;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Heart;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
|
|
||||||
FPx := FPx + vars[7] * sin(FAngle * r) * r;
|
|
||||||
FPy := FPy + vars[7] * cos(FAngle * r) * -r;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Disc;
|
|
||||||
var
|
|
||||||
nx, ny, r: double;
|
|
||||||
begin
|
|
||||||
nx := FTx * PI;
|
|
||||||
ny := FTy * PI;
|
|
||||||
|
|
||||||
r := sqrt(nx * nx + ny * ny);
|
|
||||||
FPx := FPx + vars[8] * sin(r) * FAngle / PI;
|
|
||||||
FPy := FPy + vars[8] * cos(r) * FAngle / PI;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Spiral;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy) + 1E-6;
|
|
||||||
FPx := FPx + vars[9] * (cos(FAngle) + sin(r)) / r;
|
|
||||||
FPy := FPy + vars[9] * (sin(FAngle) - cos(r)) / r;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.hyperbolic;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy) + 1E-6;
|
|
||||||
FPx := FPx + vars[10] * sin(FAngle) / r;
|
|
||||||
FPy := FPy + vars[10] * cos(FAngle) * r;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Square;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
FPx := FPx + vars[11] * sin(FAngle) * cos(r);
|
|
||||||
FPy := FPy + vars[11] * cos(FAngle) * sin(r);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Ex;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
n0,n1, m0, m1: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
n0 := sin(FAngle + r);
|
|
||||||
n1 := cos(FAngle - r);
|
|
||||||
m0 := n0 * n0 * n0 * r;
|
|
||||||
m1 := n1 * n1 * n1 * r;
|
|
||||||
FPx := FPx + vars[12] * (m0 + m1);
|
|
||||||
FPy := FPy + vars[12] * (m0 - m1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Julia;
|
|
||||||
var
|
|
||||||
a,r: double;
|
|
||||||
begin
|
|
||||||
r := Math.power(FTx * FTx + FTy * FTy, 0.25);
|
|
||||||
a := FAngle/2 + Trunc(random * 2) * PI;
|
|
||||||
FPx := FPx + vars[13] * r * cos(a);
|
|
||||||
FPy := FPy + vars[13] * r * sin(a);
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Bent;
|
|
||||||
var
|
|
||||||
nx, ny: double;
|
|
||||||
begin
|
|
||||||
nx := FTx;
|
|
||||||
ny := FTy;
|
|
||||||
if (nx < 0) and (nx > -1E100) then
|
|
||||||
nx := nx * 2;
|
|
||||||
if ny < 0 then
|
|
||||||
ny := ny / 2;
|
|
||||||
FPx := FPx + vars[14] * nx;
|
|
||||||
FPy := FPy + vars[14] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Waves;
|
|
||||||
var
|
|
||||||
dx,dy,nx,ny: double;
|
|
||||||
begin
|
|
||||||
dx := c20;
|
|
||||||
dy := c21;
|
|
||||||
nx := FTx + c10 * sin(FTy / ((dx * dx) + EPS));
|
|
||||||
ny := FTy + c11 * sin(FTx / ((dy * dy) + EPS));
|
|
||||||
FPx := FPx + vars[15] * nx;
|
|
||||||
FPy := FPy + vars[15] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Fisheye;
|
|
||||||
var
|
|
||||||
a, r: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
a := arctan2(FTx, FTy);
|
|
||||||
r := 2 * r / (r + 1);
|
|
||||||
FPx := FPx + vars[16] * r * cos(a);
|
|
||||||
FPy := FPy + vars[16] * r * sin(a);
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Popcorn;
|
|
||||||
var
|
|
||||||
dx, dy: double;
|
|
||||||
nx, ny: double;
|
|
||||||
begin
|
|
||||||
dx := tan(3 * FTy);
|
|
||||||
if (dx <> dx) then
|
|
||||||
dx := 0.0; // < probably won't work in Delphi
|
|
||||||
dy := tan(3 * FTx); // NAN will raise an exception...
|
|
||||||
if (dy <> dy) then
|
|
||||||
dy := 0.0; // remove for speed?
|
|
||||||
nx := FTx + c20 * sin(dx);
|
|
||||||
ny := FTy + c21 * sin(dy);
|
|
||||||
FPx := FPx + vars[17] * nx;
|
|
||||||
FPy := FPy + vars[17] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Exponential;
|
|
||||||
var
|
|
||||||
dx, dy: double;
|
|
||||||
begin
|
|
||||||
dx := exp(FTx)/ 2.718281828459045;
|
|
||||||
dy := PI * FTy;
|
|
||||||
FPx := FPx + vars[18] * cos(dy) * dx;
|
|
||||||
FPy := FPy + vars[18] * sin(dy) * dx;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Power;
|
|
||||||
var
|
|
||||||
r,sa: double;
|
|
||||||
nx, ny: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
sa := sin(FAngle);
|
|
||||||
r := Math.power(r, sa);
|
|
||||||
nx := r * cos(FAngle);
|
|
||||||
ny := r * sa;
|
|
||||||
FPx := FPx + vars[19] * nx;
|
|
||||||
FPy := FPy + vars[19] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.Cosine;
|
|
||||||
var
|
|
||||||
nx, ny: double;
|
|
||||||
begin
|
|
||||||
nx := cos(Ftx * PI) * cosh(Fty);
|
|
||||||
ny := -sin(Ftx * PI) * sinh(Fty);
|
|
||||||
FPx := FPx + vars[20] * nx;
|
|
||||||
FPy := FPy + vars[20] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.SawTooth;
|
|
||||||
var
|
|
||||||
r: double;
|
|
||||||
nx, ny: double;
|
|
||||||
begin
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
// r := fmod(r + 1.0, 2.0) - 1.0;
|
|
||||||
r := r + 1;
|
|
||||||
r := r - System.Int(r/2) * 2.0 - 1;
|
|
||||||
|
|
||||||
nx := cos(FAngle) * r;
|
|
||||||
ny := sin(FAngle) * r;
|
|
||||||
|
|
||||||
FPx := FPx + vars[21] * nx;
|
|
||||||
FPy := FPy + vars[21] * ny;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
procedure TXForm.NextPoint(var px, py, pz, pc: double);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
tpx, tpy: double;
|
|
||||||
begin
|
|
||||||
// first compute the color coord
|
|
||||||
pc := (pc + color) * 0.5 * (1 - symmetry) + symmetry * pc;
|
|
||||||
|
|
||||||
case Orientationtype of
|
|
||||||
1:
|
|
||||||
begin
|
|
||||||
tpx := px;
|
|
||||||
tpy := pz;
|
|
||||||
end;
|
|
||||||
2:
|
|
||||||
begin
|
|
||||||
tpx := py;
|
|
||||||
tpy := pz;
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
tpx := px;
|
|
||||||
tpy := py;
|
|
||||||
end;
|
|
||||||
|
|
||||||
FTx := c00 * tpx + c10 * tpy + c20;
|
|
||||||
FTy := c01 * tpx + c11 * tpy + c21;
|
|
||||||
|
|
||||||
if CalculateAngle then begin
|
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
|
||||||
FAngle := arctan2(FTx, FTy)
|
|
||||||
else
|
|
||||||
FAngle := 0.0;
|
|
||||||
end;
|
|
||||||
if CalculateLength then begin
|
|
||||||
FLength := sqrt(FTx * FTx + FTy * FTy);
|
|
||||||
end;
|
|
||||||
|
|
||||||
Fpx := 0;
|
|
||||||
Fpy := 0;
|
|
||||||
|
|
||||||
for i:= 0 to FNrFunctions-1 do
|
|
||||||
FFunctionList[i];
|
|
||||||
|
|
||||||
case Orientationtype of
|
|
||||||
1:
|
|
||||||
begin
|
|
||||||
px := FPx;
|
|
||||||
pz := FPy;
|
|
||||||
end;
|
|
||||||
2:
|
|
||||||
begin
|
|
||||||
py := FPx;
|
|
||||||
pz := FPy;
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
px := FPx;
|
|
||||||
py := FPy;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
end.
|
|
@ -1,474 +0,0 @@
|
|||||||
{***************************************************************************}
|
|
||||||
{ This source code was generated automatically by }
|
|
||||||
{ Pas file import tool for Scripter Studio }
|
|
||||||
{ }
|
|
||||||
{ Scripter Studio and Pas file import tool for Scripter Studio }
|
|
||||||
{ written by Automa / TMS Software }
|
|
||||||
{ copyright © 1997 - 2003 }
|
|
||||||
{ Email : info@tmssoftware.com }
|
|
||||||
{ Web : http://www.tmssoftware.com }
|
|
||||||
{***************************************************************************}
|
|
||||||
unit ap_FileCtrl;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows,
|
|
||||||
Messages,
|
|
||||||
SysUtils,
|
|
||||||
Classes,
|
|
||||||
Controls,
|
|
||||||
Graphics,
|
|
||||||
Forms,
|
|
||||||
Menus,
|
|
||||||
StdCtrls,
|
|
||||||
Buttons,
|
|
||||||
FileCtrl,
|
|
||||||
Variants,
|
|
||||||
atScript;
|
|
||||||
|
|
||||||
type
|
|
||||||
TatFileCtrlLibrary = class(TatScripterLibrary)
|
|
||||||
procedure __TFileListBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TFileListBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TFileListBoxUpdate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TFileListBoxApplyFilePath(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTFileListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTFileListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTFileListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTFileListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTFileListBoxFileName(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTFileListBoxFileName(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxDisplayCase(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxFileCompareText(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxGetItemPath(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxOpenCurrent(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDirectoryListBoxUpdate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTDirectoryListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTDirectoryListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTDirectoryListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTDirectoryListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTDirectoryListBoxPreserveCase(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTDirectoryListBoxCaseSensitive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDriveComboBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TDriveComboBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTDriveComboBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __SetTDriveComboBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TFilterComboBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
procedure __TFilterComboBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
procedure __GetTFilterComboBoxMask(AMachine: TatVirtualMachine);
|
|
||||||
procedure __ProcessPath(AMachine: TatVirtualMachine);
|
|
||||||
procedure __MinimizeName(AMachine: TatVirtualMachine);
|
|
||||||
procedure __DirectoryExists(AMachine: TatVirtualMachine);
|
|
||||||
procedure __ForceDirectories(AMachine: TatVirtualMachine);
|
|
||||||
procedure Init; override;
|
|
||||||
class function LibraryName: string; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
TFileListBoxClass = class of TFileListBox;
|
|
||||||
TDirectoryListBoxClass = class of TDirectoryListBox;
|
|
||||||
TDriveComboBoxClass = class of TDriveComboBox;
|
|
||||||
TFilterComboBoxClass = class of TFilterComboBox;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{$WARNINGS OFF}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFileListBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := Integer(TFileListBoxClass(CurrentClass.ClassRef).Create(TComponent(Integer(GetInputArg(0)))));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFileListBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).Destroy;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFileListBoxUpdate(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).Update;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFileListBoxApplyFilePath(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).ApplyFilePath(GetInputArg(0));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTFileListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TFileListBox(CurrentObject).Drive);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTFileListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).Drive:=VarToStr(GetInputArg(0))[1];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTFileListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TFileListBox(CurrentObject).Directory);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTFileListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).Directory:=GetInputArg(0);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTFileListBoxFileName(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TFileListBox(CurrentObject).FileName);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTFileListBoxFileName(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFileListBox(CurrentObject).FileName:=GetInputArg(0);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := Integer(TDirectoryListBoxClass(CurrentClass.ClassRef).Create(TComponent(Integer(GetInputArg(0)))));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDirectoryListBox(CurrentObject).Destroy;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxDisplayCase(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := TDirectoryListBox(CurrentObject).DisplayCase(GetInputArg(0));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxFileCompareText(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := Integer(TDirectoryListBox(CurrentObject).FileCompareText(GetInputArg(0),GetInputArg(1)));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxGetItemPath(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := TDirectoryListBox(CurrentObject).GetItemPath(VarToInteger(GetInputArg(0)));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxOpenCurrent(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDirectoryListBox(CurrentObject).OpenCurrent;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDirectoryListBoxUpdate(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDirectoryListBox(CurrentObject).Update;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTDirectoryListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TDirectoryListBox(CurrentObject).Drive);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTDirectoryListBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDirectoryListBox(CurrentObject).Drive:=VarToStr(GetInputArg(0))[1];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTDirectoryListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TDirectoryListBox(CurrentObject).Directory);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTDirectoryListBoxDirectory(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDirectoryListBox(CurrentObject).Directory:=GetInputArg(0);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTDirectoryListBoxPreserveCase(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TDirectoryListBox(CurrentObject).PreserveCase);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTDirectoryListBoxCaseSensitive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TDirectoryListBox(CurrentObject).CaseSensitive);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDriveComboBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := Integer(TDriveComboBoxClass(CurrentClass.ClassRef).Create(TComponent(Integer(GetInputArg(0)))));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TDriveComboBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDriveComboBox(CurrentObject).Destroy;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTDriveComboBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TDriveComboBox(CurrentObject).Drive);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__SetTDriveComboBoxDrive(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TDriveComboBox(CurrentObject).Drive:=VarToStr(GetInputArg(0))[1];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFilterComboBoxCreate(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := Integer(TFilterComboBoxClass(CurrentClass.ClassRef).Create(TComponent(Integer(GetInputArg(0)))));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__TFilterComboBoxDestroy(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
TFilterComboBox(CurrentObject).Destroy;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__GetTFilterComboBoxMask(AMachine: TatVirtualMachine);
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
ReturnOutputArg(TFilterComboBox(CurrentObject).Mask);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__ProcessPath(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
Param1: Char;
|
|
||||||
Param2: string;
|
|
||||||
Param3: string;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
Param1 := VarToStr(GetInputArg(1))[1];
|
|
||||||
Param2 := GetInputArg(2);
|
|
||||||
Param3 := GetInputArg(3);
|
|
||||||
FileCtrl.ProcessPath(GetInputArg(0),Param1,Param2,Param3);
|
|
||||||
SetInputArg(1,Param1);
|
|
||||||
SetInputArg(2,Param2);
|
|
||||||
SetInputArg(3,Param3);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__MinimizeName(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := FileCtrl.MinimizeName(GetInputArg(0),TCanvas(Integer(GetInputArg(1))),VarToInteger(GetInputArg(2)));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__DirectoryExists(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := FileCtrl.DirectoryExists(GetInputArg(0));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.__ForceDirectories(AMachine: TatVirtualMachine);
|
|
||||||
var
|
|
||||||
AResult: variant;
|
|
||||||
begin
|
|
||||||
with AMachine do
|
|
||||||
begin
|
|
||||||
AResult := FileCtrl.ForceDirectories(GetInputArg(0));
|
|
||||||
ReturnOutputArg(AResult);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TatFileCtrlLibrary.Init;
|
|
||||||
begin
|
|
||||||
With Scripter.DefineClass(TFileListBox) do
|
|
||||||
begin
|
|
||||||
DefineMethod('Create',1,tkClass,TFileListBox,__TFileListBoxCreate,true);
|
|
||||||
DefineMethod('Destroy',0,tkNone,nil,__TFileListBoxDestroy,false);
|
|
||||||
DefineMethod('Update',0,tkNone,nil,__TFileListBoxUpdate,false);
|
|
||||||
DefineMethod('ApplyFilePath',1,tkNone,nil,__TFileListBoxApplyFilePath,false);
|
|
||||||
DefineProp('Drive',tkVariant,__GetTFileListBoxDrive,__SetTFileListBoxDrive,nil,false,0);
|
|
||||||
DefineProp('Directory',tkVariant,__GetTFileListBoxDirectory,__SetTFileListBoxDirectory,nil,false,0);
|
|
||||||
DefineProp('FileName',tkVariant,__GetTFileListBoxFileName,__SetTFileListBoxFileName,nil,false,0);
|
|
||||||
end;
|
|
||||||
With Scripter.DefineClass(TDirectoryListBox) do
|
|
||||||
begin
|
|
||||||
DefineMethod('Create',1,tkClass,TDirectoryListBox,__TDirectoryListBoxCreate,true);
|
|
||||||
DefineMethod('Destroy',0,tkNone,nil,__TDirectoryListBoxDestroy,false);
|
|
||||||
DefineMethod('DisplayCase',1,tkVariant,nil,__TDirectoryListBoxDisplayCase,false);
|
|
||||||
DefineMethod('FileCompareText',2,tkInteger,nil,__TDirectoryListBoxFileCompareText,false);
|
|
||||||
DefineMethod('GetItemPath',1,tkVariant,nil,__TDirectoryListBoxGetItemPath,false);
|
|
||||||
DefineMethod('OpenCurrent',0,tkNone,nil,__TDirectoryListBoxOpenCurrent,false);
|
|
||||||
DefineMethod('Update',0,tkNone,nil,__TDirectoryListBoxUpdate,false);
|
|
||||||
DefineProp('Drive',tkVariant,__GetTDirectoryListBoxDrive,__SetTDirectoryListBoxDrive,nil,false,0);
|
|
||||||
DefineProp('Directory',tkVariant,__GetTDirectoryListBoxDirectory,__SetTDirectoryListBoxDirectory,nil,false,0);
|
|
||||||
DefineProp('PreserveCase',tkVariant,__GetTDirectoryListBoxPreserveCase,nil,nil,false,0);
|
|
||||||
DefineProp('CaseSensitive',tkVariant,__GetTDirectoryListBoxCaseSensitive,nil,nil,false,0);
|
|
||||||
end;
|
|
||||||
With Scripter.DefineClass(TDriveComboBox) do
|
|
||||||
begin
|
|
||||||
DefineMethod('Create',1,tkClass,TDriveComboBox,__TDriveComboBoxCreate,true);
|
|
||||||
DefineMethod('Destroy',0,tkNone,nil,__TDriveComboBoxDestroy,false);
|
|
||||||
DefineProp('Text',tkVariant,nil,nil,nil,false,0);
|
|
||||||
DefineProp('Drive',tkVariant,__GetTDriveComboBoxDrive,__SetTDriveComboBoxDrive,nil,false,0);
|
|
||||||
end;
|
|
||||||
With Scripter.DefineClass(TFilterComboBox) do
|
|
||||||
begin
|
|
||||||
DefineMethod('Create',1,tkClass,TFilterComboBox,__TFilterComboBoxCreate,true);
|
|
||||||
DefineMethod('Destroy',0,tkNone,nil,__TFilterComboBoxDestroy,false);
|
|
||||||
DefineProp('Mask',tkVariant,__GetTFilterComboBoxMask,nil,nil,false,0);
|
|
||||||
DefineProp('Text',tkVariant,nil,nil,nil,false,0);
|
|
||||||
end;
|
|
||||||
With Scripter.DefineClass(ClassType) do
|
|
||||||
begin
|
|
||||||
DefineMethod('ProcessPath',4,tkNone,nil,__ProcessPath,false).SetVarArgs([1,2,3]);
|
|
||||||
DefineMethod('MinimizeName',3,tkVariant,nil,__MinimizeName,false);
|
|
||||||
DefineMethod('DirectoryExists',1,tkVariant,nil,__DirectoryExists,false);
|
|
||||||
DefineMethod('ForceDirectories',1,tkVariant,nil,__ForceDirectories,false);
|
|
||||||
AddConstant('ftReadOnly',ftReadOnly);
|
|
||||||
AddConstant('ftHidden',ftHidden);
|
|
||||||
AddConstant('ftSystem',ftSystem);
|
|
||||||
AddConstant('ftVolumeID',ftVolumeID);
|
|
||||||
AddConstant('ftDirectory',ftDirectory);
|
|
||||||
AddConstant('ftArchive',ftArchive);
|
|
||||||
AddConstant('ftNormal',ftNormal);
|
|
||||||
AddConstant('dtUnknown',dtUnknown);
|
|
||||||
AddConstant('dtNoDrive',dtNoDrive);
|
|
||||||
AddConstant('dtFloppy',dtFloppy);
|
|
||||||
AddConstant('dtFixed',dtFixed);
|
|
||||||
AddConstant('dtNetwork',dtNetwork);
|
|
||||||
AddConstant('dtCDROM',dtCDROM);
|
|
||||||
AddConstant('dtRAM',dtRAM);
|
|
||||||
AddConstant('tcLowerCase',tcLowerCase);
|
|
||||||
AddConstant('tcUpperCase',tcUpperCase);
|
|
||||||
AddConstant('sdAllowCreate',sdAllowCreate);
|
|
||||||
AddConstant('sdPerformCreate',sdPerformCreate);
|
|
||||||
AddConstant('sdPrompt',sdPrompt);
|
|
||||||
AddConstant('WNTYPE_DRIVE',WNTYPE_DRIVE);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
class function TatFileCtrlLibrary.LibraryName: string;
|
|
||||||
begin
|
|
||||||
result := 'FileCtrl';
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
|
||||||
RegisterScripterLibrary(TatFileCtrlLibrary, True);
|
|
||||||
|
|
||||||
{$WARNINGS ON}
|
|
||||||
|
|
||||||
end.
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,359 +0,0 @@
|
|||||||
{
|
|
||||||
Flame screensaver Copyright (C) 2002 Ronald Hordijk
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Cmap;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses sysutils, classes;
|
|
||||||
|
|
||||||
type
|
|
||||||
TColorMap = array[0..255, 0..3] of integer;
|
|
||||||
|
|
||||||
type
|
|
||||||
EFormatInvalid = class(Exception);
|
|
||||||
|
|
||||||
const
|
|
||||||
RANDOMCMAP = -1;
|
|
||||||
NRCMAPS = 701;
|
|
||||||
|
|
||||||
procedure GetCmap(var Index: integer; const hue_rotation: double; out cmap: TColorMap);
|
|
||||||
procedure GetCmapName(var Index: integer; out Name: string);
|
|
||||||
procedure rgb2hsv(const rgb: array of double; out hsv: array of double);
|
|
||||||
procedure hsv2rgb(const hsv: array of double; out rgb: array of double);
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
function GetPalette(strng: string; var Palette: TColorMap): boolean;
|
|
||||||
procedure GetTokens(s: string; var mlist: TStringList);
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
cmapdata, Math;
|
|
||||||
|
|
||||||
procedure rgb2hsv(const rgb: array of double; out hsv: array of double);
|
|
||||||
var
|
|
||||||
maxval, minval: double;
|
|
||||||
del: double;
|
|
||||||
begin
|
|
||||||
Maxval := Max(rgb[0], Max(rgb[1], rgb[2]));
|
|
||||||
Minval := Min(rgb[0], Min(rgb[1], rgb[2]));
|
|
||||||
|
|
||||||
hsv[2] := maxval; // v
|
|
||||||
|
|
||||||
if (Maxval > 0) and (maxval <> minval) then begin
|
|
||||||
del := maxval - minval;
|
|
||||||
hsv[1] := del / Maxval; //s
|
|
||||||
|
|
||||||
hsv[0] := 0;
|
|
||||||
if (rgb[0] > rgb[1]) and (rgb[0] > rgb[2]) then begin
|
|
||||||
hsv[0] := (rgb[1] - rgb[2]) / del;
|
|
||||||
end else if (rgb[1] > rgb[2]) then begin
|
|
||||||
hsv[0] := 2 + (rgb[2] - rgb[0]) / del;
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 4 + (rgb[0] - rgb[1]) / del;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if hsv[0] < 0 then
|
|
||||||
hsv[0] := hsv[0] + 6;
|
|
||||||
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 0;
|
|
||||||
hsv[1] := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure hsv2rgb(const hsv: array of double; out rgb: array of double);
|
|
||||||
var
|
|
||||||
j: integer;
|
|
||||||
f, p, q, t, v: double;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
j := floor(hsv[0]);
|
|
||||||
f := hsv[0] - j;
|
|
||||||
v := hsv[2];
|
|
||||||
p := hsv[2] * (1 - hsv[1]);
|
|
||||||
q := hsv[2] * (1 - hsv[1] * f);
|
|
||||||
t := hsv[2] * (1 - hsv[1] * (1 - f));
|
|
||||||
case j of
|
|
||||||
0: begin rgb[0] := v; rgb[1] := t; rgb[2] := p; end;
|
|
||||||
1: begin rgb[0] := q; rgb[1] := v; rgb[2] := p; end;
|
|
||||||
2: begin rgb[0] := p; rgb[1] := v; rgb[2] := t; end;
|
|
||||||
3: begin rgb[0] := p; rgb[1] := q; rgb[2] := v; end;
|
|
||||||
4: begin rgb[0] := t; rgb[1] := p; rgb[2] := v; end;
|
|
||||||
5: begin rgb[0] := v; rgb[1] := p; rgb[2] := t; end;
|
|
||||||
end;
|
|
||||||
except on EMathError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure GetCmap(var Index: integer; const hue_rotation: double; out cmap: TColorMap);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
rgb: array[0..2] of double;
|
|
||||||
hsv: array[0..2] of double;
|
|
||||||
begin
|
|
||||||
if Index = RANDOMCMAP then
|
|
||||||
Index := Random(NRCMAPS);
|
|
||||||
|
|
||||||
if (Index < 0) or (Index >= NRCMAPS) then
|
|
||||||
Index := 0;
|
|
||||||
|
|
||||||
for i := 0 to 255 do begin
|
|
||||||
rgb[0] := cmaps[Index][i][0] / 255.0;
|
|
||||||
rgb[1] := cmaps[Index][i][1] / 255.0;
|
|
||||||
rgb[2] := cmaps[Index][i][2] / 255.0;
|
|
||||||
|
|
||||||
rgb2hsv(rgb, hsv);
|
|
||||||
hsv[0] := hsv[0] + hue_rotation * 6;
|
|
||||||
hsv2rgb(hsv, rgb);
|
|
||||||
|
|
||||||
cmap[i][0] := Round(rgb[0] * 255);
|
|
||||||
cmap[i][1] := Round(rgb[1] * 255);
|
|
||||||
cmap[i][2] := Round(rgb[2] * 255);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure GetCmapName(var Index: integer; out Name: string);
|
|
||||||
begin
|
|
||||||
if Index = RANDOMCMAP then
|
|
||||||
Index := Random(NRCMAPS);
|
|
||||||
|
|
||||||
if (Index < 0) or (Index >= NRCMAPS) then
|
|
||||||
Index := 0;
|
|
||||||
|
|
||||||
Name := CMapNames[Index];
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure RGBBlend(a, b: integer; var Palette: TColorMap);
|
|
||||||
{ Linear blend between to indices of a palette }
|
|
||||||
var
|
|
||||||
c, v: real;
|
|
||||||
vrange, range: real;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
if a = b then
|
|
||||||
begin
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
range := b - a;
|
|
||||||
vrange := Palette[b mod 256][0] - Palette[a mod 256][0];
|
|
||||||
c := Palette[a mod 256][0];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := (a + 1) to (b - 1) do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][0] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][1] - Palette[a mod 256][1];
|
|
||||||
c := Palette[a mod 256][1];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][1] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][2] - Palette[a mod 256][2];
|
|
||||||
c := Palette[a mod 256][2];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][2] := Round(c);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
var
|
|
||||||
p: integer;
|
|
||||||
begin
|
|
||||||
p := Pos('=', token);
|
|
||||||
Delete(Token, 1, p);
|
|
||||||
Result := Token;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{Changes tab characters in a string to spaces}
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to Length(str) do
|
|
||||||
begin
|
|
||||||
if str[i] = #9 then
|
|
||||||
begin
|
|
||||||
Delete(str, i, 1);
|
|
||||||
Insert(#32, str, i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := str;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure GetTokens(s: string; var mlist: TStringList);
|
|
||||||
var
|
|
||||||
test, token: string;
|
|
||||||
begin
|
|
||||||
mlist.clear;
|
|
||||||
test := s;
|
|
||||||
while (Length(Test) > 0) do
|
|
||||||
begin
|
|
||||||
while (Length(Test) > 0) and (test[1] in [#32]) do
|
|
||||||
Delete(test, 1, 1);
|
|
||||||
if (Length(Test) = 0) then
|
|
||||||
exit;
|
|
||||||
token := '';
|
|
||||||
while (Length(Test) > 0) and (not (test[1] in [#32])) do
|
|
||||||
begin
|
|
||||||
token := token + test[1];
|
|
||||||
Delete(test, 1, 1);
|
|
||||||
end;
|
|
||||||
mlist.add(token);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function GetPalette(strng: string; var Palette: TColorMap): boolean;
|
|
||||||
{ Loads a palette from a gradient string }
|
|
||||||
var
|
|
||||||
Strings: TStringList;
|
|
||||||
index, i: integer;
|
|
||||||
Tokens: TStringList;
|
|
||||||
Indices, Colors: TStringList;
|
|
||||||
a, b: integer;
|
|
||||||
begin
|
|
||||||
GetPalette := True;
|
|
||||||
Strings := TStringList.Create;
|
|
||||||
Tokens := TStringList.Create;
|
|
||||||
Indices := TStringList.Create;
|
|
||||||
Colors := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
Strings.Text := strng;
|
|
||||||
if Pos('}', Strings.Text) = 0 then raise EFormatInvalid.Create('No closing brace');
|
|
||||||
if Pos('{', Strings[0]) = 0 then raise EFormatInvalid.Create('No opening brace.');
|
|
||||||
GetTokens(ReplaceTabs(Strings.Text), Tokens);
|
|
||||||
i := 0;
|
|
||||||
while (Pos('}', Tokens[i]) = 0) and (Pos('opacity:', Lowercase(Tokens[i])) = 0) do
|
|
||||||
begin
|
|
||||||
if Pos('index=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Indices.Add(GetVal(Tokens[i]))
|
|
||||||
else if Pos('color=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Colors.Add(GetVal(Tokens[i]));
|
|
||||||
inc(i)
|
|
||||||
end;
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := 0;
|
|
||||||
Palette[i][1] := 0;
|
|
||||||
Palette[i][2] := 0;
|
|
||||||
end;
|
|
||||||
if Indices.Count = 0 then raise EFormatInvalid.Create('No color info');
|
|
||||||
for i := 0 to Indices.Count - 1 do
|
|
||||||
begin
|
|
||||||
index := StrToInt(Indices[i]);
|
|
||||||
index := Round(Index * (255 / 399));
|
|
||||||
indices[i] := IntToStr(index);
|
|
||||||
Palette[index][0] := StrToInt(Colors[i]) mod 256;
|
|
||||||
Palette[index][1] := trunc(StrToInt(Colors[i]) / 256) mod 256;
|
|
||||||
Palette[index][2] := trunc(StrToInt(Colors[i]) / 65536);
|
|
||||||
end;
|
|
||||||
i := 1;
|
|
||||||
repeat
|
|
||||||
a := StrToInt(Indices[i - 1]);
|
|
||||||
b := StrToInt(Indices[i]);
|
|
||||||
RGBBlend(a, b, Palette);
|
|
||||||
inc(i);
|
|
||||||
until i = Indices.Count;
|
|
||||||
if (Indices[0] <> '0') or (Indices[Indices.Count - 1] <> '255') then
|
|
||||||
begin
|
|
||||||
a := StrToInt(Indices[Indices.Count - 1]);
|
|
||||||
b := StrToInt(Indices[0]) + 256;
|
|
||||||
RGBBlend(a, b, Palette);
|
|
||||||
end;
|
|
||||||
except on EFormatInvalid do
|
|
||||||
begin
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Tokens.Free;
|
|
||||||
Strings.Free;
|
|
||||||
Indices.Free;
|
|
||||||
Colors.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
var
|
|
||||||
FileStrings: TStringList;
|
|
||||||
GradStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
FileStrings := TStringList.Create;
|
|
||||||
GradStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
FileStrings.LoadFromFile(FileName);
|
|
||||||
for i := 0 to FileStrings.count - 1 do
|
|
||||||
if Pos(Entry + ' ', Trim(FileStrings[i])) = 1 then break;
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
until Pos('}', FileStrings[i]) <> 0;
|
|
||||||
GetGradient := GradStrings.Text;
|
|
||||||
except on exception do
|
|
||||||
Result := '';
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
GradStrings.Free;
|
|
||||||
FileStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function LoadGradient(FileName, Entry: string; var gString: string; var Pal: TColorMap): boolean;
|
|
||||||
var
|
|
||||||
FileStrings: TStringList;
|
|
||||||
GradStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
FileStrings := TStringList.Create;
|
|
||||||
GradStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
FileStrings.LoadFromFile(FileName);
|
|
||||||
for i := 0 to FileStrings.count - 1 do
|
|
||||||
if Pos(Entry + ' ', Trim(FileStrings[i])) = 1 then break;
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
until Pos('}', FileStrings[i]) <> 0;
|
|
||||||
gString := GradStrings.Text;
|
|
||||||
Result := GetPalette(GradStrings.Text, Pal);
|
|
||||||
except on exception do
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
GradStrings.Free;
|
|
||||||
FileStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,26 +0,0 @@
|
|||||||
|
|
||||||
Apophysis was written with Delphi 5.0
|
|
||||||
|
|
||||||
The rendering engine (with some modifications) comes
|
|
||||||
from a screensaver by Ronald Hordijk.
|
|
||||||
http://home.kabelfoon.nl/~rhordijk/progs.html#flame
|
|
||||||
|
|
||||||
The original flame code was written by Scott Draves.
|
|
||||||
http://flam3.com/index.cgi?&menu=code
|
|
||||||
|
|
||||||
To compile you'll need a few third-party controls and
|
|
||||||
libraries:
|
|
||||||
|
|
||||||
Scripter Studio
|
|
||||||
http://www.tmssoftware.com/scriptstudio.htm
|
|
||||||
|
|
||||||
ImageFileLib
|
|
||||||
http://www.logicnet.dk/lib/
|
|
||||||
|
|
||||||
XML Parser
|
|
||||||
http://www.destructor.de/
|
|
||||||
|
|
||||||
Indy Internet Components
|
|
||||||
http://www.indyproject.org/
|
|
||||||
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
+ Delphi2005 Project
|
|
||||||
+ Extra performance in transformations
|
|
||||||
+ 32-bits renderer
|
|
||||||
B1105518 writing large jpeg fails
|
|
||||||
B1102823 Renderer still hangs
|
|
||||||
B1111184 fixed remainder of clock not on 00:00:00 when finished
|
|
||||||
B1115635 Menu Item 'Stop Script' now has the shortcut (ctrl-T)
|
|
||||||
+ Menu Item 'Open Script' now has the shortcut (ctrl-E)
|
|
||||||
+ Script function CopyFile works as in 2.02, with 2 parameters
|
|
||||||
+ Rotation export for flame2.3
|
|
||||||
+ added new variants
|
|
||||||
+ Bugfix filter difference between Apo and Flame3
|
|
||||||
+ Added an end date (20/06/2005)
|
|
||||||
B1162083 problem with sliced render to disk
|
|
||||||
+ Fixed some floating point problems
|
|
File diff suppressed because one or more lines are too long
@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<BorlandProject>
|
|
||||||
<Transactions>
|
|
||||||
<Transaction>2005-01-28 21:27:29.289.pas,X:\Code\Delphi\Apophysis\2.02g\Source\cmapdata.pas=</Transaction>
|
|
||||||
<Transaction>2005-01-29 10:15:34.468.pas,X:\Code\Delphi\Apophysis\2.02g\Source\Render32.pas=X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas</Transaction>
|
|
||||||
<Transaction>2005-01-29 10:29:11.421.pas,X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Unit1.pas=X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.pas</Transaction>
|
|
||||||
<Transaction>2005-01-29 10:29:11.421.dfm,X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Unit1.dfm=X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.dfm</Transaction>
|
|
||||||
<Transaction>2005-01-30 14:41:10.093.pas,X:\Code\Delphi\Apophysis\2.02g\Source\cmapData.pas=</Transaction>
|
|
||||||
<Transaction>2005-02-06 08:21:07.265.pas,X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM2.pas=</Transaction>
|
|
||||||
<Transaction>2005-02-06 08:21:41.703.pas,X:\Code\Delphi\Apophysis\2.02g\Source\cmapdata.pas=</Transaction>
|
|
||||||
<Transaction>2005-03-05 08:49:36.656.pas,X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Unit1.pas=X:\Code\Delphi\Apophysis\2.02g\Source\GradientHelper.pas</Transaction>
|
|
||||||
<Transaction>2005-03-05 09:01:19.265.pas,X:\Code\Delphi\Apophysis\2.02g\Source\GradientHelper.pas=X:\Code\Delphi\Apophysis\2.02g\Source\GradientHlpr.pas</Transaction>
|
|
||||||
</Transactions>
|
|
||||||
</BorlandProject>
|
|
@ -1,44 +0,0 @@
|
|||||||
-$A8
|
|
||||||
-$B-
|
|
||||||
-$C+
|
|
||||||
-$D+
|
|
||||||
-$E-
|
|
||||||
-$F-
|
|
||||||
-$G+
|
|
||||||
-$H+
|
|
||||||
-$I+
|
|
||||||
-$J-
|
|
||||||
-$K-
|
|
||||||
-$L+
|
|
||||||
-$M-
|
|
||||||
-$N+
|
|
||||||
-$O+
|
|
||||||
-$P+
|
|
||||||
-$Q-
|
|
||||||
-$R-
|
|
||||||
-$S-
|
|
||||||
-$T-
|
|
||||||
-$U-
|
|
||||||
-$V+
|
|
||||||
-$W-
|
|
||||||
-$X+
|
|
||||||
-$Y+
|
|
||||||
-$Z1
|
|
||||||
-cg
|
|
||||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
-H+
|
|
||||||
-W+
|
|
||||||
-M
|
|
||||||
-$M16384,1048576
|
|
||||||
-K$00400000
|
|
||||||
-E"..\..\out"
|
|
||||||
-N"..\..\out\dcu"
|
|
||||||
-LE"C:\Documents and Settings\Ronald Hordijk\Mijn documenten\Borland Studio Projects\Bpl"
|
|
||||||
-LN"C:\Documents and Settings\Ronald Hordijk\Mijn documenten\Borland Studio Projects\Bpl"
|
|
||||||
-U"X:\Code\Delphi\Apophysis\2.02g\Source;..\..\..\Apolibstuff9\libxml;..\..\..\Apolibstuff9\imglib;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005\Imports\Delphi2005;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005"
|
|
||||||
-O"X:\Code\Delphi\Apophysis\2.02g\Source;..\..\..\Apolibstuff9\libxml;..\..\..\Apolibstuff9\imglib;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005\Imports\Delphi2005;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005"
|
|
||||||
-I"X:\Code\Delphi\Apophysis\2.02g\Source;..\..\..\Apolibstuff9\libxml;..\..\..\Apolibstuff9\imglib;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005\Imports\Delphi2005;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005"
|
|
||||||
-R"X:\Code\Delphi\Apophysis\2.02g\Source;..\..\..\Apolibstuff9\libxml;..\..\..\Apolibstuff9\imglib;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005\Imports\Delphi2005;..\..\..\Apolibstuff9\SCRIPTSTUDIOD2005"
|
|
||||||
-w-UNSAFE_TYPE
|
|
||||||
-w-UNSAFE_CODE
|
|
||||||
-w-UNSAFE_CAST
|
|
@ -1,134 +0,0 @@
|
|||||||
[FileVersion]
|
|
||||||
Version=6.0
|
|
||||||
[Compiler]
|
|
||||||
A=8
|
|
||||||
B=0
|
|
||||||
C=1
|
|
||||||
D=1
|
|
||||||
E=0
|
|
||||||
F=0
|
|
||||||
G=1
|
|
||||||
H=1
|
|
||||||
I=1
|
|
||||||
J=0
|
|
||||||
K=0
|
|
||||||
L=1
|
|
||||||
M=0
|
|
||||||
N=1
|
|
||||||
O=1
|
|
||||||
P=1
|
|
||||||
Q=0
|
|
||||||
R=0
|
|
||||||
S=0
|
|
||||||
T=0
|
|
||||||
U=0
|
|
||||||
V=1
|
|
||||||
W=0
|
|
||||||
X=1
|
|
||||||
Y=2
|
|
||||||
Z=1
|
|
||||||
ShowHints=1
|
|
||||||
ShowWarnings=1
|
|
||||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[Linker]
|
|
||||||
MapFile=0
|
|
||||||
OutputObjs=0
|
|
||||||
ConsoleApp=1
|
|
||||||
DebugInfo=0
|
|
||||||
RemoteSymbols=0
|
|
||||||
MinStackSize=16384
|
|
||||||
MaxStackSize=1048576
|
|
||||||
ImageBase=4194304
|
|
||||||
ExeDescription=
|
|
||||||
[Directories]
|
|
||||||
OutputDir=..\..\out
|
|
||||||
UnitOutputDir=..\..\out\dcu
|
|
||||||
PackageDLLOutputDir=
|
|
||||||
PackageDCPOutputDir=
|
|
||||||
SearchPath=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;dss;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;dclOffice2k;FlatStyle_D6;S303_R60;RzLPDB60;RzLPND60;vclshlctrls;B302vr60;VirtualTreesD6;o403_r60;ibxpress;CSP20I60;Rz30Ctls60;Rz30DBCtls60;indy;Indy60
|
|
||||||
Conditionals=
|
|
||||||
DebugSourceDirs=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
UsePackages=0
|
|
||||||
[Parameters]
|
|
||||||
RunParams=
|
|
||||||
HostApplication=
|
|
||||||
Launcher=
|
|
||||||
UseLauncher=0
|
|
||||||
DebugCWD=
|
|
||||||
[Language]
|
|
||||||
ActiveLang=
|
|
||||||
ProjectLang=
|
|
||||||
RootDir=D:\Program Files\Borland\Delphi6\Bin\
|
|
||||||
[Version Info]
|
|
||||||
IncludeVerInfo=1
|
|
||||||
AutoIncBuild=0
|
|
||||||
MajorVer=2
|
|
||||||
MinorVer=0
|
|
||||||
Release=2
|
|
||||||
Build=0
|
|
||||||
Debug=0
|
|
||||||
PreRelease=0
|
|
||||||
Special=0
|
|
||||||
Private=0
|
|
||||||
DLL=0
|
|
||||||
Locale=3081
|
|
||||||
CodePage=1252
|
|
||||||
[Version Info Keys]
|
|
||||||
CompanyName=
|
|
||||||
FileDescription=Apophysis 2.02
|
|
||||||
FileVersion=2.0.2.0
|
|
||||||
InternalName=
|
|
||||||
LegalCopyright=Copyright © 2001-2004 Mark Townsend
|
|
||||||
LegalTrademarks=
|
|
||||||
OriginalFilename=Apophysis.exe
|
|
||||||
ProductName=
|
|
||||||
ProductVersion=2.02
|
|
||||||
Comments=
|
|
||||||
[Excluded Packages]
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyCore60.bpl=Indy 10 Core Design Time
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyProtocols60.bpl=Indy 10 Protocols Design Time
|
|
||||||
[HistoryLists\hlDebugSourcePath]
|
|
||||||
Count=1
|
|
||||||
Item0=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
[HistoryLists\hlConditionals]
|
|
||||||
Count=4
|
|
||||||
Item0=GEONOISE
|
|
||||||
Item1=GEONOISE;V1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
Item2=GEONOISE;R1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;NO_ROAD;NO_SATTENU;NO_VATTENU
|
|
||||||
Item3=GEONOISE;V5;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
[HistoryLists\hlUnitAliases]
|
|
||||||
Count=1
|
|
||||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[HistoryLists\hlSearchPath]
|
|
||||||
Count=13
|
|
||||||
Item0=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Item1=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Indy\d6
|
|
||||||
Item2=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\Indy\d6
|
|
||||||
Item3=C:\code\Apophysis\Apolibstuff\imglib
|
|
||||||
Item4=c:\proj32\geonoise510\src;w:\Src\GroundModel;w:\lib;w:\src\alg;w:\src\dll\Tool\Viewer;w:\src\dll\DLLAlg
|
|
||||||
Item5=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\VLDOS
|
|
||||||
Item6=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\R1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\RLDOS
|
|
||||||
Item7=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem
|
|
||||||
Item8=c:\proj32\geonoise510\src;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\lib
|
|
||||||
Item9=c:\proj32\geonoise510\src;w:\SRC\ALG;w:\src\dll\Tool\Shape;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\LIB
|
|
||||||
Item10=c:\proj32\geonoise510\src;w:\src\alg;w:\src\exe\dbase;w:\src\exe\geoman;w:\src\DBIntf;w:\src\exe\dllman;w:\src\exe\main;w:\src\exe\model;w:\src\exe\results;w:\src\exe\lib;w:\lib
|
|
||||||
Item11=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG;w:\lib
|
|
||||||
Item12=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG
|
|
||||||
[HistoryLists\hlUnitOutputDirectory]
|
|
||||||
Count=7
|
|
||||||
Item0=..\..\out\dcu
|
|
||||||
Item1=..\..\..\out\dcu
|
|
||||||
Item2=.\out\dcu
|
|
||||||
Item3=..\out\dcu
|
|
||||||
Item4=C:\code\Apophysis\2.02a\out\dcu
|
|
||||||
Item5=C:\code\Apophysis\2.02\out\dcu
|
|
||||||
Item6=c:\proj32\geonoise510\out\DCU
|
|
||||||
[HistoryLists\hlOutputDirectorry]
|
|
||||||
Count=6
|
|
||||||
Item0=..\..\out
|
|
||||||
Item1=.\out
|
|
||||||
Item2=..\out
|
|
||||||
Item3=C:\code\Apophysis\2.02a\out
|
|
||||||
Item4=C:\code\Apophysis\2.02\out
|
|
||||||
Item5=c:\proj32\geonoise510\out
|
|
@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
program Apophysis202;
|
|
||||||
|
|
||||||
{%File '..\..\readme.txt'}
|
|
||||||
{%File '..\..\Changes.txt'}
|
|
||||||
|
|
||||||
uses
|
|
||||||
Forms,
|
|
||||||
SysUtils,
|
|
||||||
Main in '..\..\Source\Main.pas' {MainForm},
|
|
||||||
Editor in '..\..\Source\Editor.pas' {EditForm},
|
|
||||||
Global in '..\..\Source\Global.pas',
|
|
||||||
Options in '..\..\Source\Options.pas' {OptionsForm},
|
|
||||||
Regstry in '..\..\Source\Regstry.pas',
|
|
||||||
MyTypes in '..\..\Source\MyTypes.pas',
|
|
||||||
Fullscreen in '..\..\Source\Fullscreen.pas' {FullscreenForm},
|
|
||||||
FormRender in '..\..\Source\FormRender.pas' {RenderForm},
|
|
||||||
Mutate in '..\..\Source\Mutate.pas' {MutateForm},
|
|
||||||
Adjust in '..\..\Source\Adjust.pas' {AdjustForm},
|
|
||||||
Browser in '..\..\Source\Browser.pas' {GradientBrowser},
|
|
||||||
Gradient in '..\..\Source\Gradient.pas' {GradientForm},
|
|
||||||
Save in '..\..\Source\Save.pas' {SaveForm},
|
|
||||||
About in '..\..\Source\About.pas' {AboutForm},
|
|
||||||
cmap in '..\..\Source\cmap.pas',
|
|
||||||
SavePreset in '..\..\Source\SavePreset.pas' {SavePresetForm},
|
|
||||||
ControlPoint in '..\..\Source\ControlPoint.pas',
|
|
||||||
HtmlHlp in '..\..\Source\HtmlHlp.pas',
|
|
||||||
ScriptForm in '..\..\Source\ScriptForm.pas' {ScriptEditor},
|
|
||||||
Preview in '..\..\Source\Preview.pas' {PreviewForm},
|
|
||||||
ScriptRender in '..\..\Source\ScriptRender.pas' {ScriptRenderForm},
|
|
||||||
FormFavorites in '..\..\Source\FormFavorites.pas' {FavoritesForm},
|
|
||||||
Size in '..\..\Source\Size.pas' {SizeTool},
|
|
||||||
FormExport in '..\..\Source\FormExport.pas' {ExportDialog},
|
|
||||||
MsMultiPartFormData in '..\..\Source\MsMultiPartFormData.pas',
|
|
||||||
Sheep in '..\..\Source\Sheep.pas' {SheepDialog},
|
|
||||||
XForm in '..\..\Source\XForm.pas',
|
|
||||||
RenderThread in '..\..\Source\RenderThread.pas',
|
|
||||||
Render in '..\..\Source\Render.pas',
|
|
||||||
Render32 in '..\..\Source\Render32.pas',
|
|
||||||
Render64 in '..\..\Source\Render64.pas',
|
|
||||||
RenderMM in '..\..\Source\RenderMM.pas',
|
|
||||||
ImageColoring in '..\..\Source\ImageColoring.pas' {frmImageColoring},
|
|
||||||
GradientHlpr in '..\..\Source\GradientHlpr.pas';
|
|
||||||
|
|
||||||
// ImageColoring in '..\..\Source\ImageColoring.pas' {frmImageColoring};
|
|
||||||
|
|
||||||
{$R *.RES}
|
|
||||||
|
|
||||||
begin
|
|
||||||
Application.Initialize;
|
|
||||||
Application.Title := 'Apophysis';
|
|
||||||
Application.HelpFile := 'Apophysis 2.0.chm';
|
|
||||||
Application.CreateForm(TMainForm, MainForm);
|
|
||||||
Application.CreateForm(TEditForm, EditForm);
|
|
||||||
Application.CreateForm(TOptionsForm, OptionsForm);
|
|
||||||
Application.CreateForm(TFullscreenForm, FullscreenForm);
|
|
||||||
Application.CreateForm(TRenderForm, RenderForm);
|
|
||||||
Application.CreateForm(TMutateForm, MutateForm);
|
|
||||||
Application.CreateForm(TAdjustForm, AdjustForm);
|
|
||||||
Application.CreateForm(TGradientBrowser, GradientBrowser);
|
|
||||||
Application.CreateForm(TGradientForm, GradientForm);
|
|
||||||
Application.CreateForm(TSaveForm, SaveForm);
|
|
||||||
Application.CreateForm(TAboutForm, AboutForm);
|
|
||||||
Application.CreateForm(TSavePresetForm, SavePresetForm);
|
|
||||||
Application.CreateForm(TScriptEditor, ScriptEditor);
|
|
||||||
Application.CreateForm(TPreviewForm, PreviewForm);
|
|
||||||
Application.CreateForm(TScriptRenderForm, ScriptRenderForm);
|
|
||||||
Application.CreateForm(TFavoritesForm, FavoritesForm);
|
|
||||||
Application.CreateForm(TSizeTool, SizeTool);
|
|
||||||
Application.CreateForm(TExportDialog, ExportDialog);
|
|
||||||
Application.CreateForm(TSheepDialog, SheepDialog);
|
|
||||||
// Application.CreateForm(TfrmImageColoring, frmImageColoring);
|
|
||||||
Application.UpdateFormatSettings := False;
|
|
||||||
DecimalSeparator := '.';
|
|
||||||
Application.Run;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,788 +0,0 @@
|
|||||||
[Closed Files]
|
|
||||||
File_0=TSourceModule,'c:\develop\borland\bds\3.0\source\Win32\rtl\win\Windows.pas',0,1,29720,1,29752,0,0,,
|
|
||||||
File_1=TSourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\Gradient.pas',0,1,439,15,475,0,0,,
|
|
||||||
File_2=TSourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\GradientHlpr.pas',0,1,1,35,23,0,0,,
|
|
||||||
File_3=TSourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.pas',0,1,91,49,94,0,0,,
|
|
||||||
File_4=TSourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\cmap.pas',0,1,20,3,26,0,0,,
|
|
||||||
|
|
||||||
[Modules]
|
|
||||||
Module0=X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas
|
|
||||||
Module1=X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Apophysis202.bdsproj
|
|
||||||
Module2=X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas
|
|
||||||
Module3=X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas
|
|
||||||
Module4=X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas
|
|
||||||
Module5=X:\Code\Delphi\Apophysis\2.02g\Source\Render32.pas
|
|
||||||
Module6=X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas
|
|
||||||
Module7=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3-render.c
|
|
||||||
Module8=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\rect.c
|
|
||||||
Module9=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.h
|
|
||||||
Module10=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.c
|
|
||||||
Module11=X:\Code\Delphi\Apophysis\2.02g\Source\ControlPoint.pas
|
|
||||||
Module12=c:\develop\borland\bds\3.0\source\Win32\rtl\sys\System.pas
|
|
||||||
Module13=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas
|
|
||||||
Module14=X:\Code\Delphi\Apophysis\2.02g\Source\XForm.pas
|
|
||||||
Module15=default.htm
|
|
||||||
Count=16
|
|
||||||
EditWindowCount=1
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=1
|
|
||||||
FormOnTop=1
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Apophysis202.bdsproj]
|
|
||||||
ModuleType=TBaseProject
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=1
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Render32.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3-render.c]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\rect.c]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.h]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.c]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\ControlPoint.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[c:\develop\borland\bds\3.0\source\Win32\rtl\sys\System.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=1
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\XForm.pas]
|
|
||||||
ModuleType=TSourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[default.htm]
|
|
||||||
ModuleType=TURLModule
|
|
||||||
|
|
||||||
[EditWindow0]
|
|
||||||
ViewCount=16
|
|
||||||
CurrentEditView=X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas
|
|
||||||
View0=0
|
|
||||||
View1=1
|
|
||||||
View2=2
|
|
||||||
View3=3
|
|
||||||
View4=4
|
|
||||||
View5=5
|
|
||||||
View6=6
|
|
||||||
View7=7
|
|
||||||
View8=8
|
|
||||||
View9=9
|
|
||||||
View10=10
|
|
||||||
View11=11
|
|
||||||
View12=12
|
|
||||||
View13=13
|
|
||||||
View14=14
|
|
||||||
View15=15
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=9930
|
|
||||||
Height=9145
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=9930
|
|
||||||
ClientHeight=9145
|
|
||||||
DockedToMainForm=1
|
|
||||||
MessageView=MessageView@EditWindow0
|
|
||||||
BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
|
|
||||||
TopPanelSize=0
|
|
||||||
LeftPanelSize=1906
|
|
||||||
LeftPanelClients=StructureView,DockSite2
|
|
||||||
LeftPanelData=00000800010100000000AE170000000000000172070000000000000100000000C50D00001100000053747275637475726556696577466F726D01000000009A1D000009000000446F636B5369746532FFFFFFFF
|
|
||||||
RightPanelSize=2258
|
|
||||||
RightPanelClients=ToolForm,DockSite3
|
|
||||||
RightPanelData=00000800010100000000AE1700000000000001D20800000000000001000000006511000009000000446F636B536974653301000000009A1D000008000000546F6F6C466F726DFFFFFFFF
|
|
||||||
BottomPanelSize=1270
|
|
||||||
BottomPanelClients=MessageView@EditWindow0,ToDo List,DockSite1
|
|
||||||
BottomPanelData=000008000102020000000E000000546F446F4C69737457696E646F7709000000446F636B53697465317C3000000000000002F60400000000000001000000007C3000000B0000004D65737361676556696577FFFFFFFF
|
|
||||||
BottomMiddlePanelSize=0
|
|
||||||
BottomMiddlePanelClients=DockSite0
|
|
||||||
BottomMiddelPanelData=0000080001000100000009000000446F636B53697465300000000000000000000000000000000000FFFFFFFF
|
|
||||||
|
|
||||||
[View0]
|
|
||||||
CustomEditViewType=TWelcomePageView
|
|
||||||
WelcomePageURL=bds:/default.htm
|
|
||||||
|
|
||||||
[View1]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Project\delphi2005\Apophysis202.dpr
|
|
||||||
CursorX=1
|
|
||||||
CursorY=88
|
|
||||||
TopLine=59
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View2]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas
|
|
||||||
CursorX=33
|
|
||||||
CursorY=2195
|
|
||||||
TopLine=2168
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks={1,4280,5}
|
|
||||||
|
|
||||||
[View3]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\ControlPoint.pas
|
|
||||||
CursorX=26
|
|
||||||
CursorY=73
|
|
||||||
TopLine=41
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View4]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Render32.pas
|
|
||||||
CursorX=5
|
|
||||||
CursorY=209
|
|
||||||
TopLine=166
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View5]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=216
|
|
||||||
TopLine=184
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View6]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas
|
|
||||||
CursorX=44
|
|
||||||
CursorY=16
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View7]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas
|
|
||||||
CursorX=34
|
|
||||||
CursorY=362
|
|
||||||
TopLine=314
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View8]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.c
|
|
||||||
CursorX=18
|
|
||||||
CursorY=1603
|
|
||||||
TopLine=1560
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View9]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3-render.c
|
|
||||||
CursorX=23
|
|
||||||
CursorY=78
|
|
||||||
TopLine=46
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View10]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\rect.c
|
|
||||||
CursorX=38
|
|
||||||
CursorY=270
|
|
||||||
TopLine=238
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View11]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=179
|
|
||||||
TopLine=155
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View12]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\flam3-2.5\flam3-2.5\flam3.h
|
|
||||||
CursorX=25
|
|
||||||
CursorY=135
|
|
||||||
TopLine=103
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View13]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\XForm.pas
|
|
||||||
CursorX=71
|
|
||||||
CursorY=494
|
|
||||||
TopLine=486
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View14]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=c:\develop\borland\bds\3.0\source\Win32\rtl\sys\System.pas
|
|
||||||
CursorX=16
|
|
||||||
CursorY=1253
|
|
||||||
TopLine=1233
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[View15]
|
|
||||||
CustomEditViewType=TEditView
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas
|
|
||||||
CursorX=35
|
|
||||||
CursorY=1329
|
|
||||||
TopLine=1293
|
|
||||||
LeftCol=1
|
|
||||||
Elisions=
|
|
||||||
Bookmarks=
|
|
||||||
|
|
||||||
[Watches]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[WatchWindow]
|
|
||||||
WatchColumnWidth=120
|
|
||||||
WatchShowColumnHeaders=1
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=201
|
|
||||||
LRDockWidth=13602
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[Breakpoints]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[AddressBreakpoints]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[Main Window]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=0
|
|
||||||
State=0
|
|
||||||
Left=8
|
|
||||||
Top=-10
|
|
||||||
Width=9992
|
|
||||||
Height=10010
|
|
||||||
MaxLeft=-8
|
|
||||||
MaxTop=-10
|
|
||||||
ClientWidth=9930
|
|
||||||
ClientHeight=9668
|
|
||||||
BottomPanelSize=8877
|
|
||||||
BottomPanelClients=EditWindow0
|
|
||||||
BottomPanelData=0000080000000000000000000000000000000000000000000000000100000000000000000C0000004564697457696E646F775F30FFFFFFFF
|
|
||||||
|
|
||||||
[ProjectManager]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=2195
|
|
||||||
Height=3964
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2195
|
|
||||||
ClientHeight=3964
|
|
||||||
TBDockHeight=5905
|
|
||||||
LRDockWidth=3156
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[ToolForm]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=479
|
|
||||||
Width=2258
|
|
||||||
Height=2988
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2258
|
|
||||||
ClientHeight=2988
|
|
||||||
TBDockHeight=6911
|
|
||||||
LRDockWidth=2258
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[PropertyInspector]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=1844
|
|
||||||
Height=3843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1844
|
|
||||||
ClientHeight=3843
|
|
||||||
TBDockHeight=412
|
|
||||||
LRDockWidth=1906
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
SplitPos=95
|
|
||||||
|
|
||||||
[PropInspDesignerSelection]
|
|
||||||
ArrangeBy=Category
|
|
||||||
SelectedItem=Miscellaneous.Name,
|
|
||||||
ExpandedItems=Action=1,"Border Style=1","Custom Glyphs=1","Drag, Drop and Docking=1","Help and Hints=1",Input=1,Layout=1,Legacy=1,Linkage=1,Locale=1,Localizable=1,Miscellaneous=1,Visual=1,"Border Style.BorderIcons=0",Linkage.Images=0
|
|
||||||
|
|
||||||
[RMAddinTool]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=-9
|
|
||||||
Top=-103
|
|
||||||
Width=5305
|
|
||||||
Height=5141
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=5305
|
|
||||||
ClientHeight=5141
|
|
||||||
TBDockHeight=5141
|
|
||||||
LRDockWidth=5305
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[CallStackWindow]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=2072
|
|
||||||
LRDockWidth=3484
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[DataExplorer]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=2195
|
|
||||||
Height=3964
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2195
|
|
||||||
ClientHeight=3964
|
|
||||||
TBDockHeight=4879
|
|
||||||
LRDockWidth=7148
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[ToDo List]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=-5
|
|
||||||
Top=-990
|
|
||||||
Width=3672
|
|
||||||
Height=1157
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3672
|
|
||||||
ClientHeight=1157
|
|
||||||
TBDockHeight=1157
|
|
||||||
LRDockWidth=3672
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
Column0Width=200
|
|
||||||
Column1Width=30
|
|
||||||
Column2Width=100
|
|
||||||
Column3Width=70
|
|
||||||
Column4Width=70
|
|
||||||
SortOrder=4
|
|
||||||
ShowHints=1
|
|
||||||
ShowChecked=1
|
|
||||||
|
|
||||||
[FindReferencsForm]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=2273
|
|
||||||
Height=1962
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2273
|
|
||||||
ClientHeight=1962
|
|
||||||
TBDockHeight=2314
|
|
||||||
LRDockWidth=2828
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[RefactoringForm]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=2273
|
|
||||||
Height=1962
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2273
|
|
||||||
ClientHeight=1962
|
|
||||||
TBDockHeight=3209
|
|
||||||
LRDockWidth=2828
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[DebugLogView]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=412
|
|
||||||
LRDockWidth=4953
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[ThreadStatusWindow]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=201
|
|
||||||
LRDockWidth=7414
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
Column0Width=145
|
|
||||||
Column1Width=100
|
|
||||||
Column2Width=115
|
|
||||||
Column3Width=250
|
|
||||||
|
|
||||||
[LocalVarsWindow]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=262
|
|
||||||
LRDockWidth=3484
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[ModelViewTool]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=2195
|
|
||||||
Height=3964
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2195
|
|
||||||
ClientHeight=3964
|
|
||||||
TBDockHeight=4879
|
|
||||||
LRDockWidth=5305
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[BreakpointWindow]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=3766
|
|
||||||
Height=4698
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3766
|
|
||||||
ClientHeight=4698
|
|
||||||
TBDockHeight=1549
|
|
||||||
LRDockWidth=8742
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
Column0Width=100
|
|
||||||
Column1Width=75
|
|
||||||
Column2Width=200
|
|
||||||
Column3Width=200
|
|
||||||
Column4Width=75
|
|
||||||
Column5Width=75
|
|
||||||
|
|
||||||
[StructureView]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=23
|
|
||||||
Width=1906
|
|
||||||
Height=3360
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1906
|
|
||||||
ClientHeight=3360
|
|
||||||
TBDockHeight=3672
|
|
||||||
LRDockWidth=1906
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[MessageView@EditWindow0]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=23
|
|
||||||
Width=9930
|
|
||||||
Height=1076
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=9930
|
|
||||||
ClientHeight=1076
|
|
||||||
TBDockHeight=1076
|
|
||||||
LRDockWidth=4328
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[BorlandEditorCodeExplorer@EditWindow0]
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
Docked=0
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=1461
|
|
||||||
Height=4588
|
|
||||||
MaxLeft=-8
|
|
||||||
MaxTop=-10
|
|
||||||
ClientWidth=1398
|
|
||||||
ClientHeight=4326
|
|
||||||
TBDockHeight=4588
|
|
||||||
LRDockWidth=1461
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
|
|
||||||
[DockHosts]
|
|
||||||
DockHostCount=4
|
|
||||||
|
|
||||||
[DockSite0]
|
|
||||||
DockSiteType=1
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=-252
|
|
||||||
Top=-857
|
|
||||||
Width=2336
|
|
||||||
Height=2314
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2336
|
|
||||||
ClientHeight=2314
|
|
||||||
TBDockHeight=2314
|
|
||||||
LRDockWidth=2336
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
TabPosition=1
|
|
||||||
ActiveTabID=FindReferencsForm
|
|
||||||
TabDockClients=RefactoringForm,FindReferencsForm
|
|
||||||
|
|
||||||
[DockSite1]
|
|
||||||
DockSiteType=1
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=-5
|
|
||||||
Top=-860
|
|
||||||
Width=3828
|
|
||||||
Height=5050
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=3828
|
|
||||||
ClientHeight=5050
|
|
||||||
TBDockHeight=5050
|
|
||||||
LRDockWidth=3828
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
TabPosition=1
|
|
||||||
ActiveTabID=LocalVarsWindow
|
|
||||||
TabDockClients=BreakpointWindow,CallStackWindow,WatchWindow,ThreadStatusWindow,DebugLogView,LocalVarsWindow
|
|
||||||
|
|
||||||
[DockSite2]
|
|
||||||
DockSiteType=1
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=384
|
|
||||||
Width=1906
|
|
||||||
Height=3944
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1906
|
|
||||||
ClientHeight=3944
|
|
||||||
TBDockHeight=5040
|
|
||||||
LRDockWidth=1906
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
TabPosition=1
|
|
||||||
ActiveTabID=RMAddinTool
|
|
||||||
TabDockClients=RMAddinTool,PropertyInspector
|
|
||||||
|
|
||||||
[DockSite3]
|
|
||||||
DockSiteType=1
|
|
||||||
PercentageSizes=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
Docked=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=23
|
|
||||||
Width=2258
|
|
||||||
Height=4316
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=2258
|
|
||||||
ClientHeight=4316
|
|
||||||
TBDockHeight=1740
|
|
||||||
LRDockWidth=2258
|
|
||||||
Dockable=1
|
|
||||||
StayOnTop=0
|
|
||||||
TabPosition=1
|
|
||||||
ActiveTabID=ProjectManager
|
|
||||||
TabDockClients=ProjectManager,ModelViewTool,DataExplorer
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
@ -1,41 +0,0 @@
|
|||||||
-$A8
|
|
||||||
-$B-
|
|
||||||
-$C+
|
|
||||||
-$D+
|
|
||||||
-$E-
|
|
||||||
-$F-
|
|
||||||
-$G+
|
|
||||||
-$H+
|
|
||||||
-$I+
|
|
||||||
-$J-
|
|
||||||
-$K-
|
|
||||||
-$L+
|
|
||||||
-$M-
|
|
||||||
-$N+
|
|
||||||
-$O+
|
|
||||||
-$P+
|
|
||||||
-$Q-
|
|
||||||
-$R-
|
|
||||||
-$S-
|
|
||||||
-$T-
|
|
||||||
-$U-
|
|
||||||
-$V+
|
|
||||||
-$W-
|
|
||||||
-$X+
|
|
||||||
-$Y+
|
|
||||||
-$Z1
|
|
||||||
-cg
|
|
||||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
-H+
|
|
||||||
-W+
|
|
||||||
-M
|
|
||||||
-$M16384,1048576
|
|
||||||
-K$00400000
|
|
||||||
-E"..\..\out"
|
|
||||||
-N"..\..\out\dcu"
|
|
||||||
-LE"x:\programs\borland\delphi6\Projects\Bpl"
|
|
||||||
-LN"x:\programs\borland\delphi6\Projects\Bpl"
|
|
||||||
-U"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-O"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-I"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
||||||
-R"..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6"
|
|
@ -1,135 +0,0 @@
|
|||||||
[FileVersion]
|
|
||||||
Version=6.0
|
|
||||||
[Compiler]
|
|
||||||
A=8
|
|
||||||
B=0
|
|
||||||
C=1
|
|
||||||
D=1
|
|
||||||
E=0
|
|
||||||
F=0
|
|
||||||
G=1
|
|
||||||
H=1
|
|
||||||
I=1
|
|
||||||
J=0
|
|
||||||
K=0
|
|
||||||
L=1
|
|
||||||
M=0
|
|
||||||
N=1
|
|
||||||
O=1
|
|
||||||
P=1
|
|
||||||
Q=0
|
|
||||||
R=0
|
|
||||||
S=0
|
|
||||||
T=0
|
|
||||||
U=0
|
|
||||||
V=1
|
|
||||||
W=0
|
|
||||||
X=1
|
|
||||||
Y=2
|
|
||||||
Z=1
|
|
||||||
ShowHints=1
|
|
||||||
ShowWarnings=1
|
|
||||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[Linker]
|
|
||||||
MapFile=0
|
|
||||||
OutputObjs=0
|
|
||||||
ConsoleApp=1
|
|
||||||
DebugInfo=0
|
|
||||||
RemoteSymbols=0
|
|
||||||
MinStackSize=16384
|
|
||||||
MaxStackSize=1048576
|
|
||||||
ImageBase=4194304
|
|
||||||
ExeDescription=
|
|
||||||
[Directories]
|
|
||||||
OutputDir=..\..\out
|
|
||||||
UnitOutputDir=..\..\out\dcu
|
|
||||||
PackageDLLOutputDir=
|
|
||||||
PackageDCPOutputDir=
|
|
||||||
SearchPath=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;dss;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;dbexpress;dbxcds;dclOffice2k;FlatStyle_D6;S303_R60;RzLPDB60;RzLPND60;vclshlctrls;B302vr60;VirtualTreesD6;o403_r60;ibxpress;CSP20I60;Rz30Ctls60;Rz30DBCtls60;indy;Indy60
|
|
||||||
Conditionals=
|
|
||||||
DebugSourceDirs=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
UsePackages=0
|
|
||||||
[Parameters]
|
|
||||||
RunParams=
|
|
||||||
HostApplication=
|
|
||||||
Launcher=
|
|
||||||
UseLauncher=0
|
|
||||||
DebugCWD=
|
|
||||||
[Language]
|
|
||||||
ActiveLang=
|
|
||||||
ProjectLang=
|
|
||||||
RootDir=D:\Program Files\Borland\Delphi6\Bin\
|
|
||||||
[Version Info]
|
|
||||||
IncludeVerInfo=1
|
|
||||||
AutoIncBuild=0
|
|
||||||
MajorVer=2
|
|
||||||
MinorVer=0
|
|
||||||
Release=2
|
|
||||||
Build=0
|
|
||||||
Debug=0
|
|
||||||
PreRelease=0
|
|
||||||
Special=0
|
|
||||||
Private=0
|
|
||||||
DLL=0
|
|
||||||
Locale=3081
|
|
||||||
CodePage=1252
|
|
||||||
[Version Info Keys]
|
|
||||||
CompanyName=
|
|
||||||
FileDescription=Apophysis 2.02
|
|
||||||
FileVersion=2.0.2.0
|
|
||||||
InternalName=
|
|
||||||
LegalCopyright=Copyright © 2001-2004 Mark Townsend
|
|
||||||
LegalTrademarks=
|
|
||||||
OriginalFilename=Apophysis.exe
|
|
||||||
ProductName=
|
|
||||||
ProductVersion=2.02
|
|
||||||
Comments=
|
|
||||||
[Excluded Packages]
|
|
||||||
W:\Lib\dgmr_60.bpl=Dgmr bibliotheek 6.1
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyCore60.bpl=Indy 10 Core Design Time
|
|
||||||
C:\Program Files\Indy 10 for Delphi 6\LibD6\dclIndyProtocols60.bpl=Indy 10 Protocols Design Time
|
|
||||||
[HistoryLists\hlDebugSourcePath]
|
|
||||||
Count=1
|
|
||||||
Item0=X:\Code\Delphi\Apophysis\Apolibstuff9\ScripterStudio\
|
|
||||||
[HistoryLists\hlConditionals]
|
|
||||||
Count=4
|
|
||||||
Item0=GEONOISE
|
|
||||||
Item1=GEONOISE;V1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
Item2=GEONOISE;R1;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;NO_ROAD;NO_SATTENU;NO_VATTENU
|
|
||||||
Item3=GEONOISE;V5;GROUND_SINGLE;B_ATTENUATION_PLAIN;BARRIERCORRFLOATING;BUILDING_FLOAT;ROAD_SRM2;NO_SATTENU;NO_VATTENU
|
|
||||||
[HistoryLists\hlUnitAliases]
|
|
||||||
Count=1
|
|
||||||
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[HistoryLists\hlSearchPath]
|
|
||||||
Count=13
|
|
||||||
Item0=..\..\..\Apolibstuff\libxml;..\..\..\Apolibstuff\imglib;..\..\..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\..\..\Apolibstuff\ScripterStudio;..\..\..\Apolibstuff\Indy\d6
|
|
||||||
Item1=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Indy\d6
|
|
||||||
Item2=..\Apolibstuff\libxml;..\Apolibstuff\imglib;..\Apolibstuff\ScripterStudio;..\Apolibstuff\Scripterstudio\Imports\Delphi6;..\Apolibstuff\Indy\d6
|
|
||||||
Item3=C:\code\Apophysis\Apolibstuff\imglib
|
|
||||||
Item4=c:\proj32\geonoise510\src;w:\Src\GroundModel;w:\lib;w:\src\alg;w:\src\dll\Tool\Viewer;w:\src\dll\DLLAlg
|
|
||||||
Item5=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\VLDOS
|
|
||||||
Item6=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\R1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\src\dll\tool\RLDOS
|
|
||||||
Item7=c:\proj32\geonoise510\src;w:\lib;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem
|
|
||||||
Item8=c:\proj32\geonoise510\src;w:\src\dll\Method\V1;w:\src\alg;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\lib
|
|
||||||
Item9=c:\proj32\geonoise510\src;w:\SRC\ALG;w:\src\dll\Tool\Shape;w:\src\dll\DLLAlg;w:\src\dll\Method\GenItem;w:\LIB
|
|
||||||
Item10=c:\proj32\geonoise510\src;w:\src\alg;w:\src\exe\dbase;w:\src\exe\geoman;w:\src\DBIntf;w:\src\exe\dllman;w:\src\exe\main;w:\src\exe\model;w:\src\exe\results;w:\src\exe\lib;w:\lib
|
|
||||||
Item11=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG;w:\lib
|
|
||||||
Item12=c:\proj32\geonoise510\src;w:\SRC\SPM\;w:\SRC\ALG
|
|
||||||
[HistoryLists\hlUnitOutputDirectory]
|
|
||||||
Count=7
|
|
||||||
Item0=..\..\out\dcu
|
|
||||||
Item1=..\..\..\out\dcu
|
|
||||||
Item2=.\out\dcu
|
|
||||||
Item3=..\out\dcu
|
|
||||||
Item4=C:\code\Apophysis\2.02a\out\dcu
|
|
||||||
Item5=C:\code\Apophysis\2.02\out\dcu
|
|
||||||
Item6=c:\proj32\geonoise510\out\DCU
|
|
||||||
[HistoryLists\hlOutputDirectorry]
|
|
||||||
Count=6
|
|
||||||
Item0=..\..\out
|
|
||||||
Item1=.\out
|
|
||||||
Item2=..\out
|
|
||||||
Item3=C:\code\Apophysis\2.02a\out
|
|
||||||
Item4=C:\code\Apophysis\2.02\out
|
|
||||||
Item5=c:\proj32\geonoise510\out
|
|
@ -1,102 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
program Apophysis202;
|
|
||||||
|
|
||||||
{%File 'HtmlHlp.inc'}
|
|
||||||
{%ToDo 'Apophysis202.todo'}
|
|
||||||
{%File 'readme.txt'}
|
|
||||||
|
|
||||||
uses
|
|
||||||
Forms,
|
|
||||||
Dialogs,
|
|
||||||
SysUtils,
|
|
||||||
Main in '..\..\Source\Main.pas' {MainForm},
|
|
||||||
Editor in '..\..\Source\Editor.pas' {EditForm},
|
|
||||||
Global in '..\..\Source\Global.pas',
|
|
||||||
Options in '..\..\Source\Options.pas' {OptionsForm},
|
|
||||||
Regstry in '..\..\Source\Regstry.pas',
|
|
||||||
MyTypes in '..\..\Source\MyTypes.pas',
|
|
||||||
Fullscreen in '..\..\Source\Fullscreen.pas' {FullscreenForm},
|
|
||||||
Render in '..\..\Source\Render.pas',
|
|
||||||
Render32 in '..\..\Source\Render32.pas',
|
|
||||||
Render64 in '..\..\Source\Render64.pas',
|
|
||||||
RenderThread in '..\..\Source\RenderThread.pas',
|
|
||||||
FormRender in '..\..\Source\FormRender.pas' {RenderForm},
|
|
||||||
Mutate in '..\..\Source\Mutate.pas' {MutateForm},
|
|
||||||
Adjust in '..\..\Source\Adjust.pas' {AdjustForm},
|
|
||||||
Browser in '..\..\Source\Browser.pas' {GradientBrowser},
|
|
||||||
Gradient in '..\..\Source\Gradient.pas' {GradientForm},
|
|
||||||
Save in '..\..\Source\Save.pas' {SaveForm},
|
|
||||||
About in '..\..\Source\About.pas' {AboutForm},
|
|
||||||
Cmap in '..\..\Source\cmap.pas',
|
|
||||||
SavePreset in '..\..\Source\SavePreset.pas' {SavePresetForm},
|
|
||||||
ControlPoint in '..\..\Source\ControlPoint.pas',
|
|
||||||
HtmlHlp in '..\..\Source\HtmlHlp.pas',
|
|
||||||
ScriptForm in '..\..\Source\ScriptForm.pas' {ScriptEditor},
|
|
||||||
Preview in '..\..\Source\Preview.pas' {PreviewForm},
|
|
||||||
ScriptRender in '..\..\Source\ScriptRender.pas' {ScriptRenderForm},
|
|
||||||
ap_Math in '..\..\Source\ap_Math.pas',
|
|
||||||
ap_SysUtils in '..\..\Source\ap_SysUtils.pas',
|
|
||||||
FormFavorites in '..\..\Source\FormFavorites.pas' {FavoritesForm},
|
|
||||||
Size in '..\..\Source\Size.pas' {SizeTool},
|
|
||||||
FormExport in '..\..\Source\FormExport.pas' {ExportDialog},
|
|
||||||
MsMultiPartFormData in '..\..\Source\MsMultiPartFormData.pas',
|
|
||||||
Sheep in '..\..\Source\Sheep.pas' {SheepDialog},
|
|
||||||
ap_FileCtrl in '..\..\Source\ap_FileCtrl.pas',
|
|
||||||
XForm in '..\..\Source\XForm.pas',
|
|
||||||
cmapdata in '..\..\Source\cmapdata.pas',
|
|
||||||
RenderMM in '..\..\Source\RenderMM.pas',
|
|
||||||
ImageColoring in '..\..\Source\ImageColoring.pas' {frmImageColoring},
|
|
||||||
GradientHlpr in '..\..\Source\GradientHlpr.pas';
|
|
||||||
|
|
||||||
{$R *.RES}
|
|
||||||
|
|
||||||
begin
|
|
||||||
if now > EncodeDate(2005,6,20) then begin
|
|
||||||
ShowMessage('This version has expired. Please go to http://sourceforge.net/project/apophysis and download the latest version.');
|
|
||||||
Halt
|
|
||||||
end;
|
|
||||||
|
|
||||||
Application.Initialize;
|
|
||||||
Application.Title := 'Apophysis';
|
|
||||||
Application.HelpFile := 'Apophysis 2.0.chm';
|
|
||||||
Application.CreateForm(TMainForm, MainForm);
|
|
||||||
Application.CreateForm(TEditForm, EditForm);
|
|
||||||
Application.CreateForm(TOptionsForm, OptionsForm);
|
|
||||||
Application.CreateForm(TFullscreenForm, FullscreenForm);
|
|
||||||
Application.CreateForm(TRenderForm, RenderForm);
|
|
||||||
Application.CreateForm(TMutateForm, MutateForm);
|
|
||||||
Application.CreateForm(TAdjustForm, AdjustForm);
|
|
||||||
Application.CreateForm(TGradientBrowser, GradientBrowser);
|
|
||||||
Application.CreateForm(TGradientForm, GradientForm);
|
|
||||||
Application.CreateForm(TSaveForm, SaveForm);
|
|
||||||
Application.CreateForm(TAboutForm, AboutForm);
|
|
||||||
Application.CreateForm(TSavePresetForm, SavePresetForm);
|
|
||||||
Application.CreateForm(TScriptEditor, ScriptEditor);
|
|
||||||
Application.CreateForm(TPreviewForm, PreviewForm);
|
|
||||||
Application.CreateForm(TScriptRenderForm, ScriptRenderForm);
|
|
||||||
Application.CreateForm(TFavoritesForm, FavoritesForm);
|
|
||||||
Application.CreateForm(TSizeTool, SizeTool);
|
|
||||||
Application.CreateForm(TExportDialog, ExportDialog);
|
|
||||||
Application.CreateForm(TSheepDialog, SheepDialog);
|
|
||||||
Application.CreateForm(TfrmImageColoring, frmImageColoring);
|
|
||||||
Application.UpdateFormatSettings := False;
|
|
||||||
DecimalSeparator := '.';
|
|
||||||
Application.Run;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,607 +0,0 @@
|
|||||||
[Closed Files]
|
|
||||||
File_0=SourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\FormRender.pas',0,1,551,60,588,1,0
|
|
||||||
File_1=SourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\About.pas',0,1,1,31,9,1,0
|
|
||||||
File_2=SourceModule,'X:\Code\Delphi\Apophysis\2.02g\Source\Adjust.pas',0,1,1,16,27,1,0
|
|
||||||
File_3=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\Main.pas',0,1,4354,45,4394,0,0
|
|
||||||
File_4=SourceModule,'X:\Code\Delphi\Apophysis\Apolibstuff\imglib\ImageDLLLoader.pas',0,1,101,55,120,0,0
|
|
||||||
File_5=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\About.pas',0,1,1,1,1,0,0
|
|
||||||
File_6=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\cmapdata.pas',0,1,47709,1,47737,0,0
|
|
||||||
File_7=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\ScriptForm.pas',0,1,302,36,330,0,0
|
|
||||||
File_8=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\ap_FileCtrl.pas',0,1,1,1,1,0,0
|
|
||||||
File_9=SourceModule,'X:\Code\Delphi\Apophysis\2.02f\Source\ap_SysUtils.pas',0,1,1,3,20,0,0
|
|
||||||
|
|
||||||
[Modules]
|
|
||||||
Module0=X:\Code\Delphi\Apophysis\2.02g\Project\delphi6\Apophysis202.dpr
|
|
||||||
Module1=X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas
|
|
||||||
Module2=X:\Code\Delphi\Apophysis\2.02g\Source\GradientHlpr.pas
|
|
||||||
Module3=X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.pas
|
|
||||||
Module4=X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas
|
|
||||||
Module5=X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas
|
|
||||||
Module6=X:\Code\Delphi\Apophysis\2.02g\Source\Render.pas
|
|
||||||
Module7=X:\Code\Delphi\Apophysis\2.02g\Source\FormFavorites.pas
|
|
||||||
Module8=X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas
|
|
||||||
Module9=X:\Code\Delphi\Apophysis\2.02g\Source\Size.pas
|
|
||||||
Module10=X:\Code\Delphi\Apophysis\2.02g\Source\Sheep.pas
|
|
||||||
Module11=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptRender.pas
|
|
||||||
Module12=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas
|
|
||||||
Module13=X:\Code\Delphi\Apophysis\2.02g\Source\SavePreset.pas
|
|
||||||
Module14=X:\Code\Delphi\Apophysis\2.02g\Source\Save.pas
|
|
||||||
Module15=X:\Code\Delphi\Apophysis\2.02g\Source\Preview.pas
|
|
||||||
Module16=X:\Code\Delphi\Apophysis\2.02g\Source\Options.pas
|
|
||||||
Module17=X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas
|
|
||||||
Module18=X:\Code\Delphi\Apophysis\2.02g\Source\Gradient.pas
|
|
||||||
Module19=X:\Code\Delphi\Apophysis\2.02g\Source\Fullscreen.pas
|
|
||||||
Module20=X:\Code\Delphi\Apophysis\2.02g\Source\FormExport.pas
|
|
||||||
Module21=X:\Code\Delphi\Apophysis\2.02g\Source\Editor.pas
|
|
||||||
Module22=X:\Code\Delphi\Apophysis\2.02g\Source\Browser.pas
|
|
||||||
Module23=X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr
|
|
||||||
Count=24
|
|
||||||
EditWindowCount=1
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Project\delphi6\Apophysis202.dpr]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\GradientHlpr.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Render.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\FormFavorites.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Size.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Sheep.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\ScriptRender.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\SavePreset.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Save.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Preview.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Options.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Gradient.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Fullscreen.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\FormExport.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Editor.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Source\Browser.pas]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr]
|
|
||||||
ModuleType=SourceModule
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Programs\Borland\Delphi6\Projects\ProjectGroup1.bpg]
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[X:\Code\Delphi\Apophysis\2.02g\Project\delphi6\Apophysis202.todo]
|
|
||||||
FormState=0
|
|
||||||
FormOnTop=0
|
|
||||||
|
|
||||||
[EditWindow0]
|
|
||||||
ViewCount=24
|
|
||||||
CurrentView=23
|
|
||||||
View0=0
|
|
||||||
View1=1
|
|
||||||
View2=2
|
|
||||||
View3=3
|
|
||||||
View4=4
|
|
||||||
View5=5
|
|
||||||
View6=6
|
|
||||||
View7=7
|
|
||||||
View8=8
|
|
||||||
View9=9
|
|
||||||
View10=10
|
|
||||||
View11=11
|
|
||||||
View12=12
|
|
||||||
View13=13
|
|
||||||
View14=14
|
|
||||||
View15=15
|
|
||||||
View16=16
|
|
||||||
View17=17
|
|
||||||
View18=18
|
|
||||||
View19=19
|
|
||||||
View20=20
|
|
||||||
View21=21
|
|
||||||
View22=22
|
|
||||||
View23=23
|
|
||||||
CodeExplorer=CodeExplorer@EditWindow0
|
|
||||||
MessageView=MessageView@EditWindow0
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=266
|
|
||||||
Top=111
|
|
||||||
Width=1016
|
|
||||||
Height=880
|
|
||||||
MaxLeft=-4
|
|
||||||
MaxTop=108
|
|
||||||
ClientWidth=1008
|
|
||||||
ClientHeight=846
|
|
||||||
LeftPanelSize=0
|
|
||||||
RightPanelSize=0
|
|
||||||
BottomPanelSize=52
|
|
||||||
BottomPanelClients=MessageView@EditWindow0
|
|
||||||
BottomPanelData=000004000000000000000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF
|
|
||||||
|
|
||||||
[View0]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02f\Project\delphi6\Apophysis202.dpr
|
|
||||||
CursorX=73
|
|
||||||
CursorY=55
|
|
||||||
TopLine=31
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View1]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Browser.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View2]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Editor.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View3]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\FormExport.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View4]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\FormFavorites.pas
|
|
||||||
CursorX=26
|
|
||||||
CursorY=6
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View5]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Render.pas
|
|
||||||
CursorX=29
|
|
||||||
CursorY=134
|
|
||||||
TopLine=106
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View6]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\RenderMM.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View7]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Fullscreen.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View8]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Gradient.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View9]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Main.pas
|
|
||||||
CursorX=10
|
|
||||||
CursorY=431
|
|
||||||
TopLine=403
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View10]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\ImageColoring.pas
|
|
||||||
CursorX=25
|
|
||||||
CursorY=51
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View11]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\GradientHlpr.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View12]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Render64.pas
|
|
||||||
CursorX=21
|
|
||||||
CursorY=393
|
|
||||||
TopLine=345
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View13]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Mutate.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View14]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Options.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View15]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Preview.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View16]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Save.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View17]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\SavePreset.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View18]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptForm.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View19]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\ScriptRender.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View20]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Sheep.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View21]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\Size.pas
|
|
||||||
CursorX=1
|
|
||||||
CursorY=1
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View22]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Source\RenderThread.pas
|
|
||||||
CursorX=36
|
|
||||||
CursorY=25
|
|
||||||
TopLine=1
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[View23]
|
|
||||||
Module=X:\Code\Delphi\Apophysis\2.02g\Project\delphi6\Apophysis202.dpr
|
|
||||||
CursorX=11
|
|
||||||
CursorY=70
|
|
||||||
TopLine=43
|
|
||||||
LeftCol=1
|
|
||||||
|
|
||||||
[Watches]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[Breakpoints]
|
|
||||||
Count=1
|
|
||||||
Breakpoint0='X:\Code\Delphi\Apophysis\2.02\ScriptForm.pas',1244,'',0,1,'',1,0,0,'',1,'','',''
|
|
||||||
|
|
||||||
[AddressBreakpoints]
|
|
||||||
Count=0
|
|
||||||
|
|
||||||
[Main Window]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=1280
|
|
||||||
Height=112
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1272
|
|
||||||
ClientHeight=78
|
|
||||||
|
|
||||||
[ProjectManager]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=305
|
|
||||||
LRDockWidth=438
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CPUWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=373
|
|
||||||
Top=335
|
|
||||||
Width=533
|
|
||||||
Height=353
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=525
|
|
||||||
ClientHeight=319
|
|
||||||
DumpPane=79
|
|
||||||
DisassemblyPane=187
|
|
||||||
RegisterPane=231
|
|
||||||
FlagPane=64
|
|
||||||
|
|
||||||
[AlignmentPalette]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=200
|
|
||||||
Top=114
|
|
||||||
Width=156
|
|
||||||
Height=84
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=150
|
|
||||||
ClientHeight=60
|
|
||||||
|
|
||||||
[PropertyInspector]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=527
|
|
||||||
LRDockWidth=190
|
|
||||||
Dockable=1
|
|
||||||
SplitPos=85
|
|
||||||
ArrangeBy=Name
|
|
||||||
SelectedItem=
|
|
||||||
ExpandedItems=
|
|
||||||
HiddenCategories=
|
|
||||||
|
|
||||||
[WatchWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=232
|
|
||||||
Top=872
|
|
||||||
Width=1048
|
|
||||||
Height=165
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1040
|
|
||||||
ClientHeight=139
|
|
||||||
TBDockHeight=149
|
|
||||||
LRDockWidth=421
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CallStackWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=161
|
|
||||||
LRDockWidth=294
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[ObjectTree]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=112
|
|
||||||
Width=190
|
|
||||||
Height=350
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=182
|
|
||||||
ClientHeight=324
|
|
||||||
TBDockHeight=350
|
|
||||||
LRDockWidth=190
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[DebugLogView]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=232
|
|
||||||
Top=872
|
|
||||||
Width=1048
|
|
||||||
Height=165
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=1040
|
|
||||||
ClientHeight=139
|
|
||||||
TBDockHeight=291
|
|
||||||
LRDockWidth=417
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[LocalVarsWindow]
|
|
||||||
Create=1
|
|
||||||
Visible=0
|
|
||||||
State=0
|
|
||||||
Left=27
|
|
||||||
Top=127
|
|
||||||
Width=194
|
|
||||||
Height=891
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=186
|
|
||||||
ClientHeight=865
|
|
||||||
TBDockHeight=110
|
|
||||||
LRDockWidth=421
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[CodeExplorer@EditWindow0]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=0
|
|
||||||
Width=231
|
|
||||||
Height=843
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=231
|
|
||||||
ClientHeight=843
|
|
||||||
TBDockHeight=305
|
|
||||||
LRDockWidth=140
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[MessageView@EditWindow0]
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=12
|
|
||||||
Top=0
|
|
||||||
Width=996
|
|
||||||
Height=52
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=996
|
|
||||||
ClientHeight=52
|
|
||||||
TBDockHeight=52
|
|
||||||
LRDockWidth=443
|
|
||||||
Dockable=1
|
|
||||||
|
|
||||||
[DockHosts]
|
|
||||||
DockHostCount=1
|
|
||||||
|
|
||||||
[DockSite0]
|
|
||||||
DockSiteType=1
|
|
||||||
Create=1
|
|
||||||
Visible=1
|
|
||||||
State=0
|
|
||||||
Left=0
|
|
||||||
Top=112
|
|
||||||
Width=266
|
|
||||||
Height=877
|
|
||||||
MaxLeft=-1
|
|
||||||
MaxTop=-1
|
|
||||||
ClientWidth=258
|
|
||||||
ClientHeight=851
|
|
||||||
TBDockHeight=451
|
|
||||||
LRDockWidth=177
|
|
||||||
Dockable=1
|
|
||||||
TabPosition=2
|
|
||||||
ActiveTab=Project Manager
|
|
||||||
TabDockClients=ProjectManager,CodeExplorer@EditWindow0,CallStackWindow,PropertyInspector
|
|
||||||
|
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit About;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TAboutForm = class(TForm)
|
|
||||||
btnOK: TButton;
|
|
||||||
Image1: TImage;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
Label10: TLabel;
|
|
||||||
Label11: TLabel;
|
|
||||||
lblFlamecom: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Bevel1: TBevel;
|
|
||||||
lblCredit: TLabel;
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure Label4Click(Sender: TObject);
|
|
||||||
procedure lblFlamecomClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure lblCreditClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
URL :String;
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
AboutForm: TAboutForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, ShellAPI;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TAboutForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.Label4Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://www.apophysis.org'),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.lblFlamecomClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://flam3.com'),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
lblCredit.Caption := MainCp.Nick;
|
|
||||||
URL := MainCp.URL;
|
|
||||||
if URL <> '' then lblCredit.Font.color := clBlue else lblCredit.Font.color := clBlack;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAboutForm.lblCreditClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if URL <> '' then
|
|
||||||
ShellExecute(ValidParentForm(Self).Handle, 'open', PChar(URL),
|
|
||||||
nil, nil, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
@ -1,322 +0,0 @@
|
|||||||
object AdjustForm: TAdjustForm
|
|
||||||
Left = 500
|
|
||||||
Top = 182
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'Adjust'
|
|
||||||
ClientHeight = 374
|
|
||||||
ClientWidth = 372
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFE2996DE2996DE2996D
|
|
||||||
E2996DFFFFFFE2996DE2996DE2996DE2996DFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFCD5208CD5208CD5208CD5208FFFFFFCD5208CD5208CD5208CD
|
|
||||||
5208FFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFBD96000000
|
|
||||||
FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08FFFFFFFFFFFFFFFFFFFFBD96000000FFFFFFFFFFFFFFFFFFFFBD96000000FF
|
|
||||||
FFFFFFFFFFFFFFFF000000000000CD5208FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000CD52
|
|
||||||
08CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208CD5208CD5208000000000000CD5208FFFFFFFFBD96FFBD96FFBD96FFBD96
|
|
||||||
FFBD96FFBD96FFBD96FFBD96FFBD96FFFFFFD25C15FFFFFF000000000000CD52
|
|
||||||
08CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208CD5208CD5208CD5208000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000000100000001000000010000000100000001000000010000000100000001
|
|
||||||
0000000100000001000000010000000100000001000000010000FFFF0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefault
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object PrevPnl: TPanel
|
|
||||||
Left = 105
|
|
||||||
Top = 5
|
|
||||||
Width = 162
|
|
||||||
Height = 122
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clAppWorkSpace
|
|
||||||
TabOrder = 0
|
|
||||||
DesignSize = (
|
|
||||||
162
|
|
||||||
122)
|
|
||||||
object PreviewImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 160
|
|
||||||
Height = 120
|
|
||||||
Anchors = []
|
|
||||||
Center = True
|
|
||||||
IncrementalDisplay = True
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 128
|
|
||||||
Width = 357
|
|
||||||
Height = 129
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 1
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 24
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Gamma:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 48
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Brightness:'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 6
|
|
||||||
Top = 72
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Vibrancy:'
|
|
||||||
end
|
|
||||||
object lblContrast: TLabel
|
|
||||||
Left = 56
|
|
||||||
Top = 100
|
|
||||||
Width = 101
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Background color:'
|
|
||||||
end
|
|
||||||
object scrollGamma: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 24
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 500
|
|
||||||
Min = 100
|
|
||||||
PageSize = 0
|
|
||||||
Position = 100
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrollGammaChange
|
|
||||||
OnScroll = scrollGammaScroll
|
|
||||||
end
|
|
||||||
object txtGamma: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 20
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtGammaExit
|
|
||||||
OnKeyPress = txtGammaKeyPress
|
|
||||||
end
|
|
||||||
object scrollBrightness: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 48
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 100
|
|
||||||
Max = 10000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = scrollBrightnessChange
|
|
||||||
OnScroll = scrollBrightnessScroll
|
|
||||||
end
|
|
||||||
object txtBrightness: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 44
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtBrightnessExit
|
|
||||||
OnKeyPress = txtBrightnessKeyPress
|
|
||||||
end
|
|
||||||
object scrollVibrancy: TScrollBar
|
|
||||||
Left = 64
|
|
||||||
Top = 72
|
|
||||||
Width = 233
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = scrollVibrancyChange
|
|
||||||
OnScroll = scrollVibrancyScroll
|
|
||||||
end
|
|
||||||
object txtVibrancy: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 68
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtVibrancyExit
|
|
||||||
OnKeyPress = txtVibrancyKeyPress
|
|
||||||
end
|
|
||||||
object ColorPanel: TPanel
|
|
||||||
Left = 168
|
|
||||||
Top = 96
|
|
||||||
Width = 177
|
|
||||||
Height = 25
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = ColorPanelClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 264
|
|
||||||
Width = 357
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Camera'
|
|
||||||
TabOrder = 2
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 24
|
|
||||||
Width = 30
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'Zoom:'
|
|
||||||
end
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 24
|
|
||||||
Top = 44
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'X:'
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 24
|
|
||||||
Top = 68
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Caption = 'Y:'
|
|
||||||
end
|
|
||||||
object scrollZoom: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 24
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 300
|
|
||||||
Min = -300
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrollZoomChange
|
|
||||||
OnScroll = scrollZoomScroll
|
|
||||||
end
|
|
||||||
object txtZoom: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 20
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtZoomExit
|
|
||||||
OnKeyPress = txtZoomKeyPress
|
|
||||||
end
|
|
||||||
object scrollCenterX: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 48
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 1000
|
|
||||||
Min = -1000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = scrollCenterXChange
|
|
||||||
OnScroll = scrollCenterXScroll
|
|
||||||
end
|
|
||||||
object txtCenterX: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 44
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtCenterXExit
|
|
||||||
OnKeyPress = txtCenterXKeyPress
|
|
||||||
end
|
|
||||||
object scrollCenterY: TScrollBar
|
|
||||||
Left = 48
|
|
||||||
Top = 72
|
|
||||||
Width = 249
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
Max = 1000
|
|
||||||
Min = -1000
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = scrollCenterYChange
|
|
||||||
OnScroll = scrollCenterYScroll
|
|
||||||
end
|
|
||||||
object txtCenterY: TEdit
|
|
||||||
Left = 304
|
|
||||||
Top = 68
|
|
||||||
Width = 41
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtCenterYExit
|
|
||||||
OnKeyPress = txtCenterYKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object QualityPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 16
|
|
||||||
Top = 16
|
|
||||||
object mnuLowQuality: TMenuItem
|
|
||||||
Caption = 'Low Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuLowQualityClick
|
|
||||||
end
|
|
||||||
object mnuMediumQuality: TMenuItem
|
|
||||||
Caption = 'Medium Quality'
|
|
||||||
Checked = True
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuMediumQualityClick
|
|
||||||
end
|
|
||||||
object mnuHighQuality: TMenuItem
|
|
||||||
Caption = 'High Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHighQualityClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ColorDialog: TColorDialog
|
|
||||||
Options = [cdFullOpen]
|
|
||||||
Left = 376
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,618 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Adjust;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, ComCtrls, ControlPoint, Render, Buttons, Menus, cmap;
|
|
||||||
|
|
||||||
const
|
|
||||||
WM_UPDATE_PARAMS = WM_APP + 5439;
|
|
||||||
|
|
||||||
type
|
|
||||||
TAdjustForm = class(TForm)
|
|
||||||
QualityPopup: TPopupMenu;
|
|
||||||
mnuLowQuality: TMenuItem;
|
|
||||||
mnuMediumQuality: TMenuItem;
|
|
||||||
mnuHighQuality: TMenuItem;
|
|
||||||
ColorDialog: TColorDialog;
|
|
||||||
PrevPnl: TPanel;
|
|
||||||
PreviewImage: TImage;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
Label8: TLabel;
|
|
||||||
scrollGamma: TScrollBar;
|
|
||||||
txtGamma: TEdit;
|
|
||||||
Label9: TLabel;
|
|
||||||
scrollBrightness: TScrollBar;
|
|
||||||
txtBrightness: TEdit;
|
|
||||||
Label10: TLabel;
|
|
||||||
scrollVibrancy: TScrollBar;
|
|
||||||
txtVibrancy: TEdit;
|
|
||||||
lblContrast: TLabel;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label5: TLabel;
|
|
||||||
scrollZoom: TScrollBar;
|
|
||||||
txtZoom: TEdit;
|
|
||||||
Label6: TLabel;
|
|
||||||
scrollCenterX: TScrollBar;
|
|
||||||
txtCenterX: TEdit;
|
|
||||||
scrollCenterY: TScrollBar;
|
|
||||||
txtCenterY: TEdit;
|
|
||||||
Label1: TLabel;
|
|
||||||
ColorPanel: TPanel;
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure DrawPreview;
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure btnCanelClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure mnuLowQualityClick(Sender: TObject);
|
|
||||||
procedure mnuMediumQualityClick(Sender: TObject);
|
|
||||||
procedure mnuHighQualityClick(Sender: TObject);
|
|
||||||
procedure txtZoomKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtZoomExit(Sender: TObject);
|
|
||||||
procedure txtCenterXKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtCenterXExit(Sender: TObject);
|
|
||||||
procedure txtCenterYKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtCenterYExit(Sender: TObject);
|
|
||||||
procedure txtGammaKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtGammaExit(Sender: TObject);
|
|
||||||
procedure txtBrightnessKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtBrightnessExit(Sender: TObject);
|
|
||||||
procedure txtVibrancyKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure txtVibrancyExit(Sender: TObject);
|
|
||||||
procedure scrollZoomScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollCenterXScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollCenterYScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollGammaScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure scrollBrightnessScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
procedure scrollVibrancyScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
procedure scrollVibrancyChange(Sender: TObject);
|
|
||||||
procedure scrollGammaChange(Sender: TObject);
|
|
||||||
procedure scrollBrightnessChange(Sender: TObject);
|
|
||||||
procedure scrollZoomChange(Sender: TObject);
|
|
||||||
procedure scrollCenterXChange(Sender: TObject);
|
|
||||||
procedure scrollCenterYChange(Sender: TObject);
|
|
||||||
procedure ColorPanelClick(Sender: TObject);
|
|
||||||
procedure scrollContrastScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
private
|
|
||||||
Resetting: boolean;
|
|
||||||
Render: TRenderer;
|
|
||||||
bm: TBitmap;
|
|
||||||
public
|
|
||||||
PreviewDensity: double;
|
|
||||||
cp: TControlPoint;
|
|
||||||
// cmap: TColorMap;
|
|
||||||
// Sample_Density, Zoom: double;
|
|
||||||
// Center: array[0..1] of double;
|
|
||||||
procedure UpdateDisplay;
|
|
||||||
procedure UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
AdjustForm: TAdjustForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, Registry, Mutate, Editor;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TAdjustForm.UpdateDisplay;
|
|
||||||
var
|
|
||||||
pw, ph: integer;
|
|
||||||
r: double;
|
|
||||||
begin
|
|
||||||
pw := PrevPnl.Width - 2;
|
|
||||||
ph := PrevPnl.Height - 2;
|
|
||||||
cp.copy(MainCp);
|
|
||||||
if cp.width > cp.height then
|
|
||||||
begin
|
|
||||||
PreviewImage.Width := pw;
|
|
||||||
r := cp.width / PreviewImage.Width;
|
|
||||||
PreviewImage.height := round(cp.height / r);
|
|
||||||
PreviewImage.Left := 1;
|
|
||||||
PreviewImage.Top := (ph - PreviewImage.Height) div 2;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
PreviewImage.Height := ph;
|
|
||||||
r := cp.height / PreviewImage.height;
|
|
||||||
PreviewImage.Width := round(cp.Width / r);
|
|
||||||
PreviewImage.Top := 1;
|
|
||||||
PreviewImage.Left := (pw - PreviewImage.Width) div 2;
|
|
||||||
end;
|
|
||||||
cp.cmap := MainCp.cmap;
|
|
||||||
AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
|
|
||||||
// zoom := MainForm.zoom;
|
|
||||||
// cp.zoom := zoom;
|
|
||||||
Resetting := True; // So the preview doesn't get drawn with these changes..
|
|
||||||
scrollGamma.Position := trunc(cp.Gamma * 100);
|
|
||||||
scrollBrightness.Position := trunc(cp.Brightness * 100);
|
|
||||||
scrollVibrancy.Position := trunc(cp.vibrancy * 100);
|
|
||||||
scrollZoom.Position := trunc(cp.zoom * 100);
|
|
||||||
if (abs(cp.Center[0]) < 1000) and (abs(cp.Center[1]) < 1000) then begin
|
|
||||||
scrollCenterX.Position := trunc(cp.Center[0] * 100);
|
|
||||||
scrollCenterY.Position := trunc(cp.Center[1] * 100);
|
|
||||||
end else begin
|
|
||||||
scrollCenterX.Position := 0;
|
|
||||||
scrollCenterY.Position := 0;
|
|
||||||
end;
|
|
||||||
ColorPanel.color := cp.background[2] shl 16 +
|
|
||||||
cp.background[1] shl 8 + cp.background[0];
|
|
||||||
Resetting := False;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.UpdateFlame;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.Copy(cp);
|
|
||||||
// MainCp.cmap := cmap;
|
|
||||||
// MainForm.zoom := zoom;
|
|
||||||
// MainForm.Center[0] := Center[0];
|
|
||||||
// MainForm.Center[1] := Center[1];
|
|
||||||
if EditForm.Visible then EditForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.DrawPreview;
|
|
||||||
begin
|
|
||||||
if not Resetting then begin
|
|
||||||
Render.Stop;
|
|
||||||
// AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
|
|
||||||
cp.sample_density := PreviewDensity;
|
|
||||||
cp.spatial_oversample := defOversample;
|
|
||||||
cp.spatial_filter_radius := defFilterRadius;
|
|
||||||
// cp.Zoom := Zoom;
|
|
||||||
// cp.center[0] := Center[0];
|
|
||||||
// cp.center[1] := Center[1];
|
|
||||||
Render.Compatibility := compatibility;
|
|
||||||
Render.SetCP(cp);
|
|
||||||
Render.Render;
|
|
||||||
BM.Assign(Render.GetImage);
|
|
||||||
PreviewImage.Picture.Graphic := bm;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm := TbitMap.Create;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
case AdjustPrevQual of
|
|
||||||
0: begin
|
|
||||||
mnuLowQuality.Checked := true;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
end;
|
|
||||||
1: begin
|
|
||||||
mnuMediumQuality.Checked := true;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
mnuHighQuality.Checked := true;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Render.Stop;
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Adjust', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', AdjustForm.Top);
|
|
||||||
Registry.WriteInteger('Left', AdjustForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
// bStop := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
bm.free;
|
|
||||||
cp.free;
|
|
||||||
Render.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.btnCanelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrCancel;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
if LimitVibrancy then scrollVibrancy.Max := 100 else scrollVibrancy.Max := 300;
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Adjust', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
AdjustForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
AdjustForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuLowQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuLowQuality.Checked := True;
|
|
||||||
PreviewDensity := prevLowQuality;
|
|
||||||
AdjustPrevQual := 0;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuMediumQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuMediumQuality.Checked := True;
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
AdjustPrevQual := 1;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.mnuHighQualityClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuHighQuality.Checked := True;
|
|
||||||
PreviewDensity := prevHighQuality;
|
|
||||||
AdjustPrevQual := 2;
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtZoomKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtZoom.Text) * 100);
|
|
||||||
if v > scrollZoom.Max then v := scrollZoom.Max;
|
|
||||||
if v < scrollZoom.Min then v := scrollZoom.Min;
|
|
||||||
if v <> ScrollZoom.Position then begin
|
|
||||||
ScrollZoom.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtZoomExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtZoom.Text) * 100);
|
|
||||||
if v > scrollZoom.Max then v := scrollZoom.Max;
|
|
||||||
if v < scrollZoom.Min then v := scrollZoom.Min;
|
|
||||||
if v <> ScrollZoom.Position then begin
|
|
||||||
ScrollZoom.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
except on EConvertError do
|
|
||||||
txtZoom.Text := FloatToStr(cp.zoom)
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterXKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterX.Text) * 100);
|
|
||||||
if v > scrollCenterX.Max then v := scrollCenterX.Max;
|
|
||||||
if v < scrollCenterX.Min then v := scrollCenterX.Min;
|
|
||||||
ScrollCenterX.Position := v;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterXExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterX.Text) * 100);
|
|
||||||
if v > scrollCenterX.Max then v := scrollCenterX.Max;
|
|
||||||
if v < scrollCenterX.Min then v := scrollCenterX.Min;
|
|
||||||
ScrollCenterX.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtCenterX.Text := FloatToStr(cp.center[0]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterYKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterY.Text) * 100);
|
|
||||||
if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
|
|
||||||
if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
|
|
||||||
ScrollCenterY.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtCenterYExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtCenterY.Text) * 100);
|
|
||||||
if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
|
|
||||||
if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
|
|
||||||
ScrollCenterY.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtCenterY.Text := FloatToStr(cp.center[1]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtGammaExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtGamma.Text) * 100);
|
|
||||||
if v > scrollGamma.Max then v := scrollGamma.Max;
|
|
||||||
if v < scrollGamma.Min then v := scrollGamma.Min;
|
|
||||||
ScrollGamma.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtGamma.Text := FloatToStr(cp.gamma);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtGammaKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtGamma.Text) * 100);
|
|
||||||
if v > scrollGamma.Max then v := scrollGamma.Max;
|
|
||||||
if v < scrollGamma.Min then v := scrollGamma.Min;
|
|
||||||
ScrollGamma.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtBrightnessExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtBrightness.Text) * 100);
|
|
||||||
if v > scrollBrightness.Max then v := scrollBrightness.Max;
|
|
||||||
if v < scrollBrightness.Min then v := scrollBrightness.Min;
|
|
||||||
ScrollBrightness.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtBrightness.Text := FloatToStr(cp.brightness);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtBrightnessKeyPress(Sender: TObject;
|
|
||||||
var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtBrightness.Text) * 100);
|
|
||||||
if v > scrollBrightness.Max then v := scrollBrightness.Max;
|
|
||||||
if v < scrollBrightness.Min then v := scrollBrightness.Min;
|
|
||||||
ScrollBrightness.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtVibrancyKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
if key = #13 then
|
|
||||||
begin
|
|
||||||
key := #0;
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
|
|
||||||
if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
|
|
||||||
if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
|
|
||||||
ScrollVibrancy.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.txtVibrancyExit(Sender: TObject);
|
|
||||||
var
|
|
||||||
v: integer;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
|
|
||||||
if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
|
|
||||||
if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
|
|
||||||
ScrollVibrancy.Position := v;
|
|
||||||
UpdateFlame;
|
|
||||||
except on EConvertError do
|
|
||||||
txtVibrancy.Text := FloatToStr(cp.Vibrancy);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollZoomScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterXScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterYScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollGammaScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollBrightnessScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollVibrancyScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollVibrancyChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Vibrancy := ScrollVibrancy.Position / 100;
|
|
||||||
txtVibrancy.text := FloatToStr(cp.Vibrancy);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollGammaChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Gamma := scrollGamma.Position / 100;
|
|
||||||
txtGamma.text := FloatToStr(cp.Gamma);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollBrightnessChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.Brightness := ScrollBrightness.Position / 100;
|
|
||||||
txtBrightness.text := FloatToStr(cp.Brightness);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollZoomChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.zoom := scrollZoom.Position / 100;
|
|
||||||
txtZoom.text := FloatToStr(cp.zoom);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterXChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.center[0] := scrollCenterX.Position / 100;
|
|
||||||
txtCenterX.text := FloatToStr(cp.center[0]);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollCenterYChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp.center[1] := scrollCenterY.Position / 100;
|
|
||||||
txtCentery.text := FloatToStr(cp.center[1]);
|
|
||||||
DrawPreview;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.ColorPanelClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
col: Longint;
|
|
||||||
begin
|
|
||||||
ColorDialog.Color := COlorPanel.Color;
|
|
||||||
if ColorDialog.Execute then
|
|
||||||
begin
|
|
||||||
ColorPanel.Color := ColorDialog.Color;
|
|
||||||
col := ColorToRGB(ColorDialog.Color);
|
|
||||||
cp.background[0] := col and 255;
|
|
||||||
cp.background[1] := col shr 8 and 255;
|
|
||||||
cp.background[2] := col shr 16 and 255;
|
|
||||||
DrawPreview;
|
|
||||||
UpdateFlame;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAdjustForm.scrollContrastScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then UpdateFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,878 +0,0 @@
|
|||||||
object GradientBrowser: TGradientBrowser
|
|
||||||
Left = 494
|
|
||||||
Top = 299
|
|
||||||
Width = 380
|
|
||||||
Height = 188
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
Caption = 'Gradient Browser'
|
|
||||||
Color = clBtnFace
|
|
||||||
Constraints.MinHeight = 120
|
|
||||||
Constraints.MinWidth = 380
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000FFF5F0FFF1E9FFEFE6FFEFE6FFF0E7FFF1E8FFF1E9FFF3EBFFF3ECFF
|
|
||||||
F4EDFFF6F0000000000000000000000000000000FFF4EDFFEEE4FFEBDFFFEBDF
|
|
||||||
FFEBE0FFECE2FFEDE2FFEEE4FFEFE5FFEFE6FFF1EA0000000000000000000000
|
|
||||||
00000000FFF1E9CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD
|
|
||||||
5208FFEDE3000000000000000000000000000000FFEFE6CD5208E26518EB7A37
|
|
||||||
FFA772FFD1B2FFF7EDC2E9FF42ADF7CD5208FFE9DC0000000000000000000000
|
|
||||||
00000000FFEDE2CD5208E16519E97835FFA770FFD1B2FFF7ECC2E9FF40ADF7CD
|
|
||||||
5208FFE5D6000000000000000000000000000000FFEBDFCD5208E16518EB7836
|
|
||||||
FFA770FFD1B2FFF7ECC2E9FF42ADF7CD5208FFE1D00000000000000000000000
|
|
||||||
00000000FFE9DBCD5208E16519EC7935FFA770FFD0B2FFF7ECC2E9FF40AEF7CD
|
|
||||||
5208FFDFCD000000000000000000000000000000FFE7D8CD5208E16519EB7935
|
|
||||||
FFA570FFD1B2FFF7ECC2E9FF40ADF7CD5208FFE1D00000000000000000000000
|
|
||||||
00000000FFE4D5CD5208E3651AEB7A39FFA874FFD1B3FFF7ECC4E9FF44AEF7CD
|
|
||||||
5208FFE9DC000000000000000000000000000000FFE3D1CD5208ED7935F99457
|
|
||||||
FFBC8DFFE1C5FFFFF90000000000000000000000000000000000000000000000
|
|
||||||
00000000FFE1CFCD5208CD5208CD5208CD5208CD5208CD5208000000E17D41EB
|
|
||||||
925E000000000000000000000000000000000000FFE2D1FFD7BFFFD0B4FFCEB1
|
|
||||||
FFCFB3FFD0B4FFD3B8000000F5A7790000000000000000000000000000000000
|
|
||||||
00000000FFE7DAFFE2D0FFDECBFFDECAFFDDC9FFDECAFFDFCD00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800300008003000080030000800300008003000080030000800300008003
|
|
||||||
000080030000800300008003000080070000800F0000801F0000803F0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object RightPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 4
|
|
||||||
Width = 372
|
|
||||||
Height = 106
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 0
|
|
||||||
object ListView: TListView
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 106
|
|
||||||
Align = alClient
|
|
||||||
Columns = <
|
|
||||||
item
|
|
||||||
Caption = 'Title'
|
|
||||||
Width = 150
|
|
||||||
end>
|
|
||||||
HideSelection = False
|
|
||||||
LargeImages = LargeImages
|
|
||||||
ReadOnly = True
|
|
||||||
RowSelect = True
|
|
||||||
PopupMenu = PopupMenu
|
|
||||||
SmallImages = SmallImages
|
|
||||||
SortType = stText
|
|
||||||
TabOrder = 0
|
|
||||||
ViewStyle = vsList
|
|
||||||
OnChange = ListViewChange
|
|
||||||
OnDblClick = SpeedButton1Click
|
|
||||||
OnEdited = ListViewEdited
|
|
||||||
OnKeyPress = ListViewKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object pnlMain: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 4
|
|
||||||
Align = alTop
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object pnlControls: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 110
|
|
||||||
Width = 372
|
|
||||||
Height = 51
|
|
||||||
Align = alBottom
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 2
|
|
||||||
object btnDefGradient: TSpeedButton
|
|
||||||
Left = 333
|
|
||||||
Top = 14
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Open...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -12
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnDefGradientClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 405
|
|
||||||
Top = 97
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object pnlPreview: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 6
|
|
||||||
Width = 325
|
|
||||||
Height = 40
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 1
|
|
||||||
object Image: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 323
|
|
||||||
Height = 38
|
|
||||||
Align = alClient
|
|
||||||
Stretch = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SmallImages: TImageList
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Bitmap = {
|
|
||||||
494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
|
||||||
0000000000003600000028000000400000001000000001002000000000000010
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080008080
|
|
||||||
8000808080008080800080808000FFFFFF000000000000808000008080000080
|
|
||||||
8000000000007F7F7F0000000000000000007F7F7F0000000000000000007F7F
|
|
||||||
7F000000000000000000BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007F7F
|
|
||||||
7F0000000000000000007F7F7F00000000000080800000808000000000000000
|
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF5F000FFF1
|
|
||||||
E900FFEFE600FFEFE600FFF0E700FFF1E800FFF1E900FFF3EB00FFF3EC00FFF4
|
|
||||||
ED00FFF6F0000000000000000000000000000000000000808000008080000080
|
|
||||||
8000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF4ED00FFEE
|
|
||||||
E400FFEBDF00FFEBDF00FFEBE000FFECE200FFEDE200FFEEE400FFEFE500FFEF
|
|
||||||
E600FFF1EA00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFF1E900CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800FFEDE300000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00000000007F7F
|
|
||||||
7F000000000000000000BBCCD500BBCCD5000000000000000000FFEFE600CD52
|
|
||||||
0800E2651800EB7A3700FFA77200FFD1B200FFF7ED00C2E9FF0042ADF700CD52
|
|
||||||
0800FFE9DC00000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFEDE200CD52
|
|
||||||
0800E1651900E9783500FFA77000FFD1B200FFF7EC00C2E9FF0040ADF700CD52
|
|
||||||
0800FFE5D6000000000000000000000000000000000000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000688DA200688D
|
|
||||||
A200688DA200688DA200688DA200688DA200FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFEBDF00CD52
|
|
||||||
0800E1651800EB783600FFA77000FFD1B200FFF7EC00C2E9FF0042ADF700CD52
|
|
||||||
0800FFE1D000000000000000000000000000FFF1EA0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFF5F000FFF1E900FFEFE600FFEFE600FFF0E700FFF1
|
|
||||||
E800FFF1E900FFF3EB00FFF3EC00FFF4ED00FFF6F00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FFE9DB00CD52
|
|
||||||
0800E1651900EC793500FFA77000FFD0B200FFF7EC00C2E9FF0040AEF700CD52
|
|
||||||
0800FFDFCD00000000000000000000000000FFE9DC0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFF1E900CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FFEDE30000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00688DA200688DA200688D
|
|
||||||
A200688DA200688DA200688DA200688DA2000000000000000000FFE7D800CD52
|
|
||||||
0800E1651900EB793500FFA57000FFD1B200FFF7EC00C2E9FF0040ADF700CD52
|
|
||||||
0800FFE1D000000000000000000000000000FFE1D00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00688D
|
|
||||||
A200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFEDE200CD520800E1651900E9783500FFA77000FFD1
|
|
||||||
B200FFF7EC00C2E9FF0040ADF700CD520800FFE5D60000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FFE4D500CD52
|
|
||||||
0800E3651A00EB7A3900FFA87400FFD1B300FFF7EC00C4E9FF0044AEF700CD52
|
|
||||||
0800FFE9DC00000000000000000000000000FFE1D00000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE9DB00CD520800E1651900EC793500FFA77000FFD0
|
|
||||||
B200FFF7EC00C2E9FF0040AEF700CD520800FFDFCD0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000FFE3D100CD52
|
|
||||||
0800ED793500F9945700FFBC8D00FFE1C500FFFFF90000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00688D
|
|
||||||
A200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE4D500CD520800E3651A00EB7A3900FFA87400FFD1
|
|
||||||
B300FFF7EC00C4E9FF0044AEF700CD520800FFE9DC0000000000FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000FFE1CF00CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD52080000000000E17D4100EB92
|
|
||||||
5E0000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE1CF00CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD52080000000000E17D4100EB925E0000000000FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00BBCCD500BBCCD5000000000000000000FFE2D100FFD7
|
|
||||||
BF00FFD0B400FFCEB100FFCFB300FFD0B400FFD3B80000000000F5A779000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF0000000000FFE7DA00FFE2D000FFDECB00FFDECA00FFDDC900FFDE
|
|
||||||
CA00FFDFCD000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFE7DA00FFE2
|
|
||||||
D000FFDECB00FFDECA00FFDDC900FFDECA00FFDFCD0000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
|
|
||||||
FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00BBCCD500BBCCD500424D3E000000000000003E000000
|
|
||||||
2800000040000000100000000100010000000000800000000000000000000000
|
|
||||||
000000000000000000000000FFFFFF00FFFFCD00000000008003C900FFDECA00
|
|
||||||
8003CB00FFDECA008003DA00FFE2D0008003EA00000000008003EA00DDE6EA00
|
|
||||||
8003EA00DDE6EA008003EA00DDE6EA0080030000000000008003000000000000
|
|
||||||
800300000000000080030000000000008007EA0000000000800F000000000000
|
|
||||||
801F000020000000803F8F1F0000000000000000000000000000000000000000
|
|
||||||
000000000000}
|
|
||||||
end
|
|
||||||
object PopupMenu: TPopupMenu
|
|
||||||
Left = 40
|
|
||||||
Top = 16
|
|
||||||
object DeleteItem: TMenuItem
|
|
||||||
Caption = 'Delete'
|
|
||||||
ShortCut = 16430
|
|
||||||
OnClick = DeleteItemClick
|
|
||||||
end
|
|
||||||
object RenameItem: TMenuItem
|
|
||||||
Caption = 'Rename'
|
|
||||||
ShortCut = 113
|
|
||||||
OnClick = RenameItemClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object OpenDialog: TOpenDialog
|
|
||||||
DefaultExt = 'ugr'
|
|
||||||
Filter = 'Gradient files (*.ugr)|*.ugr|Fractint map files (*.map)|*.map'
|
|
||||||
Left = 72
|
|
||||||
Top = 16
|
|
||||||
end
|
|
||||||
object LargeImages: TImageList
|
|
||||||
Height = 32
|
|
||||||
Width = 32
|
|
||||||
Left = 104
|
|
||||||
Top = 16
|
|
||||||
Bitmap = {
|
|
||||||
494C010101000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
|
||||||
0000000000003600000028000000800000002000000001002000000000000040
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E000FDE2D300FCCFB300B3644B00C06D5300BB695000BC6A4F00BC6A5100BC6A
|
|
||||||
5100A35B4500B9886F00FCC8A800FCC9AA00FCCAAC00FCD0B600FDD6BC00FDD9
|
|
||||||
C100FEDFCC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E000FDE2D300FCCFB300FBC8AA00FAC6A500FAC5A400FBC5A400FBC5A400FBC6
|
|
||||||
A500FBC7A600FBC7A600FCC8A800FCC9AA00FCCAAC00FCD0B600FDD6BC00FDD9
|
|
||||||
C100FEDFCC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F4DA
|
|
||||||
CA00F2D2BD00ECBC9F00EAB59400E9B29000E8AF8D00E9AF8D00E9B08C00E9AF
|
|
||||||
8D00E8AF8D00E9B08D00E8B08D00E8B18E00EAB28F00EAB79900EDBDA000EDC1
|
|
||||||
A600F0C8B00000000000DDE6EA00DDE6EA0023232300BAEBFF00B3EAFF00B0E8
|
|
||||||
FF00ACE7FF00A8E6FF00A5E6FF00A4E4FF009FE1FF009DE1FF009BE2FF0097E0
|
|
||||||
FF0095DFFF0092DDFF008FDDFF008DDDFF008BDBFF0087D9FF0084D8FF0083D8
|
|
||||||
FF007ED6FF007ED3FF0078D1FF00262626000000000000000000000000000000
|
|
||||||
0000FFFEFB00FFFEFA00FFFEF800FFFEF700FFFDF700FFFDF600FFFEF600FFFE
|
|
||||||
F700FFFFF700FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFA00FFFFFB00FFFF
|
|
||||||
FC00FFFFFC00FFFFFC00FFFFFD00FFFFFE000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000E7A88300EBB69600EDC1A700F0C9
|
|
||||||
B300F3D4C10000000000DDE6EA00DDE6EA002323230023232300232323002323
|
|
||||||
2300232323002323230023232300232323002323230023232300232323002323
|
|
||||||
2300232323002323230023232300232323002323230023232300232323002323
|
|
||||||
2300232323002323230023232300DDE6EA00DDE6EA00DDE6EA0000000000FDEA
|
|
||||||
DF00FCE1D000FBCCB000ED886800F38C6B00E8856500E9856600E9856600EB86
|
|
||||||
6600D97C5F00DCA18300FBC5A400FBC7A700FBC9AA00FCD3B800FDDAC400FDDF
|
|
||||||
CD00FEE7D80000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEA
|
|
||||||
DF00FCE1D000FBCCB000FAC6A700F9C3A200FAC19F00FAC2A000FBC3A100FBC3
|
|
||||||
A300FAC4A300FBC4A300FBC5A400FBC7A700FBC9AA00FCD3B800FDDAC400FDDF
|
|
||||||
CD00FEE7D80000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F4D7
|
|
||||||
C600F1CDB800EBB69600E8AE8C00E7AB8600E7A98200E6A88300E7A98300E7A8
|
|
||||||
8300E6A98200E7A88300E7A98300E7AA86000000000000000000000000000000
|
|
||||||
0000FFFDFA00FFFCF800FFFBF500FFFBF400FFFBF300FFFAF200FFFBF300FFFB
|
|
||||||
F300FFFCF400FFFCF400FFFDF500FFFEF500FFFDF500FFFEF600FFFEF600FFFF
|
|
||||||
F700FFFFF800FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFB00FFFFFC00FFFF
|
|
||||||
FC0000000000000000000000000000000000F9BE9D00F8BF9E00F9C09E00F9C0
|
|
||||||
9F00F9C19F00F9C1A000F9C2A200F9C5A500F9C8AB00F9833C00FF985A00FFAC
|
|
||||||
770000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CF
|
|
||||||
BB00EEC5AB00E8AA8500E6A37B00E49F7400E39B7000E39C7100E49B7000E39C
|
|
||||||
7100E39C7100E39B7000E39C7200E49F7500E5A37A00F9833C00FF985A00FFAC
|
|
||||||
770000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00BAEEFC00B7ED
|
|
||||||
FD00B6ECFC00B2E9FB00B0E8FC00ADE8FB00AAE7FC00A7E6FC00A6E5FC003740
|
|
||||||
4500DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDE9
|
|
||||||
DE00FCE0CF00FACAAD00FAC3A400F9C09E00F9BF9C00F9C09D00F9C09D00FAC1
|
|
||||||
A000FAC1A000F9C1A100FAC3A200FAC5A500FBC7A900FCD4BC00FDDDCA00FDE4
|
|
||||||
D500FEECE20000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDE9
|
|
||||||
DE00FCE0CF00FACAAD00FAC3A400F9C09E000000000000000000000000000000
|
|
||||||
0000FFFCF800FFFBF600FFFAF200FFF9F000FFF8EF00FFF7EE00FFF9EE00FFF9
|
|
||||||
EF00FFF9EF00FFF9F000FFFAF000FFFAF200FFFBF200FFFCF300FFFCF300FFFC
|
|
||||||
F400FFFCF400FFFDF500FFFEF500FFFFF600FFFFF700FFFFF700FFFFF700FFFF
|
|
||||||
FA0000000000000000000000000000000000DDE6EA00DDE6EA0000000000FCEA
|
|
||||||
DF00FBE2D200F9CEB400F8C8AB00F9C6A700F9C5A500F9C5A500F9C6A500F8C6
|
|
||||||
A700F9C6A800F9C6A700F9C8A900FAC9AC00FACDB100FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FCEA
|
|
||||||
DF00FBE2D200F9CEB400F8C8AB00F9C6A700F9C5A500F9C5A500F9C6A500F8C6
|
|
||||||
A700F9C6A800F9C6A700F9C8A900FAC9AC00FACDB100FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CE
|
|
||||||
B900EEC4AB00E7AC8800E5A57F00E4A17900E49F7600E49F7600E49F7500E59F
|
|
||||||
7600E49F7700E49F7600E49F7700E5A17900E5A57E00FF9F6400FFB38100FFC8
|
|
||||||
9F00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0023232300C1F1
|
|
||||||
FD00BFEFFD00BAEEFC00B9EDFC00B6ECFC00B2EAFB00AFE9FB00ADE8FB00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFFBF700FFFAF300FFF8EF00FFF6EC00FFF6EB00FFF5EB00FFF5EA00FFF6
|
|
||||||
EB00FFF6EB00FFF7EB00FFF7ED00FFF8ED00FFF8EE00FFF9EE00FFF9F000FFFA
|
|
||||||
F000FFFAF000FFFAF200FFFBF200FFFBF200FFFCF300FFFCF300FFFDF400FFFD
|
|
||||||
F60000000000000000000000000000000000EEC3A90000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E200FCE5D700FAD5BF00F9D1B800F9CEB400F9CDB300F9CDB300F9CEB300F9CF
|
|
||||||
B500F9CFB500FACFB500F9D0B600FAD1B800FAD4BC00FFBA8B00FFCFA9000000
|
|
||||||
0000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDEB
|
|
||||||
E200FCE5D700FAD5BF00F9D1B800F9CEB400F9CDB300F9CDB300F9CEB300F9CF
|
|
||||||
B500F9CFB500FACFB500F9D0B600FAD1B800FAD4BC00FFBA8B00FFCFA9000000
|
|
||||||
0000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000F1CE
|
|
||||||
B900EEC6AE00E9B29200E7AD8800E6A98400E6A78100E7A88100E6A78100E7A7
|
|
||||||
8200E7A78200E6A78200E6A78200E6A984000000000000000000000000000000
|
|
||||||
0000FFFAF600FFF8F200FFF6ED00FFF4E900FFF4E600FFF3E600FFF3E600FFF4
|
|
||||||
E700FFF4E700FFF5E800FFF5E800FFF5E900FFF5E900FFF5EB00FFF6EB00FFF7
|
|
||||||
EB00FFF7EC00FFF8ED00FFF8EE00FFF8EE00FFF9EF00FFF9F000FFFAF000FFFA
|
|
||||||
F200000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDF1
|
|
||||||
E900FDEEE500FCE8DC00FCE6D900FCE5D800FCE5D700FCE5D700FCE5D700FCE6
|
|
||||||
D800FCE6D800FCE6D900FCE6D900FCE7DA00FCE8DC0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FDF1
|
|
||||||
E900FDEEE500FCE8DC00FCE6D900FCE5D8000000000000000000000000000000
|
|
||||||
0000FFFAF400FFF7F000FFF4EA00FFF2E600FFF1E300FFF0E200FFF0E200FFF1
|
|
||||||
E200FFF2E300FFF2E400FFF2E500FFF3E500FFF3E500FFF4E600FFF5E700FFF4
|
|
||||||
E700FFF5E800FFF5E900FFF5E900FFF5EA00FFF5EA00FFF6EB00FFF7ED00FFF8
|
|
||||||
EF0000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF9F300FFF6EE00FFF2E800FFF0E300FFEEE000FFEEDF00FFEEDE00FFEE
|
|
||||||
DF00FFEEE000FFEFE000FFEFE000FFEFE100FFF0E100FFF1E200FFF1E200FFF2
|
|
||||||
E400FFF2E400FFF2E400FFF3E600FFF3E600FFF4E600FFF5E700FFF5E900FFF6
|
|
||||||
EB0000000000000000000000000000000000FFFFF000FFFFF200FFFFF200FFFF
|
|
||||||
F400FFFFF500FFFFF500FFFFF60000000000DDE6EA00DDE6EA0000000000FFFC
|
|
||||||
F800FFFBF600FFF9F000FFF8EF00FFF7EE00FFF9EF00FFF9EF00FFF9F000FFFA
|
|
||||||
F200FFFBF200FFFCF300FFFCF400FFFCF400FFFDF500FFFFF600FFFFF700FFFF
|
|
||||||
F700FFFFFA0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FFFD
|
|
||||||
FA00FFFCF800FFFBF400FFFBF300FFFAF200FFFBF300FFFCF400FFFCF400FFFE
|
|
||||||
F500FFFDF500FFFEF600FFFFF700FFFFF800FFFFF800FFFFF900FFFFFA00FFFF
|
|
||||||
FB00FFFFFC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA0000000000FFFD
|
|
||||||
FA00FFFCF800FFFBF400FFFBF300FFFAF200FFFBF300FFFCF400FFFCF400FFFE
|
|
||||||
F500FFFDF500FFFEF600FFFFF700FFFFF800FFFFF800FFFFF900FFFFFA00FFFF
|
|
||||||
FB00FFFFFC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFF800FFFEF600FFFFF400FFFF
|
|
||||||
F200FFFFF300FFFFF300FFFFF400FFFFF4000000000000000000000000000000
|
|
||||||
0000FFF8F200FFF5EC00FFF0E500FFEDDF00CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FFF1E300FFF2E300FFF2E400FFF3
|
|
||||||
E60000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF7F100FFF3EA00FFEEE300FFECDD00CD520800DA804A00DC7E4400E285
|
|
||||||
4C00EB956200F5AA7D00FEBE9700FFCCB000FFDCC800FFEFE300F7F8F800CEEA
|
|
||||||
FD0092CEF70060B8F3003CA3F000CD520800FFEEDF00FFEEDF00FFF0E100FFF0
|
|
||||||
E30000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFEFB00FFFEFA00FFFEF800FFFEF700FFFDF700FFFDF600FFFEF600FFFE
|
|
||||||
F700FFFFF700FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFA00FFFFFB00FFFF
|
|
||||||
FC00FFFFFC00FFFFFC00FFFFFD00FFFFFE00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000BADDF900ABD5F80097CBF60089C4F5007EBFF40077BCF30076BBF30075BA
|
|
||||||
F30074BAF30075BAF20075BAF30075BAF30074BAF40075BBF40075BAF40074BB
|
|
||||||
F40074BAF40075BBF40075BAF40074BBF40074BBF40076BBF40078BCF4007EBF
|
|
||||||
F50000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF6EF00FFF1E900FFECDF00FFE9D900CD520800DD855200DB7C4000E282
|
|
||||||
4800EA925E00F4A77900FDBC9400FFCCAE00FFDCC700FFEFE400F7F8F900CDEA
|
|
||||||
FD008FCDF7005CB5F30038A1F000CD520800FFEBDB00FFECDC00FFEDDD00FFEF
|
|
||||||
E00000000000000000000000000000000000BBCCD500BBCCD500DDE6EA000000
|
|
||||||
0000FFFDFA00FFFCF800FFFBF500FFFBF400FFFBF300FFFAF200FFFBF300FFFB
|
|
||||||
F300FFFCF400FFFCF400FFFDF500FFFEF500FFFDF500FFFEF600FFFEF600FFFF
|
|
||||||
F700FFFFF800FFFFF800FFFFF900FFFFF900FFFFFA00FFFFFB00FFFFFC00FFFF
|
|
||||||
FC0000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000C1DFF900B2D8F9009FCFF70091C8F60087C3F40080C0F4007FBFF4007EBF
|
|
||||||
F3007DBFF4007DBFF3007EBFF3007DBFF3007EBFF3007EBFF3007DBFF4007EBF
|
|
||||||
F4007EBFF4007DBFF4007DBEF3007EBFF4007DBEF3007EBFF40080C0F50086C2
|
|
||||||
F60000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F4A00214F
|
|
||||||
4A00214F4A00214F4A00214F4A00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF5EE00FFF1E700FFEADD00FFE7D600CD520800DC855000DB7B4100E180
|
|
||||||
4700EA905C00F4A67800FDBC9400FFCBAE00FFDBC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005BB5F40037A1EF00CD520800FFE9D700FFE9D700FFEAD900FFEC
|
|
||||||
DC0000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFCF800FFFBF60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF7F100FFF3EA00FFF3EA00FFEEE300FFEEE300FFECDD00FFECDD00CD52
|
|
||||||
0800CD520800FBE6DA00FBE6DA00FBDED100FBDED100FBD0B900FBD0B900FBD3
|
|
||||||
C000FBC4A300FBC4A300FBB99100FBB99100FBFAFB00FBFAFB00FBF6F600FBF6
|
|
||||||
F600FBE6DA00FBE6DA00FB996400FB996400FBA87B00FBA87B00FB823F00FBDC
|
|
||||||
CB00FBDCCB00F7C2A500F7C2A500CD520800CD520800FFEEDF00FFEEDF00FFEE
|
|
||||||
DF00FFEEDF00FFF0E100FFF0E100FFF0E300FFF0E30000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFE9DB00FFE5D300CD520800DC855000DB7C4100E181
|
|
||||||
4800EA905C00F4A67800FDBC9400FFCCAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005BB5F30037A1EF00CD520800FFE5D300FFE6D400FFE7D500FFE9
|
|
||||||
D80000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF6EF00FFF1E900FFF1E900FFECDF00FFECDF00FFE9D900FFE9D900CD52
|
|
||||||
0800CD520800FEE6DB00FEE6DB00FEDBC800FEDBC800FED9C200FED9C200FED1
|
|
||||||
B700FEAF8100FEAF8100FEF9F800FEF9F800FEF3EE00FEF3EE00FEFEFE00FEFE
|
|
||||||
FE00FEAB7B00FEAB7B00FEAB7A00FEAB7A00FE975F00FE975F00FE9C6200FEF3
|
|
||||||
F100FEF3F100FBB08600FBB08600CD520800CD520800FFEBDB00FFEBDB00FFEC
|
|
||||||
DC00FFECDC00FFEDDD00FFEDDD00FFEFE000FFEFE00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFE7D800FFE3D000CD520800DC855000DB7C4000E281
|
|
||||||
4800EA905C00F4A67800FEBC9400FFCCAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005CB5F30037A1EF00CD520800FFE3CF00FFE3CF00FFE5D100FFE6
|
|
||||||
D50000000000000000000000000000000000FEDBC800FED9C200FED9C200FED1
|
|
||||||
B700FEAF8100FEAF8100FEF9F800FEF9F800FEF3EE00FEF3EE00FEFEFE00FEFE
|
|
||||||
FE00FEAB7B00FEAB7B00FEAB7A00FEAB7A00FE975F00FE975F00FE9C6200FEF3
|
|
||||||
F100FEF3F100FBB08600FBB08600CD520800CD520800FFEBDB00FFEBDB00FFEC
|
|
||||||
DC00FFECDC00FFEDDD00FFEDDD00FFEFE000FFEFE00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500688DA200BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFE5D500FFE0CD00CD520800DC865100DB7C4000E281
|
|
||||||
4700EA905C00F4A67800FEBC9400FFCBAE00FFDCC700FFEFE300F7F8F800CDEA
|
|
||||||
FD008FCDF7005CB5F30036A1EF00CD520800FFE0CC00FFE0CC00FFE1CE00FFE3
|
|
||||||
D10000000000000000000000000000000000FE823900FE823900FEDAC200FED8
|
|
||||||
C300FED8C300FBA27300FBA27300CD520800CD520800FFE9D700FFE9D700FFE9
|
|
||||||
D700FFE9D700FFEAD900FFEAD900FFECDC00FFECDC0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD50053C7
|
|
||||||
FF0051C6FF004FC5FF004CC4FF0049C4FF0047C2FF0044C1FF0042C0FF003FC0
|
|
||||||
FF003DBDFF003AB9FF0038B6FF00214F4A000000000000000000000000000000
|
|
||||||
0000FFF1E900FFEBDF00FFE3D200FFDEC900CD520800DC865100DB7B4100E281
|
|
||||||
4800EB915C00F5A67800FEBB9400FFCCAE00FFDCC700FFEFE400F7F8F900CDEA
|
|
||||||
FD008FCDF7005CB5F40036A1EF00CD520800FFDDC700FFDEC800FFDFCB00FFE2
|
|
||||||
CE0000000000000000000000000000000000FFE9D80000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCC
|
|
||||||
D500688DA200DDE6EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD5008BDB
|
|
||||||
FF0082D9FF007BD7FF0077D5FF0073D4FF0071D2FF006ED1FF006AD0FF0068CF
|
|
||||||
FF0065CFFF0063CDFF0061CDFF005FCCFF005DCAFF005AC9FF0058C9FF0055C8
|
|
||||||
FF0053C7FF0050C5FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FFF1E800FFEADE00FFE2D000FFDBC600CD520800DC855100DB7C4100E281
|
|
||||||
4800EB915C00F5A77800FDBC9400FFCBAE00FFDBC700FFEFE300F6F8F800CCEA
|
|
||||||
FD008FCDF7005BB6F30037A1EF00CD520800FFDBC300FFDBC400FFDDC700FFDF
|
|
||||||
CA0000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500BBCCD500688DA200DDE6EA00688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500688DA200BBCCD500DDE6EA00DDE6
|
|
||||||
EA00688DA200BBCCD500688DA200DDE6EA00688DA200BBCCD500DDE6EA00DDE6
|
|
||||||
EA00688DA200BBCCD500688DA200DDE6EA00DDE6EA00BBCCD500DDE6EA00D9EB
|
|
||||||
FA00D9EAF900D9EAFA00D9EAFA00D9EAFA00D9EBFA00D9EBFA00DAEBF900DBEC
|
|
||||||
FA0000000000DDE6EA00DDE6EA00DDE6EA00232323009FE2FF0098E0FF008DDD
|
|
||||||
FF0084D9FF007ED6FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFEFE500FFE9DB00FFE9DB00FFE5D300FFE5D300CD52
|
|
||||||
0800CD520800FEE1CE00FEE1CE00FEE4D8000000000000000000000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE0CD00FED9C300CD520800DC855000DB7C4100E181
|
|
||||||
4700EA915C00F5A77800FEBB9400FFCCAE00FFDCC800FFEFE300F6F8F800CCEA
|
|
||||||
FD008FCDF7005BB5F30036A1EF00CD520800FFD7BF00FFD8C000FFDAC200FFDC
|
|
||||||
C70000000000000000000000000000000000688DA200BBCCD500688DA200DDE6
|
|
||||||
EA00688DA200DDE6EA00BBCCD500BBCCD500BBCCD500688DA200DDE6EA00BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688DA200688D
|
|
||||||
A200BBCCD500BBCCD500688DA200DDE6EA00BBCCD500688DA200688DA200688D
|
|
||||||
A200BBCCD500BBCCD500688DA200688DA200BBCCD500688DA200BBCCD5000000
|
|
||||||
0000F4F9FE00F1F8FD00EFF5FC00EBF5FC00EAF3FA00EAF2FA00E9F2FA007478
|
|
||||||
7D003A3C3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D3F003A3D
|
|
||||||
3F003A3D3F00E9F3FB0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF4ED00FFEFE500FFEFE500FFE9DB00FFE9DB00FFE5D300FFE5D300CD52
|
|
||||||
0800CD520800FEE1CE00FEE1CE00FEE4D800FEE4D800FEB89000FEB89000FECA
|
|
||||||
A900FEFEFE00FEFEFE00FEEBE100FEEBE100FEFDFE00FEFDFE00FEB78C00FEB7
|
|
||||||
8C00FEA16D00FEA16D00FE975C00FE975C000000000000000000000000000000
|
|
||||||
0000FFEFE500FFE8DA00FEDDCB00FDD7C000CD520800DD855100DB7B4000E181
|
|
||||||
4700EB915C00F5A67700FEBB9400FFCCAE00FFDBC700FFEFE400F6F8F900CCEA
|
|
||||||
FD008FCDF7005BB5F30036A1F000CD520800FFD5BB00FFD5BD00FFD8BF00FFDA
|
|
||||||
C20000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500688DA200DDE6EA00BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500100F
|
|
||||||
0E0000000000CFBEB000FFEAD900FFEBDB00FFEBDB00FFECDC00FFEDDD00FFEF
|
|
||||||
E00000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FCFDFE00FBFCFE0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFEEE300FFE7D800FFE7D800FFE3D000FFE3D000CD52
|
|
||||||
0800CD520800FEE4D300FEE4D300FEE1D100FEE1D100FEA67500FEA67500FEF6
|
|
||||||
F100FEEFE900FEEFE900FEEBE200FEEBE200FEFBFA00FEFBFA00FE945900FE94
|
|
||||||
5900FEA97C00FEA97C00FE925000FE925000FEFEFE00FEFEFE00FEB98D00FEC3
|
|
||||||
A100FEC3A100FBBC9200FBBC9200CD520800CD520800FFE3CF00FFE3CF00FFE3
|
|
||||||
CF00FFE3CF00FFE5D100FFE5D100FFE6D5000000000000000000000000000000
|
|
||||||
0000FEEEE400FEE6D800FEDDC800FDD5BC00CD520800DD865200DB7C4200E183
|
|
||||||
4900EA925F00F4A77A00FDBD9500FFCCAE00FFDCC800FFEFE400F6F8F800CDEA
|
|
||||||
FD0090CDF7005DB6F30038A1F000CD520800FFD3B800FFD3BA00FFD6BC00FFD8
|
|
||||||
C00000000000000000000000000000000000BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFF5EE00FFF1E700FFEADD00FFE7D600FFE4D100FFE2CF00FFE2CE00FFE2
|
|
||||||
CF00CFB8A80040393400EFD6C300FFE5D100FFE5D200FFE5D200FFE5D300EFD8
|
|
||||||
C700403A3500BFADA00000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF3EC00FFEEE300FFEEE300FFE7D800FFE7D800FFE3D000FFE3D000CD52
|
|
||||||
0800CD520800FEE4D300FEE4D300FEE1D100FEE1D100FEA67500FEA67500FEF6
|
|
||||||
F100FEEFE900FEEFE900FEEBE200FEEBE200FEFBFA00FEFBFA00FE945900FE94
|
|
||||||
5900FEA97C00FEA97C00FE925000FE925000FEFEFE00FEFEFE00FEB98D00FEC3
|
|
||||||
A100FEC3A100FBBC9200FBBC9200CD520800CD520800FFE3CF00FFE3CF00FFE3
|
|
||||||
CF00FFE3CF00FFE5D100FFE5D100FFE6D500FFE6D50000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD5000000000000000000000000000000
|
|
||||||
0000FEEDE200FEE5D600FDDBC500FDD3BA00CD520800DD885600DD804800E388
|
|
||||||
5000EB976600F5AB8100FDBF9B00FFCEB200FFDECB00FFF0E400F6F8F800CFEB
|
|
||||||
FD0096D0F70064B9F30041A6F000CD520800FED2B700FED3BB00FED5BD00FED8
|
|
||||||
C1000000000000000000000000000000000000000000FFFFFF00000000000000
|
|
||||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFEDE200FFE5D500FFE5D500FFE0CD00FFE0CD00CD52
|
|
||||||
0800CD520800FEEADD00FEEADD00FEC7A700FEC7A700FEC09B00FEC09B00FEFB
|
|
||||||
FB00FEEAE000FEEAE000FEEFE700FEEFE700FEF0EB00FEF0EB00FE844100FE84
|
|
||||||
4100FEA97800FEA97800FEC8AA00FEC8AA00FEFAFA00FEFAFA00FEAF7F00FEBD
|
|
||||||
9A00FEBD9A00FBB07B00FBB07B00CD520800CD520800FFE0CC00FFE0CC00FFE0
|
|
||||||
CC00FFE0CC00FFE1CE00FFE1CE00FFE3D100FFE3D10000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FEECE100FDE3D500FCD9C300FCD1B500CD520800DE8A5700DF885400E593
|
|
||||||
6000EEA17400F8B38D00FEC6A500FFD3BA00FFE1D000FFF2E700F7F8F900D4ED
|
|
||||||
FE00A0D5F80073C0F50054B0F100CD520800FED2B800FDD4BC00FDD7C000FEDA
|
|
||||||
C50000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF2EA00FFEDE200FFEDE200FFE5D500FFE5D500FFE0CD00FFE0CD00CD52
|
|
||||||
0800CD520800FEEADD00FEEADD00FEC7A700FEC7A700FEC09B00FEC09B00FEFB
|
|
||||||
FB00FEEAE000FEEAE000FEEFE700FEEFE700FEF0EB00FEF0EB00FE844100FE84
|
|
||||||
4100FEA97800FEA97800FEC8AA00FEC8AA00FEFAFA00FEFAFA00FEAF7F00FEBD
|
|
||||||
9A00FEBD9A00FBB07B00FBB07B00CD520800CD520800FFE0CC00FFE0CC00FFE0
|
|
||||||
CC00FFE0CC00FFE1CE00FFE1CE00FFE3D100FFE3D10000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200688DA200BBCCD500688DA200BBCCD500688DA200BBCC
|
|
||||||
D500688DA200BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200688D
|
|
||||||
A200688DA200688DA200BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEBE000FDE2D300FCD7C100FCCFB300CD520800E2966A00E3976800EA9F
|
|
||||||
7000F1B28D00F8C1A100FED0B400FFD9C500FFE5D700FFF4EC00F8F6F600DBEC
|
|
||||||
F600B2DAF5008DC6EE0073BCEF00CD520800FDD6BC00FDD9C100FDDCC700FEDF
|
|
||||||
CC0000000000000000000000000000000000FEB08600FEDFCB00FEDFCB00FEF7
|
|
||||||
F300FEE7DA00FEE7DA00FEF0EA00FEF0EA00FEEBE100FEEBE100FE813A00FE81
|
|
||||||
3A00FEAD7800FEAD7800FEE4D900FEE4D900FEE3DB00FEE3DB00FED1B000EFC5
|
|
||||||
B400EFC5B400E99B7300E99B7300CD520800CD520800FFDDC700FFDDC700FFDE
|
|
||||||
C800FFDEC800FFDFCB00FFDFCB00FFE2CE00FFE2CE0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEADF00FCE1D000FBD5BE00FBCCB000CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800CD520800CD520800CD520800CD52
|
|
||||||
0800CD520800CD520800CD520800CD520800FDDAC400FDDFCD00FDE3D300FEE7
|
|
||||||
D80000000000000000000000000000000000FEE3DB00FEE3DB00FED1B000EFC5
|
|
||||||
B400EFC5B400E99B7300E99B7300CD520800CD520800FFDDC700FFDDC700FFDE
|
|
||||||
C800FFDEC800FFDFCB00FFDFCB00FFE2CE00FFE2CE0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000000000000000000000000000000000005BCAFF0058C9FF0056C7FF0053C7
|
|
||||||
FF0051C4FF004DBFFF0049BBFF00214F4A000000000000000000000000000000
|
|
||||||
0000FDE9DE00FCE0CF00FAD4BB00FACAAD00FAC3A400F9C09E00F9BF9C00F9BF
|
|
||||||
9C00F9C09D00F9C09D00FAC09F00FAC1A000FAC1A000F9C1A100F9C2A100FAC3
|
|
||||||
A200FAC5A500FBC7A900FCCCB100FCD4BC00FDDDCA00FDE4D500FDE9DC00FEEC
|
|
||||||
E20000000000000000000000000000000000FFDFCA0000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000000000000000000000000000
|
|
||||||
0000FCE9DD00FBDFCD00FAD2BB00F9C9AB00F9C2A200F8BF9D00F8BE9A00F8BD
|
|
||||||
9A00F8BE9B00F8BE9C00F9BF9D00F8C09D00F9C09E00F9C09F00F9C09F00F9C2
|
|
||||||
A100FAC4A400FBC7A80000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500FFF7
|
|
||||||
EB00FFF7EC00FFF8ED00FFF8EE00FFF8EE00FFF9EF00FFF9F000FFFAF000FFFA
|
|
||||||
F20000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFFBF700FFFAF30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF1E800FFEADE00FFEADE00FFE2D000FFE2D000FFDBC600FFDBC600CD52
|
|
||||||
0800CD520800FEE9DD00FEE9DD00FEA56E000000000000000000000000000000
|
|
||||||
0000FDE9DD00FCE0CF00FAD4BC00F8CAAD00F8C4A400F8C09F00F8BF9D00F9BE
|
|
||||||
9D00F8BF9E00F9C09E00F9C09F00F9C09F00F9C19F00F9C1A000F9C1A000F9C2
|
|
||||||
A200F9C5A500F9C8AB0000000000F9833C00FF985A00FFAC7700FFC195000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFF7F100FFF3EA00FFEEE300FFECDD00CD520800FBE6DA00FBDED100FBD0
|
|
||||||
B900FBD3C000FBC4A300FBB99100FBFAFB00FBF6F600FBE6DA00FB996400FBA8
|
|
||||||
7B00FB823F00FBDCCB0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF1E800FFEADE00FFEADE00FFE2D000FFE2D000FFDBC600FFDBC600CD52
|
|
||||||
0800CD520800FEE9DD00FEE9DD00FEA56E00FEA56E00FEE5D900FEE5D900FEF6
|
|
||||||
F500FEE4D400FEE4D400FEEBE400FEEBE400FEEEE400FEEEE400FE7A3200FE7A
|
|
||||||
3200FEAB7500FEAB7500FED1B800FED1B8000000000000000000000000000000
|
|
||||||
0000FCEADF00FBE2D200FAD6C100F9CEB400F8C8AB00F9C6A700F8C4A500F9C5
|
|
||||||
A500F9C5A500F9C6A500F8C6A600F8C6A700F9C6A800F9C6A700F9C6A800F9C8
|
|
||||||
A900FAC9AC00FACDB10000000000FF9F6400FFB38100FFC89F00000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FEFA
|
|
||||||
FA00FEAF7F00FEBD9A00FBB07B00CD520800FFE0CC00FFE0CC00FFE1CE00FFE3
|
|
||||||
D10000000000DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FFF3EC00FFEEE30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE9DC00FFE0CD00FFE0CD00FED9C300FED9C300CD52
|
|
||||||
0800CD520800FEE4D600FEE4D600FEA16D00FEA16D00FEE9E100FEE9E100FEF6
|
|
||||||
F300FEEBDF00FEEBDF00FEF1EB00FEF1EB00FEF9FB00FEF9FB00FE824200FE82
|
|
||||||
4200FEA96F00FEA96F00FEBC8D00FEBC8D00FEFEFE00FEFEFE00FEFDFE00FEE2
|
|
||||||
D500FEE2D500FBDED200FBDED200CD520800CD520800FFD7BF00FFD7BF00FFD8
|
|
||||||
C000FFD8C000FFDAC200FFDAC200FFDCC7000000000000000000000000000000
|
|
||||||
0000FDEBE200FCE5D700FADCC900FAD5BF00F9D1B800F9CEB400F9CEB300F9CD
|
|
||||||
B300F9CDB300F9CEB300F9CEB400F9CFB500F9CFB500FACFB500FACFB500F9D0
|
|
||||||
B600FAD1B800FAD4BC0000000000FFBA8B00FFCFA90000000000000000000000
|
|
||||||
000000000000000000000000000000000000BBCCD500BBCCD500BBCCD5000000
|
|
||||||
0000FFEFE500FFE8DA00FEDDCB00FDD7C000CD520800FEE4D700FE9F6600FEE9
|
|
||||||
DD00FEF0E900FEE7DB00FEE7DF00FEFEFE00FEA37300FE8B3D00FEC69200FEE0
|
|
||||||
D600FDFEFE00FEE2D30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFF0E700FFE9DC00FFE9DC00FFE0CD00FFE0CD00FED9C300FED9C300CD52
|
|
||||||
0800CD520800FEE4D600FEE4D600FEA16D00FEA16D00FEE9E100FEE9E100FEF6
|
|
||||||
F300FEEBDF00FEEBDF00FEF1EB00FEF1EB00FEF9FB00FEF9FB00FE824200FE82
|
|
||||||
4200FEA96F00FEA96F00FEBC8D00FEBC8D00FEFEFE00FEFEFE00FEFDFE00FEE2
|
|
||||||
D500FEE2D500FBDED200FBDED200CD520800CD520800FFD7BF00FFD7BF00FFD8
|
|
||||||
C000FFD8C000FFDAC200FFDAC200FFDCC700FFDCC70000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD5000000000000000000000000000000
|
|
||||||
0000FDEEE600FCEADF00FCE4D600FBE0CF00FBDDCB00FADBC800FADBC700FADB
|
|
||||||
C700FADBC800FADBC800FADBC800FADCC900FBDCC900FADCC900FADCC900FADC
|
|
||||||
CA00FBDDCB00FBE0CE0000000000FFD6B3000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00DDE6EA000000
|
|
||||||
0000FDEBE000FDE2D30000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFEFE500FFE8DA00FFE8DA00FEDDCB00FEDDCB00FDD7C000FDD7C000CD52
|
|
||||||
0800CD520800FEE4D700FEE4D700FE9F6600FE9F6600FEE9DD00FEE9DD00FEF0
|
|
||||||
E900FEE7DB00FEE7DB00FEE7DF00FEE7DF00FEFEFE00FEFEFE00FEA37300FEA3
|
|
||||||
7300FE8B3D00FE8B3D00FEC69200FEC69200FEE0D600FEE0D600FDFEFE00FEE2
|
|
||||||
D300FEE2D300F1A98A00F1A98A00CD520800CD520800FFD5BB00FFD5BB00FFD5
|
|
||||||
BD00FFD5BD00FFD8BF00FFD8BF00FFDAC200FFDAC20000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA200BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD5000000000000000000000000000000
|
|
||||||
0000FDF1E900FDEEE500FCEAE000FCE8DC00FCE6D900FCE5D800FCE5D700FCE5
|
|
||||||
D700FCE5D700FCE5D700FCE5D800FCE6D800FCE6D800FCE6D900FCE6D900FCE6
|
|
||||||
D900FCE7DA00FCE8DC0000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000DDE6EA00DDE6EA00000000000000
|
|
||||||
0000FFEFE500FFE8DA00FFE8DA00FEDDCB00FEDDCB00FDD7C000FDD7C000CD52
|
|
||||||
0800CD520800FEE4D700FEE4D700FE9F6600FE9F6600FEE9DD00FEE9DD00FEF0
|
|
||||||
E900FEE7DB00FEE7DB00FEE7DF00FEE7DF00FEFEFE00FEFEFE00FEA37300FEA3
|
|
||||||
7300FE8B3D00FE8B3D00FEC69200FEC69200FEE0D600FEE0D600FDFEFE00FEE2
|
|
||||||
D300FEE2D300F1A98A00F1A98A00CD520800CD520800FFD5BB00FFD5BB00FFD5
|
|
||||||
BD00FFD5BD00FFD8BF00FFD8BF00FFDAC200FFDAC20000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA20000000000FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000FE9B6000FEDFCD00FEDFCD00FEF2
|
|
||||||
EF00FEE3D900FEE3D900FEE0D300FEE0D300FEF8F800FEF8F800FEE8E300FEE8
|
|
||||||
E300FE833B00FE833B00FEBB7300FEBB7300FEDFC000FEDFC000F9CEC200FED8
|
|
||||||
CA00FED8CA00FBD2BF00FBD2BF00CD520800CD520800FFD3B800FFD3B800FFD3
|
|
||||||
BA00FFD3BA00FFD6BC00FFD6BC00FFD8C000FFD8C00000000000DDE6EA00DDE6
|
|
||||||
EA00DDE6EA00DDE6EA00DDE6EA00DDE6EA00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00BBCCD500DDE6EA00BBCCD500BBCCD500BBCCD500BBCCD500BBCC
|
|
||||||
D500BBCCD500BBCCD500BBCCD500BBCCD500BBCCD500688DA20000000000FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00424D3E000000000000003E000000
|
|
||||||
2800000080000000200000000100010000000000000200000000000000000000
|
|
||||||
000000000000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E00000F7000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E0000007FFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00000070000000000000000FFFFFF00E0000007000000000000000000000000
|
|
||||||
E0000007000000000000000000000000E000000F000000000000000000000000
|
|
||||||
E000001F000000000000000000000000E000003F000000000000000000000000
|
|
||||||
E000007F000000000000000000000000E00000FFFFFFFF00FFFFFF00FFFFFF00
|
|
||||||
E00001FF10022F031F022F0320FFFF0000000000000000000000000000000000
|
|
||||||
000000000000}
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,509 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Browser;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, ComCtrls, ControlPoint, ToolWin, ImgList, Render, StdCtrls,
|
|
||||||
Cmap, Menus, Global, Buttons;
|
|
||||||
|
|
||||||
const
|
|
||||||
PixelCountMax = 32768;
|
|
||||||
|
|
||||||
type
|
|
||||||
TGradientBrowser = class(TForm)
|
|
||||||
RightPanel: TPanel;
|
|
||||||
SmallImages: TImageList;
|
|
||||||
ListView: TListView;
|
|
||||||
pnlMain: TPanel;
|
|
||||||
PopupMenu: TPopupMenu;
|
|
||||||
DeleteItem: TMenuItem;
|
|
||||||
RenameItem: TMenuItem;
|
|
||||||
btnDefGradient: TSpeedButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
pnlPreview: TPanel;
|
|
||||||
Image: TImage;
|
|
||||||
pnlControls: TPanel;
|
|
||||||
OpenDialog: TOpenDialog;
|
|
||||||
LargeImages: TImageList;
|
|
||||||
procedure ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure DeleteItemClick(Sender: TObject);
|
|
||||||
procedure RenameItemClick(Sender: TObject);
|
|
||||||
procedure ListViewEdited(Sender: TObject; Item: TListItem;
|
|
||||||
var S: string);
|
|
||||||
procedure btnDefGradientClick(Sender: TObject);
|
|
||||||
procedure SpeedButton1Click(Sender: TObject);
|
|
||||||
procedure ListViewKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
private
|
|
||||||
procedure DrawPalette;
|
|
||||||
procedure Apply;
|
|
||||||
public
|
|
||||||
PreviewDensity: double;
|
|
||||||
FlameIndex, GradientIndex: Integer;
|
|
||||||
Extension, Identifier, Filename: string;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Palette: TColorMap;
|
|
||||||
zoom: double;
|
|
||||||
Center: array[0..1] of double;
|
|
||||||
Render: TRenderer;
|
|
||||||
procedure ListFileContents;
|
|
||||||
function LoadFractintMap(filen: string): TColorMap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
type
|
|
||||||
EFormatInvalid = class(Exception);
|
|
||||||
pRGBTripleArray = ^TRGBTripleArray;
|
|
||||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
|
||||||
|
|
||||||
var
|
|
||||||
GradientBrowser: TGradientBrowser;
|
|
||||||
FlameString: string;
|
|
||||||
|
|
||||||
function CreatePalette(strng: string): TColorMap;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Options, Editor, Gradient, Registry, Adjust, Mutate;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
|
|
||||||
procedure RGBBlend(a, b: integer; var Palette: TColorMap);
|
|
||||||
{ Linear blend between to indices of a palette }
|
|
||||||
var
|
|
||||||
c, v: real;
|
|
||||||
vrange, range: real;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
if a = b then
|
|
||||||
begin
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
range := b - a;
|
|
||||||
vrange := Palette[b mod 256][0] - Palette[a mod 256][0];
|
|
||||||
c := Palette[a mod 256][0];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := (a + 1) to (b - 1) do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][0] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][1] - Palette[a mod 256][1];
|
|
||||||
c := Palette[a mod 256][1];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][1] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][2] - Palette[a mod 256][2];
|
|
||||||
c := Palette[a mod 256][2];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][2] := Round(c);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
var
|
|
||||||
p: integer;
|
|
||||||
begin
|
|
||||||
p := Pos('=', token);
|
|
||||||
Delete(Token, 1, p);
|
|
||||||
Result := Token;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{Changes tab characters in a string to spaces}
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to Length(str) do
|
|
||||||
begin
|
|
||||||
if str[i] = #9 then
|
|
||||||
begin
|
|
||||||
Delete(str, i, 1);
|
|
||||||
Insert(#32, str, i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := str;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientBrowser.LoadFractintMap(filen: string): TColorMap;
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
pal: TColorMap;
|
|
||||||
MapFile: TextFile;
|
|
||||||
begin
|
|
||||||
{ Load a map file }
|
|
||||||
AssignFile(MapFile, Filen);
|
|
||||||
try
|
|
||||||
Reset(MapFile);
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Read(MapFile, Pal[i][0]);
|
|
||||||
Read(MapFile, Pal[i][1]);
|
|
||||||
Read(MapFile, Pal[i][2]);
|
|
||||||
Read(MapFile, s);
|
|
||||||
end;
|
|
||||||
CloseFile(MapFile);
|
|
||||||
Result := Pal;
|
|
||||||
except
|
|
||||||
on EInOutError do Application.MessageBox(PChar('Cannot Open File: ' +
|
|
||||||
FileName), PCHAR('Apophysis'), 16);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function CreatePalette(strng: string): TColorMap;
|
|
||||||
{ Loads a palette from a gradient string }
|
|
||||||
var
|
|
||||||
Strings: TStringList;
|
|
||||||
index, i: integer;
|
|
||||||
Tokens: TStringList;
|
|
||||||
Indices, Colors: TStringList;
|
|
||||||
a, b: integer;
|
|
||||||
begin
|
|
||||||
Strings := TStringList.Create;
|
|
||||||
Tokens := TStringList.Create;
|
|
||||||
Indices := TStringList.Create;
|
|
||||||
Colors := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
Strings.Text := strng;
|
|
||||||
if Pos('}', Strings.Text) = 0 then raise EFormatInvalid.Create('No closing brace');
|
|
||||||
if Pos('{', Strings[0]) = 0 then raise EFormatInvalid.Create('No opening brace.');
|
|
||||||
GetTokens(ReplaceTabs(strings.text), tokens);
|
|
||||||
Tokens.Text := Trim(Tokens.text);
|
|
||||||
i := 0;
|
|
||||||
while (Pos('}', Tokens[i]) = 0) and (Pos('opacity:', Lowercase(Tokens[i])) = 0) do
|
|
||||||
begin
|
|
||||||
if Pos('index=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Indices.Add(GetVal(Tokens[i]))
|
|
||||||
else if Pos('color=', LowerCase(Tokens[i])) <> 0 then
|
|
||||||
Colors.Add(GetVal(Tokens[i]));
|
|
||||||
inc(i)
|
|
||||||
end;
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Result[i][0] := 0;
|
|
||||||
Result[i][1] := 0;
|
|
||||||
Result[i][2] := 0;
|
|
||||||
end;
|
|
||||||
if Indices.Count = 0 then raise EFormatInvalid.Create('No color info');
|
|
||||||
for i := 0 to Indices.Count - 1 do
|
|
||||||
begin
|
|
||||||
index := StrToInt(Indices[i]);
|
|
||||||
index := Round(Index * (255 / 399));
|
|
||||||
indices[i] := IntToStr(index);
|
|
||||||
Result[index][0] := StrToInt(Colors[i]) mod 256;
|
|
||||||
Result[index][1] := trunc(StrToInt(Colors[i]) / 256) mod 256;
|
|
||||||
Result[index][2] := trunc(StrToInt(Colors[i]) / 65536);
|
|
||||||
end;
|
|
||||||
i := 1;
|
|
||||||
repeat
|
|
||||||
a := StrToInt(Trim(Indices[i - 1]));
|
|
||||||
b := StrToInt(Trim(Indices[i]));
|
|
||||||
RGBBlend(a, b, Result);
|
|
||||||
inc(i);
|
|
||||||
until i = Indices.Count;
|
|
||||||
if (Indices[0] <> '0') or (Indices[Indices.Count - 1] <> '255') then
|
|
||||||
begin
|
|
||||||
a := StrToInt(Trim(Indices[Indices.Count - 1]));
|
|
||||||
b := StrToInt(Trim(Indices[0])) + 256;
|
|
||||||
RGBBlend(a, b, Result);
|
|
||||||
end;
|
|
||||||
except on EFormatInvalid do
|
|
||||||
begin
|
|
||||||
// Result := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Tokens.Free;
|
|
||||||
Strings.Free;
|
|
||||||
Indices.Free;
|
|
||||||
Colors.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.DrawPalette;
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
BitMap: TBitMap;
|
|
||||||
begin
|
|
||||||
BitMap := TBitMap.Create;
|
|
||||||
try
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 1;
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Palette[i][0];
|
|
||||||
rgbtGreen := Palette[i][1];
|
|
||||||
rgbtBlue := Palette[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
Image.Picture.Graphic := Bitmap;
|
|
||||||
Image.Refresh;
|
|
||||||
finally
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListFileContents;
|
|
||||||
{ List identifiers in file }
|
|
||||||
var
|
|
||||||
i, p: integer;
|
|
||||||
Title: string;
|
|
||||||
ListItem: TListItem;
|
|
||||||
FStrings: TStringList;
|
|
||||||
begin
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
FStrings.LoadFromFile(filename);
|
|
||||||
try
|
|
||||||
ListView.Items.BeginUpdate;
|
|
||||||
ListView.Items.Clear;
|
|
||||||
if Lowercase(ExtractFileExt(filename)) = '.map' then
|
|
||||||
begin
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
Listitem.Caption := Trim(filename);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if (Pos('{', FStrings.Text) <> 0) then
|
|
||||||
begin
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
begin
|
|
||||||
p := Pos('{', FStrings[i]);
|
|
||||||
if (p <> 0) and (Pos('(3D)', FStrings[i]) = 0) then
|
|
||||||
begin
|
|
||||||
Title := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
if Title <> '' then
|
|
||||||
begin { Otherwise bad format }
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
Listitem.Caption := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ListView.Items.EndUpdate;
|
|
||||||
ListView.Selected := ListView.Items[0];
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
var
|
|
||||||
Tokens, FStrings: TStringList;
|
|
||||||
EntryStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
Application.ProcessMessages;
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
EntryStrings := TStringList.Create;
|
|
||||||
Tokens := TStringList.Create;
|
|
||||||
try
|
|
||||||
if Lowercase(ExtractFileExt(filename)) = '.map' then
|
|
||||||
begin
|
|
||||||
Palette := LoadFractintMap(filename);
|
|
||||||
DrawPalette;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if (ListView.SelCount <> 0) and (ListView.Selected.Caption <> Identifier) then
|
|
||||||
begin
|
|
||||||
Identifier := ListView.Selected.Caption;
|
|
||||||
FStrings.LoadFromFile(Filename);
|
|
||||||
for i := 0 to FStrings.count - 1 do
|
|
||||||
if Pos(Lowercase(ListView.Selected.Caption) + ' ', Trim(Lowercase(FStrings[i]))) = 1 then break;
|
|
||||||
EntryStrings.Add(FStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
EntryStrings.Add(FStrings[i]);
|
|
||||||
until Pos('}', FStrings[i]) <> 0;
|
|
||||||
Palette := CreatePalette(EntryStrings.Text);
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
EntryStrings.Free;
|
|
||||||
FStrings.Free;
|
|
||||||
Tokens.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
PreviewDensity := prevMediumQuality;
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
cp.gamma := defGamma;
|
|
||||||
cp.brightness := defBrightness;
|
|
||||||
cp.vibrancy := defVibrancy;
|
|
||||||
cp.spatial_oversample := defOversample;
|
|
||||||
cp.spatial_filter_radius := defFilterRadius;
|
|
||||||
Render := TRenderer.Create;
|
|
||||||
FlameIndex := 0;
|
|
||||||
GradientIndex := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Render.Free;
|
|
||||||
cp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Browser', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
GradientBrowser.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
GradientBrowser.Top := Registry.ReadInteger('Top');
|
|
||||||
if Registry.ValueExists('Width') then
|
|
||||||
GradientBrowser.Width := Registry.ReadInteger('Width');
|
|
||||||
if Registry.ValueExists('Height') then
|
|
||||||
GradientBrowser.Height := Registry.ReadInteger('Height');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
if FileExists(filename) then ListFileContents;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.DeleteItemClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
c: boolean;
|
|
||||||
begin
|
|
||||||
if ListView.SelCount <> 0 then
|
|
||||||
begin
|
|
||||||
if ConfirmDelete then
|
|
||||||
c := Application.MessageBox(
|
|
||||||
PChar('Are you sure you want to permanently delete' + ' "'
|
|
||||||
+ ListView.Selected.Caption + '"'), 'Apophysis', 36) = IDYES
|
|
||||||
else
|
|
||||||
c := True;
|
|
||||||
if c then
|
|
||||||
if ListView.Focused and (ListView.SelCount <> 0) then
|
|
||||||
begin
|
|
||||||
Application.ProcessMessages;
|
|
||||||
if DeleteEntry(ListView.Selected.Caption, Filename) then
|
|
||||||
begin
|
|
||||||
ListView.Items.Delete(ListView.Selected.Index);
|
|
||||||
ListView.Selected := ListView.ItemFocused;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.RenameItemClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if ListView.SelCount <> 0 then
|
|
||||||
ListView.Items[ListView.Selected.Index].EditCaption;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewEdited(Sender: TObject; Item: TListItem;
|
|
||||||
var S: string);
|
|
||||||
begin
|
|
||||||
// if s <> Item.Caption then
|
|
||||||
// if not RenameIFS(Item.Caption, s, Filename) then
|
|
||||||
// s := Item.Caption;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.btnDefGradientClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenDialog.InitialDir := BrowserPath;
|
|
||||||
OpenDialog.FileName := '';
|
|
||||||
if OpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
Filename := OpenDialog.FileName;
|
|
||||||
GradientFile := Filename;
|
|
||||||
BrowserPath := ExtractFilePath(OpenDialog.FileName);
|
|
||||||
ListFileContents;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.Apply;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.cmap := Palette;
|
|
||||||
gradientForm.UpdateGradient(Palette);
|
|
||||||
if EditForm.Visible then EditForm.UpdateDisplay;
|
|
||||||
// if AdjustForm.Visible then AdjustForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.SpeedButton1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.ListViewKeyPress(Sender: TObject;
|
|
||||||
var Key: Char);
|
|
||||||
begin
|
|
||||||
if Key = #13 then Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientBrowser.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Browser', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', GradientBrowser.Top);
|
|
||||||
Registry.WriteInteger('Left', GradientBrowser.Left);
|
|
||||||
Registry.WriteInteger('Width', GradientBrowser.Width);
|
|
||||||
Registry.WriteInteger('Height', GradientBrowser.Height);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,646 +0,0 @@
|
|||||||
object EditForm: TEditForm
|
|
||||||
Left = 516
|
|
||||||
Top = 218
|
|
||||||
Width = 582
|
|
||||||
Height = 471
|
|
||||||
Caption = 'Editor'
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00000000000000000000000000000000000000FFFF000000
|
|
||||||
00000000000000000000000000000000000000000000FFFF0000000000000000
|
|
||||||
0000000000000000000000000000FFFF00000000000000000000000000000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF0000FF0000FF
|
|
||||||
00FFFF0000FF0000FF0000FF0000FF0000FF00000000FFFF0000000000000000
|
|
||||||
000000000000000000FF00000000000000000000FFFF0000000000000000FF00
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
00000000000000FFFF0000FF00000000000000000000FFFF0000000000000000
|
|
||||||
000000000000000000FF0000000000000000000000000000FF00FFFF00000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
0000000000FF00000000000000FFFF00000000000000FFFF0000000000000000
|
|
||||||
000000000000000000FF0000000000000000FF00000000000000000000000000
|
|
||||||
FFFF00000000FFFF0000000000000000000000000000000000FF0000000000FF
|
|
||||||
00000000000000000000000000000000000000FFFF00FFFF0000000000000000
|
|
||||||
000000000000000000FF0000FF00000000000000000000000000000000000000
|
|
||||||
000000000000FFFF0000000000000000000000000000000000FF000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800100008001000080010000800100008001000080010000800100008001
|
|
||||||
0000800100008001000080010000800100008001000080010000FFFF0000}
|
|
||||||
KeyPreview = True
|
|
||||||
OldCreateOrder = True
|
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnResize = FormResize
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object GrphPnl: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 394
|
|
||||||
Height = 422
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object GraphImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 392
|
|
||||||
Height = 420
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = EditPopup
|
|
||||||
OnDblClick = GraphImageDblClick
|
|
||||||
OnMouseDown = GraphImageMouseDown
|
|
||||||
OnMouseMove = GraphImageMouseMove
|
|
||||||
OnMouseUp = GraphImageMouseUp
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object StatusBar: TStatusBar
|
|
||||||
Left = 0
|
|
||||||
Top = 422
|
|
||||||
Width = 574
|
|
||||||
Height = 15
|
|
||||||
Panels = <
|
|
||||||
item
|
|
||||||
Width = 60
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 60
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 150
|
|
||||||
end>
|
|
||||||
SimplePanel = False
|
|
||||||
end
|
|
||||||
object ControlPanel: TPanel
|
|
||||||
Left = 394
|
|
||||||
Top = 0
|
|
||||||
Width = 180
|
|
||||||
Height = 422
|
|
||||||
Align = alRight
|
|
||||||
Alignment = taLeftJustify
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 2
|
|
||||||
DesignSize = (
|
|
||||||
180
|
|
||||||
422)
|
|
||||||
object lblTransform: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 128
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Transform'
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
end
|
|
||||||
object PrevPnl: TPanel
|
|
||||||
Left = 10
|
|
||||||
Top = 0
|
|
||||||
Width = 162
|
|
||||||
Height = 122
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Caption = 'PrevPnl'
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
object PreviewImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 160
|
|
||||||
Height = 120
|
|
||||||
Align = alClient
|
|
||||||
IncrementalDisplay = True
|
|
||||||
PopupMenu = QualityPopup
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object cbTransforms: TComboBox
|
|
||||||
Left = 75
|
|
||||||
Top = 125
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = cbTransformsChange
|
|
||||||
end
|
|
||||||
object PageControl: TPageControl
|
|
||||||
Left = 10
|
|
||||||
Top = 148
|
|
||||||
Width = 167
|
|
||||||
Height = 277
|
|
||||||
ActivePage = TabSheet2
|
|
||||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
|
||||||
MultiLine = True
|
|
||||||
TabIndex = 3
|
|
||||||
TabOrder = 2
|
|
||||||
TabStop = False
|
|
||||||
object TabSheet1: TTabSheet
|
|
||||||
Caption = 'Triangle'
|
|
||||||
object Label7: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 12
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Ax:'
|
|
||||||
end
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 36
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Ay:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 60
|
|
||||||
Width = 16
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Bx:'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 84
|
|
||||||
Width = 16
|
|
||||||
Height = 13
|
|
||||||
Caption = 'By:'
|
|
||||||
end
|
|
||||||
object Label11: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 108
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Cx:'
|
|
||||||
end
|
|
||||||
object Label12: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 132
|
|
||||||
Width = 17
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Cy:'
|
|
||||||
end
|
|
||||||
object txtAx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtAy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 32
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtBx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 56
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtBy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 80
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtCx: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 104
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object txtCy: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 128
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
AutoSelect = False
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CornerEditExit
|
|
||||||
OnKeyPress = CornerEditKeyPress
|
|
||||||
end
|
|
||||||
object chkPreserve: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 168
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Preserve weights'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 6
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object XForm: TTabSheet
|
|
||||||
Caption = 'Transform'
|
|
||||||
object lbla: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 12
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'a:'
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 36
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'b:'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 60
|
|
||||||
Width = 9
|
|
||||||
Height = 13
|
|
||||||
Caption = 'c:'
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 84
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'd:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 108
|
|
||||||
Width = 10
|
|
||||||
Height = 13
|
|
||||||
Caption = 'e:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 132
|
|
||||||
Width = 8
|
|
||||||
Height = 13
|
|
||||||
Caption = 'f:'
|
|
||||||
end
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 156
|
|
||||||
Width = 38
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Weight:'
|
|
||||||
end
|
|
||||||
object Label29: TLabel
|
|
||||||
Left = 9
|
|
||||||
Top = 180
|
|
||||||
Width = 52
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Symmetry:'
|
|
||||||
end
|
|
||||||
object txtA: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtB: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 32
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtC: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 56
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtD: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 80
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 3
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtE: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 104
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtF: TEdit
|
|
||||||
Left = 32
|
|
||||||
Top = 128
|
|
||||||
Width = 110
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 5
|
|
||||||
Text = '0'
|
|
||||||
OnExit = CoefExit
|
|
||||||
OnKeyPress = CoefKeyPress
|
|
||||||
end
|
|
||||||
object txtP: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 152
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 6
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtPExit
|
|
||||||
OnKeyPress = txtPKeyPress
|
|
||||||
end
|
|
||||||
object txtSymmetry: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 176
|
|
||||||
Width = 70
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 7
|
|
||||||
Text = '0'
|
|
||||||
OnExit = txtSymmetryExit
|
|
||||||
OnKeyPress = txtSymmetryKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object TabSheet3: TTabSheet
|
|
||||||
Caption = 'Variations'
|
|
||||||
object VEVars: TValueListEditor
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 159
|
|
||||||
Height = 231
|
|
||||||
Align = alClient
|
|
||||||
ScrollBars = ssVertical
|
|
||||||
TabOrder = 0
|
|
||||||
TitleCaptions.Strings = (
|
|
||||||
'Variation'
|
|
||||||
'Value')
|
|
||||||
OnExit = VEVarsExit
|
|
||||||
OnKeyPress = VEVarsKeyPress
|
|
||||||
OnValidate = VEVarsValidate
|
|
||||||
ColWidths = (
|
|
||||||
93
|
|
||||||
60)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object TabSheet2: TTabSheet
|
|
||||||
Caption = 'Colors'
|
|
||||||
ImageIndex = 3
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 0
|
|
||||||
Width = 145
|
|
||||||
Height = 73
|
|
||||||
Caption = 'Transform color'
|
|
||||||
TabOrder = 0
|
|
||||||
object scrlXFormColor: TScrollBar
|
|
||||||
Left = 8
|
|
||||||
Top = 48
|
|
||||||
Width = 129
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 10
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = scrlXFormColorChange
|
|
||||||
OnScroll = scrlXFormColorScroll
|
|
||||||
end
|
|
||||||
object pnlXFormColor: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Width = 65
|
|
||||||
Height = 25
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object txtXFormColor: TEdit
|
|
||||||
Left = 80
|
|
||||||
Top = 16
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 2
|
|
||||||
OnExit = txtXFormColorExit
|
|
||||||
OnKeyPress = txtXFormColorKeyPress
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 80
|
|
||||||
Width = 145
|
|
||||||
Height = 137
|
|
||||||
Caption = 'Graph'
|
|
||||||
TabOrder = 1
|
|
||||||
object Label20: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 56
|
|
||||||
Width = 82
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Background color'
|
|
||||||
end
|
|
||||||
object Label21: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 96
|
|
||||||
Width = 89
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Reference triangle'
|
|
||||||
end
|
|
||||||
object pnlBackColor: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 72
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clBlack
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = pnlBackColorClick
|
|
||||||
end
|
|
||||||
object chkUseXFormColor: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 16
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Use transform color'
|
|
||||||
TabOrder = 1
|
|
||||||
OnClick = chkUseXFormColorClick
|
|
||||||
end
|
|
||||||
object chkFlameBack: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 36
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Use flame background'
|
|
||||||
TabOrder = 2
|
|
||||||
OnClick = chkFlameBackClick
|
|
||||||
end
|
|
||||||
object pnlReference: TPanel
|
|
||||||
Left = 8
|
|
||||||
Top = 112
|
|
||||||
Width = 129
|
|
||||||
Height = 17
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
Color = clGray
|
|
||||||
TabOrder = 3
|
|
||||||
OnClick = pnlReferenceClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object EditPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 312
|
|
||||||
Top = 8
|
|
||||||
object mnuAutoZoom: TMenuItem
|
|
||||||
Caption = 'Auto Zoom'
|
|
||||||
Hint = 'Zooms the triangle display to the best fit.'
|
|
||||||
OnClick = mnuAutoZoomClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuDelete: TMenuItem
|
|
||||||
Caption = 'Delete'
|
|
||||||
Hint = 'Deletes the selected triangle.'
|
|
||||||
ImageIndex = 9
|
|
||||||
OnClick = mnuDeleteClick
|
|
||||||
end
|
|
||||||
object mnuDuplicate: TMenuItem
|
|
||||||
Caption = 'Duplicate'
|
|
||||||
Hint = 'Duplicates the selected triangle.'
|
|
||||||
OnClick = mnuDupClick
|
|
||||||
end
|
|
||||||
object MenuItem2: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuAdd: TMenuItem
|
|
||||||
Caption = 'Add'
|
|
||||||
Hint = 'Adds a new triangle.'
|
|
||||||
OnClick = mnuAddClick
|
|
||||||
end
|
|
||||||
object N4: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuFlipVertical: TMenuItem
|
|
||||||
Caption = 'Flip Vertical'
|
|
||||||
OnClick = mnuFlipVerticalClick
|
|
||||||
end
|
|
||||||
object mnuFlipHorizontal: TMenuItem
|
|
||||||
Caption = 'Flip Horizontal'
|
|
||||||
OnClick = mnuFlipHorizontalClick
|
|
||||||
end
|
|
||||||
object N5: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuVerticalFlipAll: TMenuItem
|
|
||||||
Caption = 'Flip All Vertical '
|
|
||||||
OnClick = mnuVerticalFlipAllClick
|
|
||||||
end
|
|
||||||
object mnuHorizintalFlipAll: TMenuItem
|
|
||||||
Caption = 'Flip All Horizontal'
|
|
||||||
OnClick = mnuHorizintalFlipAllClick
|
|
||||||
end
|
|
||||||
object MenuItem1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuLockSel: TMenuItem
|
|
||||||
Caption = 'Lock'
|
|
||||||
OnClick = mnuLockClick
|
|
||||||
end
|
|
||||||
object N6: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuUndo: TMenuItem
|
|
||||||
Caption = 'Undo'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 4
|
|
||||||
ShortCut = 16474
|
|
||||||
OnClick = mnuUndoClick
|
|
||||||
end
|
|
||||||
object mnuRedo: TMenuItem
|
|
||||||
Caption = 'Redo'
|
|
||||||
Enabled = False
|
|
||||||
ImageIndex = 5
|
|
||||||
ShortCut = 16473
|
|
||||||
OnClick = mnuRedoClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object QualityPopup: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 344
|
|
||||||
Top = 8
|
|
||||||
object mnuLowQuality: TMenuItem
|
|
||||||
Caption = 'Low Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuLowQualityClick
|
|
||||||
end
|
|
||||||
object mnuMediumQuality: TMenuItem
|
|
||||||
Caption = 'Medium Quality'
|
|
||||||
Checked = True
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuMediumQualityClick
|
|
||||||
end
|
|
||||||
object mnuHighQuality: TMenuItem
|
|
||||||
Caption = 'High Quality'
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHighQualityClick
|
|
||||||
end
|
|
||||||
object N3: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuResetLocation: TMenuItem
|
|
||||||
Caption = 'Reset Location'
|
|
||||||
Checked = True
|
|
||||||
OnClick = mnuResetLocationClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
File diff suppressed because it is too large
Load Diff
@ -1,344 +0,0 @@
|
|||||||
object ExportDialog: TExportDialog
|
|
||||||
Left = 313
|
|
||||||
Top = 276
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Export Flame'
|
|
||||||
ClientHeight = 270
|
|
||||||
ClientWidth = 424
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poScreenCenter
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object btnOK: TButton
|
|
||||||
Left = 336
|
|
||||||
Top = 178
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&OK'
|
|
||||||
Default = True
|
|
||||||
ModalResult = 1
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = btnOKClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 336
|
|
||||||
Top = 210
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Cancel'
|
|
||||||
ModalResult = 2
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 5
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Destination'
|
|
||||||
TabOrder = 2
|
|
||||||
object btnBrowse: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 16
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Browse...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnBrowseClick
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 48
|
|
||||||
Height = 13
|
|
||||||
Caption = 'File name:'
|
|
||||||
end
|
|
||||||
object txtFilename: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 20
|
|
||||||
Width = 281
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'txtFilename'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox3: TGroupBox
|
|
||||||
Left = 216
|
|
||||||
Top = 66
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 3
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 71
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Oversample:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Filter Radius:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 35
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Quality:'
|
|
||||||
end
|
|
||||||
object txtOversample: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 68
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '2'
|
|
||||||
OnChange = txtOversampleChange
|
|
||||||
end
|
|
||||||
object txtFilterRadius: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtFilterRadiusChange
|
|
||||||
end
|
|
||||||
object txtDensity: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = txtDensityChange
|
|
||||||
end
|
|
||||||
object udOversample: TUpDown
|
|
||||||
Left = 169
|
|
||||||
Top = 68
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtOversample
|
|
||||||
Min = 1
|
|
||||||
Max = 4
|
|
||||||
Position = 2
|
|
||||||
TabOrder = 3
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 66
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Size'
|
|
||||||
TabOrder = 4
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 28
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Width'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Height:'
|
|
||||||
end
|
|
||||||
object chkMaintain: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 76
|
|
||||||
Width = 161
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Maintain aspect ratio'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkMaintainClick
|
|
||||||
end
|
|
||||||
object cbWidth: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtWidthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'320'
|
|
||||||
'640'
|
|
||||||
'800'
|
|
||||||
'1024'
|
|
||||||
'1280'
|
|
||||||
'1600'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
object cbHeight: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = txtHeightChange
|
|
||||||
Items.Strings = (
|
|
||||||
'200'
|
|
||||||
'240'
|
|
||||||
'480'
|
|
||||||
'600'
|
|
||||||
'768'
|
|
||||||
'1024'
|
|
||||||
'1200'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox4: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 176
|
|
||||||
Width = 313
|
|
||||||
Height = 89
|
|
||||||
Caption = 'Hqi'
|
|
||||||
TabOrder = 5
|
|
||||||
object Label6: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 42
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Batches:'
|
|
||||||
end
|
|
||||||
object Label7: TLabel
|
|
||||||
Left = 152
|
|
||||||
Top = 23
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Buffer depth:'
|
|
||||||
end
|
|
||||||
object Label8: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 55
|
|
||||||
Width = 29
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Strips:'
|
|
||||||
end
|
|
||||||
object txtBatches: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = '1'
|
|
||||||
OnChange = txtBatchesChange
|
|
||||||
end
|
|
||||||
object udBatches: TUpDown
|
|
||||||
Left = 121
|
|
||||||
Top = 20
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtBatches
|
|
||||||
Min = 1
|
|
||||||
Max = 10000
|
|
||||||
Position = 1
|
|
||||||
TabOrder = 1
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
object cmbDepth: TComboBox
|
|
||||||
Left = 224
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = cmbDepthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'16 bits'
|
|
||||||
'32 bits'
|
|
||||||
'64 bits')
|
|
||||||
end
|
|
||||||
object chkRender: TCheckBox
|
|
||||||
Left = 224
|
|
||||||
Top = 54
|
|
||||||
Width = 65
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Render'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object txtStrips: TEdit
|
|
||||||
Left = 64
|
|
||||||
Top = 52
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 4
|
|
||||||
Text = '1'
|
|
||||||
OnChange = txtBatchesChange
|
|
||||||
end
|
|
||||||
object udStrips: TUpDown
|
|
||||||
Left = 121
|
|
||||||
Top = 52
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtStrips
|
|
||||||
Min = 1
|
|
||||||
Max = 512
|
|
||||||
Position = 1
|
|
||||||
TabOrder = 5
|
|
||||||
Wrap = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'jpg'
|
|
||||||
Filter =
|
|
||||||
'JPEG Image (*.jpg)|*.jpg|PPM Image (*.ppm)|*.ppm|PNG Images (*.p' +
|
|
||||||
'ng)|*.png'
|
|
||||||
Left = 392
|
|
||||||
Top = 24
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,216 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormExport;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, Buttons, ComCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TExportDialog = class(TForm)
|
|
||||||
btnOK: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
btnBrowse: TSpeedButton;
|
|
||||||
Label10: TLabel;
|
|
||||||
txtFilename: TEdit;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
GroupBox3: TGroupBox;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
txtOversample: TEdit;
|
|
||||||
txtFilterRadius: TEdit;
|
|
||||||
txtDensity: TEdit;
|
|
||||||
udOversample: TUpDown;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
chkMaintain: TCheckBox;
|
|
||||||
cbWidth: TComboBox;
|
|
||||||
cbHeight: TComboBox;
|
|
||||||
GroupBox4: TGroupBox;
|
|
||||||
Label6: TLabel;
|
|
||||||
txtBatches: TEdit;
|
|
||||||
udBatches: TUpDown;
|
|
||||||
Label7: TLabel;
|
|
||||||
cmbDepth: TComboBox;
|
|
||||||
chkRender: TCheckBox;
|
|
||||||
Label8: TLabel;
|
|
||||||
txtStrips: TEdit;
|
|
||||||
udStrips: TUpDown;
|
|
||||||
procedure btnBrowseClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure txtWidthChange(Sender: TObject);
|
|
||||||
procedure chkMaintainClick(Sender: TObject);
|
|
||||||
procedure txtHeightChange(Sender: TObject);
|
|
||||||
procedure txtDensityChange(Sender: TObject);
|
|
||||||
procedure txtFilterRadiusChange(Sender: TObject);
|
|
||||||
procedure txtOversampleChange(Sender: TObject);
|
|
||||||
procedure txtBatchesChange(Sender: TObject);
|
|
||||||
procedure cmbDepthChange(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
Filename: string;
|
|
||||||
ImageWidth, ImageHeight, Oversample, Batches, Strips: Integer;
|
|
||||||
Sample_Density, Filter_Radius: double;
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
ExportDialog: TExportDialog;
|
|
||||||
Ratio: double;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
uses Global, Main;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TExportDialog.btnBrowseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.InitialDir := ExtractFileDir(txtFilename.text);
|
|
||||||
SaveDialog.Filename := txtFilename.Text;
|
|
||||||
case ExportFileFormat of
|
|
||||||
0: SaveDialog.DefaultExt := 'jpg';
|
|
||||||
1: SaveDialog.DefaultExt := 'ppm';
|
|
||||||
end;
|
|
||||||
SaveDialog.filterIndex := ExportFileFormat;
|
|
||||||
SaveDialog.Filter := 'JPEG image (*.jpg) |*.jpg|PPM image (*.ppm)|*.ppm|PNG Image (*.png)|*.png';
|
|
||||||
if SaveDialog.Execute then
|
|
||||||
begin
|
|
||||||
case SaveDialog.FilterIndex of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.ppm');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
end;
|
|
||||||
ExportFileFormat := SaveDialog.FilterIndex;
|
|
||||||
renderPath := ExtractFilePath(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
txtFilename.Text := Filename;
|
|
||||||
cbWidth.Text := IntToStr(MainCp.Width);
|
|
||||||
cbHeight.Text := IntToStr(MainCp.Height);
|
|
||||||
ImageWidth := MainCp.Width;
|
|
||||||
ImageHeight := MainCp.Height;
|
|
||||||
txtDensity.text := FloatToStr(Sample_density);
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4));
|
|
||||||
txtFilterRadius.text := FloatToStr(Filter_Radius);
|
|
||||||
txtOversample.text := IntToSTr(Oversample);
|
|
||||||
udOversample.Position := Oversample;
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Filename := txtFilename.text;
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtWidthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
if chkMaintain.checked and cbWidth.Focused then
|
|
||||||
begin
|
|
||||||
ImageHeight := Round(ImageWidth / ratio);
|
|
||||||
cbHeight.Text := IntToStr(ImageHeight)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.chkMaintainClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtHeightChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
if chkMaintain.checked and cbHeight.Focused then
|
|
||||||
begin
|
|
||||||
ImageWidth := Round(ImageHeight * ratio);
|
|
||||||
cbWidth.Text := IntToStr(ImageWidth)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtDensityChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Sample_Density := StrToFloat(txtDensity.Text);
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4));
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtFilterRadiusChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Filter_Radius := StrToFloat(txtFilterRadius.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtOversampleChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtOversample.Text) > udOversample.Max then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Max);
|
|
||||||
if StrToInt(txtOversample.Text) < udOversample.Min then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Min);
|
|
||||||
try
|
|
||||||
Oversample := StrToInt(txtOversample.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.txtBatchesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtBatches.Text) > udBatches.Max then
|
|
||||||
txtBatches.Text := IntToStr(udBatches.Max);
|
|
||||||
if StrToInt(txtBatches.Text) < udBatches.Min then
|
|
||||||
txtBatches.Text := IntToStr(udBatches.Min);
|
|
||||||
try
|
|
||||||
Batches := StrToInt(txtBatches.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TExportDialog.cmbDepthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if cmbDepth.ItemIndex <> 2 then
|
|
||||||
txtBatches.text := IntToStr(Round(Sample_density / 4))
|
|
||||||
else
|
|
||||||
txtBatches.text := IntToStr(1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
object FavoritesForm: TFavoritesForm
|
|
||||||
Left = 457
|
|
||||||
Top = 267
|
|
||||||
BorderStyle = bsDialog
|
|
||||||
Caption = 'Favorite Scripts'
|
|
||||||
ClientHeight = 237
|
|
||||||
ClientWidth = 303
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
Position = poScreenCenter
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object PageControl1: TPageControl
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 289
|
|
||||||
Height = 193
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object ListView: TListView
|
|
||||||
Left = 16
|
|
||||||
Top = 16
|
|
||||||
Width = 193
|
|
||||||
Height = 177
|
|
||||||
Columns = <
|
|
||||||
item
|
|
||||||
Caption = 'Name'
|
|
||||||
Width = 189
|
|
||||||
end>
|
|
||||||
HideSelection = False
|
|
||||||
ReadOnly = True
|
|
||||||
RowSelect = True
|
|
||||||
ShowColumnHeaders = False
|
|
||||||
TabOrder = 1
|
|
||||||
ViewStyle = vsReport
|
|
||||||
OnChange = ListViewChange
|
|
||||||
end
|
|
||||||
object btnAdd: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 16
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Add'
|
|
||||||
TabOrder = 2
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnAddClick
|
|
||||||
end
|
|
||||||
object btnRemove: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 48
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Remove'
|
|
||||||
TabOrder = 3
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnRemoveClick
|
|
||||||
end
|
|
||||||
object btnMoveUp: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 80
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Move &Up'
|
|
||||||
TabOrder = 4
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnMoveUpClick
|
|
||||||
end
|
|
||||||
object btnMoveDown: TButton
|
|
||||||
Left = 216
|
|
||||||
Top = 112
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Move &Down'
|
|
||||||
TabOrder = 5
|
|
||||||
TabStop = False
|
|
||||||
OnClick = btnMoveDownClick
|
|
||||||
end
|
|
||||||
object btnOK: TButton
|
|
||||||
Left = 144
|
|
||||||
Top = 208
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&OK'
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = btnOKClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 224
|
|
||||||
Top = 208
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = '&Cancel'
|
|
||||||
TabOrder = 7
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,206 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormFavorites;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, ComCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TFavoritesForm = class(TForm)
|
|
||||||
PageControl1: TPageControl;
|
|
||||||
ListView: TListView;
|
|
||||||
btnAdd: TButton;
|
|
||||||
btnRemove: TButton;
|
|
||||||
btnMoveUp: TButton;
|
|
||||||
btnMoveDown: TButton;
|
|
||||||
btnOK: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure btnOKClick(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure btnAddClick(Sender: TObject);
|
|
||||||
procedure btnRemoveClick(Sender: TObject);
|
|
||||||
procedure ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
procedure btnMoveUpClick(Sender: TObject);
|
|
||||||
procedure btnMoveDownClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
Faves: TStringList;
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
FavoritesForm: TFavoritesForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Global, ScriptForm;
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
ListItem: TListItem;
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
Faves.Text := Favorites.text;
|
|
||||||
ListView.Items.Clear;
|
|
||||||
for i := 0 to Favorites.Count - 1 do
|
|
||||||
begin
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
s := ExtractFileName(Favorites[i]);
|
|
||||||
s := Copy(s, 0, length(s) - 4);
|
|
||||||
Listitem.Caption := s;
|
|
||||||
end;
|
|
||||||
if Favorites.Count <> 0 then ListView.Selected := ListView.Items[0];
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Close
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnOKClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ModalResult := mrOK;
|
|
||||||
Faves.SaveToFile(AppPath + 'favorites');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Faves := TStringList.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Faves.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnAddClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
ListItem: TListItem;
|
|
||||||
i : integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
ScriptEditor.MainOpenDialog.InitialDir := ScriptPath;
|
|
||||||
if ScriptEditor.mainOpenDialog.Execute then
|
|
||||||
begin
|
|
||||||
for i := 0 to Faves.Count - 1 do
|
|
||||||
begin
|
|
||||||
if ScriptEditor.MainOpenDialog.Filename = Faves[i] then exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Faves.add(ScriptEditor.MainOpenDialog.Filename);
|
|
||||||
ListItem := ListView.Items.Add;
|
|
||||||
s := ExtractFileName(ScriptEditor.MainOpenDialog.Filename);
|
|
||||||
s := Copy(s, 0, length(s) - 4);
|
|
||||||
Listitem.Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[ListView.Items.Count - 1];
|
|
||||||
btnRemove.Enabled := True;
|
|
||||||
end;
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnRemoveClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
Faves.Delete(i);
|
|
||||||
ListView.Items[i].delete;
|
|
||||||
if ListView.Items.Count <> 0 then
|
|
||||||
if i < ListView.Items.Count then
|
|
||||||
ListView.Selected := ListView.Items[i]
|
|
||||||
else
|
|
||||||
ListView.Selected := ListView.Items[ListView.Items.Count - 1]
|
|
||||||
else
|
|
||||||
btnRemove.Enabled := False;
|
|
||||||
if ListView.Items.Count <= 1 then
|
|
||||||
begin
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.ListViewChange(Sender: TObject; Item: TListItem;
|
|
||||||
Change: TItemChange);
|
|
||||||
begin
|
|
||||||
if (Item.Index = ListView.Items.Count - 1) then
|
|
||||||
btnMoveDown.Enabled := False
|
|
||||||
else
|
|
||||||
btnMoveDown.Enabled := True;
|
|
||||||
if (Item.Index = 0) then
|
|
||||||
btnMoveUp.Enabled := False
|
|
||||||
else
|
|
||||||
btnMoveUp.Enabled := True;
|
|
||||||
|
|
||||||
if (ListView.Items.Count <= 1) then
|
|
||||||
begin
|
|
||||||
btnMoveDown.Enabled := False;
|
|
||||||
btnMoveUp.Enabled := False;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnMoveUpClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
s := faves[i];
|
|
||||||
Faves[i] := Faves[i - 1];
|
|
||||||
Faves[i - 1] := s;
|
|
||||||
s := ListView.Selected.Caption;
|
|
||||||
ListView.Selected.Caption := Listview.Items[i - 1].Caption;
|
|
||||||
ListView.Items[i - 1].Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[i - 1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFavoritesForm.btnMoveDownClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
s: string;
|
|
||||||
begin
|
|
||||||
i := ListView.Selected.Index;
|
|
||||||
s := faves[i];
|
|
||||||
Faves[i] := Faves[i + 1];
|
|
||||||
Faves[i + 1] := s;
|
|
||||||
s := ListView.Selected.Caption;
|
|
||||||
ListView.Selected.Caption := Listview.Items[i + 1].Caption;
|
|
||||||
ListView.Items[i + 1].Caption := s;
|
|
||||||
ListView.Selected := ListView.Items[i + 1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,429 +0,0 @@
|
|||||||
object RenderForm: TRenderForm
|
|
||||||
Left = 280
|
|
||||||
Top = 279
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'RenderForm'
|
|
||||||
ClientHeight = 400
|
|
||||||
ClientWidth = 424
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000000000000000000000000000005F97013B5500000000000000
|
|
||||||
0000000000000000000000000000000000000000000000005F97013B55000000
|
|
||||||
000000005F97181818000000000000005F971818180000000000000000000000
|
|
||||||
00000000000000005F97013B55005F97005F97005F971818181A0155005F9700
|
|
||||||
5F97181818000000000000000000000000000000005F97E4F2FB0088D9005F97
|
|
||||||
1A015537BBFD0088D91A0155005F970088D90088D91818180000000000000000
|
|
||||||
00000000005F97005F97E4F2FB0088D985E8FF85E8FF85E8FF37BBFD0088D9E4
|
|
||||||
F2FB181818005F97000000000000000000000000005F97013B55005F9785E8FF
|
|
||||||
37BBFD005F97005F9737BBFD85E8FF0088D9005F97005F970000000000000000
|
|
||||||
00000000013B5585E8FF85E8FF85E8FF005F9737BBFD0088D9005F9785E8FF85
|
|
||||||
E8FFE4F2FB005F97000000000000000000000000000000005F970088D9005F97
|
|
||||||
005F9785E8FF0088D9005F97005F970088D9005F970000000000000000000000
|
|
||||||
00000000000000005F97E8E8E80088D9005F9785E8FF0088D9005F970088D9E4
|
|
||||||
F2FB005F970000000000000000000000000000000000000088D9005F97000000
|
|
||||||
005F9785E8FF0088D9005F970000000088D90088D90000000000000000000000
|
|
||||||
00000000000000000000000000000000005F97E4F2FBE4F2FB005F9700000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000005F97005F970000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000FFFF0000FE7F0000E6670000E0070000C0030000C0030000C0030000C003
|
|
||||||
0000E0070000E0070000E4270000FC3F0000FE7F0000FFFF0000FFFF0000}
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCloseQuery = FormCloseQuery
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object ProgressBar: TProgressBar
|
|
||||||
Left = 8
|
|
||||||
Top = 330
|
|
||||||
Width = 409
|
|
||||||
Height = 13
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object btnRender: TButton
|
|
||||||
Left = 256
|
|
||||||
Top = 352
|
|
||||||
Width = 75
|
|
||||||
Height = 23
|
|
||||||
Caption = 'Render'
|
|
||||||
Default = True
|
|
||||||
TabOrder = 5
|
|
||||||
OnClick = btnRenderClick
|
|
||||||
end
|
|
||||||
object btnCancel: TButton
|
|
||||||
Left = 344
|
|
||||||
Top = 350
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Close'
|
|
||||||
TabOrder = 6
|
|
||||||
OnClick = btnCancelClick
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 69
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Destination'
|
|
||||||
TabOrder = 1
|
|
||||||
object btnBrowse: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 16
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Browse...'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FF000000000000
|
|
||||||
9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF0000009FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCF
|
|
||||||
FF000000FF00FFFF00FF0000009FFFFF9FFFFF9FFFFF0000009FCFFF9FCFFF9F
|
|
||||||
CFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF000000FF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF0000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FF0000009FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9F
|
|
||||||
FFFF9FFFFF9FFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FF0000009FFFFF
|
|
||||||
9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FF0000009FFFFF9FFFFF9FFFFF00000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C0C0CFF00FFFF00FFFF00FF0000
|
|
||||||
00FF00FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF0B0B0B020202000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnBrowseClick
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 48
|
|
||||||
Height = 13
|
|
||||||
Caption = 'File name:'
|
|
||||||
end
|
|
||||||
object txtFilename: TEdit
|
|
||||||
Left = 72
|
|
||||||
Top = 20
|
|
||||||
Width = 281
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'txtFilename'
|
|
||||||
OnChange = txtFilenameChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 130
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Size'
|
|
||||||
TabOrder = 2
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 28
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Width'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 34
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Height:'
|
|
||||||
end
|
|
||||||
object chkMaintain: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 76
|
|
||||||
Width = 161
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Maintain aspect ratio'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkMaintainClick
|
|
||||||
end
|
|
||||||
object cbWidth: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtWidthChange
|
|
||||||
Items.Strings = (
|
|
||||||
'320'
|
|
||||||
'640'
|
|
||||||
'800'
|
|
||||||
'1024'
|
|
||||||
'1280'
|
|
||||||
'1600'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
object cbHeight: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 73
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = txtHeightChange
|
|
||||||
Items.Strings = (
|
|
||||||
'200'
|
|
||||||
'240'
|
|
||||||
'480'
|
|
||||||
'600'
|
|
||||||
'768'
|
|
||||||
'1024'
|
|
||||||
'1200'
|
|
||||||
'2048')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox3: TGroupBox
|
|
||||||
Left = 216
|
|
||||||
Top = 130
|
|
||||||
Width = 200
|
|
||||||
Height = 105
|
|
||||||
Caption = 'Rendering'
|
|
||||||
TabOrder = 3
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 71
|
|
||||||
Width = 59
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Oversample:'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 47
|
|
||||||
Width = 61
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Filter Radius:'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 10
|
|
||||||
Top = 23
|
|
||||||
Width = 35
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Quality:'
|
|
||||||
end
|
|
||||||
object txtOversample: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 68
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 2
|
|
||||||
Text = '2'
|
|
||||||
OnChange = txtOversampleChange
|
|
||||||
end
|
|
||||||
object txtFilterRadius: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = txtFilterRadiusChange
|
|
||||||
end
|
|
||||||
object txtDensity: TEdit
|
|
||||||
Left = 112
|
|
||||||
Top = 20
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = txtDensityChange
|
|
||||||
end
|
|
||||||
object udOversample: TUpDown
|
|
||||||
Left = 169
|
|
||||||
Top = 68
|
|
||||||
Width = 12
|
|
||||||
Height = 21
|
|
||||||
Associate = txtOversample
|
|
||||||
Min = 1
|
|
||||||
Max = 4
|
|
||||||
Position = 2
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox4: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 238
|
|
||||||
Width = 409
|
|
||||||
Height = 81
|
|
||||||
Caption = 'Memory usage'
|
|
||||||
TabOrder = 4
|
|
||||||
object lblApproxMem: TLabel
|
|
||||||
Left = 202
|
|
||||||
Top = 46
|
|
||||||
Width = 119
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Approx. memory required:'
|
|
||||||
end
|
|
||||||
object lblPhysical: TLabel
|
|
||||||
Left = 202
|
|
||||||
Top = 20
|
|
||||||
Width = 121
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Available phycial memory:'
|
|
||||||
end
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 46
|
|
||||||
Width = 86
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Maximum memory:'
|
|
||||||
end
|
|
||||||
object cbMaxMemory: TComboBox
|
|
||||||
Left = 112
|
|
||||||
Top = 44
|
|
||||||
Width = 57
|
|
||||||
Height = 21
|
|
||||||
Enabled = False
|
|
||||||
ItemHeight = 13
|
|
||||||
TabOrder = 1
|
|
||||||
Items.Strings = (
|
|
||||||
'32'
|
|
||||||
'64'
|
|
||||||
'128'
|
|
||||||
'256'
|
|
||||||
'512'
|
|
||||||
'1024'
|
|
||||||
'1536')
|
|
||||||
end
|
|
||||||
object chkLimitMem: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 20
|
|
||||||
Width = 145
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Limit memory usage'
|
|
||||||
TabOrder = 0
|
|
||||||
OnClick = chkLimitMemClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object btnPause: TButton
|
|
||||||
Left = 168
|
|
||||||
Top = 350
|
|
||||||
Width = 75
|
|
||||||
Height = 25
|
|
||||||
Caption = 'Pause'
|
|
||||||
TabOrder = 7
|
|
||||||
OnClick = btnPauseClick
|
|
||||||
end
|
|
||||||
object chkSave: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 354
|
|
||||||
Width = 113
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Save parameters'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 8
|
|
||||||
end
|
|
||||||
object GroupBox5: TGroupBox
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
Width = 408
|
|
||||||
Height = 57
|
|
||||||
Caption = 'Preset'
|
|
||||||
TabOrder = 9
|
|
||||||
object btnSavePreset: TSpeedButton
|
|
||||||
Left = 344
|
|
||||||
Top = 18
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Save Preset'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnSavePresetClick
|
|
||||||
end
|
|
||||||
object btnDeletePreset: TSpeedButton
|
|
||||||
Left = 368
|
|
||||||
Top = 18
|
|
||||||
Width = 24
|
|
||||||
Height = 24
|
|
||||||
Hint = 'Delete Preset'
|
|
||||||
Flat = True
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Arial'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnDeletePresetClick
|
|
||||||
end
|
|
||||||
object cmbPreset: TComboBox
|
|
||||||
Left = 10
|
|
||||||
Top = 20
|
|
||||||
Width = 327
|
|
||||||
Height = 21
|
|
||||||
Style = csDropDownList
|
|
||||||
ItemHeight = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = cmbPresetChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object StatusBar: TStatusBar
|
|
||||||
Left = 0
|
|
||||||
Top = 381
|
|
||||||
Width = 424
|
|
||||||
Height = 19
|
|
||||||
Panels = <
|
|
||||||
item
|
|
||||||
Width = 161
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 150
|
|
||||||
end
|
|
||||||
item
|
|
||||||
Width = 50
|
|
||||||
end>
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
Left = 368
|
|
||||||
Top = 256
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,665 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit FormRender;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
StdCtrls, ControlPoint, RenderThread, ComCtrls, Math, Buttons, Registry, cmap,
|
|
||||||
ImageDLLLoader, ICOLoader, PNGLOader, HIPSLoader, BMPLoader, PCXLoader, WMFLoader,
|
|
||||||
LinarBitmap, ExtCtrls, FileUtils, JPEGLoader, JPEG;
|
|
||||||
|
|
||||||
const
|
|
||||||
WM_THREAD_COMPLETE = WM_APP + 5437;
|
|
||||||
WM_THREAD_TERMINATE = WM_APP + 5438;
|
|
||||||
|
|
||||||
type
|
|
||||||
TRenderForm = class(TForm)
|
|
||||||
ProgressBar: TProgressBar;
|
|
||||||
btnRender: TButton;
|
|
||||||
btnCancel: TButton;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
btnBrowse: TSpeedButton;
|
|
||||||
Label10: TLabel;
|
|
||||||
txtFilename: TEdit;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
GroupBox3: TGroupBox;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
txtOversample: TEdit;
|
|
||||||
txtFilterRadius: TEdit;
|
|
||||||
txtDensity: TEdit;
|
|
||||||
GroupBox4: TGroupBox;
|
|
||||||
lblApproxMem: TLabel;
|
|
||||||
lblPhysical: TLabel;
|
|
||||||
Label9: TLabel;
|
|
||||||
cbMaxMemory: TComboBox;
|
|
||||||
chkLimitMem: TCheckBox;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
btnPause: TButton;
|
|
||||||
chkSave: TCheckBox;
|
|
||||||
GroupBox5: TGroupBox;
|
|
||||||
btnSavePreset: TSpeedButton;
|
|
||||||
cmbPreset: TComboBox;
|
|
||||||
btnDeletePreset: TSpeedButton;
|
|
||||||
udOversample: TUpDown;
|
|
||||||
chkMaintain: TCheckBox;
|
|
||||||
cbWidth: TComboBox;
|
|
||||||
cbHeight: TComboBox;
|
|
||||||
StatusBar: TStatusBar;
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure btnRenderClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure txtWidthChange(Sender: TObject);
|
|
||||||
procedure txtHeightChange(Sender: TObject);
|
|
||||||
procedure txtOversampleChange(Sender: TObject);
|
|
||||||
procedure chkLimitMemClick(Sender: TObject);
|
|
||||||
procedure txtFilenameChange(Sender: TObject);
|
|
||||||
procedure btnCancelClick(Sender: TObject);
|
|
||||||
procedure txtDensityChange(Sender: TObject);
|
|
||||||
procedure txtFilterRadiusChange(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure btnPauseClick(Sender: TObject);
|
|
||||||
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
||||||
procedure btnSavePresetClick(Sender: TObject);
|
|
||||||
procedure btnBrowseClick(Sender: TObject);
|
|
||||||
procedure btnDeletePresetClick(Sender: TObject);
|
|
||||||
procedure cmbPresetChange(Sender: TObject);
|
|
||||||
procedure chkMaintainClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
|
|
||||||
StartTime: TDateTime;
|
|
||||||
Remainder: TDateTime;
|
|
||||||
|
|
||||||
procedure HandleThreadCompletion(var Message: TMessage);
|
|
||||||
message WM_THREAD_COMPLETE;
|
|
||||||
procedure HandleThreadTermination(var Message: TMessage);
|
|
||||||
message WM_THREAD_TERMINATE;
|
|
||||||
procedure ListPresets;
|
|
||||||
public
|
|
||||||
Renderer: TRenderThread;
|
|
||||||
PhysicalMemory, ApproxMemory: int64;
|
|
||||||
ColorMap: TColorMap;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Filename: string;
|
|
||||||
ImageWidth, ImageHeight, Oversample: Integer;
|
|
||||||
zoom, Sample_Density, Brightness, Gamma, Vibrancy, Filter_Radius: double;
|
|
||||||
center: array[0..1] of double;
|
|
||||||
|
|
||||||
procedure OnProgress(prog: double);
|
|
||||||
procedure ShowMemoryStatus;
|
|
||||||
procedure ResetControls;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
RenderForm: TRenderForm;
|
|
||||||
Ratio: double;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Global, SavePreset, FileCtrl;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TRenderForm.ResetControls;
|
|
||||||
begin
|
|
||||||
txtFilename.Enabled := true;
|
|
||||||
btnBrowse.Enabled := true;
|
|
||||||
cbWidth.Enabled := true;
|
|
||||||
cbHeight.Enabled := true;
|
|
||||||
txtDensity.Enabled := true;
|
|
||||||
txtFilterRadius.enabled := true;
|
|
||||||
txtOversample.Enabled := true;
|
|
||||||
chkLimitMem.Enabled := true;
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.Checked;
|
|
||||||
btnRender.Enabled := true;
|
|
||||||
cmbPreset.enabled := true;
|
|
||||||
chkSave.enabled := true;
|
|
||||||
btnSavePreset.enabled := true;
|
|
||||||
btnDeletePreset.enabled := true;
|
|
||||||
btnCancel.Caption := 'Close';
|
|
||||||
btnPause.enabled := false;
|
|
||||||
ProgressBar.Position := 0;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.ShowMemoryStatus;
|
|
||||||
var
|
|
||||||
GlobalMemoryInfo: TMemoryStatus; // holds the global memory status information
|
|
||||||
begin
|
|
||||||
GlobalMemoryInfo.dwLength := SizeOf(GlobalMemoryInfo);
|
|
||||||
GlobalMemoryStatus(GlobalMemoryInfo);
|
|
||||||
PhysicalMemory := GlobalMemoryInfo.dwAvailPhys div 1048576;
|
|
||||||
ApproxMemory := 32 * Oversample * Oversample;
|
|
||||||
ApproxMemory := ApproxMemory * ImageHeight * ImageWidth;
|
|
||||||
ApproxMemory := ApproxMemory div 1048576;
|
|
||||||
// ApproxMemory := (32 * Oversample * Oversample * ImageHeight * ImageWidth) div 1048576; // or 1000000?
|
|
||||||
lblPhysical.Caption := 'Physical memory available: ' + Format('%d', [PhysicalMemory]) + ' MB';
|
|
||||||
lblApproxMem.Caption := 'Approximate memory required: ' + Format('%d', [ApproxMemory]) + ' MB';
|
|
||||||
if ApproxMemory > PhysicalMemory then
|
|
||||||
; // show warning icon.
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.HandleThreadCompletion(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
with TLinearBitmap.Create do
|
|
||||||
try
|
|
||||||
Assign(Renderer.GetImage);
|
|
||||||
JPEGLoader.Default.Quality := JPEGQuality;
|
|
||||||
SaveToFile(RenderForm.FileName);
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
ResetControls;
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.HandleThreadTermination(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
ResetControls;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.OnProgress(prog: double);
|
|
||||||
var
|
|
||||||
Elapsed: TDateTime;
|
|
||||||
e, r: string;
|
|
||||||
begin
|
|
||||||
|
|
||||||
prog := (Renderer.Slice + Prog) / Renderer.NrSlices;
|
|
||||||
|
|
||||||
if ShowProgress then ProgressBar.Position := round(100 * prog);
|
|
||||||
|
|
||||||
Elapsed := Now - StartTime;
|
|
||||||
e := Format('Elapsed %2.2d:%2.2d:%2.2d.%2.2d',
|
|
||||||
[Trunc(Elapsed * 24),
|
|
||||||
Trunc((Elapsed * 24 - Trunc(Elapsed * 24)) * 60),
|
|
||||||
Trunc((Elapsed * 24 * 60 - Trunc(Elapsed * 24 * 60)) * 60),
|
|
||||||
Trunc((Elapsed * 24 * 60 * 60 - Trunc(Elapsed * 24 * 60 * 60)) * 100)]);
|
|
||||||
|
|
||||||
if prog > 0 then
|
|
||||||
Remainder := Min(Remainder, Elapsed * (power(1 / prog, 1.2) - 1));
|
|
||||||
|
|
||||||
r := Format('Remaining %2.2d:%2.2d:%2.2d.%2.2d',
|
|
||||||
[Trunc(Remainder * 24),
|
|
||||||
Trunc((Remainder * 24 - Trunc(Remainder * 24)) * 60),
|
|
||||||
Trunc((Remainder * 24 * 60 - Trunc(Remainder * 24 * 60)) * 60),
|
|
||||||
Trunc((Remainder * 24 * 60 * 60 - Trunc(Remainder * 24 * 60 * 60)) * 100)]);
|
|
||||||
|
|
||||||
StatusBar.Panels[0].text := e;
|
|
||||||
StatusBar.Panels[1].text := r;
|
|
||||||
StatusBar.Panels[2].text := 'Slice ' + IntToStr(Renderer.Slice + 1) + ' of ' + IntToStr(Renderer.nrSlices);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
ImageDLLLoader.Default.FindDLLs(ProgramPath);
|
|
||||||
cbMaxMemory.ItemIndex := 1;
|
|
||||||
MainForm.Buttons.GetBitmap(2, btnSavePreset.Glyph);
|
|
||||||
MainForm.Buttons.GetBitmap(9, btnDeletePreset.Glyph);
|
|
||||||
ListPresets;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if assigned(Renderer) then Renderer.Free;
|
|
||||||
cp.free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnRenderClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
t: string;
|
|
||||||
begin
|
|
||||||
ImageWidth := StrToInt(cbWidth.text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.text);
|
|
||||||
if (not chkLimitMem.checked) and (ApproxMemory > PhysicalMemory) then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('You do not have enough memory for this render. Please use memory limiting.', 'Apophysis', 48);
|
|
||||||
// exit;
|
|
||||||
end;
|
|
||||||
if chkLimitMem.checked and (PhysicalMemory < StrToInt(cbMaxMemory.text)) and (Approxmemory > PhysicalMemory) then begin
|
|
||||||
Application.MessageBox('You do not have enough memory for this render. Please use a lower Maximum memory setting.', 'Apophysis', 48);
|
|
||||||
// exit;
|
|
||||||
end;
|
|
||||||
t := txtFilename.Text;
|
|
||||||
if t = '' then
|
|
||||||
begin
|
|
||||||
Application.MessageBox(PChar('Please enter a file name.'), 'Apophysis', 48);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
if FileExists(t) then
|
|
||||||
if Application.MessageBox(PChar(t + ' already exists.' + chr(13) + 'Do you want to replace it?'),
|
|
||||||
'Apophysis', 52) = ID_NO then exit;
|
|
||||||
if not DirectoryExists(ExtractFileDir(t)) then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('The directory does not exist.', 'Apophyis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
{Check for invalid values }
|
|
||||||
if sample_density <= 0 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Sample Density value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if filter_radius <= 0 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Filter Radius value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if Oversample < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid Oversmple value', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if ImageWidth < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid image width', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if ImageHeight < 1 then
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Invalid image height', 'Apophysis', 16);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
txtFilename.Enabled := false;
|
|
||||||
btnBrowse.Enabled := false;
|
|
||||||
cbWidth.Enabled := False;
|
|
||||||
cbHeight.Enabled := false;
|
|
||||||
txtDensity.Enabled := false;
|
|
||||||
txtFilterRadius.enabled := false;
|
|
||||||
txtOversample.Enabled := false;
|
|
||||||
chkLimitMem.Enabled := false;
|
|
||||||
cbMaxMemory.Enabled := false;
|
|
||||||
cmbPreset.enabled := false;
|
|
||||||
chkSave.enabled := false;
|
|
||||||
btnSavePreset.enabled := false;
|
|
||||||
btnDeletePreset.enabled := false;
|
|
||||||
btnRender.Enabled := false;
|
|
||||||
btnPause.enabled := true;
|
|
||||||
btnCancel.Caption := 'Stop';
|
|
||||||
StartTime := Now;
|
|
||||||
Remainder := 365;
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if Assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if not Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
cp.sample_density := Sample_density;
|
|
||||||
cp.spatial_oversample := Oversample;
|
|
||||||
cp.spatial_filter_radius := Filter_Radius;
|
|
||||||
AdjustScale(cp, ImageWidth, ImageHeight);
|
|
||||||
renderPath := ExtractFilePath(Filename);
|
|
||||||
if chkSave.checked then
|
|
||||||
MainForm.SaveXMLFlame(cp, ExtractFileName(FileName), renderPath + 'renders.flame');
|
|
||||||
Renderer := TRenderThread.Create;
|
|
||||||
if chkLimitMem.checked then
|
|
||||||
Renderer.MaxMem := StrToInt(cbMaxMemory.text);
|
|
||||||
Renderer.OnProgress := OnProgress;
|
|
||||||
Renderer.TargetHandle := RenderForm.Handle;
|
|
||||||
Renderer.Compatibility := compatibility;
|
|
||||||
Renderer.SetCP(cp);
|
|
||||||
Renderer.Priority := tpLower;
|
|
||||||
Renderer.Resume;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Render', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
RenderForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
RenderForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
SaveDialog.FileName := Filename;
|
|
||||||
case renderFileFormat of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.bmp');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
end;
|
|
||||||
txtOversample.Text := IntToStr(renderOversample);
|
|
||||||
txtFilterRadius.Text := FloatToStr(renderFilterRadius);
|
|
||||||
cbWidth.Text := IntToStr(MainForm.Image.Width);
|
|
||||||
cbHeight.Text := IntToStr(MainForm.Image.Height);
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
txtDensity.Text := FloatToStr(renderDensity);
|
|
||||||
ShowMemoryStatus;
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtWidthChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
if chkMaintain.checked and cbWidth.Focused then
|
|
||||||
begin
|
|
||||||
ImageHeight := Round(ImageWidth / ratio);
|
|
||||||
cbHeight.Text := IntToStr(ImageHeight)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtHeightChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
if chkMaintain.checked and cbHeight.Focused then
|
|
||||||
begin
|
|
||||||
ImageWidth := Round(ImageHeight * ratio);
|
|
||||||
cbWidth.Text := IntToStr(ImageWidth)
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtOversampleChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if StrToInt(txtOversample.Text) > udOversample.Max then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Max);
|
|
||||||
if StrToInt(txtOversample.Text) < udOversample.Min then
|
|
||||||
txtOversample.Text := IntToStr(udOversample.Min);
|
|
||||||
try
|
|
||||||
Oversample := StrToInt(txtOversample.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.chkLimitMemClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.Checked;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtFilenameChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
filename := txtFilename.text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnCancelClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
Renderer.Terminate
|
|
||||||
else
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtDensityChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Sample_Density := StrToFloat(txtDensity.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.txtFilterRadiusChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
Filter_Radius := StrToFloat(txtFilterRadius.Text);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Ext: string;
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
Ext := ExtractFileExt(txtFileName.Text);
|
|
||||||
if Ext = '.bmp' then renderFileFormat := 1;
|
|
||||||
if Ext = '.png' then renderFileFormat := 2;
|
|
||||||
if (Ext = '.jpg') or (Ext = '.jpeg') then renderFileFormat := 3;
|
|
||||||
renderFilterRadius := Filter_Radius;
|
|
||||||
renderWidth := ImageWidth;
|
|
||||||
renderHeight := ImageHeight;
|
|
||||||
renderDensity := Sample_density;
|
|
||||||
renderOversample := Oversample;
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Render', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', RenderForm.Top);
|
|
||||||
Registry.WriteInteger('Left', RenderForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnPauseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
if Renderer.Suspended = false then
|
|
||||||
begin
|
|
||||||
renderer.suspend;
|
|
||||||
btnPause.caption := 'Resume';
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
renderer.resume;
|
|
||||||
btnPause.caption := 'Pause';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.FormCloseQuery(Sender: TObject;
|
|
||||||
var CanClose: Boolean);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
if Application.MessageBox('Do you want to abort the current render?', 'Apophysis', 36) = ID_NO then
|
|
||||||
CanClose := False
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnSavePresetClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
IFile: TextFile;
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
SavePresetForm.txtPresetName.Text := cmbPreset.Text;
|
|
||||||
if SavePresetForm.ShowModal = mrOK then
|
|
||||||
begin
|
|
||||||
Title := Trim(SavePresetForm.txtPresetName.Text);
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
try
|
|
||||||
AssignFile(IFile, FileName);
|
|
||||||
if FileExists(FileName) then
|
|
||||||
begin
|
|
||||||
if EntryExists(Title, FileName) then DeleteEntry(Title, FileName);
|
|
||||||
Append(IFile);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
ReWrite(IFile);
|
|
||||||
WriteLn(IFile, Title + ' {');
|
|
||||||
WriteLn(IFile, Trim(cbWidth.text));
|
|
||||||
WriteLn(IFile, Trim(cbHeight.text));
|
|
||||||
WriteLn(IFile, Trim(txtDensity.text));
|
|
||||||
WriteLn(IFile, Trim(txtFilterRadius.text));
|
|
||||||
WriteLn(IFile, Trim(txtOversample.text));
|
|
||||||
WriteLn(IFile, ExtractFileExt(txtFileName.Text));
|
|
||||||
if chkLimitMem.Checked then
|
|
||||||
WriteLn(IFile, 'true')
|
|
||||||
else
|
|
||||||
WriteLn(IFile, 'false');
|
|
||||||
WriteLn(IFile, IntToStr(cbMaxMemory.ItemIndex));
|
|
||||||
WriteLn(IFile, cbMaxMemory.Text);
|
|
||||||
WriteLn(IFile, '}');
|
|
||||||
WriteLn(IFile, '');
|
|
||||||
CloseFile(IFile);
|
|
||||||
except on EInOutError do
|
|
||||||
begin
|
|
||||||
Application.MessageBox('Cannot save preset.', 'Apophysis', 16);
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ListPresets;
|
|
||||||
cmbPreset.ItemIndex := cmbPreset.Items.count - 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnBrowseClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.Filename := Filename;
|
|
||||||
case renderFileFormat of
|
|
||||||
1: SaveDialog.DefaultExt := 'bmp';
|
|
||||||
2: SaveDialog.DefaultExt := 'png';
|
|
||||||
3: SaveDialog.DefaultExt := 'jpg';
|
|
||||||
end;
|
|
||||||
SaveDialog.filterIndex := renderFileFormat;
|
|
||||||
SaveDialog.Filter := 'Bitmap image (*.bmp) | *.bmp|PNG Image (*.png)|*.png|JPEG image (*.jpg;*.jpeg)|*.jpg;*.jpeg';
|
|
||||||
if SaveDialog.Execute then
|
|
||||||
begin
|
|
||||||
case SaveDialog.FilterIndex of
|
|
||||||
1: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.bmp');
|
|
||||||
2: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.png');
|
|
||||||
3: txtFilename.Text := ChangeFileExt(SaveDialog.Filename, '.jpg');
|
|
||||||
end;
|
|
||||||
renderFileFormat := SaveDialog.FilterIndex;
|
|
||||||
renderPath := ExtractFilePath(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.ListPresets;
|
|
||||||
{ List identifiers in file }
|
|
||||||
var
|
|
||||||
i, p: integer;
|
|
||||||
Title: string;
|
|
||||||
FStrings: TStringList;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
if fileExists(AppPath + 'render presets') then begin
|
|
||||||
FStrings.LoadFromFile(AppPath + 'render presets');
|
|
||||||
cmbPreset.Clear;
|
|
||||||
if (Pos('{', FStrings.Text) <> 0) then begin
|
|
||||||
for i := 0 to FStrings.Count - 1 do begin
|
|
||||||
p := Pos('{', FStrings[i]);
|
|
||||||
if (p <> 0) then begin
|
|
||||||
Title := Trim(Copy(FStrings[i], 1, p - 1));
|
|
||||||
if Title <> '' then begin
|
|
||||||
cmbPreset.Items.add(Copy(FStrings[i], 1, p - 1));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.btnDeletePresetClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
Title := Trim(cmbPreset.Text);
|
|
||||||
if Title = '' then exit;
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
if EntryExists(Title, FileName) then DeleteEntry(Title, FileName);
|
|
||||||
ListPresets;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.cmbPresetChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
chk: boolean;
|
|
||||||
i, j: integer;
|
|
||||||
FStrings: TStringList;
|
|
||||||
Title, Filename: string;
|
|
||||||
begin
|
|
||||||
Title := Trim(cmbPreset.Text);
|
|
||||||
Filename := AppPath + 'render presets';
|
|
||||||
if Title = '' then exit;
|
|
||||||
if EntryExists(Title, FileName) then
|
|
||||||
begin
|
|
||||||
// Load preset
|
|
||||||
FStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
FStrings.LoadFromFile(Filename);
|
|
||||||
for i := 0 to FStrings.Count - 1 do
|
|
||||||
if Pos(LowerCase(Title) + ' {', Lowercase(FStrings[i])) <> 0 then
|
|
||||||
begin
|
|
||||||
chk := chkMaintain.checked;
|
|
||||||
chkMaintain.Checked := False;
|
|
||||||
j := i + 1;
|
|
||||||
cbWidth.Text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
cbHeight.text := FStrings[j];
|
|
||||||
chkMaintain.Checked := chk;
|
|
||||||
inc(j);
|
|
||||||
txtDensity.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtFilterRadius.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtOversample.text := FStrings[j];
|
|
||||||
inc(j);
|
|
||||||
txtFileName.Text := ChangeFileExt(txtFileName.Text, FStrings[j]);
|
|
||||||
inc(j);
|
|
||||||
if Fstrings[j] = 'true' then chkLimitMem.checked := true else chkLimitMem.checked := false;
|
|
||||||
inc(j);
|
|
||||||
cbMaxMemory.ItemIndex := StrToInt(Fstrings[j]);
|
|
||||||
cbMaxMemory.enabled := chkLimitMem.checked;
|
|
||||||
inc(j);
|
|
||||||
cbMaxMemory.Text := Fstrings[j];
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
FStrings.Free;
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
ImageWidth := StrToInt(cbWidth.Text);
|
|
||||||
ImageHeight := StrToInt(cbHeight.Text);
|
|
||||||
ShowMemoryStatus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TRenderForm.chkMaintainClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Ratio := ImageWidth / ImageHeight;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
object FullscreenForm: TFullscreenForm
|
|
||||||
Left = 438
|
|
||||||
Top = 324
|
|
||||||
BorderStyle = bsNone
|
|
||||||
Caption = 'FullscreenForm'
|
|
||||||
ClientHeight = 133
|
|
||||||
ClientWidth = 188
|
|
||||||
Color = clBlack
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnKeyPress = FormKeyPress
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Image: TImage
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 188
|
|
||||||
Height = 133
|
|
||||||
Align = alClient
|
|
||||||
OnDblClick = ImageDblClick
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,180 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Fullscreen;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
Menus, ControlPoint, RenderThread, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TFullscreenForm = class(TForm)
|
|
||||||
Image: TImage;
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
procedure ImageDblClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
Remainder, StartTime, Now: Extended;
|
|
||||||
Renderer: TRenderThread;
|
|
||||||
procedure showTaskbar;
|
|
||||||
procedure hideTaskbar;
|
|
||||||
procedure DrawFlame;
|
|
||||||
procedure OnProgress(prog: double);
|
|
||||||
procedure HandleThreadCompletion(var Message: TMessage);
|
|
||||||
message WM_THREAD_COMPLETE;
|
|
||||||
procedure HandleThreadTermination(var Message: TMessage);
|
|
||||||
message WM_THREAD_TERMINATE;
|
|
||||||
public
|
|
||||||
Calculate : boolean;
|
|
||||||
cp: TControlPoint;
|
|
||||||
Zoom: double;
|
|
||||||
center: array[0..1] of double;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
FullscreenForm: TFullscreenForm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, Math, Global;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
|
|
||||||
procedure TFullscreenForm.DrawFlame;
|
|
||||||
begin
|
|
||||||
AdjustScale(cp, Image.Width, Image.Height);
|
|
||||||
// cp.Zoom := MainForm.Zoom;
|
|
||||||
// cp.center[0] := MainForm.center[0];
|
|
||||||
// cp.center[1] := MainForm.center[1];
|
|
||||||
cp.sample_density := defSampleDensity;
|
|
||||||
StartTime := Now;
|
|
||||||
Remainder := 1;
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if Assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if not Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer := TRenderThread.Create;
|
|
||||||
Renderer.TargetHandle := Handle;
|
|
||||||
Renderer.OnProgress := OnProgress;
|
|
||||||
Renderer.Compatibility := Compatibility;
|
|
||||||
Renderer.SetCP(cp);
|
|
||||||
Renderer.Resume;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.HandleThreadCompletion(var Message: TMessage);
|
|
||||||
var
|
|
||||||
bm: TBitmap;
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
bm := TBitmap.Create;
|
|
||||||
bm.assign(Renderer.GetImage);
|
|
||||||
Image.Picture.Graphic := bm;
|
|
||||||
|
|
||||||
// Canvas.StretchDraw(Rect(0, 0, ClientWidth, ClientHeight), bm);
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
bm.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.HandleThreadTermination(var Message: TMessage);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then
|
|
||||||
begin
|
|
||||||
Renderer.Free;
|
|
||||||
Renderer := nil;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.OnProgress(prog: double);
|
|
||||||
begin
|
|
||||||
prog := (Renderer.Slice + Prog) / Renderer.NrSlices;
|
|
||||||
Canvas.Brush.Color := clTeal;
|
|
||||||
Canvas.FrameRect(Rect(5, ClientHeight - 15, ClientWidth - 5, ClientHeight - 5));
|
|
||||||
Canvas.Brush.Color := clTeal;
|
|
||||||
Canvas.Fillrect(Rect(7, ClientHeight - 13, 7 + Round(prog * (ClientWidth - 14)), ClientHeight - 7));
|
|
||||||
Canvas.Brush.Color := clBlack;
|
|
||||||
Canvas.Fillrect(Rect(7 + Round(prog * (ClientWidth - 14)), ClientHeight - 13, ClientWidth - 7, ClientHeight - 7));
|
|
||||||
Application.ProcessMessages;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.hideTaskbar;
|
|
||||||
var wndHandle: THandle;
|
|
||||||
wndClass: array[0..50] of Char;
|
|
||||||
begin
|
|
||||||
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
|
|
||||||
wndHandle := FindWindow(@wndClass[0], nil);
|
|
||||||
ShowWindow(wndHandle, SW_HIDE);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.showTaskbar;
|
|
||||||
var wndHandle: THandle;
|
|
||||||
wndClass: array[0..50] of Char;
|
|
||||||
begin
|
|
||||||
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
|
|
||||||
wndHandle := FindWindow(@wndClass[0], nil);
|
|
||||||
ShowWindow(wndHandle, SW_RESTORE);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.mnuShowFull.enabled := true;
|
|
||||||
HideTaskbar;
|
|
||||||
if calculate then
|
|
||||||
DrawFlame;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
begin
|
|
||||||
if Assigned(Renderer) then Renderer.Terminate;
|
|
||||||
ShowTaskbar;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
cp := TControlPoint.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if assigned(Renderer) then Renderer.Terminate;
|
|
||||||
if assigned(Renderer) then Renderer.WaitFor;
|
|
||||||
if assigned(Renderer) then Renderer.Free;
|
|
||||||
cp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.FormKeyPress(Sender: TObject; var Key: Char);
|
|
||||||
begin
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFullscreenForm.ImageDblClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
close;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,379 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
{$D-,L-,O+,Q-,R-,Y-,S-}
|
|
||||||
unit Global;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses SysUtils, Classes, SyncObjs, Controls, Graphics, Math, MyTypes, controlpoint;
|
|
||||||
type
|
|
||||||
EFormatInvalid = class(Exception);
|
|
||||||
|
|
||||||
{ Weight manipulation }
|
|
||||||
{ Triangle transformations }
|
|
||||||
function triangle_area(t: TTriangle): double;
|
|
||||||
function transform_affine(const t: TTriangle; const Triangles: TTriangles): boolean;
|
|
||||||
function line_dist(x, y, x1, y1, x2, y2: double): double;
|
|
||||||
function dist(x1, y1, x2, y2: double): double;
|
|
||||||
{ Parsing functions }
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{ Palette and gradient functions }
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
{ Misc }
|
|
||||||
function det(a, b, c, d: double): double;
|
|
||||||
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
|
||||||
var a, b, e: double): double;
|
|
||||||
|
|
||||||
|
|
||||||
const
|
|
||||||
APP_NAME: string = 'Apophysis 2.0';
|
|
||||||
prefilter_white: integer = 1024;
|
|
||||||
eps: double = 1E-10;
|
|
||||||
White_level = 200;
|
|
||||||
clyellow1 = TColor($17FCFF);
|
|
||||||
clplum2 = TColor($ECA9E6);
|
|
||||||
clSlateGray = TColor($837365);
|
|
||||||
FT_BMP = 1; FT_PNG = 2; FT_JPG = 3;
|
|
||||||
|
|
||||||
var
|
|
||||||
MainTriangles: TTriangles;
|
|
||||||
ConfirmDelete: boolean; // Flag confirmation of entry deletion
|
|
||||||
// FlameTitle: string;
|
|
||||||
Transforms: integer; // Count of Tranforms
|
|
||||||
AppPath: string; // Path of applicatio file
|
|
||||||
OpenFile: string; // Name of currently open file
|
|
||||||
CanDrawOnResize: boolean;
|
|
||||||
PreserveWeights: boolean;
|
|
||||||
{UPR Options}
|
|
||||||
UPRSampleDensity: integer;
|
|
||||||
UPRFilterRadius: double;
|
|
||||||
UPROversample: integer;
|
|
||||||
UPRAdjustDensity: boolean;
|
|
||||||
UPRColoringIdent: string;
|
|
||||||
UPRColoringFile: string;
|
|
||||||
UPRFormulaIdent: string;
|
|
||||||
UPRFormulaFile: string;
|
|
||||||
UPRWidth: Integer;
|
|
||||||
UPRHeight: Integer;
|
|
||||||
ImageFolder: string;
|
|
||||||
UPRPath: string; // Name and folder of last UPR file
|
|
||||||
UpdateGradient: boolean;
|
|
||||||
cmap_index: integer; // Index to current gradient
|
|
||||||
Variation: TVariation; // Current variation
|
|
||||||
NumTries, TryLength: integer; // Settings for smooth palette
|
|
||||||
SmoothPaletteFile: string;
|
|
||||||
{ Display }
|
|
||||||
defSampleDensity, defPreviewDensity: Double;
|
|
||||||
defGamma, defBrightness, defVibrancy, defFilterRadius: Double;
|
|
||||||
defOversample: integer;
|
|
||||||
{ Render }
|
|
||||||
renderDensity, renderFilterRadius: double;
|
|
||||||
renderOversample, renderWidth, renderHeight: integer;
|
|
||||||
renderPath: string;
|
|
||||||
JPEGQuality: integer;
|
|
||||||
renderFileFormat: integer;
|
|
||||||
{ Defaults }
|
|
||||||
SavePath, SmoothPalettePath: string;
|
|
||||||
RandomPrefix, RandomDate: string;
|
|
||||||
RandomIndex: integer;
|
|
||||||
FlameFile, GradientFile, GradientEntry, FlameEntry: string;
|
|
||||||
ParamFolder: string;
|
|
||||||
prevLowQuality, prevMediumQuality, prevHighQuality: double;
|
|
||||||
defSmoothPaletteFile: string;
|
|
||||||
BrowserPath: string; // Stored path of browser open dialog
|
|
||||||
EditPrevQual, MutatePrevQual, AdjustPrevQual: Integer;
|
|
||||||
randMinTransforms, randMaxTransforms: integer;
|
|
||||||
mutantMinTransforms, mutantMaxTransforms: integer;
|
|
||||||
KeepBackground: boolean;
|
|
||||||
randGradient: Integer;
|
|
||||||
defFlameFile: string;
|
|
||||||
SymmetryType: integer;
|
|
||||||
SymmetryOrder: integer;
|
|
||||||
Variations: array[0..NVARS - 1] of boolean;
|
|
||||||
VariationOptions: integer;
|
|
||||||
{ For random gradients }
|
|
||||||
MinNodes, MaxNodes, MinHue, MaxHue, MinSat, MaxSat, MinLum, MaxLum: integer;
|
|
||||||
FixedReference: boolean;
|
|
||||||
BatchSize: Integer;
|
|
||||||
Compatibility: integer; //0 = original, 1 = Drave's
|
|
||||||
Favorites: TStringList;
|
|
||||||
Script: string;
|
|
||||||
ScriptPath: string;
|
|
||||||
SheepServer, SheepNick, SheepURL, SheepPW, HqiPath: string;
|
|
||||||
ExportBatches, ExportOversample, ExportWidth, ExportHeight, ExportFileFormat: Integer;
|
|
||||||
ExportFilter, ExportDensity: Double;
|
|
||||||
OpenFileType: TFileType;
|
|
||||||
ResizeOnLoad: Boolean;
|
|
||||||
ShowProgress: Boolean;
|
|
||||||
defLibrary: string;
|
|
||||||
LimitVibrancy: Boolean;
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses dialogs, Main;
|
|
||||||
|
|
||||||
{ IFS }
|
|
||||||
|
|
||||||
function det(a, b, c, d: double): double;
|
|
||||||
begin
|
|
||||||
Result := (a * d - b * c);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
|
||||||
var a, b, e: double): double;
|
|
||||||
var
|
|
||||||
det1: double;
|
|
||||||
begin
|
|
||||||
det1 := x1 * det(y2, 1.0, z2, 1.0) - x2 * det(y1, 1.0, z1, 1.0)
|
|
||||||
+ 1 * det(y1, y2, z1, z2);
|
|
||||||
if (det1 = 0.0) then
|
|
||||||
begin
|
|
||||||
Result := det1;
|
|
||||||
EXIT;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
a := (x1h * det(y2, 1.0, z2, 1.0) - x2 * det(y1h, 1.0, z1h, 1.0)
|
|
||||||
+ 1 * det(y1h, y2, z1h, z2)) / det1;
|
|
||||||
b := (x1 * det(y1h, 1.0, z1h, 1.0) - x1h * det(y1, 1.0, z1, 1.0)
|
|
||||||
+ 1 * det(y1, y1h, z1, z1h)) / det1;
|
|
||||||
e := (x1 * det(y2, y1h, z2, z1h) - x2 * det(y1, y1h, z1, z1h)
|
|
||||||
+ x1h * det(y1, y2, z1, z2)) / det1;
|
|
||||||
a := Round6(a);
|
|
||||||
b := Round6(b);
|
|
||||||
e := Round6(e);
|
|
||||||
Result := det1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function dist(x1, y1, x2, y2: double): double;
|
|
||||||
var
|
|
||||||
d2: double;
|
|
||||||
begin
|
|
||||||
{ From FDesign source
|
|
||||||
{ float pt_pt_distance(float x1, float y1, float x2, float y2) }
|
|
||||||
d2 := (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
|
|
||||||
if (d2 = 0.0) then
|
|
||||||
begin
|
|
||||||
Result := 0.0;
|
|
||||||
exit;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := sqrt(d2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function line_dist(x, y, x1, y1, x2, y2: double): double;
|
|
||||||
var
|
|
||||||
a, b, e, c: double;
|
|
||||||
begin
|
|
||||||
if ((x = x1) and (y = y1)) then
|
|
||||||
a := 0.0
|
|
||||||
else
|
|
||||||
a := sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
|
|
||||||
if ((x = x2) and (y = y2)) then
|
|
||||||
b := 0.0
|
|
||||||
else
|
|
||||||
b := sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
|
|
||||||
if ((x1 = x2) and (y1 = y2)) then
|
|
||||||
e := 0.0
|
|
||||||
else
|
|
||||||
e := sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
|
|
||||||
if ((a * a + e * e) < (b * b)) then
|
|
||||||
Result := a
|
|
||||||
else if ((b * b + e * e) < (a * a)) then
|
|
||||||
Result := b
|
|
||||||
else if (e <> 0.0) then
|
|
||||||
begin
|
|
||||||
c := (b * b - a * a - e * e) / (-2 * e);
|
|
||||||
if ((a * a - c * c) < 0.0) then
|
|
||||||
Result := 0.0
|
|
||||||
else
|
|
||||||
Result := sqrt(a * a - c * c);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := a;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function transform_affine(const t: TTriangle; const Triangles: TTriangles): boolean;
|
|
||||||
var
|
|
||||||
ra, rb, rc, a, b, c: double;
|
|
||||||
begin
|
|
||||||
Result := True;
|
|
||||||
ra := dist(Triangles[-1].y[0], Triangles[-1].x[0],
|
|
||||||
Triangles[-1].y[1], Triangles[-1].x[1]);
|
|
||||||
rb := dist(Triangles[-1].y[1], Triangles[-1].x[1],
|
|
||||||
Triangles[-1].y[2], Triangles[-1].x[2]);
|
|
||||||
rc := dist(Triangles[-1].y[2], Triangles[-1].x[2],
|
|
||||||
Triangles[-1].y[0], Triangles[-1].x[0]);
|
|
||||||
a := dist(t.y[0], t.x[0], t.y[1], t.x[1]);
|
|
||||||
b := dist(t.y[1], t.x[1], t.y[2], t.x[2]);
|
|
||||||
c := dist(t.y[2], t.x[2], t.y[0], t.x[0]);
|
|
||||||
if (a > ra) then
|
|
||||||
Result := False
|
|
||||||
else if (b > rb) then
|
|
||||||
Result := False
|
|
||||||
else if (c > rc) then
|
|
||||||
Result := False
|
|
||||||
else if ((a = ra) and (b = rb) and (c = rc)) then
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function triangle_area(t: TTriangle): double;
|
|
||||||
var
|
|
||||||
base, height: double;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
base := dist(t.x[0], t.y[0], t.x[1], t.y[1]);
|
|
||||||
height := line_dist(t.x[2], t.y[2], t.x[1], t.y[1],
|
|
||||||
t.x[0], t.y[0]);
|
|
||||||
if (base < 1.0) then
|
|
||||||
Result := height
|
|
||||||
else if (height < 1.0) then
|
|
||||||
Result := base
|
|
||||||
else
|
|
||||||
Result := 0.5 * base * height;
|
|
||||||
except on E: EMathError do
|
|
||||||
Result := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ Weight manipulation }
|
|
||||||
|
|
||||||
|
|
||||||
{ Parse }
|
|
||||||
|
|
||||||
function GetVal(token: string): string;
|
|
||||||
var
|
|
||||||
p: integer;
|
|
||||||
begin
|
|
||||||
p := Pos('=', token);
|
|
||||||
Delete(Token, 1, p);
|
|
||||||
Result := Token;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ReplaceTabs(str: string): string;
|
|
||||||
{Changes tab characters in a string to spaces}
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 1 to Length(str) do
|
|
||||||
begin
|
|
||||||
if str[i] = #9 then
|
|
||||||
begin
|
|
||||||
Delete(str, i, 1);
|
|
||||||
Insert(#32, str, i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := str;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ Palette and gradient functions }
|
|
||||||
|
|
||||||
function RGBToColor(Pal: TMapPalette; index: integer): Tcolor;
|
|
||||||
begin
|
|
||||||
{ Converts the RGB values from a palette index to the TColor type ...
|
|
||||||
could maybe change it to SHLs }
|
|
||||||
Result := (Pal.Blue[index] * 65536) + (Pal.Green[index] * 256)
|
|
||||||
+ Pal.Red[index];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure rgb2hsv(const rgb: array of double; out hsv: array of double);
|
|
||||||
var
|
|
||||||
maxval, minval: double;
|
|
||||||
del: double;
|
|
||||||
begin
|
|
||||||
Maxval := Max(rgb[0], Max(rgb[1], rgb[2]));
|
|
||||||
Minval := Min(rgb[0], Min(rgb[1], rgb[2]));
|
|
||||||
|
|
||||||
hsv[2] := maxval; // v
|
|
||||||
|
|
||||||
if (Maxval > 0) and (maxval <> minval) then begin
|
|
||||||
del := maxval - minval;
|
|
||||||
hsv[1] := del / Maxval; //s
|
|
||||||
|
|
||||||
hsv[0] := 0;
|
|
||||||
if (rgb[0] > rgb[1]) and (rgb[0] > rgb[2]) then begin
|
|
||||||
hsv[0] := (rgb[1] - rgb[2]) / del;
|
|
||||||
end else if (rgb[1] > rgb[2]) then begin
|
|
||||||
hsv[0] := 2 + (rgb[2] - rgb[0]) / del;
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 4 + (rgb[0] - rgb[1]) / del;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if hsv[0] < 0 then
|
|
||||||
hsv[0] := hsv[0] + 6;
|
|
||||||
|
|
||||||
end else begin
|
|
||||||
hsv[0] := 0;
|
|
||||||
hsv[1] := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure hsv2rgb(const hsv: array of double; out rgb: array of double);
|
|
||||||
var
|
|
||||||
j: integer;
|
|
||||||
f, p, q, t, v: double;
|
|
||||||
begin
|
|
||||||
j := floor(hsv[0]);
|
|
||||||
f := hsv[0] - j;
|
|
||||||
v := hsv[2];
|
|
||||||
p := hsv[2] * (1 - hsv[1]);
|
|
||||||
q := hsv[2] * (1 - hsv[1] * f);
|
|
||||||
t := hsv[2] * (1 - hsv[1] * (1 - f));
|
|
||||||
|
|
||||||
case j of
|
|
||||||
0: begin rgb[0] := v; rgb[1] := t; rgb[2] := p; end;
|
|
||||||
1: begin rgb[0] := q; rgb[1] := v; rgb[2] := p; end;
|
|
||||||
2: begin rgb[0] := p; rgb[1] := v; rgb[2] := t; end;
|
|
||||||
3: begin rgb[0] := p; rgb[1] := q; rgb[2] := v; end;
|
|
||||||
4: begin rgb[0] := t; rgb[1] := p; rgb[2] := v; end;
|
|
||||||
5: begin rgb[0] := v; rgb[1] := p; rgb[2] := t; end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetGradient(FileName, Entry: string): string;
|
|
||||||
var
|
|
||||||
FileStrings: TStringList;
|
|
||||||
GradStrings: TStringList;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
FileStrings := TStringList.Create;
|
|
||||||
GradStrings := TStringList.Create;
|
|
||||||
try
|
|
||||||
try
|
|
||||||
FileStrings.LoadFromFile(FileName);
|
|
||||||
for i := 0 to FileStrings.count - 1 do
|
|
||||||
if Pos(Entry + ' ', Trim(FileStrings[i])) = 1 then break;
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
repeat
|
|
||||||
inc(i);
|
|
||||||
GradStrings.Add(FileStrings[i]);
|
|
||||||
until Pos('}', FileStrings[i]) <> 0;
|
|
||||||
GetGradient := GradStrings.Text;
|
|
||||||
except on exception do
|
|
||||||
Result := '';
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
GradStrings.Free;
|
|
||||||
FileStrings.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,488 +0,0 @@
|
|||||||
object GradientForm: TGradientForm
|
|
||||||
Left = 565
|
|
||||||
Top = 216
|
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'Gradient'
|
|
||||||
ClientHeight = 172
|
|
||||||
ClientWidth = 372
|
|
||||||
Color = clBtnFace
|
|
||||||
DragMode = dmAutomatic
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
Icon.Data = {
|
|
||||||
0000010001001010000000000000680300001600000028000000100000002000
|
|
||||||
0000010018000000000040030000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000DA7F48DE7F46E68C56F1A273FDBA92FFCDB1FFE1CFFFF4EDE3F2FCA2
|
|
||||||
D5F862B9F339A1F0000000000000000000000000DA7D46DD7D41E68952F09F6F
|
|
||||||
FCB88FFFCDAFFFE1CEFFF4EEE2F2FD9FD4F85EB6F3349FF00000000000000000
|
|
||||||
00000000D97D45DD7C42E58750F09E6EFCB88FFFCCAFFFE0CEFFF4EDE2F2FD9F
|
|
||||||
D4F85DB6F4339FEF000000000000000000000000D97D45DD7D42E58851F09E6E
|
|
||||||
FCB88FFFCDAFFFE1CEFFF4EDE2F2FD9FD4F85DB6F3339FEF0000000000000000
|
|
||||||
00000000D97D45DD7D41E68851F09E6EFDB88FFFCCAFFFE1CEFFF4EDE2F2FD9F
|
|
||||||
D4F85EB6F3329FEF000000000000000000000000D97D45DD7C42E68851F19E6E
|
|
||||||
FDB78FFFCDAFFFE1CEFFF4EEE2F2FD9FD4F85EB6F4329FEF0000000000000000
|
|
||||||
00000000D97D45DD7D42E68851F19F6EFCB88FFFCCAFFFE0CEFFF4EDE1F2FD9F
|
|
||||||
D4F85DB7F3339FEF000000000000000000000000D97D45DD7D42E58850F19F6E
|
|
||||||
FDB78FFFCDAFFFE0CFFFF4EDE1F2FD9FD4F85DB6F3329FEF0000000000000000
|
|
||||||
00000000DA7D46DD7C41E68952F19E6EFDB88FFFCDAFFFE0CEFFF4EEE1F2FD9F
|
|
||||||
D4F85EB6F3339FF0000000000000000000000000DA7F48DE7F46E68C56F0A173
|
|
||||||
FCBA93FFCEB1FFE1D0FFF4EDE2F2FDA3D5F862B8F338A1F00000000000000000
|
|
||||||
00000000DB834EE08752E89563F3A97EFDC09CFFD2B8FFE4D4FFF5EFE4F3FDAA
|
|
||||||
D9F96FBEF449AAF1000000000000000000000000DD8A58E39565ECA57AF5B692
|
|
||||||
FDCAABFFD9C3FFE8DBFFF7F2E8F5FDB7DFFA85C8F763B6F20000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
000000000000000000000000000000000000000000000000000000000000FFFF
|
|
||||||
0000800100008001000080010000800100008001000080010000800100008001
|
|
||||||
0000800100008001000080010000800100008001000080010000FFFF0000}
|
|
||||||
OldCreateOrder = True
|
|
||||||
Position = poDefault
|
|
||||||
OnClose = FormClose
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnShow = FormShow
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object pnlPalette: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 372
|
|
||||||
Height = 102
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 0
|
|
||||||
object GradientImage: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 370
|
|
||||||
Height = 100
|
|
||||||
Align = alClient
|
|
||||||
PopupMenu = PopupMenu
|
|
||||||
Stretch = True
|
|
||||||
OnDblClick = mnuRandomizeClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object pnlControls: TPanel
|
|
||||||
Left = 0
|
|
||||||
Top = 102
|
|
||||||
Width = 372
|
|
||||||
Height = 70
|
|
||||||
Align = alBottom
|
|
||||||
BevelOuter = bvNone
|
|
||||||
TabOrder = 1
|
|
||||||
object btnMenu: TSpeedButton
|
|
||||||
Left = 8
|
|
||||||
Top = 10
|
|
||||||
Width = 57
|
|
||||||
Height = 22
|
|
||||||
Caption = 'Rotate'
|
|
||||||
Flat = True
|
|
||||||
PopupMenu = Popup
|
|
||||||
OnClick = btnMenuClick
|
|
||||||
end
|
|
||||||
object lblVal: TLabel
|
|
||||||
Left = 344
|
|
||||||
Top = 16
|
|
||||||
Width = 6
|
|
||||||
Height = 13
|
|
||||||
Caption = '0'
|
|
||||||
end
|
|
||||||
object btnOpen: TSpeedButton
|
|
||||||
Left = 312
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Gradient Browser'
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
76030000424D7603000000000000360000002800000011000000100000000100
|
|
||||||
18000000000040030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FF00FF00FFFF00FF000000FFF5F0FFF1E9FFEFE6
|
|
||||||
FFEFE6FFF0E7FFF1E8FFF1E9FFF3EBFFF3ECFFF4EDFFF6F0000000FF00FFFF00
|
|
||||||
FF00FF00FFFF00FF000000FFF4EDFFEEE4FFEBDFFFEBDFFFEBE0FFECE2FFEDE2
|
|
||||||
FFEEE4FFEFE5FFEFE6FFF1EA000000FF00FFFF00FF00FF00FFFF00FF000000FF
|
|
||||||
F1E9CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208CD5208FFEDE3
|
|
||||||
000000FF00FFFF00FF00FF00FFFF00FF000000FFEFE6CD5208E26518EB7A37FF
|
|
||||||
A772FFD1B2FFF7EDC2E9FF42ADF7CD5208FFE9DC000000FF00FFFF00FF00FF00
|
|
||||||
FFFF00FF000000FFEDE2CD5208E16519E97835FFA770FFD1B2FFF7ECC2E9FF40
|
|
||||||
ADF7CD5208FFE5D6000000FF00FFFF00FF00FF00FFFF00FF000000FFEBDFCD52
|
|
||||||
08E16518EB7836FFA770FFD1B2FFF7ECC2E9FF42ADF7CD5208FFE1D0000000FF
|
|
||||||
00FFFF00FF00FF00FFFF00FF000000FFE9DBCD5208E16519EC7935FFA770FFD0
|
|
||||||
B2FFF7ECC2E9FF40AEF7CD5208FFDFCD000000FF00FFFF00FF00FF00FFFF00FF
|
|
||||||
000000FFE7D8CD5208E16519EB7935FFA570FFD1B2FFF7ECC2E9FF40ADF7CD52
|
|
||||||
08FFE1D0000000FF00FFFF00FF00FF00FFFF00FF000000FFE4D5CD5208E3651A
|
|
||||||
EB7A39FFA874FFD1B3FFF7ECC4E9FF44AEF7CD5208FFE9DC000000FF00FFFF00
|
|
||||||
FF00FF00FFFF00FF000000FFE3D1CD5208ED7935F99457FFBC8DFFE1C5FFFFF9
|
|
||||||
000000000000000000000000000000FF00FFFF00FF00FF00FFFF00FF000000FF
|
|
||||||
E1CFCD5208CD5208CD5208CD5208CD5208CD5208000000E17D41EB925E000000
|
|
||||||
FF00FFFF00FFFF00FF00FF00FFFF00FF000000FFE2D1FFD7BFFFD0B4FFCEB1FF
|
|
||||||
CFB3FFD0B4FFD3B8000000F5A779000000FF00FFFF00FFFF00FFFF00FF00FF00
|
|
||||||
FFFF00FF000000FFE7DAFFE2D0FFDECBFFDECAFFDDC9FFDECAFFDFCD00000000
|
|
||||||
0000FF00FFFF00FFFF00FFFF00FFFF00FF00FF00FFFF00FF0000000000000000
|
|
||||||
00000000000000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FF00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00}
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = btnOpenClick
|
|
||||||
end
|
|
||||||
object btnSmoothPalette: TSpeedButton
|
|
||||||
Left = 336
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Hint = 'Smooth Palette'
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000FF00FFFF00FF000000
|
|
||||||
374BA83A53AB3E5DB14368B74876BF4E84C65493CE5BA3D661B2DE67C0E66CCE
|
|
||||||
EC71DAF3000000FF00FFFF00FF000000374BA83A53AB3E5DB14368B74876BF4E
|
|
||||||
84C65593CE5BA2D661B2DE67C0E66CCEED71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5DB14369B84876BE4F84C65593CE5BA3D661B1DE67C1E66CCD
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A53AB3E5CB14369B74876BE4E
|
|
||||||
84C65494CE5BA2D661B2DE66C1E56CCEEC71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A53AC3E5DB14368B74975BE4F84C65593CE5AA2D661B2DE67C0E56CCE
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A52AC3E5DB14368B84976BF4E
|
|
||||||
84C65493CE5BA3D661B2DE66C0E56CCEEC71D9F3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5CB14369B74975BE4F84C65494CD5BA2D661B1DE66C0E56CCE
|
|
||||||
ED71DAF3000000FF00FFFF00FF000000374BA83A53AC3E5CB14368B74876BF4E
|
|
||||||
84C65493CE5BA2D660B2DE67C0E56DCEEC71D9F3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5CB24368B74975BE4E84C65594CE5AA3D661B2DE67C1E66DCE
|
|
||||||
EC71D9F3000000FF00FFFF00FF000000374BA83A52AC3E5CB14369B74875BF4F
|
|
||||||
84C65493CE5AA3D661B2DE66C0E66DCEEC71DAF3000000FF00FFFF00FF000000
|
|
||||||
374BA83A52AC3E5DB14368B74976BF4F84C65593CE5BA3D660B2DE67C0E56CCD
|
|
||||||
ED71D9F3000000FF00FFFF00FF000000374BA83A53AC3E5CB14268B74876BF4F
|
|
||||||
84C65593CE5BA3D661B2DE67C1E66CCEED71DAF3000000FF00FFFF00FF000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = True
|
|
||||||
OnClick = mnuSmoothPaletteClick
|
|
||||||
end
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 8
|
|
||||||
Top = 43
|
|
||||||
Width = 57
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Preset'
|
|
||||||
end
|
|
||||||
object btnPaste: TSpeedButton
|
|
||||||
Left = 288
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000
|
|
||||||
0000000000000000000000000000000000000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FF
|
|
||||||
FFFFE39A6FFFFFFFE3996CE2996DE3996DFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE29566E39363FFFFFFE39262E29363FFFFFF000000FF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
|
||||||
FFFFFFFF000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE3915FE28C58FFFFFFFFFFFFE29364FFFFFF000000FF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000
|
|
||||||
00000000000000FF00FFFF00FF00000056B9F556B9F556B9F556B9F5000000FF
|
|
||||||
FFFFE29160FFFFFFFFFFFF000000FFFFFF000000FF00FFFF00FFFF00FF000000
|
|
||||||
56B9F556B9F556B9F556B9F5000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000
|
|
||||||
00FF00FFFF00FFFF00FFFF00FF00000056B9F500000000000000000000000000
|
|
||||||
0000000000000000000000000000000000FF00FFFF00FFFF00FFFF00FF000000
|
|
||||||
56B9F5000000BBE5F9BBE5F9BBE5F9BBE5F9BBE5F9BBE5F900000056B9F50000
|
|
||||||
00FF00FFFF00FFFF00FFFF00FF00000056B9F556B9F5000000BBE5F900000000
|
|
||||||
0000BBE5F900000056B9F556B9F5000000FF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000000000000000000000BBE5F9BBE5F9000000000000000000000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000
|
|
||||||
0000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
OnClick = btnPasteClick
|
|
||||||
end
|
|
||||||
object btnCopy: TSpeedButton
|
|
||||||
Left = 264
|
|
||||||
Top = 40
|
|
||||||
Width = 23
|
|
||||||
Height = 22
|
|
||||||
Flat = True
|
|
||||||
Glyph.Data = {
|
|
||||||
36030000424D3603000000000000360000002800000010000000100000000100
|
|
||||||
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FF00000000000000000000000000000000
|
|
||||||
0000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FFFFFFE39A6FFFFFFFE3996CE2
|
|
||||||
996DE3996DFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000
|
|
||||||
00000000000000FF00FFFF00FFFF00FF000000FFFFFFE29566E39363000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE39A6FFFFFFFE3996CE2996DE399
|
|
||||||
6DFFFFFF000000FF00FFFF00FFFF00FF000000FFFFFFE3915FE28C58000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE29566E39363FFFFFFE39262E293
|
|
||||||
63FFFFFF000000FF00FFFF00FFFF00FF000000FFFFFFE29160FFFFFF000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FF
|
|
||||||
000000FFFFFFFFFFFFFFFFFF000000FFFFFFE3915FE28C58FFFFFFFFFFFFE293
|
|
||||||
64FFFFFF000000FF00FFFF00FFFF00FF000000000000000000000000000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000FFFFFFE29160FFFFFFFFFFFF000000FFFF
|
|
||||||
FF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000FF
|
|
||||||
FFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF00FFFF00FFFF00FFFF00FF
|
|
||||||
FF00FFFF00FFFF00FFFF00FF000000000000000000000000000000000000FF00
|
|
||||||
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
|
|
||||||
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
|
|
||||||
OnClick = btnCopyClick
|
|
||||||
end
|
|
||||||
object cmbPalette: TComboBox
|
|
||||||
Left = 72
|
|
||||||
Top = 42
|
|
||||||
Width = 177
|
|
||||||
Height = 19
|
|
||||||
Style = csOwnerDrawFixed
|
|
||||||
Color = clBlack
|
|
||||||
DropDownCount = 20
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWhite
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
ItemHeight = 13
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = False
|
|
||||||
TabOrder = 1
|
|
||||||
OnChange = cmbPaletteChange
|
|
||||||
OnDrawItem = cmbPaletteDrawItem
|
|
||||||
Items.Strings = (
|
|
||||||
'south-sea-bather'
|
|
||||||
'sky-flesh'
|
|
||||||
'blue-bather'
|
|
||||||
'no-name'
|
|
||||||
'pillows'
|
|
||||||
'mauve-splat'
|
|
||||||
'facial-treescape 6'
|
|
||||||
'fasion-bug'
|
|
||||||
'leafy-face'
|
|
||||||
'mouldy-sun'
|
|
||||||
'sunny-harvest'
|
|
||||||
'peach-tree'
|
|
||||||
'fire-dragon'
|
|
||||||
'ice-dragon'
|
|
||||||
'german-landscape'
|
|
||||||
'no-name'
|
|
||||||
'living-mud-bomb'
|
|
||||||
'cars'
|
|
||||||
'unhealthy-tan'
|
|
||||||
'daffodil'
|
|
||||||
'rose'
|
|
||||||
'healthy-skin'
|
|
||||||
'orange'
|
|
||||||
'white-ivy'
|
|
||||||
'summer-makeup'
|
|
||||||
'glow-buzz'
|
|
||||||
'deep-water'
|
|
||||||
'afternoon-beach'
|
|
||||||
'dim-beach'
|
|
||||||
'cloudy-brick'
|
|
||||||
'burning-wood'
|
|
||||||
'aquatic-garden'
|
|
||||||
'no-name'
|
|
||||||
'fall-quilt'
|
|
||||||
'night-blue-sky'
|
|
||||||
'shadow-iris'
|
|
||||||
'solid-sky'
|
|
||||||
'misty-field'
|
|
||||||
'wooden-highlight'
|
|
||||||
'jet-tundra'
|
|
||||||
'pastel-lime'
|
|
||||||
'hell'
|
|
||||||
'indian-coast'
|
|
||||||
'dentist-decor'
|
|
||||||
'greenland'
|
|
||||||
'purple-dress'
|
|
||||||
'no-name'
|
|
||||||
'spring-flora'
|
|
||||||
'andi'
|
|
||||||
'gig-o835'
|
|
||||||
'rie02'
|
|
||||||
'rie05'
|
|
||||||
'rie11'
|
|
||||||
'etretat.ppm'
|
|
||||||
'the-hollow-needle-at-etretat.ppm'
|
|
||||||
'rouen-cathedral-sunset.ppm'
|
|
||||||
'the-houses-of-parliament.ppm'
|
|
||||||
'starry-night.ppm'
|
|
||||||
'water-lilies-sunset.ppm'
|
|
||||||
'gogh.chambre-arles.ppm'
|
|
||||||
'gogh.entrance.ppm'
|
|
||||||
'gogh.the-night-cafe.ppm'
|
|
||||||
'gogh.vegetable-montmartre.ppm'
|
|
||||||
'matisse.bonheur-vivre.ppm'
|
|
||||||
'matisse.flowers.ppm'
|
|
||||||
'matisse.lecon-musique.ppm'
|
|
||||||
'modigliani.nude-caryatid.ppm'
|
|
||||||
'braque.instruments.ppm'
|
|
||||||
'calcoast09.ppm'
|
|
||||||
'dodge102.ppm'
|
|
||||||
'ernst.anti-pope.ppm'
|
|
||||||
'ernst.ubu-imperator.ppm'
|
|
||||||
'fighting-forms.ppm'
|
|
||||||
'fog25.ppm'
|
|
||||||
'geyser27.ppm'
|
|
||||||
'gris.josette.ppm'
|
|
||||||
'gris.landscape-ceret.ppm'
|
|
||||||
'kandinsky.comp-9.ppm'
|
|
||||||
'kandinsky.yellow-red-blue.ppm'
|
|
||||||
'klee.insula-dulcamara.ppm'
|
|
||||||
'nile.ppm'
|
|
||||||
'picasso.jfille-chevre.ppm'
|
|
||||||
'pollock.lavender-mist.ppm'
|
|
||||||
'yngpaint.ppm')
|
|
||||||
end
|
|
||||||
object ScrollBar: TScrollBar
|
|
||||||
Left = 72
|
|
||||||
Top = 16
|
|
||||||
Width = 257
|
|
||||||
Height = 13
|
|
||||||
LargeChange = 15
|
|
||||||
Max = 255
|
|
||||||
PageSize = 0
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = ScrollBarChange
|
|
||||||
OnScroll = ScrollBarScroll
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object PopupMenu: TPopupMenu
|
|
||||||
Images = MainForm.Buttons
|
|
||||||
Left = 8
|
|
||||||
Top = 8
|
|
||||||
object mnuRandomize: TMenuItem
|
|
||||||
Caption = 'Randomize'
|
|
||||||
OnClick = mnuRandomizeClick
|
|
||||||
end
|
|
||||||
object N7: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuInvert: TMenuItem
|
|
||||||
Caption = 'Invert'
|
|
||||||
OnClick = mnuInvertClick
|
|
||||||
end
|
|
||||||
object mnuReverse: TMenuItem
|
|
||||||
Caption = '&Reverse'
|
|
||||||
OnClick = mnuReverseClick
|
|
||||||
end
|
|
||||||
object N3: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuSmoothPalette: TMenuItem
|
|
||||||
Caption = 'Smooth Palette...'
|
|
||||||
ImageIndex = 34
|
|
||||||
OnClick = mnuSmoothPaletteClick
|
|
||||||
end
|
|
||||||
object mnuGradientBrowser: TMenuItem
|
|
||||||
Caption = 'Gradient Browser...'
|
|
||||||
ImageIndex = 22
|
|
||||||
OnClick = btnOpenClick
|
|
||||||
end
|
|
||||||
object N4: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object SaveGradient1: TMenuItem
|
|
||||||
Caption = 'Save Gradient...'
|
|
||||||
ImageIndex = 2
|
|
||||||
OnClick = SaveGradient1Click
|
|
||||||
end
|
|
||||||
object SaveasMapfile1: TMenuItem
|
|
||||||
Caption = 'Save as Map file...'
|
|
||||||
OnClick = SaveasMapfile1Click
|
|
||||||
end
|
|
||||||
object N6: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuSaveasDefault: TMenuItem
|
|
||||||
Caption = 'Save as Default'
|
|
||||||
OnClick = mnuSaveasDefaultClick
|
|
||||||
end
|
|
||||||
object N5: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuCopy: TMenuItem
|
|
||||||
Caption = 'Copy'
|
|
||||||
ImageIndex = 7
|
|
||||||
OnClick = btnCopyClick
|
|
||||||
end
|
|
||||||
object mnuPaste: TMenuItem
|
|
||||||
Caption = 'Paste'
|
|
||||||
ImageIndex = 8
|
|
||||||
OnClick = btnPasteClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Popup: TPopupMenu
|
|
||||||
AutoHotkeys = maManual
|
|
||||||
AutoPopup = False
|
|
||||||
Left = 40
|
|
||||||
Top = 8
|
|
||||||
object mnuRotate: TMenuItem
|
|
||||||
Caption = 'Rotate'
|
|
||||||
OnClick = mnuRotateClick
|
|
||||||
end
|
|
||||||
object N1: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuHue: TMenuItem
|
|
||||||
Caption = 'Hue'
|
|
||||||
OnClick = mnuHueClick
|
|
||||||
end
|
|
||||||
object mnuSaturation: TMenuItem
|
|
||||||
Caption = 'Saturation'
|
|
||||||
OnClick = mnuSaturationClick
|
|
||||||
end
|
|
||||||
object mnuBrightness: TMenuItem
|
|
||||||
Caption = 'Brightness'
|
|
||||||
OnClick = mnuBrightnessClick
|
|
||||||
end
|
|
||||||
object Contrast1: TMenuItem
|
|
||||||
Caption = 'Contrast'
|
|
||||||
OnClick = Contrast1Click
|
|
||||||
end
|
|
||||||
object N2: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuBlur: TMenuItem
|
|
||||||
Caption = 'Blur'
|
|
||||||
OnClick = mnuBlurClick
|
|
||||||
end
|
|
||||||
object mnuFrequency: TMenuItem
|
|
||||||
Caption = 'Frequency'
|
|
||||||
OnClick = mnuFrequencyClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object SaveDialog: TSaveDialog
|
|
||||||
DefaultExt = 'map'
|
|
||||||
Filter = 'Map files|*.map'
|
|
||||||
Left = 72
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
object ApplicationEvents: TApplicationEvents
|
|
||||||
OnActivate = ApplicationEventsActivate
|
|
||||||
Left = 104
|
|
||||||
Top = 8
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,856 +0,0 @@
|
|||||||
{
|
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
}
|
|
||||||
unit Gradient;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
||||||
ExtCtrls, StdCtrls, ComCtrls, Registry, cmap, Menus, ToolWin, Buttons,
|
|
||||||
AppEvnts;
|
|
||||||
const
|
|
||||||
PixelCountMax = 32768;
|
|
||||||
|
|
||||||
type
|
|
||||||
pRGBTripleArray = ^TRGBTripleArray;
|
|
||||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
|
||||||
|
|
||||||
type
|
|
||||||
TGradientForm = class(TForm)
|
|
||||||
pnlPalette: TPanel;
|
|
||||||
pnlControls: TPanel;
|
|
||||||
cmbPalette: TComboBox;
|
|
||||||
GradientImage: TImage;
|
|
||||||
PopupMenu: TPopupMenu;
|
|
||||||
mnuReverse: TMenuItem;
|
|
||||||
mnuInvert: TMenuItem;
|
|
||||||
btnMenu: TSpeedButton;
|
|
||||||
Popup: TPopupMenu;
|
|
||||||
mnuHue: TMenuItem;
|
|
||||||
mnuRotate: TMenuItem;
|
|
||||||
N1: TMenuItem;
|
|
||||||
mnuSaturation: TMenuItem;
|
|
||||||
mnuBrightness: TMenuItem;
|
|
||||||
N2: TMenuItem;
|
|
||||||
ScrollBar: TScrollBar;
|
|
||||||
lblVal: TLabel;
|
|
||||||
mnuBlur: TMenuItem;
|
|
||||||
btnOpen: TSpeedButton;
|
|
||||||
N3: TMenuItem;
|
|
||||||
mnuGradientBrowser: TMenuItem;
|
|
||||||
mnuSmoothPalette: TMenuItem;
|
|
||||||
btnSmoothPalette: TSpeedButton;
|
|
||||||
N4: TMenuItem;
|
|
||||||
SaveGradient1: TMenuItem;
|
|
||||||
SaveasMapfile1: TMenuItem;
|
|
||||||
SaveDialog: TSaveDialog;
|
|
||||||
Label1: TLabel;
|
|
||||||
btnPaste: TSpeedButton;
|
|
||||||
btnCopy: TSpeedButton;
|
|
||||||
N5: TMenuItem;
|
|
||||||
mnuCopy: TMenuItem;
|
|
||||||
mnuPaste: TMenuItem;
|
|
||||||
ApplicationEvents: TApplicationEvents;
|
|
||||||
mnuSaveasDefault: TMenuItem;
|
|
||||||
N6: TMenuItem;
|
|
||||||
mnuRandomize: TMenuItem;
|
|
||||||
N7: TMenuItem;
|
|
||||||
mnuFrequency: TMenuItem;
|
|
||||||
Contrast1: TMenuItem;
|
|
||||||
procedure cmbPaletteChange(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure btnApplyClick(Sender: TObject);
|
|
||||||
procedure DrawPalette;
|
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
||||||
procedure mnuReverseClick(Sender: TObject);
|
|
||||||
procedure mnuInvertClick(Sender: TObject);
|
|
||||||
procedure btnMenuClick(Sender: TObject);
|
|
||||||
procedure mnuRotateClick(Sender: TObject);
|
|
||||||
procedure mnuHueClick(Sender: TObject);
|
|
||||||
procedure mnuSaturationClick(Sender: TObject);
|
|
||||||
procedure ScrollBarChange(Sender: TObject);
|
|
||||||
procedure mnuBrightnessClick(Sender: TObject);
|
|
||||||
procedure mnuBlurClick(Sender: TObject);
|
|
||||||
procedure btnOpenClick(Sender: TObject);
|
|
||||||
procedure mnuSmoothPaletteClick(Sender: TObject);
|
|
||||||
procedure SaveGradient1Click(Sender: TObject);
|
|
||||||
procedure SaveasMapfile1Click(Sender: TObject);
|
|
||||||
procedure cmbPaletteDrawItem(Control: TWinControl; Index: Integer;
|
|
||||||
Rect: TRect; State: TOwnerDrawState);
|
|
||||||
procedure ScrollBarScroll(Sender: TObject; ScrollCode: TScrollCode;
|
|
||||||
var ScrollPos: Integer);
|
|
||||||
procedure btnCopyClick(Sender: TObject);
|
|
||||||
procedure btnPasteClick(Sender: TObject);
|
|
||||||
procedure ApplicationEventsActivate(Sender: TObject);
|
|
||||||
procedure mnuSaveasDefaultClick(Sender: TObject);
|
|
||||||
procedure mnuRandomizeClick(Sender: TObject);
|
|
||||||
procedure mnuFrequencyClick(Sender: TObject);
|
|
||||||
procedure Contrast1Click(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
private
|
|
||||||
procedure Apply;
|
|
||||||
function Blur(const radius: integer; const pal: TColorMap): TColorMap;
|
|
||||||
function Frequency(const times: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
procedure SaveMap(FileName: string);
|
|
||||||
public
|
|
||||||
Palette: TColorMap;
|
|
||||||
BackupPal: TColorMap;
|
|
||||||
procedure UpdateGradient(Pal: TColorMap);
|
|
||||||
function RandomGradient: TColorMap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
GradientForm: TGradientForm;
|
|
||||||
pCmap: integer;
|
|
||||||
|
|
||||||
function GradientInClipboard: boolean;
|
|
||||||
procedure RGBToHSV(R, G, B: byte; var H, S, V: real);
|
|
||||||
procedure HSVToRGB(H, S, V: real; var Rb, Gb, Bb: integer);
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main, cmapdata, Math, Browser, Editor, Global, Save, Adjust, Mutate, ClipBrd;
|
|
||||||
|
|
||||||
{$R *.DFM}
|
|
||||||
|
|
||||||
procedure TGradientForm.Apply;
|
|
||||||
begin
|
|
||||||
MainForm.StopThread;
|
|
||||||
MainForm.UpdateUndo;
|
|
||||||
MainCp.CmapIndex := cmbPalette.ItemIndex;
|
|
||||||
MainCp.cmap := Palette;
|
|
||||||
if EditForm.visible then EditForm.UpdateDisplay;
|
|
||||||
// if AdjustForm.visible then AdjustForm.UpdateDisplay;
|
|
||||||
if MutateForm.Visible then MutateForm.UpdateDisplay;
|
|
||||||
MainForm.RedrawTimer.enabled := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveMap(FileName: string);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
l: string;
|
|
||||||
MapFile: TextFile;
|
|
||||||
begin
|
|
||||||
{ Save a map file }
|
|
||||||
AssignFile(MapFile, FileName);
|
|
||||||
try
|
|
||||||
ReWrite(MapFile);
|
|
||||||
{ first line with comment }
|
|
||||||
l := Format(' %3d %3d %3d Exported from Apophysis 2.0', [Palette[0][0], palette[0][1],
|
|
||||||
palette[0][2]]);
|
|
||||||
Writeln(MapFile, l);
|
|
||||||
{ now the rest }
|
|
||||||
for i := 1 to 255 do
|
|
||||||
begin
|
|
||||||
l := Format(' %3d %3d %3d', [Palette[i][0], palette[i][1],
|
|
||||||
palette[i][2]]);
|
|
||||||
Writeln(MapFile, l);
|
|
||||||
end;
|
|
||||||
CloseFile(MapFile);
|
|
||||||
except
|
|
||||||
on EInOutError do Application.MessageBox(PChar('Cannot Open File: ' +
|
|
||||||
FileName), 'Apophysis', 16);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.UpdateGradient(Pal: TColorMap);
|
|
||||||
begin
|
|
||||||
Palette := Pal;
|
|
||||||
BackupPal := Pal;
|
|
||||||
DrawPalette;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure HSVToRGB(H, S, V: real; var Rb, Gb, Bb: integer);
|
|
||||||
var
|
|
||||||
R, G, B, Sa, Va, Hue, i, f, p, q, t: real;
|
|
||||||
begin
|
|
||||||
R := 0;
|
|
||||||
G := 0;
|
|
||||||
B := 0;
|
|
||||||
Sa := S / 100;
|
|
||||||
Va := V / 100;
|
|
||||||
if S = 0 then
|
|
||||||
begin
|
|
||||||
R := Va;
|
|
||||||
G := Va;
|
|
||||||
B := Va;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Hue := H / 60;
|
|
||||||
if Hue = 6 then Hue := 0;
|
|
||||||
i := Int(Hue);
|
|
||||||
f := Hue - i;
|
|
||||||
p := Va * (1 - Sa);
|
|
||||||
q := Va * (1 - (Sa * f));
|
|
||||||
t := Va * (1 - (Sa * (1 - f)));
|
|
||||||
case Round(i) of
|
|
||||||
0: begin
|
|
||||||
R := Va;
|
|
||||||
G := t;
|
|
||||||
B := p;
|
|
||||||
end;
|
|
||||||
1: begin
|
|
||||||
R := q;
|
|
||||||
G := Va;
|
|
||||||
B := p;
|
|
||||||
end;
|
|
||||||
2: begin
|
|
||||||
R := p;
|
|
||||||
G := Va;
|
|
||||||
B := t;
|
|
||||||
end;
|
|
||||||
3: begin
|
|
||||||
R := p;
|
|
||||||
G := q;
|
|
||||||
B := Va;
|
|
||||||
end;
|
|
||||||
4: begin
|
|
||||||
R := t;
|
|
||||||
G := p;
|
|
||||||
B := Va;
|
|
||||||
end;
|
|
||||||
5: begin
|
|
||||||
R := Va;
|
|
||||||
G := p;
|
|
||||||
B := q;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Rb := Round(Int(255.9999 * R));
|
|
||||||
Gb := Round(Int(255.9999 * G));
|
|
||||||
Bb := Round(Int(255.9999 * B));
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure RGBToHSV(R, G, B: byte; var H, S, V: real);
|
|
||||||
var
|
|
||||||
vRed, vGreen, vBlue, Mx, Mn, Va, Sa, rc, gc, bc: real;
|
|
||||||
begin
|
|
||||||
vRed := R / 255;
|
|
||||||
vGreen := G / 255;
|
|
||||||
vBlue := B / 255;
|
|
||||||
Mx := vRed;
|
|
||||||
if vGreen > Mx then Mx := vGreen;
|
|
||||||
if vBlue > Mx then Mx := vBlue;
|
|
||||||
Mn := vRed;
|
|
||||||
if vGreen < Mn then Mn := vGreen;
|
|
||||||
if vBlue < Mn then Mn := vBlue;
|
|
||||||
Va := Mx;
|
|
||||||
if Mx <> 0 then
|
|
||||||
Sa := (Mx - Mn) / Mx
|
|
||||||
else
|
|
||||||
Sa := 0;
|
|
||||||
if Sa = 0 then
|
|
||||||
H := 0
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
rc := (Mx - vRed) / (Mx - Mn);
|
|
||||||
gc := (Mx - vGreen) / (Mx - Mn);
|
|
||||||
bc := (Mx - vBlue) / (Mx - Mn);
|
|
||||||
if Mx = vRed then
|
|
||||||
H := bc - gc
|
|
||||||
else if Mx = vGreen then
|
|
||||||
H := 2 + rc - bc
|
|
||||||
else if Mx = vBlue then
|
|
||||||
H := 4 + gc - rc;
|
|
||||||
H := H * 60;
|
|
||||||
if H < 0 then H := H + 360;
|
|
||||||
end;
|
|
||||||
S := Sa * 100;
|
|
||||||
V := Va * 100;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.Blur(const Radius: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
var
|
|
||||||
r, g, b, n, i, j, k: Integer;
|
|
||||||
begin
|
|
||||||
Result := Pal;
|
|
||||||
if Radius <> 0 then
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
n := -1;
|
|
||||||
r := 0;
|
|
||||||
g := 0;
|
|
||||||
b := 0;
|
|
||||||
for j := i - radius to i + radius do
|
|
||||||
begin
|
|
||||||
inc(n);
|
|
||||||
k := (256 + j) mod 256;
|
|
||||||
if k <> i then begin
|
|
||||||
r := r + Pal[k][0];
|
|
||||||
g := g + Pal[k][1];
|
|
||||||
b := b + Pal[k][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if n <> 0 then begin
|
|
||||||
Result[i][0] := r div n;
|
|
||||||
Result[i][1] := g div n;
|
|
||||||
Result[i][2] := b div n;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.Frequency(const times: Integer; const pal: TColorMap): TColorMap;
|
|
||||||
{ This can be improved }
|
|
||||||
var
|
|
||||||
n, i, j: Integer;
|
|
||||||
begin
|
|
||||||
Result := Pal;
|
|
||||||
if times <> 1 then
|
|
||||||
begin
|
|
||||||
n := 256 div times;
|
|
||||||
for j := 0 to times do
|
|
||||||
for i := 0 to n do
|
|
||||||
begin
|
|
||||||
if (i + j * n) < 256 then
|
|
||||||
begin
|
|
||||||
Result[i + j * n][0] := pal[i * times][0];
|
|
||||||
Result[i + j * n][1] := pal[i * times][1];
|
|
||||||
Result[i + j * n][2] := pal[i * times][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.DrawPalette;
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
BitMap: TBitMap;
|
|
||||||
begin
|
|
||||||
BitMap := TBitMap.Create;
|
|
||||||
try
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 1;
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Palette[i][0];
|
|
||||||
rgbtGreen := Palette[i][1];
|
|
||||||
rgbtBlue := Palette[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
GradientImage.Picture.Graphic := Bitmap;
|
|
||||||
GradientImage.Refresh;
|
|
||||||
finally
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.cmbPaletteChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
i := cmbPalette.ItemIndex;
|
|
||||||
GetCmap(i, 1, Palette);
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
DrawPalette;
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormShow(Sender: TObject);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Read posution from registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Gradient', False) then
|
|
||||||
begin
|
|
||||||
if Registry.ValueExists('Left') then
|
|
||||||
GradientForm.Left := Registry.ReadInteger('Left');
|
|
||||||
if Registry.ValueExists('Top') then
|
|
||||||
GradientForm.Top := Registry.ReadInteger('Top');
|
|
||||||
end;
|
|
||||||
Registry.CloseKey;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormClose(Sender: TObject;
|
|
||||||
var Action: TCloseAction);
|
|
||||||
var
|
|
||||||
Registry: TRegistry;
|
|
||||||
begin
|
|
||||||
{ Write position to registry }
|
|
||||||
Registry := TRegistry.Create;
|
|
||||||
try
|
|
||||||
Registry.RootKey := HKEY_CURRENT_USER;
|
|
||||||
{ Defaults }
|
|
||||||
if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Gradient', True) then
|
|
||||||
begin
|
|
||||||
Registry.WriteInteger('Top', GradientForm.Top);
|
|
||||||
Registry.WriteInteger('Left', GradientForm.Left);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Registry.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TGradientForm.btnApplyClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuReverseClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
pal: TColorMap;
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do begin
|
|
||||||
pal[i][0] := Palette[255 - i][0];
|
|
||||||
pal[i][1] := Palette[255 - i][1];
|
|
||||||
pal[i][2] := Palette[255 - i][2];
|
|
||||||
end;
|
|
||||||
UpdateGradient(pal);
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuInvertClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := 255 - Palette[i][0];
|
|
||||||
Palette[i][1] := 255 - Palette[i][1];
|
|
||||||
Palette[i][2] := 255 - Palette[i][2];
|
|
||||||
end;
|
|
||||||
UpdateGradient(palette);
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnMenuClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Popup.Popup(btnMenu.ClientOrigin.x, btnMenu.ClientOrigin.y + btnMenu.Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ScrollBarChange(Sender: TObject);
|
|
||||||
var
|
|
||||||
intens, i, r, g, b: integer;
|
|
||||||
h, s, v: real;
|
|
||||||
begin
|
|
||||||
lblVal.Caption := IntToStr(ScrollBar.Position);
|
|
||||||
if btnMenu.Caption = 'Hue' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
RGBToHSV(BackupPal[i][0], BackupPal[i][1], BackupPal[i][2], h, s, v);
|
|
||||||
h := Round(360 + h + ScrollBar.Position) mod 360;
|
|
||||||
HSVToRGB(h, s, v, Palette[i][0], Palette[i][1], Palette[i][2]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Saturation' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
RGBToHSV(BackupPal[i][0], BackupPal[i][1], BackupPal[i][2], h, s, v);
|
|
||||||
s := s + ScrollBar.Position;
|
|
||||||
if s > 100 then s := 100;
|
|
||||||
if s < 0 then s := 0;
|
|
||||||
HSVToRGB(h, s, v, Palette[i][0], Palette[i][1], Palette[i][2]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Contrast' then
|
|
||||||
begin
|
|
||||||
intens := scrollBar.Position;
|
|
||||||
if intens > 0 then intens := intens * 2;
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
r := BackupPal[i][0];
|
|
||||||
g := BackupPal[i][1];
|
|
||||||
b := BackupPal[i][2];
|
|
||||||
r := round(r + intens / 100 * (r - 127));
|
|
||||||
g := round(g + intens / 100 * (g - 127));
|
|
||||||
b := round(b + intens / 100 * (b - 127));
|
|
||||||
if R > 255 then R := 255 else if R < 0 then R := 0;
|
|
||||||
if G > 255 then G := 255 else if G < 0 then G := 0;
|
|
||||||
if B > 255 then B := 255 else if B < 0 then B := 0;
|
|
||||||
Palette[i][0] := r;
|
|
||||||
Palette[i][1] := g;
|
|
||||||
Palette[i][2] := b;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Brightness' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := BackupPal[i][0] + ScrollBar.Position;
|
|
||||||
if Palette[i][0] > 255 then Palette[i][0] := 255;
|
|
||||||
if Palette[i][0] < 0 then Palette[i][0] := 0;
|
|
||||||
Palette[i][1] := BackupPal[i][1] + ScrollBar.Position;
|
|
||||||
if Palette[i][1] > 255 then Palette[i][1] := 255;
|
|
||||||
if Palette[i][1] < 0 then Palette[i][1] := 0;
|
|
||||||
Palette[i][2] := BackupPal[i][2] + ScrollBar.Position;
|
|
||||||
if Palette[i][2] > 255 then Palette[i][2] := 255;
|
|
||||||
if Palette[i][2] < 0 then Palette[i][2] := 0;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Rotate' then
|
|
||||||
begin
|
|
||||||
for i := 0 to 255 do
|
|
||||||
begin
|
|
||||||
Palette[i][0] := BackupPal[(255 + i - ScrollBar.Position) mod 256][0];
|
|
||||||
Palette[i][1] := BackupPal[(255 + i - ScrollBar.Position) mod 256][1];
|
|
||||||
Palette[i][2] := BackupPal[(255 + i - ScrollBar.Position) mod 256][2];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Blur' then
|
|
||||||
begin
|
|
||||||
Palette := Blur(ScrollBar.Position, BackupPal);
|
|
||||||
end;
|
|
||||||
if btnMenu.Caption = 'Frequency' then
|
|
||||||
begin
|
|
||||||
Palette := Frequency(ScrollBar.Position, BackupPal);
|
|
||||||
end;
|
|
||||||
DrawPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ ***************************** Adjust menu ********************************* }
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuRotateClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Rotate';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 255;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuHueClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Hue';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 360;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuBrightnessClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Brightness';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -255;
|
|
||||||
ScrollBar.Max := 255;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSaturationClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Saturation';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -100;
|
|
||||||
ScrollBar.Max := 100;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuBlurClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Blur';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 0;
|
|
||||||
ScrollBar.Max := 127;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuFrequencyClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Frequency';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := 1;
|
|
||||||
ScrollBar.Max := 10;
|
|
||||||
ScrollBar.LargeChange := 1;
|
|
||||||
ScrollBar.Position := 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnOpenClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
GradientBrowser.Filename := GradientFile;
|
|
||||||
GradientBrowser.Show;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSmoothPaletteClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.SmoothPalette;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveGradient1Click(Sender: TObject);
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
SaveForm.Caption := 'Save Gradient';
|
|
||||||
SaveForm.Filename := GradientFile;
|
|
||||||
SaveForm.Title := MainCp.name;
|
|
||||||
if SaveForm.ShowModal = mrOK then
|
|
||||||
begin
|
|
||||||
gradstr.add(CleanIdentifier(SaveForm.Title) + ' {');
|
|
||||||
gradstr.add(MainForm.GradientFromPalette(Palette, SaveForm.Title));
|
|
||||||
gradstr.add('}');
|
|
||||||
if MainForm.SaveGradient(gradstr.text, SaveForm.Title, SaveForm.Filename) then
|
|
||||||
GradientFile := SaveForm.FileName;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
gradstr.free
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.SaveasMapfile1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
SaveDialog.Filename := MainCp.name + '.map';
|
|
||||||
if SaveDialog.execute then
|
|
||||||
SaveMap(SaveDialog.Filename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.cmbPaletteDrawItem(Control: TWinControl;
|
|
||||||
Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
Bitmap: TBitmap;
|
|
||||||
pal: TColorMap;
|
|
||||||
PalName: string;
|
|
||||||
begin
|
|
||||||
{ Draw the preset palettes on the combo box items }
|
|
||||||
GetCMap(index, 1, pal);
|
|
||||||
GetCmapName(index, PalName);
|
|
||||||
|
|
||||||
BitMap := TBitMap.create;
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 100;
|
|
||||||
|
|
||||||
for j := 0 to Bitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
with Row[i] do
|
|
||||||
begin
|
|
||||||
rgbtRed := Pal[i][0];
|
|
||||||
rgbtGreen := Pal[i][1];
|
|
||||||
rgbtBlue := Pal[i][2];
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
with Control as TComboBox do
|
|
||||||
begin
|
|
||||||
Canvas.Rectangle(Rect);
|
|
||||||
|
|
||||||
Canvas.TextOut(4, Rect.Top, PalName);
|
|
||||||
Rect.Left := (Rect.Left + rect.Right) div 2;
|
|
||||||
Canvas.StretchDraw(Rect, Bitmap);
|
|
||||||
end;
|
|
||||||
BitMap.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ScrollBarScroll(Sender: TObject;
|
|
||||||
ScrollCode: TScrollCode; var ScrollPos: Integer);
|
|
||||||
begin
|
|
||||||
if ScrollCode = scEndScroll then Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnCopyClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
gradstr.add(CleanIdentifier(MainCp.name) + ' {');
|
|
||||||
gradstr.add('gradient:');
|
|
||||||
gradstr.add(' title="' + MainCp.name + '" smooth=no');
|
|
||||||
gradstr.add(GradientString(Palette));
|
|
||||||
gradstr.add('}');
|
|
||||||
Clipboard.SetTextBuf(PChar(gradstr.text));
|
|
||||||
btnPaste.enabled := true;
|
|
||||||
mnuPaste.enabled := true;
|
|
||||||
MainForm.btnPaste.enabled := False;
|
|
||||||
MainForm.mnuPaste.enabled := False;
|
|
||||||
finally
|
|
||||||
gradstr.free
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.btnPasteClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if Clipboard.HasFormat(CF_TEXT) then
|
|
||||||
begin
|
|
||||||
UpdateGradient(CreatePalette(Clipboard.AsText));
|
|
||||||
Apply;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GradientInClipboard: boolean;
|
|
||||||
var
|
|
||||||
gradstr: TStringList;
|
|
||||||
begin
|
|
||||||
{ returns true if gradient in clipboard - can be tricked }
|
|
||||||
result := true;
|
|
||||||
if Clipboard.HasFormat(CF_TEXT) then
|
|
||||||
begin
|
|
||||||
gradstr := TStringList.Create;
|
|
||||||
try
|
|
||||||
gradstr.text := Clipboard.AsText;
|
|
||||||
if (Pos('}', gradstr.text) = 0) or (Pos('{', gradstr.text) = 0) or
|
|
||||||
(Pos('gradient:', gradstr.text) = 0) or (Pos('fractal:', gradstr.text) <> 0) then
|
|
||||||
begin
|
|
||||||
result := false;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
gradstr.free;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result := false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.ApplicationEventsActivate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if GradientInClipboard then begin
|
|
||||||
mnuPaste.enabled := true;
|
|
||||||
btnPaste.enabled := true;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
mnuPaste.enabled := false;
|
|
||||||
btnPaste.enabled := false;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuSaveasDefaultClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MainForm.DefaultPalette := Palette;
|
|
||||||
SaveMap(AppPath + 'default.map');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure RGBBlend(a, b: integer; var Palette: TColorMap);
|
|
||||||
{ Linear blend between to indices of a palette }
|
|
||||||
var
|
|
||||||
c, v: real;
|
|
||||||
vrange, range: real;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
if a = b then
|
|
||||||
begin
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
range := b - a;
|
|
||||||
vrange := Palette[b mod 256][0] - Palette[a mod 256][0];
|
|
||||||
c := Palette[a mod 256][0];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := (a + 1) to (b - 1) do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][0] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][1] - Palette[a mod 256][1];
|
|
||||||
c := Palette[a mod 256][1];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][1] := Round(c);
|
|
||||||
end;
|
|
||||||
vrange := Palette[b mod 256][2] - Palette[a mod 256][2];
|
|
||||||
c := Palette[a mod 256][2];
|
|
||||||
v := vrange / range;
|
|
||||||
for i := a + 1 to b - 1 do
|
|
||||||
begin
|
|
||||||
c := c + v;
|
|
||||||
Palette[i mod 256][2] := Round(c);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGradientForm.RandomGradient: TColorMap;
|
|
||||||
var
|
|
||||||
a, b, n, nodes: integer;
|
|
||||||
rgb: array[0..2] of double;
|
|
||||||
hsv: array[0..2] of double;
|
|
||||||
pal: TColorMap;
|
|
||||||
begin
|
|
||||||
inc(MainForm.Seed);
|
|
||||||
RandSeed := MainForm.seed;
|
|
||||||
nodes := random((MaxNodes - 1) - (MinNodes - 2)) + (MinNodes - 1);
|
|
||||||
n := 256 div nodes;
|
|
||||||
b := 0;
|
|
||||||
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100;
|
|
||||||
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100;
|
|
||||||
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100;
|
|
||||||
hsv2rgb(hsv, rgb);
|
|
||||||
Pal[0][0] := Round(rgb[0] * 255);
|
|
||||||
Pal[0][1] := Round(rgb[1] * 255);
|
|
||||||
Pal[0][2] := Round(rgb[2] * 255);
|
|
||||||
repeat
|
|
||||||
a := b;
|
|
||||||
b := b + n;
|
|
||||||
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100;
|
|
||||||
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100;
|
|
||||||
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100;
|
|
||||||
hsv2rgb(hsv, rgb);
|
|
||||||
if b > 255 then b := 255;
|
|
||||||
Pal[b][0] := Round(rgb[0] * 255);
|
|
||||||
Pal[b][1] := Round(rgb[1] * 255);
|
|
||||||
Pal[b][2] := Round(rgb[2] * 255);
|
|
||||||
RGBBlend(a, b, pal);
|
|
||||||
until b = 255;
|
|
||||||
Result := Pal;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.mnuRandomizeClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
GradientForm.UpdateGradient(RandomGradient);
|
|
||||||
GradientForm.Apply;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.Contrast1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
btnMenu.Caption := 'Contrast';
|
|
||||||
BackupPal := Palette;
|
|
||||||
ScrollBar.Min := -100;
|
|
||||||
ScrollBar.Max := 100;
|
|
||||||
ScrollBar.LargeChange := 15;
|
|
||||||
ScrollBar.Position := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TGradientForm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Sendmessage(cmbPalette.Handle, CB_SETDROPPEDWIDTH , cmbPalette.width * 2, 0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
unit GradientHlpr;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
windows, Graphics;
|
|
||||||
|
|
||||||
const
|
|
||||||
PixelCountMax = 32768;
|
|
||||||
|
|
||||||
type
|
|
||||||
pRGBTripleArray = ^TRGBTripleArray;
|
|
||||||
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
|
||||||
|
|
||||||
type
|
|
||||||
TGradientHelper = class
|
|
||||||
private
|
|
||||||
public
|
|
||||||
function GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
GradientHelper: TGradientHelper;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
Cmap;
|
|
||||||
|
|
||||||
{ TGradientHelper }
|
|
||||||
|
|
||||||
function TGradientHelper.GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
|
||||||
var
|
|
||||||
BitMap: TBitMap;
|
|
||||||
i, j: integer;
|
|
||||||
Row: pRGBTripleArray;
|
|
||||||
pal: TColorMap;
|
|
||||||
begin
|
|
||||||
GetCMap(index, hue_rotation, pal);
|
|
||||||
|
|
||||||
BitMap := TBitMap.create;
|
|
||||||
Bitmap.PixelFormat := pf24bit;
|
|
||||||
BitMap.Width := 256;
|
|
||||||
BitMap.Height := 2;
|
|
||||||
|
|
||||||
for j := 0 to Bitmap.Height - 1 do begin
|
|
||||||
Row := Bitmap.Scanline[j];
|
|
||||||
for i := 0 to Bitmap.Width - 1 do begin
|
|
||||||
Row[i].rgbtRed := Pal[i][0];
|
|
||||||
Row[i].rgbtGreen := Pal[i][1];
|
|
||||||
Row[i].rgbtBlue := Pal[i][2];
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
|
|
||||||
Result := BitMap;
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
|
||||||
GradientHelper := TGradientHelper.create;
|
|
||||||
finalization
|
|
||||||
GradientHelper.Free;
|
|
||||||
end.
|
|
@ -1,6 +0,0 @@
|
|||||||
{.$DEFINE DELPHI3}
|
|
||||||
{.$DEFINE _WIN64}
|
|
||||||
{.$DEFINE HTMLHELP11}
|
|
||||||
{$DEFINE HTMLHELP12}
|
|
||||||
{.$DEFINE HTMLHELP_DYNAMIC_LINK}
|
|
||||||
{.$DEFINE HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
@ -1,862 +0,0 @@
|
|||||||
{******************************************************************}
|
|
||||||
{ }
|
|
||||||
{ Borland Delphi Runtime Library }
|
|
||||||
{ HTML Help interface unit }
|
|
||||||
{ }
|
|
||||||
{ Portions created by Microsoft are }
|
|
||||||
{ Copyright (C) 1995-1999 Microsoft Corporation. }
|
|
||||||
{ All Rights Reserved. }
|
|
||||||
{ }
|
|
||||||
{ The original file is: htmlhelp.h, released 12 May 1999. }
|
|
||||||
{ The original Pascal code is: HTMLHelp.pas, released 9 Jun 1999. }
|
|
||||||
{ The initial developer of the Pascal code is Marcel van Brakel }
|
|
||||||
{ (brakelm@bart.nl). }
|
|
||||||
{ }
|
|
||||||
{ Portions created by Marcel van Brakel are }
|
|
||||||
{ Copyright (C) 1999 Marcel van Brakel. }
|
|
||||||
{ }
|
|
||||||
{ Contributor(s): Robert Chandler (robert@helpware.net) }
|
|
||||||
{ Kurt Senfer (ks@siemens.dk) }
|
|
||||||
{ }
|
|
||||||
{ Obtained through: }
|
|
||||||
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
||||||
{ }
|
|
||||||
{ You may retrieve the latest version of this file at the Project }
|
|
||||||
{ JEDI home page, located at http://delphi-jedi.org }
|
|
||||||
{ }
|
|
||||||
{ The contents of this file are used with permission, subject to }
|
|
||||||
{ the Mozilla Public License Version 1.1 (the "License"); you may }
|
|
||||||
{ not use this file except in compliance with the License. You may }
|
|
||||||
{ obtain a copy of the License at }
|
|
||||||
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
||||||
{ }
|
|
||||||
{ Software distributed under the License is distributed on an }
|
|
||||||
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
|
|
||||||
{ implied. See the License for the specific language governing }
|
|
||||||
{ rights and limitations under the License. }
|
|
||||||
{ }
|
|
||||||
{******************************************************************}
|
|
||||||
|
|
||||||
unit HtmlHlp;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
(*$HPPEMIT '#include "htmlhelp.h"'*)
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
(*$HPPEMIT 'typedef struct tagHH_LAST_ERROR'*)
|
|
||||||
(*$HPPEMIT '{'*)
|
|
||||||
(*$HPPEMIT ' int cbStruct ;'*)
|
|
||||||
(*$HPPEMIT ' HRESULT hr ;'*)
|
|
||||||
(*$HPPEMIT ' BSTR description ;'*)
|
|
||||||
(*$HPPEMIT '} HH_LAST_ERROR ;'*)
|
|
||||||
(*$HPPEMIT ''*)
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows;
|
|
||||||
|
|
||||||
{$I HTMLHLP.INC}
|
|
||||||
|
|
||||||
type
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
{$IFNDEF _WIN64}
|
|
||||||
DWORD_PTR = DWORD;
|
|
||||||
{$ENDIF}
|
|
||||||
{$ENDIF}
|
|
||||||
PCSTR = LPCSTR;
|
|
||||||
|
|
||||||
// Commands to pass to HtmlHelp()
|
|
||||||
|
|
||||||
const
|
|
||||||
HH_DISPLAY_TOPIC = $0000;
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TOPIC}
|
|
||||||
HH_HELP_FINDER = $0000; // WinHelp equivalent
|
|
||||||
{$EXTERNALSYM HH_HELP_FINDER}
|
|
||||||
HH_DISPLAY_TOC = $0001; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TOC}
|
|
||||||
HH_DISPLAY_INDEX = $0002; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_INDEX}
|
|
||||||
HH_DISPLAY_SEARCH = $0003; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_SEARCH}
|
|
||||||
HH_SET_WIN_TYPE = $0004;
|
|
||||||
{$EXTERNALSYM HH_SET_WIN_TYPE}
|
|
||||||
HH_GET_WIN_TYPE = $0005;
|
|
||||||
{$EXTERNALSYM HH_GET_WIN_TYPE}
|
|
||||||
HH_GET_WIN_HANDLE = $0006;
|
|
||||||
{$EXTERNALSYM HH_GET_WIN_HANDLE}
|
|
||||||
HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_INFO_TYPE}
|
|
||||||
HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
|
|
||||||
{$EXTERNALSYM HH_SET_INFO_TYPE}
|
|
||||||
HH_SYNC = $0009;
|
|
||||||
{$EXTERNALSYM HH_SYNC}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_ADD_NAV_UI = $000A; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_ADD_NAV_UI}
|
|
||||||
HH_ADD_BUTTON = $000B; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_ADD_BUTTON}
|
|
||||||
HH_GETBROWSER_APP = $000C; // not currently implemented
|
|
||||||
{$EXTERNALSYM HH_GETBROWSER_APP}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_RESERVED1 = $000A;
|
|
||||||
{$EXTERNALSYM HH_RESERVED1}
|
|
||||||
HH_RESERVED2 = $000B;
|
|
||||||
{$EXTERNALSYM HH_RESERVED2}
|
|
||||||
HH_RESERVED3 = $000C;
|
|
||||||
{$EXTERNALSYM HH_RESERVED3}
|
|
||||||
{$ENDIF}
|
|
||||||
HH_KEYWORD_LOOKUP = $000D;
|
|
||||||
{$EXTERNALSYM HH_KEYWORD_LOOKUP}
|
|
||||||
HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
|
|
||||||
{$EXTERNALSYM HH_DISPLAY_TEXT_POPUP}
|
|
||||||
HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
|
|
||||||
{$EXTERNALSYM HH_HELP_CONTEXT}
|
|
||||||
HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
|
|
||||||
{$EXTERNALSYM HH_TP_HELP_CONTEXTMENU}
|
|
||||||
HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
|
|
||||||
{$EXTERNALSYM HH_TP_HELP_WM_HELP}
|
|
||||||
HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
|
|
||||||
{$EXTERNALSYM HH_CLOSE_ALL}
|
|
||||||
HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
|
|
||||||
{$EXTERNALSYM HH_ALINK_LOOKUP}
|
|
||||||
HH_GET_LAST_ERROR = $0014; // not currently implemented, See HHERROR.h
|
|
||||||
{$EXTERNALSYM HH_GET_LAST_ERROR}
|
|
||||||
HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_CATEGORY}
|
|
||||||
HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
|
|
||||||
{$EXTERNALSYM HH_ENUM_CATEGORY_IT}
|
|
||||||
HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
|
|
||||||
{$EXTERNALSYM HH_RESET_IT_FILTER}
|
|
||||||
HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
|
|
||||||
{$EXTERNALSYM HH_SET_INCLUSIVE_FILTER}
|
|
||||||
HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
|
|
||||||
{$EXTERNALSYM HH_SET_EXCLUSIVE_FILTER}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
|
|
||||||
{$EXTERNALSYM HH_SET_GUID}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_INITIALIZE = $001C; // Initializes the help system.
|
|
||||||
{$EXTERNALSYM HH_INITIALIZE}
|
|
||||||
HH_UNINITIALIZE = $001D; // Uninitializes the help system.
|
|
||||||
{$EXTERNALSYM HH_UNINITIALIZE}
|
|
||||||
HH_PRETRANSLATEMESSAGE = $00FD; // Pumps messages. (NULL, NULL, MSG*).
|
|
||||||
{$EXTERNALSYM HH_PRETRANSLATEMESSAGE}
|
|
||||||
HH_SET_GLOBAL_PROPERTY = $00FC; // Set a global property. (NULL, NULL, HH_GPROP)
|
|
||||||
{$EXTERNALSYM HH_SET_GLOBAL_PROPERTY}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_INTERNAL = $00FF; // Used internally.
|
|
||||||
{$EXTERNALSYM HH_INTERNAL}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_AUTOHIDESHOW}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window (not currently implemented)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_ONTOP}
|
|
||||||
HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NOTITLEBAR}
|
|
||||||
HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NODEF_STYLES}
|
|
||||||
HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles)
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NODEF_EXSTYLES}
|
|
||||||
HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TRI_PANE}
|
|
||||||
HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NOTB_TEXT}
|
|
||||||
HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_POST_QUIT}
|
|
||||||
HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_AUTO_SYNC}
|
|
||||||
HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TRACKING}
|
|
||||||
HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_SEARCH}
|
|
||||||
HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_PROP_TAB_BOOKMARKS = (1 shl 12); // include bookmark tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_CHANGE_TITLE}
|
|
||||||
HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NAV_ONLY_WIN}
|
|
||||||
HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_NO_TOOLBAR}
|
|
||||||
HHWIN_PROP_MENU = (1 shl 16); // Menu
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_MENU}
|
|
||||||
HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI.
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_ADVSEARCH}
|
|
||||||
HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/Position
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_USER_POS}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM1}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM2}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM3}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM4}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM5}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM6}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM7}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM8}
|
|
||||||
HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9
|
|
||||||
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM9}
|
|
||||||
HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin
|
|
||||||
{$EXTERNALSYM HHWIN_TB_MARGIN}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_PROPERTIES}
|
|
||||||
HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_STYLES}
|
|
||||||
HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_EXSTYLES}
|
|
||||||
HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_RECT}
|
|
||||||
HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_NAV_WIDTH}
|
|
||||||
HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_SHOWSTATE}
|
|
||||||
HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_INFOTYPES}
|
|
||||||
HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TB_FLAGS}
|
|
||||||
HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_EXPANSION}
|
|
||||||
HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TABPOS}
|
|
||||||
HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_TABORDER}
|
|
||||||
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_HISTORY_COUNT}
|
|
||||||
HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType
|
|
||||||
{$EXTERNALSYM HHWIN_PARAM_CUR_TAB}
|
|
||||||
|
|
||||||
HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_EXPAND}
|
|
||||||
HHWIN_BUTTON_BACK = (1 shl 2); // Back button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BACK}
|
|
||||||
HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_FORWARD}
|
|
||||||
HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_STOP}
|
|
||||||
HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_REFRESH}
|
|
||||||
HHWIN_BUTTON_HOME = (1 shl 6); // Home button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_HOME}
|
|
||||||
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_FWD}
|
|
||||||
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_BCK}
|
|
||||||
HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_NOTES}
|
|
||||||
HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_CONTENTS}
|
|
||||||
HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_SYNC}
|
|
||||||
HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_OPTIONS}
|
|
||||||
HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_PRINT}
|
|
||||||
HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_INDEX}
|
|
||||||
HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_SEARCH}
|
|
||||||
HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_BUTTON_BOOKMARKS = (1 shl 17); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
HHWIN_BUTTON_JUMP1 = (1 shl 18);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_JUMP1}
|
|
||||||
HHWIN_BUTTON_JUMP2 = (1 shl 19);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_JUMP2}
|
|
||||||
HHWIN_BUTTON_ZOOM = (1 shl 20);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_ZOOM}
|
|
||||||
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_TOC_NEXT}
|
|
||||||
HHWIN_BUTTON_TOC_PREV = (1 shl 22);
|
|
||||||
{$EXTERNALSYM HHWIN_BUTTON_TOC_PREV}
|
|
||||||
|
|
||||||
HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND or HHWIN_BUTTON_BACK or
|
|
||||||
HHWIN_BUTTON_OPTIONS or HHWIN_BUTTON_PRINT;
|
|
||||||
{$EXTERNALSYM HHWIN_DEF_BUTTONS}
|
|
||||||
|
|
||||||
// Button IDs
|
|
||||||
|
|
||||||
IDTB_EXPAND = 200;
|
|
||||||
{$EXTERNALSYM IDTB_EXPAND}
|
|
||||||
IDTB_CONTRACT = 201;
|
|
||||||
{$EXTERNALSYM IDTB_CONTRACT}
|
|
||||||
IDTB_STOP = 202;
|
|
||||||
{$EXTERNALSYM IDTB_STOP}
|
|
||||||
IDTB_REFRESH = 203;
|
|
||||||
{$EXTERNALSYM IDTB_REFRESH}
|
|
||||||
IDTB_BACK = 204;
|
|
||||||
{$EXTERNALSYM IDTB_BACK}
|
|
||||||
IDTB_HOME = 205;
|
|
||||||
{$EXTERNALSYM IDTB_HOME}
|
|
||||||
IDTB_SYNC = 206;
|
|
||||||
{$EXTERNALSYM IDTB_SYNC}
|
|
||||||
IDTB_PRINT = 207;
|
|
||||||
{$EXTERNALSYM IDTB_PRINT}
|
|
||||||
IDTB_OPTIONS = 208;
|
|
||||||
{$EXTERNALSYM IDTB_OPTIONS}
|
|
||||||
IDTB_FORWARD = 209;
|
|
||||||
{$EXTERNALSYM IDTB_FORWARD}
|
|
||||||
IDTB_NOTES = 210; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_NOTES}
|
|
||||||
IDTB_BROWSE_FWD = 211;
|
|
||||||
{$EXTERNALSYM IDTB_BROWSE_FWD}
|
|
||||||
IDTB_BROWSE_BACK = 212;
|
|
||||||
{$EXTERNALSYM IDTB_BROWSE_BACK}
|
|
||||||
IDTB_CONTENTS = 213; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_CONTENTS}
|
|
||||||
IDTB_INDEX = 214; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_INDEX}
|
|
||||||
IDTB_SEARCH = 215; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_SEARCH}
|
|
||||||
IDTB_HISTORY = 216; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_HISTORY}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
IDTB_BOOKMARKS = 217; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_BOOKMARKS}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
IDTB_FAVORITES = 217; // not implemented
|
|
||||||
{$EXTERNALSYM IDTB_FAVORITES}
|
|
||||||
{$ENDIF}
|
|
||||||
IDTB_JUMP1 = 218;
|
|
||||||
{$EXTERNALSYM IDTB_JUMP1}
|
|
||||||
IDTB_JUMP2 = 219;
|
|
||||||
{$EXTERNALSYM IDTB_JUMP2}
|
|
||||||
IDTB_CUSTOMIZE = 221;
|
|
||||||
{$EXTERNALSYM IDTB_CUSTOMIZE}
|
|
||||||
IDTB_ZOOM = 222;
|
|
||||||
{$EXTERNALSYM IDTB_ZOOM}
|
|
||||||
IDTB_TOC_NEXT = 223;
|
|
||||||
{$EXTERNALSYM IDTB_TOC_NEXT}
|
|
||||||
IDTB_TOC_PREV = 224;
|
|
||||||
{$EXTERNALSYM IDTB_TOC_PREV}
|
|
||||||
|
|
||||||
// Notification codes
|
|
||||||
|
|
||||||
HHN_FIRST = -860;
|
|
||||||
{$EXTERNALSYM HHN_FIRST}
|
|
||||||
HHN_LAST = -879;
|
|
||||||
{$EXTERNALSYM HHN_LAST}
|
|
||||||
|
|
||||||
HHN_NAVCOMPLETE = (HHN_FIRST - 0);
|
|
||||||
{$EXTERNALSYM HHN_NAVCOMPLETE}
|
|
||||||
HHN_TRACK = (HHN_FIRST - 1);
|
|
||||||
{$EXTERNALSYM HHN_TRACK}
|
|
||||||
HHN_WINDOW_CREATE = (HHN_FIRST - 2);
|
|
||||||
{$EXTERNALSYM HHN_WINDOW_CREATE}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHLastError = ^THHLastError;
|
|
||||||
tagHH_LAST_ERROR = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
hr: HRESULT; // the last error code.
|
|
||||||
description: PWideChar; // a description of the error (unicode string - BSTR).
|
|
||||||
end;
|
|
||||||
THHLastError = tagHH_LAST_ERROR;
|
|
||||||
|
|
||||||
PHHNNotify = ^THHNNotify;
|
|
||||||
tagHHN_NOTIFY = packed record
|
|
||||||
hdr: NMHDR;
|
|
||||||
pszUrl: PCSTR; // multibyte null-terminated string
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHHN_NOTIFY}
|
|
||||||
HHN_NOTIFY = tagHHN_NOTIFY;
|
|
||||||
{$EXTERNALSYM HHN_NOTIFY}
|
|
||||||
THHNNotify = tagHHN_NOTIFY;
|
|
||||||
|
|
||||||
PHHPopup = ^THHPopup;
|
|
||||||
tagHH_POPUP = packed record
|
|
||||||
cbStruct: Integer; // sizeof this structure
|
|
||||||
hinst: HINST; // instance handle for string resource
|
|
||||||
idString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp call
|
|
||||||
pszText: LPCTSTR; // used if idString is zero
|
|
||||||
pt: TPoint; // top center of popup window
|
|
||||||
clrForeGround: TColorRef; // use -1 for default
|
|
||||||
clrBackground: TColorRef; // use -1 for default
|
|
||||||
rcMargins: TRect; // amount of space between edges of window and text, -1 for each member to ignore
|
|
||||||
pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_POPUP}
|
|
||||||
HH_POPUP = tagHH_POPUP;
|
|
||||||
{$EXTERNALSYM HH_POPUP}
|
|
||||||
THHPopup = tagHH_POPUP;
|
|
||||||
|
|
||||||
PHHAKLink = ^THHAKLink;
|
|
||||||
tagHH_AKLINK = packed record
|
|
||||||
cbStruct: Integer; // sizeof this structure
|
|
||||||
fReserved: BOOL; // must be FALSE (really!)
|
|
||||||
pszKeywords: LPCTSTR; // semi-colon separated keywords
|
|
||||||
pszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)
|
|
||||||
pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
|
|
||||||
pszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
|
|
||||||
pszWindow: LPCTSTR; // Window to display URL in
|
|
||||||
fIndexOnFail: BOOL; // Displays index if keyword lookup fails.
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_AKLINK}
|
|
||||||
HH_AKLINK = tagHH_AKLINK;
|
|
||||||
{$EXTERNALSYM HH_AKLINK}
|
|
||||||
THHAKLink = tagHH_AKLINK;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHWIN_NAVTYPE_TOC = 0;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_TOC}
|
|
||||||
HHWIN_NAVTYPE_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_INDEX}
|
|
||||||
HHWIN_NAVTYPE_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_SEARCH}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HHWIN_NAVTYPE_BOOKMARKS = 3;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_BOOKMARKS}
|
|
||||||
HHWIN_NAVTYPE_HISTORY = 4; //not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HHWIN_NAVTYPE_FAVORITES = 3;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_FAVORITES}
|
|
||||||
HHWIN_NAVTYPE_HISTORY = 4; //not implemented
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
|
|
||||||
HHWIN_NAVTYPE_AUTHOR = 5;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_AUTHOR}
|
|
||||||
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTYPE_CUSTOM_FIRST}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
IT_INCLUSIVE = 0;
|
|
||||||
{$EXTERNALSYM IT_INCLUSIVE}
|
|
||||||
IT_EXCLUSIVE = 1;
|
|
||||||
{$EXTERNALSYM IT_EXCLUSIVE}
|
|
||||||
IT_HIDDEN = 2;
|
|
||||||
{$EXTERNALSYM IT_HIDDEN}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHEnumIT = ^THHEnumIT;
|
|
||||||
tagHH_ENUM_IT = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
iType: Integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
|
|
||||||
pszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULL
|
|
||||||
pszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
|
|
||||||
pszITDescription: LPCSTR; // volitile pointer to the description of the infotype.
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_ENUM_IT}
|
|
||||||
HH_ENUM_IT = tagHH_ENUM_IT;
|
|
||||||
{$EXTERNALSYM HH_ENUM_IT}
|
|
||||||
PHH_ENUM_IT = ^tagHH_ENUM_IT;
|
|
||||||
{$EXTERNALSYM PHH_ENUM_IT}
|
|
||||||
THHEnumIT = tagHH_ENUM_IT;
|
|
||||||
|
|
||||||
PHHEnumCat = ^THHEnumCat;
|
|
||||||
tagHH_ENUM_CAT = packed record
|
|
||||||
cbStruct: Integer; // size of this structure
|
|
||||||
pszCatName: LPCSTR; // volitile pointer to the category name
|
|
||||||
pszCatDescription: LPCSTR; // volitile pointer to the category description
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_ENUM_CAT}
|
|
||||||
HH_ENUM_CAT = tagHH_ENUM_CAT;
|
|
||||||
{$EXTERNALSYM HH_ENUM_CAT}
|
|
||||||
PHH_ENUM_CAT = ^tagHH_ENUM_CAT;
|
|
||||||
{$EXTERNALSYM PHH_ENUM_CAT}
|
|
||||||
THHEnumCat = tagHH_ENUM_CAT;
|
|
||||||
|
|
||||||
PHHSetInfoType = ^THHSetInfoType;
|
|
||||||
tagHH_SET_INFOTYPE = packed record
|
|
||||||
cbStruct: Integer; // the size of this structure
|
|
||||||
pszCatName: LPCSTR; // the name of the category, if any, the InfoType is a member of.
|
|
||||||
pszInfoTypeName: LPCSTR; // the name of the info type to add to the filter
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_SET_INFOTYPE}
|
|
||||||
HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
|
|
||||||
{$EXTERNALSYM HH_SET_INFOTYPE}
|
|
||||||
PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
|
|
||||||
{$EXTERNALSYM PHH_SET_INFOTYPE}
|
|
||||||
THHSetInfoType = tagHH_SET_INFOTYPE;
|
|
||||||
|
|
||||||
HH_INFOTYPE = DWORD;
|
|
||||||
{$EXTERNALSYM HH_INFOTYPE}
|
|
||||||
PHH_INFOTYPE = ^HH_INFOTYPE;
|
|
||||||
{$EXTERNALSYM PHH_INFOTYPE}
|
|
||||||
PHHInfoType = ^THHInfoType;
|
|
||||||
THHInfoType = HH_INFOTYPE;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHWIN_NAVTAB_TOP = 0;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_TOP}
|
|
||||||
HHWIN_NAVTAB_LEFT = 1;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_LEFT}
|
|
||||||
HHWIN_NAVTAB_BOTTOM = 2;
|
|
||||||
{$EXTERNALSYM HHWIN_NAVTAB_BOTTOM}
|
|
||||||
|
|
||||||
HH_MAX_TABS = 19;
|
|
||||||
{$EXTERNALSYM HH_MAX_TABS}
|
|
||||||
|
|
||||||
HH_TAB_CONTENTS = 0;
|
|
||||||
{$EXTERNALSYM HH_TAB_CONTENTS}
|
|
||||||
HH_TAB_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HH_TAB_INDEX}
|
|
||||||
HH_TAB_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HH_TAB_SEARCH}
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
HH_TAB_BOOKMARKS = 3;
|
|
||||||
{$EXTERNALSYM HH_TAB_BOOKMARKS}
|
|
||||||
HH_TAB_HISTORY = 4;
|
|
||||||
{$EXTERNALSYM HH_TAB_HISTORY}
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
HH_TAB_FAVORITES = 3;
|
|
||||||
{$EXTERNALSYM HH_TAB_FAVORITES}
|
|
||||||
HH_TAB_HISTORY = 4;
|
|
||||||
{$EXTERNALSYM HH_TAB_HISTORY}
|
|
||||||
HH_TAB_AUTHOR = 5;
|
|
||||||
{$EXTERNALSYM HH_TAB_AUTHOR}
|
|
||||||
|
|
||||||
HH_TAB_CUSTOM_FIRST = 11;
|
|
||||||
{$EXTERNALSYM HH_TAB_CUSTOM_FIRST}
|
|
||||||
HH_TAB_CUSTOM_LAST = HH_MAX_TABS;
|
|
||||||
{$EXTERNALSYM HH_TAB_CUSTOM_LAST}
|
|
||||||
|
|
||||||
HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
|
|
||||||
{$EXTERNALSYM HH_MAX_TABS_CUSTOM}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
// HH_DISPLAY_SEARCH Command Related Structures and Constants
|
|
||||||
|
|
||||||
HH_FTS_DEFAULT_PROXIMITY = -1;
|
|
||||||
{$EXTERNALSYM HH_FTS_DEFAULT_PROXIMITY}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHFtsQuery = ^THHFtsQuery;
|
|
||||||
tagHH_FTS_QUERY = packed record
|
|
||||||
cbStruct: Integer; // Sizeof structure in bytes.
|
|
||||||
fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
|
|
||||||
pszSearchQuery: LPCTSTR; // String containing the search query.
|
|
||||||
iProximity: LongInt; // Word proximity.
|
|
||||||
fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
|
|
||||||
fTitleOnly: BOOL; // TRUE for Title search only.
|
|
||||||
fExecute: BOOL; // TRUE to initiate the search.
|
|
||||||
pszWindow: LPCTSTR; // Window to display in
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_FTS_QUERY}
|
|
||||||
HH_FTS_QUERY = tagHH_FTS_QUERY;
|
|
||||||
{$EXTERNALSYM HH_FTS_QUERY}
|
|
||||||
THHFtsQuery = tagHH_FTS_QUERY;
|
|
||||||
|
|
||||||
PHHWinType = ^THHWinType;
|
|
||||||
tagHH_WINTYPE = packed record
|
|
||||||
cbStruct: Integer; // IN: size of this structure including all Information Types
|
|
||||||
fUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODE
|
|
||||||
pszType: LPCTSTR; // IN/OUT: Name of a type of window
|
|
||||||
fsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)
|
|
||||||
fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)
|
|
||||||
|
|
||||||
pszCaption: LPCTSTR; // IN/OUT: Window title
|
|
||||||
dwStyles: DWORD; // IN/OUT: Window styles
|
|
||||||
dwExStyles: DWORD; // IN/OUT: Extended Window styles
|
|
||||||
rcWindowPos: TRect; // IN: Starting position, OUT: current position
|
|
||||||
nShowState: Integer; // IN: show state (e.g., SW_SHOW)
|
|
||||||
|
|
||||||
hwndHelp: HWND; // OUT: window handle
|
|
||||||
hwndCaller: HWND; // OUT: who called this window
|
|
||||||
|
|
||||||
paInfoTypes: PHHInfoType; // IN: Pointer to an array of Information Types
|
|
||||||
|
|
||||||
{ The following members are only valid if HHWIN_PROP_TRI_PANE is set }
|
|
||||||
|
|
||||||
hwndToolBar: HWND; // OUT: toolbar window in tri-pane window
|
|
||||||
hwndNavigation: HWND; // OUT: navigation window in tri-pane window
|
|
||||||
hwndHTML: HWND; // OUT: window displaying HTML in tri-pane window
|
|
||||||
iNavWidth: Integer; // IN/OUT: width of navigation window
|
|
||||||
rcHTML: TRect; // OUT: HTML window coordinates
|
|
||||||
|
|
||||||
pszToc: LPCTSTR; // IN: Location of the table of contents file
|
|
||||||
pszIndex: LPCTSTR; // IN: Location of the index file
|
|
||||||
pszFile: LPCTSTR; // IN: Default location of the html file
|
|
||||||
pszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clicked
|
|
||||||
fsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbar
|
|
||||||
fNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current state
|
|
||||||
curNavType: Integer; // IN/OUT: UI to display in the navigational pane
|
|
||||||
tabpos: Integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
|
|
||||||
idNotify: Integer; // IN: ID to use for WM_NOTIFY messages
|
|
||||||
tabOrder: array[0..HH_MAX_TABS] of Byte; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
|
|
||||||
cHistory: Integer; // IN/OUT: number of history items to keep (default is 30)
|
|
||||||
pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1
|
|
||||||
pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2
|
|
||||||
pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1
|
|
||||||
pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2
|
|
||||||
rcMinSize: TRect; // Minimum size for window (ignored in version 1)
|
|
||||||
cbInfoTypes: Integer; // size of paInfoTypes;
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
pszCustomTabs: LPCTSTR; // multiple zero-terminated Strings
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHH_WINTYPE}
|
|
||||||
HH_WINTYPE = tagHH_WINTYPE;
|
|
||||||
{$EXTERNALSYM HH_WINTYPE}
|
|
||||||
PHH_WINTYPE = ^tagHH_WINTYPE;
|
|
||||||
{$EXTERNALSYM PHH_WINTYPE}
|
|
||||||
THHWinType = tagHH_WINTYPE;
|
|
||||||
|
|
||||||
const
|
|
||||||
HHACT_TAB_CONTENTS = 0;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_CONTENTS}
|
|
||||||
HHACT_TAB_INDEX = 1;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_INDEX}
|
|
||||||
HHACT_TAB_SEARCH = 2;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_SEARCH}
|
|
||||||
HHACT_TAB_HISTORY = 3;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_HISTORY}
|
|
||||||
HHACT_TAB_FAVORITES = 4;
|
|
||||||
{$EXTERNALSYM HHACT_TAB_FAVORITES}
|
|
||||||
HHACT_EXPAND = 5;
|
|
||||||
{$EXTERNALSYM HHACT_EXPAND}
|
|
||||||
HHACT_CONTRACT = 6;
|
|
||||||
{$EXTERNALSYM HHACT_CONTRACT}
|
|
||||||
HHACT_BACK = 7;
|
|
||||||
{$EXTERNALSYM HHACT_BACK}
|
|
||||||
HHACT_FORWARD = 8;
|
|
||||||
{$EXTERNALSYM HHACT_FORWARD}
|
|
||||||
HHACT_STOP = 9;
|
|
||||||
{$EXTERNALSYM HHACT_STOP}
|
|
||||||
HHACT_REFRESH = 10;
|
|
||||||
{$EXTERNALSYM HHACT_REFRESH}
|
|
||||||
HHACT_HOME = 11;
|
|
||||||
{$EXTERNALSYM HHACT_HOME}
|
|
||||||
HHACT_SYNC = 12;
|
|
||||||
{$EXTERNALSYM HHACT_SYNC}
|
|
||||||
HHACT_OPTIONS = 13;
|
|
||||||
{$EXTERNALSYM HHACT_OPTIONS}
|
|
||||||
HHACT_PRINT = 14;
|
|
||||||
{$EXTERNALSYM HHACT_PRINT}
|
|
||||||
HHACT_HIGHLIGHT = 15;
|
|
||||||
{$EXTERNALSYM HHACT_HIGHLIGHT}
|
|
||||||
HHACT_CUSTOMIZE = 16;
|
|
||||||
{$EXTERNALSYM HHACT_CUSTOMIZE}
|
|
||||||
HHACT_JUMP1 = 17;
|
|
||||||
{$EXTERNALSYM HHACT_JUMP1}
|
|
||||||
HHACT_JUMP2 = 18;
|
|
||||||
{$EXTERNALSYM HHACT_JUMP2}
|
|
||||||
HHACT_ZOOM = 19;
|
|
||||||
{$EXTERNALSYM HHACT_ZOOM}
|
|
||||||
HHACT_TOC_NEXT = 20;
|
|
||||||
{$EXTERNALSYM HHACT_TOC_NEXT}
|
|
||||||
HHACT_TOC_PREV = 21;
|
|
||||||
{$EXTERNALSYM HHACT_TOC_PREV}
|
|
||||||
HHACT_NOTES = 22;
|
|
||||||
{$EXTERNALSYM HHACT_NOTES}
|
|
||||||
HHACT_LAST_ENUM = 23;
|
|
||||||
{$EXTERNALSYM HHACT_LAST_ENUM}
|
|
||||||
|
|
||||||
type
|
|
||||||
PHHNTrack = ^THHNTrack;
|
|
||||||
tagHHNTRACK = packed record
|
|
||||||
hdr: NMHDR;
|
|
||||||
pszCurUrl: PCSTR; // Multi-byte, null-terminated string
|
|
||||||
idAction: Integer; // HHACT_ value
|
|
||||||
phhWinType: PHHWinType; // Current window type structure
|
|
||||||
end;
|
|
||||||
{$EXTERNALSYM tagHHNTRACK}
|
|
||||||
HHNTRACK = tagHHNTRACK;
|
|
||||||
{$EXTERNALSYM HHNTRACK}
|
|
||||||
THHNTrack = tagHHNTRACK;
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
type
|
|
||||||
THtmlHelpA = function (hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}dwData: DWORD): HWND; stdcall;{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}dwData: DWORD_PTR): HWND; stdcall;{$ENDIF}
|
|
||||||
THtmlHelpW = function (hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}dwData: DWORD): HWND; stdcall;{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}dwData: DWORD_PTR): HWND; stdcall;{$ENDIF}
|
|
||||||
THtmlHelp = THtmlHelpA;
|
|
||||||
|
|
||||||
var
|
|
||||||
HtmlHelpA: THtmlHelpA = nil;
|
|
||||||
HtmlHelpW: THtmlHelpW = nil;
|
|
||||||
HtmlHelp: THtmlHelp = nil;
|
|
||||||
{$ELSE}
|
|
||||||
function HtmlHelpA(hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelpA}
|
|
||||||
function HtmlHelpW(hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelpW}
|
|
||||||
function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: UINT;
|
|
||||||
{$IFDEF HTMLHELP11}
|
|
||||||
dwData: DWORD): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
dwData: DWORD_PTR): HWND; stdcall;
|
|
||||||
{$ENDIF}
|
|
||||||
{$EXTERNALSYM HtmlHelp}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
// Use the following for GetProcAddress to load from hhctrl.ocx
|
|
||||||
|
|
||||||
const
|
|
||||||
ATOM_HTMLHELP_API_ANSI = LPTSTR(DWORD(WORD(14)));
|
|
||||||
{$EXTERNALSYM ATOM_HTMLHELP_API_ANSI}
|
|
||||||
ATOM_HTMLHELP_API_UNICODE = LPTSTR(DWORD(WORD(15)));
|
|
||||||
{$EXTERNALSYM ATOM_HTMLHELP_API_UNICODE}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP12}
|
|
||||||
// Global Control Properties
|
|
||||||
|
|
||||||
const
|
|
||||||
HH_GPROPID_SINGLETHREAD = 1; // VARIANT_BOOL: True for single thread
|
|
||||||
{$EXTERNALSYM HH_GPROPID_SINGLETHREAD}
|
|
||||||
HH_GPROPID_TOOLBAR_MARGIN = 2; // long: Provides a left/right margin around the toolbar.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_TOOLBAR_MARGIN}
|
|
||||||
HH_GPROPID_UI_LANGUAGE = 3; // long: LangId of the UI.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_UI_LANGUAGE}
|
|
||||||
HH_GPROPID_CURRENT_SUBSET = 4; // BSTR: Current subset.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_CURRENT_SUBSET}
|
|
||||||
HH_GPROPID_CONTENT_LANGUAGE = 5; // long: LandId for desired content.
|
|
||||||
{$EXTERNALSYM HH_GPROPID_CONTENT_LANGUAGE}
|
|
||||||
|
|
||||||
type
|
|
||||||
HH_GPROPID = HH_GPROPID_SINGLETHREAD..HH_GPROPID_CONTENT_LANGUAGE;
|
|
||||||
{$EXTERNALSYM HH_GPROPID}
|
|
||||||
THHGPropID = HH_GPROPID;
|
|
||||||
|
|
||||||
// Global Property structure
|
|
||||||
|
|
||||||
PHHGlobalProperty = ^THHGlobalProperty;
|
|
||||||
tagHH_GLOBAL_PROPERTY = record
|
|
||||||
id: THHGPropID;
|
|
||||||
Dummy: Integer; // JEDI: Added to enforce 8-byte packing
|
|
||||||
var_: OleVariant;
|
|
||||||
end;
|
|
||||||
HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
|
|
||||||
THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
function HtmlHelpLoaded: Boolean;
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
||||||
function LoadHtmlHelp: Boolean;
|
|
||||||
function UnLoadHtmlHelp: Boolean;
|
|
||||||
{$ENDIF}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
uses
|
|
||||||
Registry, SysUtils;
|
|
||||||
|
|
||||||
var
|
|
||||||
HtmlHelpLib: THandle = 0;
|
|
||||||
|
|
||||||
function GetOCXPath(var Path: string): Boolean;
|
|
||||||
const
|
|
||||||
HHPathRegKey = 'CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
|
|
||||||
begin
|
|
||||||
with TRegistry.Create do
|
|
||||||
try
|
|
||||||
RootKey := HKEY_CLASSES_ROOT;
|
|
||||||
if OpenKeyReadOnly(HHPathRegKey) then Path := ReadString('');
|
|
||||||
Result := (Path <> '') and FileExists(Path);
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function HtmlHelpLoaded: Boolean;
|
|
||||||
begin
|
|
||||||
Result := HtmlHelpLib <> 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function UnLoadHtmlHelp: Boolean;
|
|
||||||
begin
|
|
||||||
Result := True;
|
|
||||||
if HtmlHelpLoaded then
|
|
||||||
begin
|
|
||||||
if Assigned(HtmlHelp) then HtmlHelp(0, nil, HH_CLOSE_ALL, 0);
|
|
||||||
Result := FreeLibrary(HtmlHelpLib);
|
|
||||||
HtmlHelpLib := 0;
|
|
||||||
@HtmlHelpA := nil;
|
|
||||||
@HtmlHelpW := nil;
|
|
||||||
@HtmlHelp := nil;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function LoadHtmlHelp: Boolean;
|
|
||||||
const
|
|
||||||
ProcNameA = 'HtmlHelpA';
|
|
||||||
ProcNameW = 'HtmlHelpW';
|
|
||||||
ProcName = ProcNameA;
|
|
||||||
var
|
|
||||||
HHOCXPath: string;
|
|
||||||
begin
|
|
||||||
Result := HtmlHelpLoaded;
|
|
||||||
if (not Result) and GetOCXPath(HHOCXPath) then
|
|
||||||
begin
|
|
||||||
HtmlHelpLib := LoadLibrary(PChar(HHOCXPath));
|
|
||||||
if HtmlHelpLoaded then
|
|
||||||
begin
|
|
||||||
@HtmlHelpA := GetProcAddress(HtmlHelpLib, ProcNameA);
|
|
||||||
@HtmlHelpW := GetProcAddress(HtmlHelpLib, ProcNameW);
|
|
||||||
@HtmlHelp := GetProcAddress(HtmlHelpLib, ProcName);
|
|
||||||
Result := Assigned(HtmlHelpA) and Assigned(HtmlHelpW);
|
|
||||||
if not Result then UnLoadHtmlHelp;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
const
|
|
||||||
hhctrl = 'hhctrl.ocx';
|
|
||||||
|
|
||||||
function HtmlHelpA; external hhctrl Name 'HtmlHelpA';
|
|
||||||
{$EXTERNALSYM HtmlHelpA}
|
|
||||||
function HtmlHelpW; external hhctrl Name 'HtmlHelpW';
|
|
||||||
{$EXTERNALSYM HtmlHelpW}
|
|
||||||
function HtmlHelp; external hhctrl Name 'HtmlHelpA';
|
|
||||||
{$EXTERNALSYM HtmlHelp}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF HTMLHELP_DYNAMIC_LINK}
|
|
||||||
initialization
|
|
||||||
{$IFNDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
|
|
||||||
LoadHtmlHelp;
|
|
||||||
{$ENDIF}
|
|
||||||
finalization
|
|
||||||
UnLoadHtmlHelp;
|
|
||||||
{$ENDIF}
|
|
||||||
end.
|
|
@ -1,315 +0,0 @@
|
|||||||
object frmImageColoring: TfrmImageColoring
|
|
||||||
Left = 0
|
|
||||||
Top = 0
|
|
||||||
Width = 581
|
|
||||||
Height = 401
|
|
||||||
Caption = 'Image coloring'
|
|
||||||
Color = clBtnFace
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
OldCreateOrder = False
|
|
||||||
PixelsPerInch = 96
|
|
||||||
TextHeight = 13
|
|
||||||
object Label1: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 40
|
|
||||||
Width = 56
|
|
||||||
Height = 13
|
|
||||||
Caption = 'First Pallete'
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 168
|
|
||||||
Width = 74
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Second pallette'
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
Left = 296
|
|
||||||
Top = 36
|
|
||||||
Width = 30
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Image'
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 107
|
|
||||||
Width = 57
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Preset'
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 16
|
|
||||||
Top = 235
|
|
||||||
Width = 57
|
|
||||||
Height = 13
|
|
||||||
Alignment = taCenter
|
|
||||||
AutoSize = False
|
|
||||||
Caption = 'Preset'
|
|
||||||
end
|
|
||||||
object cbEnable: TCheckBox
|
|
||||||
Left = 16
|
|
||||||
Top = 8
|
|
||||||
Width = 133
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Enable image coloring'
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object Panel1: TPanel
|
|
||||||
Left = 16
|
|
||||||
Top = 56
|
|
||||||
Width = 258
|
|
||||||
Height = 40
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 1
|
|
||||||
object imgPal1: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 256
|
|
||||||
Height = 38
|
|
||||||
Align = alClient
|
|
||||||
Stretch = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel2: TPanel
|
|
||||||
Left = 16
|
|
||||||
Top = 188
|
|
||||||
Width = 258
|
|
||||||
Height = 40
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 2
|
|
||||||
object imgpal2: TImage
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 256
|
|
||||||
Height = 38
|
|
||||||
Align = alClient
|
|
||||||
Stretch = True
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel3: TPanel
|
|
||||||
Left = 292
|
|
||||||
Top = 60
|
|
||||||
Width = 258
|
|
||||||
Height = 258
|
|
||||||
BevelOuter = bvLowered
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object cmbPalette1: TComboBox
|
|
||||||
Left = 80
|
|
||||||
Top = 106
|
|
||||||
Width = 177
|
|
||||||
Height = 19
|
|
||||||
Style = csOwnerDrawFixed
|
|
||||||
Color = clBlack
|
|
||||||
DropDownCount = 20
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWhite
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
ItemHeight = 13
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = False
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = cmbPalette1Change
|
|
||||||
OnDrawItem = cmbPalette1DrawItem
|
|
||||||
Items.Strings = (
|
|
||||||
'south-sea-bather'
|
|
||||||
'sky-flesh'
|
|
||||||
'blue-bather'
|
|
||||||
'no-name'
|
|
||||||
'pillows'
|
|
||||||
'mauve-splat'
|
|
||||||
'facial-treescape 6'
|
|
||||||
'fasion-bug'
|
|
||||||
'leafy-face'
|
|
||||||
'mouldy-sun'
|
|
||||||
'sunny-harvest'
|
|
||||||
'peach-tree'
|
|
||||||
'fire-dragon'
|
|
||||||
'ice-dragon'
|
|
||||||
'german-landscape'
|
|
||||||
'no-name'
|
|
||||||
'living-mud-bomb'
|
|
||||||
'cars'
|
|
||||||
'unhealthy-tan'
|
|
||||||
'daffodil'
|
|
||||||
'rose'
|
|
||||||
'healthy-skin'
|
|
||||||
'orange'
|
|
||||||
'white-ivy'
|
|
||||||
'summer-makeup'
|
|
||||||
'glow-buzz'
|
|
||||||
'deep-water'
|
|
||||||
'afternoon-beach'
|
|
||||||
'dim-beach'
|
|
||||||
'cloudy-brick'
|
|
||||||
'burning-wood'
|
|
||||||
'aquatic-garden'
|
|
||||||
'no-name'
|
|
||||||
'fall-quilt'
|
|
||||||
'night-blue-sky'
|
|
||||||
'shadow-iris'
|
|
||||||
'solid-sky'
|
|
||||||
'misty-field'
|
|
||||||
'wooden-highlight'
|
|
||||||
'jet-tundra'
|
|
||||||
'pastel-lime'
|
|
||||||
'hell'
|
|
||||||
'indian-coast'
|
|
||||||
'dentist-decor'
|
|
||||||
'greenland'
|
|
||||||
'purple-dress'
|
|
||||||
'no-name'
|
|
||||||
'spring-flora'
|
|
||||||
'andi'
|
|
||||||
'gig-o835'
|
|
||||||
'rie02'
|
|
||||||
'rie05'
|
|
||||||
'rie11'
|
|
||||||
'etretat.ppm'
|
|
||||||
'the-hollow-needle-at-etretat.ppm'
|
|
||||||
'rouen-cathedral-sunset.ppm'
|
|
||||||
'the-houses-of-parliament.ppm'
|
|
||||||
'starry-night.ppm'
|
|
||||||
'water-lilies-sunset.ppm'
|
|
||||||
'gogh.chambre-arles.ppm'
|
|
||||||
'gogh.entrance.ppm'
|
|
||||||
'gogh.the-night-cafe.ppm'
|
|
||||||
'gogh.vegetable-montmartre.ppm'
|
|
||||||
'matisse.bonheur-vivre.ppm'
|
|
||||||
'matisse.flowers.ppm'
|
|
||||||
'matisse.lecon-musique.ppm'
|
|
||||||
'modigliani.nude-caryatid.ppm'
|
|
||||||
'braque.instruments.ppm'
|
|
||||||
'calcoast09.ppm'
|
|
||||||
'dodge102.ppm'
|
|
||||||
'ernst.anti-pope.ppm'
|
|
||||||
'ernst.ubu-imperator.ppm'
|
|
||||||
'fighting-forms.ppm'
|
|
||||||
'fog25.ppm'
|
|
||||||
'geyser27.ppm'
|
|
||||||
'gris.josette.ppm'
|
|
||||||
'gris.landscape-ceret.ppm'
|
|
||||||
'kandinsky.comp-9.ppm'
|
|
||||||
'kandinsky.yellow-red-blue.ppm'
|
|
||||||
'klee.insula-dulcamara.ppm'
|
|
||||||
'nile.ppm'
|
|
||||||
'picasso.jfille-chevre.ppm'
|
|
||||||
'pollock.lavender-mist.ppm'
|
|
||||||
'yngpaint.ppm')
|
|
||||||
end
|
|
||||||
object cmbPalette2: TComboBox
|
|
||||||
Left = 80
|
|
||||||
Top = 234
|
|
||||||
Width = 177
|
|
||||||
Height = 19
|
|
||||||
Style = csOwnerDrawFixed
|
|
||||||
Color = clBlack
|
|
||||||
DropDownCount = 20
|
|
||||||
Font.Charset = ANSI_CHARSET
|
|
||||||
Font.Color = clWhite
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Tahoma'
|
|
||||||
Font.Style = []
|
|
||||||
ItemHeight = 13
|
|
||||||
ParentFont = False
|
|
||||||
ParentShowHint = False
|
|
||||||
ShowHint = False
|
|
||||||
TabOrder = 5
|
|
||||||
OnChange = cmbPalette2Change
|
|
||||||
OnDrawItem = cmbPalette1DrawItem
|
|
||||||
Items.Strings = (
|
|
||||||
'south-sea-bather'
|
|
||||||
'sky-flesh'
|
|
||||||
'blue-bather'
|
|
||||||
'no-name'
|
|
||||||
'pillows'
|
|
||||||
'mauve-splat'
|
|
||||||
'facial-treescape 6'
|
|
||||||
'fasion-bug'
|
|
||||||
'leafy-face'
|
|
||||||
'mouldy-sun'
|
|
||||||
'sunny-harvest'
|
|
||||||
'peach-tree'
|
|
||||||
'fire-dragon'
|
|
||||||
'ice-dragon'
|
|
||||||
'german-landscape'
|
|
||||||
'no-name'
|
|
||||||
'living-mud-bomb'
|
|
||||||
'cars'
|
|
||||||
'unhealthy-tan'
|
|
||||||
'daffodil'
|
|
||||||
'rose'
|
|
||||||
'healthy-skin'
|
|
||||||
'orange'
|
|
||||||
'white-ivy'
|
|
||||||
'summer-makeup'
|
|
||||||
'glow-buzz'
|
|
||||||
'deep-water'
|
|
||||||
'afternoon-beach'
|
|
||||||
'dim-beach'
|
|
||||||
'cloudy-brick'
|
|
||||||
'burning-wood'
|
|
||||||
'aquatic-garden'
|
|
||||||
'no-name'
|
|
||||||
'fall-quilt'
|
|
||||||
'night-blue-sky'
|
|
||||||
'shadow-iris'
|
|
||||||
'solid-sky'
|
|
||||||
'misty-field'
|
|
||||||
'wooden-highlight'
|
|
||||||
'jet-tundra'
|
|
||||||
'pastel-lime'
|
|
||||||
'hell'
|
|
||||||
'indian-coast'
|
|
||||||
'dentist-decor'
|
|
||||||
'greenland'
|
|
||||||
'purple-dress'
|
|
||||||
'no-name'
|
|
||||||
'spring-flora'
|
|
||||||
'andi'
|
|
||||||
'gig-o835'
|
|
||||||
'rie02'
|
|
||||||
'rie05'
|
|
||||||
'rie11'
|
|
||||||
'etretat.ppm'
|
|
||||||
'the-hollow-needle-at-etretat.ppm'
|
|
||||||
'rouen-cathedral-sunset.ppm'
|
|
||||||
'the-houses-of-parliament.ppm'
|
|
||||||
'starry-night.ppm'
|
|
||||||
'water-lilies-sunset.ppm'
|
|
||||||
'gogh.chambre-arles.ppm'
|
|
||||||
'gogh.entrance.ppm'
|
|
||||||
'gogh.the-night-cafe.ppm'
|
|
||||||
'gogh.vegetable-montmartre.ppm'
|
|
||||||
'matisse.bonheur-vivre.ppm'
|
|
||||||
'matisse.flowers.ppm'
|
|
||||||
'matisse.lecon-musique.ppm'
|
|
||||||
'modigliani.nude-caryatid.ppm'
|
|
||||||
'braque.instruments.ppm'
|
|
||||||
'calcoast09.ppm'
|
|
||||||
'dodge102.ppm'
|
|
||||||
'ernst.anti-pope.ppm'
|
|
||||||
'ernst.ubu-imperator.ppm'
|
|
||||||
'fighting-forms.ppm'
|
|
||||||
'fog25.ppm'
|
|
||||||
'geyser27.ppm'
|
|
||||||
'gris.josette.ppm'
|
|
||||||
'gris.landscape-ceret.ppm'
|
|
||||||
'kandinsky.comp-9.ppm'
|
|
||||||
'kandinsky.yellow-red-blue.ppm'
|
|
||||||
'klee.insula-dulcamara.ppm'
|
|
||||||
'nile.ppm'
|
|
||||||
'picasso.jfille-chevre.ppm'
|
|
||||||
'pollock.lavender-mist.ppm'
|
|
||||||
'yngpaint.ppm')
|
|
||||||
end
|
|
||||||
end
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user