{
     Apophysis Copyright (C) 2001-2004 Mark Townsend
     Apophysis Copyright (C) 2005-2006 Ronald Hordijk, Piotr Borys, Peter Sdobnov
     Apophysis "3D hack" Copyright (C) 2007-2008 Peter Sdobnov
     Apophysis "7X" Copyright (C) 2009-2013 Georg Kiehne
     Apophysis AV "Phoenix Edition" Copyright (C) 2021-2022 Alice V. Koryagina

     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 ApophysisAV;

{$SetPEFlags $20}

uses
  Forms,
  Dialogs,
  SysUtils,
  Vcl.Themes,
  Vcl.Styles,
  Binary in 'IO\Binary.pas',
  LibXmlParser in 'System\LibXmlParser.pas',
  LibXmlComps in 'System\LibXmlComps.pas',
  CustomDrawControl in 'System\CustomDrawControl.pas',
  RegexHelper in 'System\RegexHelper.pas',
  CurvesControl in 'System\CurvesControl.pas',
  {$ifndef CPUX64}
  AsmRandom in 'System\AsmRandom.pas',
  {$endif }
  Global in 'Core\Global.pas',
  CommandLine in 'IO\CommandLine.pas',
  MissingPlugin in 'IO\MissingPlugin.pas',
  Settings in 'IO\Settings.pas',
  Translation in 'Core\Translation.pas',
  Chaotica in 'Core\Chaotica.pas',
  Bezier in 'Core\Bezier.pas',
  RndFlame in 'Flame\RndFlame.pas',
  ControlPoint in 'Flame\ControlPoint.pas',
  cmapdata in 'ColorMap\cmapdata.pas',
  cmap in 'ColorMap\cmap.pas',
  GradientHlpr in 'ColorMap\GradientHlpr.pas',
  XFormMan in 'Core\XFormMan.pas',
  XForm in 'Flame\XForm.pas',
  BaseVariation in 'Core\BaseVariation.pas',
  RenderingCommon in 'Rendering\RenderingCommon.pas',
  RenderingInterface in 'Rendering\RenderingInterface.pas',
  RenderingImplementation in 'Rendering\RenderingImplementation.pas',
  BucketFillerThread in 'Rendering\BucketFillerThread.pas',
  RenderThread in 'Rendering\RenderThread.pas',
  ImageMaker in 'Rendering\ImageMaker.pas',
  MathExpressions in 'System\MathExpressions.pas',
  varSinusoidal in 'Variations\varSinusoidal.pas',
  varLog in 'Variations\varLog.pas',
  varModulus in 'Variations\varModulus.pas',
  varSphyp3D in 'Variations\varSphyp3D.pas',
  varInversion3D in 'Variations\varInversion3D.pas',
  varRings2 in 'Variations\varRings2.pas',
  varFan2 in 'Variations\varFan2.pas',
  varWedge in 'Variations\varWedge.pas',
  varEpispiral in 'Variations\varEpispiral.pas',
  varBwraps in 'Variations\varBwraps.pas',
  varPDJ in 'Variations\varPDJ.pas',
  varJuliaN in 'Variations\varJuliaN.pas',
  varJuliaScope in 'Variations\varJuliaScope.pas',
  varJulia3Djf in 'Variations\varJulia3Djf.pas',
  varJulia3Dz in 'Variations\varJulia3Dz.pas',
  varJuliaN3Dx in 'Variations\varJuliaN3Dx.pas',
  varJulian2DC in 'Variations\varJulian2DC.pas',
  varCurl in 'Variations\varCurl.pas',
  varCurl3D in 'Variations\varCurl3D.pas',
  varRadialBlur in 'Variations\varRadialBlur.pas',
  varSuperShape in 'Variations\varSuperShape.pas',
  varNBlur in 'Variations\varNBlur.pas',
  varBlurCircle in 'Variations\varBlurCircle.pas',
  varBlurZoom in 'Variations\varBlurZoom.pas',
  varBlurPixelize in 'Variations\varBlurPixelize.pas',
  varFalloff2 in 'Variations\varFalloff2.pas',
  varRectangles in 'Variations\varRectangles.pas',
  varSplits in 'Variations\varSplits.pas',
  varSeparation in 'Variations\varSeparation.pas',
  varBipolar in 'Variations\varBipolar.pas',
  varLoonie in 'Variations\varLoonie.pas',
  varEscher in 'Variations\varEscher.pas',
  varScry in 'Variations\varScry.pas',
  varNGon in 'Variations\varNGon.pas',
  varFoci in 'Variations\varFoci.pas',
  varUnpolar in 'Variations\varUnpolar.pas',
  varLazysusan in 'Variations\varLazysusan.pas',
  varDCBubble in 'Variations\varDCBubble.pas',
  varMobius in 'Variations\varMobius.pas',
  varButterfly in 'Variations\varButterfly.pas',
  varBoarders2 in 'Variations\varBoarders2.pas',
  varAffine3D in 'Variations\varAffine3D.pas',
  varHyperboloid in 'Variations\varHyperboloid.pas',
  varCirclize in 'Variations\varCirclize.pas',
  varCircleCrop in 'Variations\varCircleCrop.pas',
  varCrop in 'Variations\varCrop.pas',
  varTriangleCrop in 'Variations\varTriangleCrop.pas',
  varSphereCrop in 'Variations\varSphereCrop.pas',
  varElliptic in 'Variations\varElliptic.pas',
  varWaves2 in 'Variations\varWaves2.pas',
  varAuger in 'Variations\varAuger.pas',
  varFlux in 'Variations\varFlux.pas',
  varCpow3 in 'Variations\varCpow3.pas',
  varGlynnSim1 in 'Variations\varGlynnSim1.pas',
  varGlynnSim2 in 'Variations\varGlynnSim2.pas',
  varGlynnSim3 in 'Variations\varGlynnSim3.pas',
  varHypertile in 'Variations\varHypertile.pas',
  varHypertile1 in 'Variations\varHypertile1.pas',
  varHypertile2 in 'Variations\varHypertile2.pas',
  varHypertile3D in 'Variations\varHypertile3D.pas',
  varHypertile3D1 in 'Variations\varHypertile3D1.pas',
  varHypertile3D2 in 'Variations\varHypertile3D2.pas',
  varTaurus in 'Variations\varTaurus.pas',
  varPreSpherical in 'Variations\varPreSpherical.pas',
  varPreSinusoidal in 'Variations\varPreSinusoidal.pas',
  varPreDisc in 'Variations\varPreDisc.pas',
  varPreBoarders2 in 'Variations\varPreBoarders2.pas',
  varPreBwraps in 'Variations\varPreBwraps.pas',
  varPreCircleCrop in 'Variations\varPreCircleCrop.pas',
  varPreCrop in 'Variations\varPreCrop.pas',
  varPreFalloff2 in 'Variations\varPreFalloff2.pas',
  varPreMobius in 'Variations\varPreMobius.pas',
  varPostBoarders2 in 'Variations\varPostBoarders2.pas',
  varPostBwraps in 'Variations\varPostBwraps.pas',
  varPostCurl in 'Variations\varPostCurl.pas',
  varPostCurl3D in 'Variations\varPostCurl3D.pas',
  varPostCircleCrop in 'Variations\varPostCircleCrop.pas',
  varPostCrop in 'Variations\varPostCrop.pas',
  varPostFalloff2 in 'Variations\varPostFalloff2.pas',
  varPostMobius in 'Variations\varPostMobius.pas',
  varPostSpherical in 'Variations\varPostSpherical.pas',
  varPostSinusoidal in 'Variations\varPostSinusoidal.pas',
  varProjective in 'Variations\varProjective.pas',
  varHandkerchief in 'Variations\varHandkerchief.pas',
  varJulia in 'Variations\varJulia.pas',
  varEx in 'Variations\varEx.pas',
  varExponential in 'Variations\varExponential.pas',
  varBlob in 'Variations\varBlob.pas',
  varHeart in 'Variations\varHeart.pas',
  varPower in 'Variations\varPower.pas',
  varTwinTrian in 'Variations\varTwinTrian.pas',
  varBlade in 'Variations\varBlade.pas',
  varTangent in 'Variations\varTangent.pas',
  varCosine in 'Variations\varCosine.pas',
  varBent2 in 'Variations\varBent2.pas',
  varPopcorn2 in 'Variations\varPopcorn2.pas',
  varDisc2 in 'Variations\varDisc2.pas',
  varSecant in 'Variations\varSecant.pas',
  varZVortex in 'Variations\varZVortex.pas',
  varArch in 'Variations\varArch.pas',
  varTanhSpiral in 'Variations\varTanhSpiral.pas',
  varCothSpiral in 'Variations\varCothSpiral.pas',
  varGenericPlugin in 'Variations\varGenericPlugin.pas',
  Main in 'Forms\Main.pas' {MainForm},
  Tracer in 'Forms\Tracer.pas' {TraceForm},
  About in 'Forms\About.pas' {AboutForm},
  Adjust in 'Forms\Adjust.pas' {AdjustForm},
  Browser in 'Forms\Browser.pas' {GradientBrowser},
  Editor in 'Forms\Editor.pas' {EditForm},
  FormExport in 'Forms\FormExport.pas' {ExportDialog},
  formPostProcess in 'Forms\formPostProcess.pas' {frmPostProcess},
  FormRender in 'Forms\FormRender.pas' {RenderForm},
  Fullscreen in 'Forms\Fullscreen.pas' {FullscreenForm},
  LoadTracker in 'Forms\LoadTracker.pas' {LoadForm},
  Mutate in 'Forms\Mutate.pas' {MutateForm},
  Options in 'Forms\Options.pas' {OptionsForm},
  Save in 'Forms\Save.pas' {SaveForm},
  SavePreset in 'Forms\SavePreset.pas' {SavePresetForm},
  SplashForm in 'Forms\SplashForm.pas' {SplashWindow},
  Template in 'Forms\Template.pas' {TemplateForm},
  Preview in 'Forms\Preview.pas' {PreviewForm},
  FormFavorites in 'Forms\FormFavorites.pas' {FavoritesForm},
  ScriptForm in 'Forms\ScriptForm.pas' {ScriptEditor},
  ScriptRender in 'Forms\ScriptRender.pas' {ScriptRenderForm},
  ColorRangeForm in 'Forms\ColorRangeForm.pas' {ColorSelection},
  Chaos in 'Forms\Chaos.pas' {ChaosForm},
  VarOrderForm in 'Forms\VarOrderForm.pas' {VarOrder},
  Animate in 'Forms\Animate.pas' {AnimateForm},
  FlameComment in 'Forms\FlameComment.pas' {CommentForm};

{$R *.res}
{$R Apophysis.res}

begin
  ReportMemoryLeaksOnShutdown := true;

  SplashWindow := TSplashWindow.Create(Application);
  SplashWindow.Show;

  Application.Initialize;
  SplashWindow.Update;

  {$ifdef CPUX64}
  Application.Title := 'Apophysis AV (64 bit)';
  {$else}
  Application.Title := 'Apophysis AV (32 bit)';
  {$endif}
  Application.HelpFile := 'ApophysisAV.chm';
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TTraceForm, TraceForm);
  Application.CreateForm(TAboutForm, AboutForm);
  Application.CreateForm(TAdjustForm, AdjustForm);
  Application.CreateForm(TGradientBrowser, GradientBrowser);
  Application.CreateForm(TEditForm, EditForm);
  Application.CreateForm(TfrmPostProcess, frmPostProcess);
  Application.CreateForm(TRenderForm, RenderForm);
  Application.CreateForm(TFullscreenForm, FullscreenForm);
  Application.CreateForm(TLoadForm, LoadForm);
  Application.CreateForm(TMutateForm, MutateForm);
  Application.CreateForm(TOptionsForm, OptionsForm);
  Application.CreateForm(TSaveForm, SaveForm);
  Application.CreateForm(TSavePresetForm, SavePresetForm);
  Application.CreateForm(TTemplateForm, TemplateForm);
  Application.CreateForm(TPreviewForm, PreviewForm);
  Application.CreateForm(TFavoritesForm, FavoritesForm);
  Application.CreateForm(TScriptEditor, ScriptEditor);
  Application.CreateForm(TScriptRenderForm, ScriptRenderForm);
  Application.CreateForm(TColorSelection, ColorSelection);
  Application.CreateForm(TChaosForm, ChaosForm);
  Application.CreateForm(TVarOrder, VarOrder);
  Application.CreateForm(TAnimateForm, AnimateForm);
  Application.CreateForm(TCommentForm, CommentForm);
  Application.UpdateFormatSettings := False;
  FormatSettings.DecimalSeparator := '.';
  Application.Run;
end.


