Moved the making of random flames to a seperate unit
Number of variant dependant code change so all changes can be done only in xform Test mode for new variant added
This commit is contained in:
parent
265d667f49
commit
6b8c455c52
@ -21,7 +21,7 @@ unit ControlPoint;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, jpeg, ComCtrls, Windows, Graphics, Cmap, Dialogs, Xform;
|
Classes, Windows, Cmap, Xform;
|
||||||
|
|
||||||
const
|
const
|
||||||
EPS = 1E-10;
|
EPS = 1E-10;
|
||||||
@ -39,8 +39,8 @@ type
|
|||||||
vHandkerchief, vHeart, vDisc, vSpiral, vHyperbolic, vSquare, vEx, vJulia,
|
vHandkerchief, vHeart, vDisc, vSpiral, vHyperbolic, vSquare, vEx, vJulia,
|
||||||
vBent, vWaves, vFisheye, vPopcorn, vExponential, vPower, vCosine,
|
vBent, vWaves, vFisheye, vPopcorn, vExponential, vPower, vCosine,
|
||||||
vRings, vFan, vRandom);
|
vRings, vFan, vRandom);
|
||||||
type
|
|
||||||
|
|
||||||
|
type
|
||||||
TPointsArray = array of TCPpoint;
|
TPointsArray = array of TCPpoint;
|
||||||
TPointsXYArray = array of TXYpoint;
|
TPointsXYArray = array of TXYpoint;
|
||||||
|
|
||||||
@ -84,7 +84,6 @@ type
|
|||||||
wiggle: array[0..1, 0..1] of double; // frequency is /minute, assuming 30 frames/s */
|
wiggle: array[0..1, 0..1] of double; // frequency is /minute, assuming 30 frames/s */
|
||||||
|
|
||||||
PropTable: array of Integer;
|
PropTable: array of Integer;
|
||||||
jpeg: TJPegImage;
|
|
||||||
FAngle: Double;
|
FAngle: Double;
|
||||||
FTwoColorDimensions: Boolean;
|
FTwoColorDimensions: Boolean;
|
||||||
private
|
private
|
||||||
@ -111,6 +110,8 @@ type
|
|||||||
procedure IterateXYC(NrPoints: integer; var Points: TPointsArray);
|
procedure IterateXYC(NrPoints: integer; var Points: TPointsArray);
|
||||||
procedure IterateXYCC(NrPoints: integer; var Points: T2CPointsArray);
|
procedure IterateXYCC(NrPoints: integer; var Points: T2CPointsArray);
|
||||||
|
|
||||||
|
procedure Testiterate(NrPoints: integer; var Points: TPointsArray);
|
||||||
|
|
||||||
function Clone: TControlPoint;
|
function Clone: TControlPoint;
|
||||||
procedure Copy(cp1: TControlPoint);
|
procedure Copy(cp1: TControlPoint);
|
||||||
|
|
||||||
@ -127,12 +128,18 @@ type
|
|||||||
|
|
||||||
function add_symmetry_to_control_point(var cp: TControlPoint; sym: integer): integer;
|
function add_symmetry_to_control_point(var cp: TControlPoint; sym: integer): integer;
|
||||||
function CalcUPRMagn(const cp: TControlPoint): double;
|
function CalcUPRMagn(const cp: TControlPoint): double;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
|
||||||
uses
|
uses
|
||||||
SysUtils, math, global;
|
SysUtils, math, global;
|
||||||
|
|
||||||
|
var
|
||||||
|
var_distrib: array[0..NVARS + 18] of integer;
|
||||||
|
mixed_var_distrib: array[0..NVARS + 8] of integer;
|
||||||
|
|
||||||
|
|
||||||
{ TControlPoint }
|
{ TControlPoint }
|
||||||
|
|
||||||
function sign(n: double): double;
|
function sign(n: double): double;
|
||||||
@ -194,9 +201,8 @@ destructor TControlPoint.Destroy;
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
for i := 0 to NXFORMS - 1 do begin
|
for i := 0 to NXFORMS - 1 do
|
||||||
xform[i].Free;
|
xform[i].Free;
|
||||||
end;
|
|
||||||
|
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
@ -525,6 +531,53 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TControlPoint.Testiterate(NrPoints: integer; var Points: TPointsArray);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
px, py, pc, pt: double;
|
||||||
|
CurrentPoint: PCPPoint;
|
||||||
|
begin
|
||||||
|
|
||||||
|
PreparePropTable;
|
||||||
|
|
||||||
|
for i := 0 to NXFORMS - 1 do
|
||||||
|
xform[i].prepare;
|
||||||
|
|
||||||
|
for i := 0 to NrPoints - 1 do begin
|
||||||
|
px := 4 * (-1 + 2 * random);
|
||||||
|
py := 4 * (-1 + 2 * random);
|
||||||
|
|
||||||
|
pc := 0.1 + 0.5 * sqrt(sqr(px/4)+ sqr(py/4)) ;
|
||||||
|
if abs(px)< 0.02 then
|
||||||
|
pc := 1 ;
|
||||||
|
if abs(py)< 0.02 then
|
||||||
|
pc := 1 ;
|
||||||
|
if abs(frac(px))< 0.01 then
|
||||||
|
pc := 1 ;
|
||||||
|
if abs(frac(py))< 0.01 then
|
||||||
|
pc := 1 ;
|
||||||
|
if abs(sqrt(sqr(px/4)+ sqr(py/4)) - 0.9) < 0.02 then
|
||||||
|
pc := 0;
|
||||||
|
try
|
||||||
|
|
||||||
|
xform[PropTable[Random(1024)]].NextPoint(px,py,pt);
|
||||||
|
except
|
||||||
|
on EMathError do begin
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
// store points
|
||||||
|
if i >= 0 then begin
|
||||||
|
CurrentPoint := @Points[i];
|
||||||
|
CurrentPoint.X := px;
|
||||||
|
CurrentPoint.Y := py;
|
||||||
|
CurrentPoint.C := pc;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TControlPoint.IterateXYCC(NrPoints: integer; var Points: T2CPointsArray);
|
procedure TControlPoint.IterateXYCC(NrPoints: integer; var Points: T2CPointsArray);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -799,10 +852,6 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure TControlPoint.SetVariation(vari: TVariation);
|
procedure TControlPoint.SetVariation(vari: TVariation);
|
||||||
const
|
|
||||||
xform_distrib: array[0..12] of integer = (2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8);
|
|
||||||
var_distrib: array[0..41] of integer = (-1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22);
|
|
||||||
mixed_var_distrib: array[0..31] of integer = (0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22);
|
|
||||||
var
|
var
|
||||||
i, j, v: integer;
|
i, j, v: integer;
|
||||||
rv: integer;
|
rv: integer;
|
||||||
@ -834,10 +883,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControlPoint.RandomCP(min: integer = 2; max: integer = NXFORMS; calc: boolean = true);
|
procedure TControlPoint.RandomCP(min: integer = 2; max: integer = NXFORMS; calc: boolean = true);
|
||||||
const
|
|
||||||
xform_distrib: array[0..12] of integer = (2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8);
|
|
||||||
var_distrib: array[0..41] of integer = (-1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22);
|
|
||||||
mixed_var_distrib: array[0..31] of integer = (0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22);
|
|
||||||
var
|
var
|
||||||
nrXforms: integer;
|
nrXforms: integer;
|
||||||
i, j: integer;
|
i, j: integer;
|
||||||
@ -916,6 +961,13 @@ var
|
|||||||
cntminy, cntmaxy: integer;
|
cntminy, cntmaxy: integer;
|
||||||
LimitOutSidePoints: integer;
|
LimitOutSidePoints: integer;
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF TESTVARIANT}
|
||||||
|
center[0] := 0;
|
||||||
|
center[1] := 0;
|
||||||
|
pixels_per_unit := 0.7 * Min(width / (6), Height / (6));
|
||||||
|
Exit;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
// RandSeed := 1234567;
|
// RandSeed := 1234567;
|
||||||
try
|
try
|
||||||
SetLength(Points, SUB_BATCH_SIZE);
|
SetLength(Points, SUB_BATCH_SIZE);
|
||||||
@ -1611,5 +1663,28 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure FillVarDisturb;
|
||||||
|
const
|
||||||
|
startvar_distrib: array[0..26] of integer = (-1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7);
|
||||||
|
startmixed_var_distrib: array[0..16] of integer = (0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to High(startvar_distrib) do
|
||||||
|
var_distrib[i] := startvar_distrib[i];
|
||||||
|
|
||||||
|
for i := High(startvar_distrib) + 1 to high(var_distrib) do
|
||||||
|
var_distrib[i] := 8 + i - High(startvar_distrib) - 1;
|
||||||
|
|
||||||
|
for i := 0 to High(startmixed_var_distrib) do
|
||||||
|
mixed_var_distrib[i] := startmixed_var_distrib[i];
|
||||||
|
|
||||||
|
for i := High(startmixed_var_distrib) + 1 to high(mixed_var_distrib) do
|
||||||
|
mixed_var_distrib[i] := 8 + i - High(startmixed_var_distrib) - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
initialization
|
||||||
|
FillVarDisturb
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@ object EditForm: TEditForm
|
|||||||
0000800100008001000080010000800100008001000080010000FFFF0000}
|
0000800100008001000080010000800100008001000080010000FFFF0000}
|
||||||
KeyPreview = True
|
KeyPreview = True
|
||||||
OldCreateOrder = True
|
OldCreateOrder = True
|
||||||
Position = poDefaultPosOnly
|
|
||||||
OnClose = FormClose
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
@ -86,7 +85,6 @@ object EditForm: TEditForm
|
|||||||
item
|
item
|
||||||
Width = 150
|
Width = 150
|
||||||
end>
|
end>
|
||||||
SimplePanel = False
|
|
||||||
end
|
end
|
||||||
object ControlPanel: TPanel
|
object ControlPanel: TPanel
|
||||||
Left = 394
|
Left = 394
|
||||||
@ -138,7 +136,7 @@ object EditForm: TEditForm
|
|||||||
Width = 57
|
Width = 57
|
||||||
Height = 21
|
Height = 21
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
ItemHeight = 13
|
ItemHeight = 0
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
OnChange = cbTransformsChange
|
OnChange = cbTransformsChange
|
||||||
end
|
end
|
||||||
@ -150,7 +148,6 @@ object EditForm: TEditForm
|
|||||||
ActivePage = TabSheet2
|
ActivePage = TabSheet2
|
||||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||||
MultiLine = True
|
MultiLine = True
|
||||||
TabIndex = 3
|
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
TabStop = False
|
TabStop = False
|
||||||
object TabSheet1: TTabSheet
|
object TabSheet1: TTabSheet
|
||||||
|
@ -213,7 +213,8 @@ procedure ScaleAll;
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Main, Global, Adjust, Mutate;
|
uses
|
||||||
|
Main, Global, Adjust, Mutate, Xform;
|
||||||
|
|
||||||
const
|
const
|
||||||
SUB_BATCH_SIZE = 1000;
|
SUB_BATCH_SIZE = 1000;
|
||||||
|
@ -129,9 +129,9 @@ var
|
|||||||
DefaultPalette: TColorMap;
|
DefaultPalette: TColorMap;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
function Round6(x: double): double;
|
||||||
|
|
||||||
uses dialogs, Main;
|
implementation
|
||||||
|
|
||||||
{ IFS }
|
{ IFS }
|
||||||
|
|
||||||
@ -140,6 +140,13 @@ begin
|
|||||||
Result := (a * d - b * c);
|
Result := (a * d - b * c);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function Round6(x: double): double;
|
||||||
|
// Really ugly, but it works
|
||||||
|
begin
|
||||||
|
Result := StrToFloat(Format('%.6f', [x]));
|
||||||
|
end;
|
||||||
|
|
||||||
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
function solve3(x1, x2, x1h, y1, y2, y1h, z1, z2, z1h: double;
|
||||||
var a, b, e: double): double;
|
var a, b, e: double): double;
|
||||||
var
|
var
|
||||||
|
@ -2,7 +2,7 @@ object MainForm: TMainForm
|
|||||||
Left = 316
|
Left = 316
|
||||||
Top = 424
|
Top = 424
|
||||||
Width = 574
|
Width = 574
|
||||||
Height = 535
|
Height = 575
|
||||||
Caption = 'Apophysis'
|
Caption = 'Apophysis'
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = ANSI_CHARSET
|
Font.Charset = ANSI_CHARSET
|
||||||
@ -27,7 +27,7 @@ object MainForm: TMainForm
|
|||||||
Left = 160
|
Left = 160
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 4
|
Width = 4
|
||||||
Height = 454
|
Height = 494
|
||||||
end
|
end
|
||||||
object ToolBar: TToolBar
|
object ToolBar: TToolBar
|
||||||
Left = 0
|
Left = 0
|
||||||
@ -251,7 +251,7 @@ object MainForm: TMainForm
|
|||||||
Left = 0
|
Left = 0
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 160
|
Width = 160
|
||||||
Height = 454
|
Height = 494
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@ -270,7 +270,7 @@ object MainForm: TMainForm
|
|||||||
Left = 164
|
Left = 164
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 402
|
Width = 402
|
||||||
Height = 454
|
Height = 494
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BevelInner = bvLowered
|
BevelInner = bvLowered
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
@ -281,7 +281,7 @@ object MainForm: TMainForm
|
|||||||
Left = 1
|
Left = 1
|
||||||
Top = 1
|
Top = 1
|
||||||
Width = 400
|
Width = 400
|
||||||
Height = 432
|
Height = 472
|
||||||
Align = alClient
|
Align = alClient
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
PopupMenu = DisplayPopup
|
PopupMenu = DisplayPopup
|
||||||
@ -293,7 +293,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object StatusBar: TStatusBar
|
object StatusBar: TStatusBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 482
|
Top = 522
|
||||||
Width = 566
|
Width = 566
|
||||||
Height = 19
|
Height = 19
|
||||||
Panels = <
|
Panels = <
|
||||||
@ -2706,148 +2706,6 @@ object MainForm: TMainForm
|
|||||||
Caption = '-'
|
Caption = '-'
|
||||||
GroupIndex = 1
|
GroupIndex = 1
|
||||||
end
|
end
|
||||||
object mnuVLinear: TMenuItem
|
|
||||||
Caption = 'Linear'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVLinearClick
|
|
||||||
end
|
|
||||||
object mnuSinusoidal: TMenuItem
|
|
||||||
AutoLineReduction = maManual
|
|
||||||
Caption = 'Sinusoidal'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuSinusoidalClick
|
|
||||||
end
|
|
||||||
object mnuSpherical: TMenuItem
|
|
||||||
Caption = 'Spherical'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuSphericalClick
|
|
||||||
end
|
|
||||||
object mnuSwirl: TMenuItem
|
|
||||||
Caption = 'Swirl'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuSwirlClick
|
|
||||||
end
|
|
||||||
object mnuHorseshoe: TMenuItem
|
|
||||||
Caption = 'Horseshoe'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuHorseshoeClick
|
|
||||||
end
|
|
||||||
object mnuPolar: TMenuItem
|
|
||||||
Caption = 'Polar'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuPolarClick
|
|
||||||
end
|
|
||||||
object mnuVar14: TMenuItem
|
|
||||||
Caption = 'Bent'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar14Click
|
|
||||||
end
|
|
||||||
object N17: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
GroupIndex = 1
|
|
||||||
end
|
|
||||||
object mnuVar6: TMenuItem
|
|
||||||
Caption = 'Handkerchief'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar6Click
|
|
||||||
end
|
|
||||||
object mnuVar7: TMenuItem
|
|
||||||
Caption = 'Heart'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar7Click
|
|
||||||
end
|
|
||||||
object mnuVar8: TMenuItem
|
|
||||||
Caption = 'Disc'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar8Click
|
|
||||||
end
|
|
||||||
object mnuVar9: TMenuItem
|
|
||||||
Caption = 'Spiral'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar9Click
|
|
||||||
end
|
|
||||||
object mnuVar10: TMenuItem
|
|
||||||
Caption = 'Hyperbolic'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar10Click
|
|
||||||
end
|
|
||||||
object mnuVar11: TMenuItem
|
|
||||||
Caption = 'Diamond'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar11Click
|
|
||||||
end
|
|
||||||
object mnuVar12: TMenuItem
|
|
||||||
Caption = 'Ex'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar12Click
|
|
||||||
end
|
|
||||||
object mnuVar13: TMenuItem
|
|
||||||
Caption = 'Julia'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuVar13Click
|
|
||||||
end
|
|
||||||
object mnuWaves: TMenuItem
|
|
||||||
Caption = 'Waves'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuWavesClick
|
|
||||||
end
|
|
||||||
object mnuFisheye: TMenuItem
|
|
||||||
Caption = 'Fisheye'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuFisheyeClick
|
|
||||||
end
|
|
||||||
object mnuPopcorn: TMenuItem
|
|
||||||
Caption = 'Popcorn'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuPopcornClick
|
|
||||||
end
|
|
||||||
object MnuExponential: TMenuItem
|
|
||||||
Caption = 'Exponential'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = MnuExponentialClick
|
|
||||||
end
|
|
||||||
object mnuPower: TMenuItem
|
|
||||||
Caption = 'Power'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuPowerClick
|
|
||||||
end
|
|
||||||
object mnuCosine: TMenuItem
|
|
||||||
Caption = 'Cosine'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuCosineClick
|
|
||||||
end
|
|
||||||
object mnuRings: TMenuItem
|
|
||||||
Caption = 'Rings'
|
|
||||||
GroupIndex = 1
|
|
||||||
RadioItem = True
|
|
||||||
OnClick = mnuRingsClick
|
|
||||||
end
|
|
||||||
object mnuFan: TMenuItem
|
|
||||||
Caption = 'Fan'
|
|
||||||
GroupIndex = 1
|
|
||||||
OnClick = mnuFanClick
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
object mnuScript: TMenuItem
|
object mnuScript: TMenuItem
|
||||||
Caption = 'Script'
|
Caption = 'Script'
|
||||||
|
@ -37,31 +37,6 @@ const
|
|||||||
RS_DR = 1;
|
RS_DR = 1;
|
||||||
RS_XO = 2;
|
RS_XO = 2;
|
||||||
RS_VO = 3;
|
RS_VO = 3;
|
||||||
varnames: array[0..NVARS -1] of PChar = (
|
|
||||||
'linear',
|
|
||||||
'sinusoidal',
|
|
||||||
'spherical',
|
|
||||||
'swirl',
|
|
||||||
'horseshoe',
|
|
||||||
'polar',
|
|
||||||
'handkerchief',
|
|
||||||
'heart',
|
|
||||||
'disc',
|
|
||||||
'spiral',
|
|
||||||
'hyperbolic',
|
|
||||||
'diamond',
|
|
||||||
'ex',
|
|
||||||
'julia',
|
|
||||||
'bent',
|
|
||||||
'waves',
|
|
||||||
'fisheye',
|
|
||||||
'popcorn',
|
|
||||||
'exponential',
|
|
||||||
'power',
|
|
||||||
'cosine',
|
|
||||||
'rings',
|
|
||||||
'fan'
|
|
||||||
);
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TMouseMoveState = (msUsual, msZoomWindow, msZoomWindowMove, msDrag, msDragMove, msRotate, msRotateMove);
|
TMouseMoveState = (msUsual, msZoomWindow, msZoomWindowMove, msDrag, msDragMove, msRotate, msRotateMove);
|
||||||
@ -104,13 +79,6 @@ type
|
|||||||
RedrawTimer: TTimer;
|
RedrawTimer: TTimer;
|
||||||
mnuVar: TMenuItem;
|
mnuVar: TMenuItem;
|
||||||
mnuVRandom: TMenuItem;
|
mnuVRandom: TMenuItem;
|
||||||
mnuVLinear: TMenuItem;
|
|
||||||
mnuSinusoidal: TMenuItem;
|
|
||||||
mnuSpherical: TMenuItem;
|
|
||||||
mnuHorseshoe: TMenuItem;
|
|
||||||
mnuSwirl: TMenuItem;
|
|
||||||
mnuPolar: TMenuItem;
|
|
||||||
mnuVar6: TMenuItem;
|
|
||||||
N3: TMenuItem;
|
N3: TMenuItem;
|
||||||
mnuOpen: TMenuItem;
|
mnuOpen: TMenuItem;
|
||||||
mnuSaveAs: TMenuItem;
|
mnuSaveAs: TMenuItem;
|
||||||
@ -169,14 +137,6 @@ type
|
|||||||
mnuCalculateColors: TMenuItem;
|
mnuCalculateColors: TMenuItem;
|
||||||
mnuRandomizeColorValues: TMenuItem;
|
mnuRandomizeColorValues: TMenuItem;
|
||||||
N7: TMenuItem;
|
N7: TMenuItem;
|
||||||
N17: TMenuItem;
|
|
||||||
mnuVar7: TMenuItem;
|
|
||||||
mnuVar8: TMenuItem;
|
|
||||||
mnuVar9: TMenuItem;
|
|
||||||
mnuVar10: TMenuItem;
|
|
||||||
mnuVar11: TMenuItem;
|
|
||||||
mnuVar12: TMenuItem;
|
|
||||||
mnuVar13: TMenuItem;
|
|
||||||
N18: TMenuItem;
|
N18: TMenuItem;
|
||||||
N19: TMenuItem;
|
N19: TMenuItem;
|
||||||
btnDefine: TToolButton;
|
btnDefine: TToolButton;
|
||||||
@ -194,7 +154,6 @@ type
|
|||||||
N10: TMenuItem;
|
N10: TMenuItem;
|
||||||
mnuManageFavorites: TMenuItem;
|
mnuManageFavorites: TMenuItem;
|
||||||
mnuShowFull: TMenuItem;
|
mnuShowFull: TMenuItem;
|
||||||
mnuVar14: TMenuItem;
|
|
||||||
mnuImageSize: TMenuItem;
|
mnuImageSize: TMenuItem;
|
||||||
N13: TMenuItem;
|
N13: TMenuItem;
|
||||||
ApplicationEvents: TApplicationEvents;
|
ApplicationEvents: TApplicationEvents;
|
||||||
@ -209,22 +168,13 @@ type
|
|||||||
HTTP: TIdHTTP;
|
HTTP: TIdHTTP;
|
||||||
ListXmlScanner: TEasyXmlScanner;
|
ListXmlScanner: TEasyXmlScanner;
|
||||||
N21: TMenuItem;
|
N21: TMenuItem;
|
||||||
mnuWaves: TMenuItem;
|
|
||||||
mnuFisheye: TMenuItem;
|
|
||||||
mnuPopcorn: TMenuItem;
|
|
||||||
XmlScanner: TXmlScanner;
|
XmlScanner: TXmlScanner;
|
||||||
mnuFlamepdf: TMenuItem;
|
mnuFlamepdf: TMenuItem;
|
||||||
MnuExponential: TMenuItem;
|
|
||||||
mnuPower: TMenuItem;
|
|
||||||
mnuCosine: TMenuItem;
|
|
||||||
mnuRings: TMenuItem;
|
|
||||||
ToolButton4: TToolButton;
|
ToolButton4: TToolButton;
|
||||||
tbzoomwindow: TToolButton;
|
tbzoomwindow: TToolButton;
|
||||||
tbDrag: TToolButton;
|
tbDrag: TToolButton;
|
||||||
tbRotate: TToolButton;
|
tbRotate: TToolButton;
|
||||||
mnuimage: TMenuItem;
|
mnuimage: TMenuItem;
|
||||||
mnuFan: TMenuItem;
|
|
||||||
procedure mnuFanClick(Sender: TObject);
|
|
||||||
procedure mnuimageClick(Sender: TObject);
|
procedure mnuimageClick(Sender: TObject);
|
||||||
procedure mnuExitClick(Sender: TObject);
|
procedure mnuExitClick(Sender: TObject);
|
||||||
procedure mnuSaveUPRClick(Sender: TObject);
|
procedure mnuSaveUPRClick(Sender: TObject);
|
||||||
@ -258,13 +208,6 @@ type
|
|||||||
procedure MainViewClick(Sender: TObject);
|
procedure MainViewClick(Sender: TObject);
|
||||||
procedure MainToolsClick(Sender: TObject);
|
procedure MainToolsClick(Sender: TObject);
|
||||||
procedure MainHelpClick(Sender: TObject);
|
procedure MainHelpClick(Sender: TObject);
|
||||||
procedure mnuVLinearClick(Sender: TObject);
|
|
||||||
procedure mnuSinusoidalClick(Sender: TObject);
|
|
||||||
procedure mnuSphericalClick(Sender: TObject);
|
|
||||||
procedure mnuSwirlClick(Sender: TObject);
|
|
||||||
procedure mnuHorseshoeClick(Sender: TObject);
|
|
||||||
procedure mnuPolarClick(Sender: TObject);
|
|
||||||
procedure mnuVar6Click(Sender: TObject);
|
|
||||||
procedure mnuVRandomClick(Sender: TObject);
|
procedure mnuVRandomClick(Sender: TObject);
|
||||||
procedure mnuSaveAsClick(Sender: TObject);
|
procedure mnuSaveAsClick(Sender: TObject);
|
||||||
procedure mnuOpenClick(Sender: TObject);
|
procedure mnuOpenClick(Sender: TObject);
|
||||||
@ -292,13 +235,6 @@ type
|
|||||||
procedure FormDeactivate(Sender: TObject);
|
procedure FormDeactivate(Sender: TObject);
|
||||||
procedure mnuCalculateColorsClick(Sender: TObject);
|
procedure mnuCalculateColorsClick(Sender: TObject);
|
||||||
procedure mnuRandomizeColorValuesClick(Sender: TObject);
|
procedure mnuRandomizeColorValuesClick(Sender: TObject);
|
||||||
procedure mnuVar7Click(Sender: TObject);
|
|
||||||
procedure mnuVar8Click(Sender: TObject);
|
|
||||||
procedure mnuVar9Click(Sender: TObject);
|
|
||||||
procedure mnuVar10Click(Sender: TObject);
|
|
||||||
procedure mnuVar11Click(Sender: TObject);
|
|
||||||
procedure mnuVar12Click(Sender: TObject);
|
|
||||||
procedure mnuVar13Click(Sender: TObject);
|
|
||||||
procedure mnuEditScriptClick(Sender: TObject);
|
procedure mnuEditScriptClick(Sender: TObject);
|
||||||
procedure btnRunClick(Sender: TObject);
|
procedure btnRunClick(Sender: TObject);
|
||||||
procedure mnuRunClick(Sender: TObject);
|
procedure mnuRunClick(Sender: TObject);
|
||||||
@ -307,7 +243,6 @@ type
|
|||||||
procedure mnuImportGimpClick(Sender: TObject);
|
procedure mnuImportGimpClick(Sender: TObject);
|
||||||
procedure mnuManageFavoritesClick(Sender: TObject);
|
procedure mnuManageFavoritesClick(Sender: TObject);
|
||||||
procedure mnuShowFullClick(Sender: TObject);
|
procedure mnuShowFullClick(Sender: TObject);
|
||||||
procedure mnuVar14Click(Sender: TObject);
|
|
||||||
procedure mnuImageSizeClick(Sender: TObject);
|
procedure mnuImageSizeClick(Sender: TObject);
|
||||||
procedure ApplicationEventsActivate(Sender: TObject);
|
procedure ApplicationEventsActivate(Sender: TObject);
|
||||||
procedure mnuPasteClick(Sender: TObject);
|
procedure mnuPasteClick(Sender: TObject);
|
||||||
@ -325,14 +260,7 @@ type
|
|||||||
Attributes: TAttrList);
|
Attributes: TAttrList);
|
||||||
procedure XMLScannerEmptyTag(Sender: TObject; TagName: string;
|
procedure XMLScannerEmptyTag(Sender: TObject; TagName: string;
|
||||||
Attributes: TAttrList);
|
Attributes: TAttrList);
|
||||||
procedure mnuWavesClick(Sender: TObject);
|
|
||||||
procedure mnuFisheyeClick(Sender: TObject);
|
|
||||||
procedure mnuPopcornClick(Sender: TObject);
|
|
||||||
procedure mnuFlamepdfClick(Sender: TObject);
|
procedure mnuFlamepdfClick(Sender: TObject);
|
||||||
procedure MnuExponentialClick(Sender: TObject);
|
|
||||||
procedure mnuPowerClick(Sender: TObject);
|
|
||||||
procedure mnuCosineClick(Sender: TObject);
|
|
||||||
procedure mnuRingsClick(Sender: TObject);
|
|
||||||
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer);
|
Shift: TShiftState; X, Y: Integer);
|
||||||
procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
|
procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||||
@ -353,6 +281,9 @@ type
|
|||||||
procedure DrawZoomWindow(ARect: TRect);
|
procedure DrawZoomWindow(ARect: TRect);
|
||||||
procedure DrawRotatelines(Angle: double);
|
procedure DrawRotatelines(Angle: double);
|
||||||
|
|
||||||
|
procedure FillVariantMenu;
|
||||||
|
procedure VariantMenuClick(Sender: TObject);
|
||||||
|
|
||||||
procedure FavoriteClick(Sender: TObject);
|
procedure FavoriteClick(Sender: TObject);
|
||||||
procedure HandleThreadCompletion(var Message: TMessage);
|
procedure HandleThreadCompletion(var Message: TMessage);
|
||||||
message WM_THREAD_COMPLETE;
|
message WM_THREAD_COMPLETE;
|
||||||
@ -366,6 +297,9 @@ type
|
|||||||
StartTime: TDateTime;
|
StartTime: TDateTime;
|
||||||
Remainder: TDateTime;
|
Remainder: TDateTime;
|
||||||
AnimPal: TColorMap;
|
AnimPal: TColorMap;
|
||||||
|
|
||||||
|
VarMenus: array[0..NVARS] of TMenuItem;
|
||||||
|
|
||||||
procedure LoadXMLFlame(filename, name: string);
|
procedure LoadXMLFlame(filename, name: string);
|
||||||
procedure DisableFavorites;
|
procedure DisableFavorites;
|
||||||
procedure EnableFavorites;
|
procedure EnableFavorites;
|
||||||
@ -406,7 +340,6 @@ function NumXForms(const cp: TControlPoint): integer;
|
|||||||
procedure NormalizeWeights(var cp: TControlPoint);
|
procedure NormalizeWeights(var cp: TControlPoint);
|
||||||
procedure EqualizeWeights(var cp: TControlPoint);
|
procedure EqualizeWeights(var cp: TControlPoint);
|
||||||
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
||||||
function Round6(x: double): double;
|
|
||||||
procedure ListFlames(FileName: string; sel: integer);
|
procedure ListFlames(FileName: string; sel: integer);
|
||||||
procedure ListIFS(FileName: string; sel: integer);
|
procedure ListIFS(FileName: string; sel: integer);
|
||||||
procedure AdjustScale(var cp1: TControlPoint; width, height: integer);
|
procedure AdjustScale(var cp1: TControlPoint; width, height: integer);
|
||||||
@ -425,7 +358,7 @@ implementation
|
|||||||
uses Editor, Options, Regstry, Gradient, Render,
|
uses Editor, Options, Regstry, Gradient, Render,
|
||||||
FullScreen, FormRender, Mutate, Adjust, Browser, Save, About, CmapData,
|
FullScreen, FormRender, Mutate, Adjust, Browser, Save, About, CmapData,
|
||||||
HtmlHlp, ScriptForm, FormFavorites, Size, FormExport, msMultiPartFormData,
|
HtmlHlp, ScriptForm, FormFavorites, Size, FormExport, msMultiPartFormData,
|
||||||
Sheep, ImageColoring, RndFlame;
|
Sheep, ImageColoring, RndFlame, XForm;
|
||||||
|
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
|
|
||||||
@ -480,13 +413,6 @@ begin
|
|||||||
cp1.height := height;
|
cp1.height := height;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Round6(x: double): double;
|
|
||||||
// Really ugly, but it works
|
|
||||||
begin
|
|
||||||
Result := StrToFloat(Format('%.6f', [x]));
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
||||||
var
|
var
|
||||||
a, b, c, d, e, f, g, h: double;
|
a, b, c, d, e, f, g, h: double;
|
||||||
@ -703,12 +629,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.RandomizeCP(var cp1: TControlPoint; alg: integer = 0);
|
procedure TMainForm.RandomizeCP(var cp1: TControlPoint; alg: integer = 0);
|
||||||
|
(*
|
||||||
var
|
var
|
||||||
vrnd, Min, Max, i, j, rnd: integer;
|
vrnd, Min, Max, i, j, rnd: integer;
|
||||||
Triangles: TTriangles;
|
Triangles: TTriangles;
|
||||||
cmap: TColorMap;
|
cmap: TColorMap;
|
||||||
r, s, theta, phi: double;
|
r, s, theta, phi: double;
|
||||||
skip: boolean;
|
skip: boolean;
|
||||||
|
*)
|
||||||
begin
|
begin
|
||||||
cp1.Free;
|
cp1.Free;
|
||||||
cp1 := RandomFlame(MainCP, alg);
|
cp1 := RandomFlame(MainCP, alg);
|
||||||
@ -2088,7 +2016,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
OpenFileType := ftIfs;
|
OpenFileType := ftIfs;
|
||||||
Variation := vLinear;
|
Variation := vLinear;
|
||||||
mnuvLinear.Checked := True;
|
VarMenus[0].Checked := True;
|
||||||
end;
|
end;
|
||||||
if (UpperCase(ExtractFileExt(OpenDialog.FileName)) = '.FLA') or
|
if (UpperCase(ExtractFileExt(OpenDialog.FileName)) = '.FLA') or
|
||||||
(UpperCase(ExtractFileExt(OpenDialog.FileName)) = '.APO') then
|
(UpperCase(ExtractFileExt(OpenDialog.FileName)) = '.APO') then
|
||||||
@ -2512,6 +2440,7 @@ begin
|
|||||||
mnuExit.ShortCut := TextToShortCut('Alt+F4');
|
mnuExit.ShortCut := TextToShortCut('Alt+F4');
|
||||||
if VariationOptions = 0 then VariationOptions := 16383; // it shouldn't hapen but just in case;
|
if VariationOptions = 0 then VariationOptions := 16383; // it shouldn't hapen but just in case;
|
||||||
UnpackVariations(VariationOptions);
|
UnpackVariations(VariationOptions);
|
||||||
|
FillVariantMenu;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.FormShow(Sender: TObject);
|
procedure TMainForm.FormShow(Sender: TObject);
|
||||||
@ -2845,7 +2774,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
{ Open *.ifs File }
|
{ Open *.ifs File }
|
||||||
Variation := vLinear;
|
Variation := vLinear;
|
||||||
mnuVLinear.Checked := True;
|
VarMenus[0].Checked := True;
|
||||||
StringToIFS(IFSStrings.Text);
|
StringToIFS(IFSStrings.Text);
|
||||||
SetVariation(maincp);
|
SetVariation(maincp);
|
||||||
maincp.CalcBoundBox;
|
maincp.CalcBoundBox;
|
||||||
@ -3007,83 +2936,6 @@ begin
|
|||||||
DrawFlame;
|
DrawFlame;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.mnuVLinearClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVLinear.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vLinear;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuSinusoidalClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuSinusoidal.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vSinusoidal;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuSphericalClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuSpherical.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vSpherical;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuSwirlClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuSwirl.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vSwirl;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuHorseshoeClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuHorseshoe.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vHorseshoe;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuPolarClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuPolar.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vPolar;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar6Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar6.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vHandkerchief;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVRandomClick(Sender: TObject);
|
procedure TMainForm.mnuVRandomClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
mnuVRandom.Checked := True;
|
mnuVRandom.Checked := True;
|
||||||
@ -3146,15 +2998,14 @@ end;
|
|||||||
procedure TMainForm.SmoothPalette;
|
procedure TMainForm.SmoothPalette;
|
||||||
{ From Draves' Smooth palette Gimp plug-in }
|
{ From Draves' Smooth palette Gimp plug-in }
|
||||||
var
|
var
|
||||||
r, g, b: byte;
|
|
||||||
Bitmap: TBitMap;
|
Bitmap: TBitMap;
|
||||||
JPEG: TJPEGImage;
|
JPEG: TJPEGImage;
|
||||||
pal: TColorMap;
|
pal: TColorMap;
|
||||||
strings: TStringlist;
|
strings: TStringlist;
|
||||||
ident, gradient, FileName: string;
|
ident, FileName: string;
|
||||||
len, len_best, color, as_is, swapd: cardinal;
|
len, len_best, as_is, swapd: cardinal;
|
||||||
cmap_best, original, clist: array[0..255] of cardinal;
|
cmap_best, original, clist: array[0..255] of cardinal;
|
||||||
c, p, total, j, rand, tryit, i0, i1, t, x, y, i, iw, ih: integer;
|
p, total, j, rand, tryit, i0, i1, x, y, i, iw, ih: integer;
|
||||||
begin
|
begin
|
||||||
Total := Trunc(NumTries * TryLength / 100);
|
Total := Trunc(NumTries * TryLength / 100);
|
||||||
p := 0;
|
p := 0;
|
||||||
@ -3530,82 +3381,6 @@ begin
|
|||||||
UpdateWindows;
|
UpdateWindows;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.mnuVar7Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar7.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vHeart;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar8Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar8.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vDisc;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar9Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar9.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vSpiral;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar10Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar10.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vHyperbolic;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar11Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar11.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vSquare;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar12Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar12.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vEx;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuVar13Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar13.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vJulia;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuEditScriptClick(Sender: TObject);
|
procedure TMainForm.mnuEditScriptClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
@ -3722,17 +3497,6 @@ begin
|
|||||||
FullScreenForm.Show;
|
FullScreenForm.Show;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.mnuVar14Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuVar14.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vBent;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuImageSizeClick(Sender: TObject);
|
procedure TMainForm.mnuImageSizeClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SizeTool.Show;
|
SizeTool.Show;
|
||||||
@ -4199,101 +3963,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.mnuWavesClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuWaves.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vWaves;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuFisheyeClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuFisheye.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vFisheye;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuPopcornClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuPopcorn.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vPopcorn;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuFlamepdfClick(Sender: TObject);
|
procedure TMainForm.mnuFlamepdfClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
WinShellOpen('flame.pdf');
|
WinShellOpen('flame.pdf');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.MnuExponentialClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuExponential.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vExponential;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuPowerClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuPower.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vPower;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuCosineClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuCosine.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vCosine;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.mnuRingsClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuRings.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vRings;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TMainForm.mnuFanClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
mnuFan.Checked := True;
|
|
||||||
UpdateUndo;
|
|
||||||
Variation := vFan;
|
|
||||||
SetVariation(maincp);
|
|
||||||
ResetLocation;
|
|
||||||
RedrawTimer.Enabled := True;
|
|
||||||
UpdateWindows;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.ImageMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure TMainForm.ImageMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer);
|
Shift: TShiftState; X, Y: Integer);
|
||||||
var
|
var
|
||||||
@ -4348,6 +4023,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
|
procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||||
Y: Integer);
|
Y: Integer);
|
||||||
var
|
var
|
||||||
@ -4391,6 +4067,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TMainForm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
|
procedure TMainForm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer);
|
Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
@ -4525,6 +4202,37 @@ begin
|
|||||||
FMouseMoveState := msRotate;
|
FMouseMoveState := msRotate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TMainForm.FillVariantMenu;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
NewMenuItem : TMenuItem;
|
||||||
|
begin
|
||||||
|
for i := 0 to NVARS - 1 do begin
|
||||||
|
NewMenuItem := TMenuItem.Create(self);
|
||||||
|
NewMenuItem.Caption := uppercase(varnames[i][0]) + copy(varnames[i], 2, length(varnames[i])-1);
|
||||||
|
NewMenuItem.OnClick := VariantMenuClick;
|
||||||
|
NewMenuItem.Enabled := True;
|
||||||
|
NewMenuItem.Name := 'var' + intTostr(i);
|
||||||
|
NewMenuItem.Tag := i;
|
||||||
|
NewMenuItem.GroupIndex := 2;
|
||||||
|
NewMenuItem.RadioItem := True;
|
||||||
|
VarMenus[i] := NewMenuItem;
|
||||||
|
mnuvar.Add(NewMenuItem);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TMainForm.VariantMenuClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
TMenuItem(Sender).Checked := True;
|
||||||
|
UpdateUndo;
|
||||||
|
Variation := TVariation(TMenuItem(Sender).Tag);
|
||||||
|
SetVariation(maincp);
|
||||||
|
ResetLocation;
|
||||||
|
RedrawTimer.Enabled := True;
|
||||||
|
UpdateWindows;
|
||||||
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
end.
|
end.
|
||||||
|
@ -109,7 +109,8 @@ var
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Main, Global, Registry, Editor, Adjust;
|
uses
|
||||||
|
Main, Global, Registry, Editor, Adjust, XForm;
|
||||||
|
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Width = 449
|
Width = 449
|
||||||
Height = 249
|
Height = 249
|
||||||
ActivePage = GeneralPage
|
ActivePage = GeneralPage
|
||||||
TabIndex = 0
|
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
TabStop = False
|
TabStop = False
|
||||||
object GeneralPage: TTabSheet
|
object GeneralPage: TTabSheet
|
||||||
@ -152,7 +151,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Position = 100
|
Position = 100
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
Thousands = False
|
Thousands = False
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object chkResize: TCheckBox
|
object chkResize: TCheckBox
|
||||||
@ -374,7 +372,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 12
|
Max = 12
|
||||||
Position = 2
|
Position = 2
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMaxXForms: TUpDown
|
object udMaxXForms: TUpDown
|
||||||
Left = 157
|
Left = 157
|
||||||
@ -386,7 +383,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 12
|
Max = 12
|
||||||
Position = 6
|
Position = 6
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object chkKeepBackground: TCheckBox
|
object chkKeepBackground: TCheckBox
|
||||||
@ -466,7 +462,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 12
|
Max = 12
|
||||||
Position = 2
|
Position = 2
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMaxMutate: TUpDown
|
object udMaxMutate: TUpDown
|
||||||
Left = 157
|
Left = 157
|
||||||
@ -478,7 +473,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 12
|
Max = 12
|
||||||
Position = 6
|
Position = 6
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object gpForcedSymmetry: TGroupBox
|
object gpForcedSymmetry: TGroupBox
|
||||||
@ -542,7 +536,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Position = 4
|
Position = 4
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
Thousands = False
|
Thousands = False
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -759,7 +752,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 64
|
Max = 64
|
||||||
Position = 2
|
Position = 2
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMaxNodes: TUpDown
|
object udMaxNodes: TUpDown
|
||||||
Left = 209
|
Left = 209
|
||||||
@ -772,7 +764,6 @@ object OptionsForm: TOptionsForm
|
|||||||
Max = 64
|
Max = 64
|
||||||
Position = 2
|
Position = 2
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMinHue: TUpDown
|
object udMinHue: TUpDown
|
||||||
Left = 161
|
Left = 161
|
||||||
@ -781,11 +772,8 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1032
|
HelpContext = 1032
|
||||||
Associate = txtMinHue
|
Associate = txtMinHue
|
||||||
Min = 0
|
|
||||||
Max = 600
|
Max = 600
|
||||||
Position = 0
|
|
||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMaxHue: TUpDown
|
object udMaxHue: TUpDown
|
||||||
Left = 257
|
Left = 257
|
||||||
@ -794,11 +782,9 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1033
|
HelpContext = 1033
|
||||||
Associate = txtMaxHue
|
Associate = txtMaxHue
|
||||||
Min = 0
|
|
||||||
Max = 600
|
Max = 600
|
||||||
Position = 600
|
Position = 600
|
||||||
TabOrder = 11
|
TabOrder = 11
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMinSat: TUpDown
|
object udMinSat: TUpDown
|
||||||
Left = 161
|
Left = 161
|
||||||
@ -807,10 +793,7 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1034
|
HelpContext = 1034
|
||||||
Associate = txtMinSat
|
Associate = txtMinSat
|
||||||
Min = 0
|
|
||||||
Position = 0
|
|
||||||
TabOrder = 12
|
TabOrder = 12
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udmaxSat: TUpDown
|
object udmaxSat: TUpDown
|
||||||
Left = 257
|
Left = 257
|
||||||
@ -819,10 +802,8 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1035
|
HelpContext = 1035
|
||||||
Associate = txtMaxSat
|
Associate = txtMaxSat
|
||||||
Min = 0
|
|
||||||
Position = 100
|
Position = 100
|
||||||
TabOrder = 13
|
TabOrder = 13
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMinLum: TUpDown
|
object udMinLum: TUpDown
|
||||||
Left = 161
|
Left = 161
|
||||||
@ -831,10 +812,7 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1036
|
HelpContext = 1036
|
||||||
Associate = txtMinLum
|
Associate = txtMinLum
|
||||||
Min = 0
|
|
||||||
Position = 0
|
|
||||||
TabOrder = 14
|
TabOrder = 14
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
object udMaxLum: TUpDown
|
object udMaxLum: TUpDown
|
||||||
Left = 257
|
Left = 257
|
||||||
@ -843,10 +821,8 @@ object OptionsForm: TOptionsForm
|
|||||||
Height = 21
|
Height = 21
|
||||||
HelpContext = 1037
|
HelpContext = 1037
|
||||||
Associate = txtMaxLum
|
Associate = txtMaxLum
|
||||||
Min = 0
|
|
||||||
Position = 100
|
Position = 100
|
||||||
TabOrder = 15
|
TabOrder = 15
|
||||||
Wrap = False
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
}
|
}
|
||||||
{$D-,L-,O+,Q-,R-,Y-,S-}
|
//{$D-,L-,O+,Q-,R-,Y-,S-}
|
||||||
unit Options;
|
unit Options;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
@ -209,7 +209,8 @@ var
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Main, Global, Editor, ControlPoint;
|
uses
|
||||||
|
Main, Global, Editor, ControlPoint, XForm;
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
|
|
||||||
procedure TOptionsForm.btnCancelClick(Sender: TObject);
|
procedure TOptionsForm.btnCancelClick(Sender: TObject);
|
||||||
@ -582,7 +583,7 @@ var
|
|||||||
i: integer;
|
i: integer;
|
||||||
begin
|
begin
|
||||||
for i:= 0 to NVARS - 1 do begin
|
for i:= 0 to NVARS - 1 do begin
|
||||||
clbVarEnabled.AddItem(Main.varnames[i],nil);
|
clbVarEnabled.AddItem(varnames[i],nil);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -166,12 +166,21 @@ procedure TRenderer64.CreateColorMap;
|
|||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF TESTVARIANT}
|
||||||
|
for i := 0 to 255 do begin
|
||||||
|
ColorMap[i].Red := i;
|
||||||
|
ColorMap[i].Green := i;
|
||||||
|
ColorMap[i].Blue := i;
|
||||||
|
// cmap[i][3] := fcp.white_level;
|
||||||
|
end;
|
||||||
|
{$ELSE}
|
||||||
for i := 0 to 255 do begin
|
for i := 0 to 255 do begin
|
||||||
ColorMap[i].Red := (fcp.CMap[i][0] * fcp.white_level) div 256;
|
ColorMap[i].Red := (fcp.CMap[i][0] * fcp.white_level) div 256;
|
||||||
ColorMap[i].Green := (fcp.CMap[i][1] * fcp.white_level) div 256;
|
ColorMap[i].Green := (fcp.CMap[i][1] * fcp.white_level) div 256;
|
||||||
ColorMap[i].Blue := (fcp.CMap[i][2] * fcp.white_level) div 256;
|
ColorMap[i].Blue := (fcp.CMap[i][2] * fcp.white_level) div 256;
|
||||||
// cmap[i][3] := fcp.white_level;
|
// cmap[i][3] := fcp.white_level;
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -396,10 +405,16 @@ begin
|
|||||||
Progress(i / nrbatches);
|
Progress(i / nrbatches);
|
||||||
|
|
||||||
// generate points
|
// generate points
|
||||||
|
{$IFDEF TESTVARIANT}
|
||||||
|
// if i > 10 then
|
||||||
|
// break;
|
||||||
|
fcp.Testiterate(SUB_BATCH_SIZE, points);
|
||||||
|
{$ELSE}
|
||||||
case Compatibility of
|
case Compatibility of
|
||||||
0: fcp.iterate_Old(SUB_BATCH_SIZE, points);
|
0: fcp.iterate_Old(SUB_BATCH_SIZE, points);
|
||||||
1: fcp.iterateXYC(SUB_BATCH_SIZE, points);
|
1: fcp.iterateXYC(SUB_BATCH_SIZE, points);
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
// for j := SUB_BATCH_SIZE - 1 downto 0 do
|
// for j := SUB_BATCH_SIZE - 1 downto 0 do
|
||||||
// Writeln(f, FloatTostr(points[j].x) + #9 + FloatTostr(points[j].y) + #9 + FloatTostr(points[j].c));
|
// Writeln(f, FloatTostr(points[j].x) + #9 + FloatTostr(points[j].y) + #9 + FloatTostr(points[j].c));
|
||||||
|
@ -1665,24 +1665,10 @@ begin
|
|||||||
if (i < 0) or (i >= NVARS) then
|
if (i < 0) or (i >= NVARS) then
|
||||||
i := NVARS;
|
i := NVARS;
|
||||||
Variation := TVariation(i);
|
Variation := TVariation(i);
|
||||||
case i of
|
if i = -1 then
|
||||||
0: MainForm.mnuVLinear.checked := True;
|
MainForm.mnuVRandom.checked := True
|
||||||
1: MainForm.mnuSinusoidal.checked := True;
|
|
||||||
2: MainForm.mnuSpherical.checked := True;
|
|
||||||
3: MainForm.mnuSwirl.checked := True;
|
|
||||||
4: MainForm.mnuHorseshoe.checked := True;
|
|
||||||
5: MainForm.mnuPolar.checked := True;
|
|
||||||
6: MainForm.mnuVar6.checked := True;
|
|
||||||
7: MainForm.mnuVar7.checked := True;
|
|
||||||
8: MainForm.mnuVar8.checked := True;
|
|
||||||
9: MainForm.mnuVar9.checked := True;
|
|
||||||
10: MainForm.mnuVar10.checked := True;
|
|
||||||
11: MainForm.mnuVar11.checked := True;
|
|
||||||
12: MainForm.mnuVar12.checked := True;
|
|
||||||
13: MainForm.mnuVar13.checked := True;
|
|
||||||
else
|
else
|
||||||
MainForm.mnuVRandom.checked := True;
|
MainForm.VarMenus[i].Checked := True;
|
||||||
end;
|
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -3,8 +3,42 @@ unit XForm;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
const
|
||||||
NVARS = 23;
|
{$IFDEF TESTVARIANT}
|
||||||
EPS = 1E-10;
|
NVARS = 26;
|
||||||
|
{$ELSE}
|
||||||
|
NVARS = 25;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
varnames: array[0..NVARS -1] of PChar = (
|
||||||
|
'linear',
|
||||||
|
'sinusoidal',
|
||||||
|
'spherical',
|
||||||
|
'swirl',
|
||||||
|
'horseshoe',
|
||||||
|
'polar',
|
||||||
|
'handkerchief',
|
||||||
|
'heart',
|
||||||
|
'disc',
|
||||||
|
'spiral',
|
||||||
|
'hyperbolic',
|
||||||
|
'diamond',
|
||||||
|
'ex',
|
||||||
|
'julia',
|
||||||
|
'bent',
|
||||||
|
'waves',
|
||||||
|
'fisheye',
|
||||||
|
'popcorn',
|
||||||
|
'exponential',
|
||||||
|
'power',
|
||||||
|
'cosine',
|
||||||
|
'rings',
|
||||||
|
'fan',
|
||||||
|
'triblob',
|
||||||
|
'daisy'
|
||||||
|
{$IFDEF TESTVARIANT}
|
||||||
|
,'test'
|
||||||
|
{$ENDIF}
|
||||||
|
);
|
||||||
|
|
||||||
type
|
type
|
||||||
TCalcMethod = procedure of object;
|
TCalcMethod = procedure of object;
|
||||||
@ -61,7 +95,9 @@ type
|
|||||||
procedure Cosine; // var[20]
|
procedure Cosine; // var[20]
|
||||||
procedure Rings; // var[21]
|
procedure Rings; // var[21]
|
||||||
procedure Fan; // var[22]
|
procedure Fan; // var[22]
|
||||||
|
procedure Triblob; // var[23]
|
||||||
|
procedure Daisy; // var[24]
|
||||||
|
procedure TestVar; // var[NVARS - 1]
|
||||||
|
|
||||||
function Mul33(const M1, M2: TMatrix): TMatrix;
|
function Mul33(const M1, M2: TMatrix): TMatrix;
|
||||||
function Identity: TMatrix;
|
function Identity: TMatrix;
|
||||||
@ -99,6 +135,9 @@ implementation
|
|||||||
uses
|
uses
|
||||||
SysUtils, Math;
|
SysUtils, Math;
|
||||||
|
|
||||||
|
const
|
||||||
|
EPS = 1E-10;
|
||||||
|
|
||||||
{ TXForm }
|
{ TXForm }
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -249,6 +288,23 @@ begin
|
|||||||
Inc(FNrFunctions);
|
Inc(FNrFunctions);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if (vars[23] <> 0.0) then begin
|
||||||
|
FFunctionList[FNrFunctions] := Triblob;
|
||||||
|
Inc(FNrFunctions);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (vars[24] <> 0.0) then begin
|
||||||
|
FFunctionList[FNrFunctions] := Daisy;
|
||||||
|
Inc(FNrFunctions);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$IFDEF TESTVARIANT}
|
||||||
|
if (vars[NVARS -1] <> 0.0) then begin
|
||||||
|
FFunctionList[FNrFunctions] := TestVar;
|
||||||
|
Inc(FNrFunctions);
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
CalculateAngle := (vars[5] <> 0.0) or (vars[6] <> 0.0) or (vars[7] <> 0.0) or (vars[8] <> 0.0) or
|
CalculateAngle := (vars[5] <> 0.0) or (vars[6] <> 0.0) or (vars[7] <> 0.0) or (vars[8] <> 0.0) or
|
||||||
(vars[12] <> 0.0) or (vars[13] <> 0.0) or (vars[21] <> 0.0) or (vars[22] <> 0.0);
|
(vars[12] <> 0.0) or (vars[13] <> 0.0) or (vars[21] <> 0.0) or (vars[22] <> 0.0);
|
||||||
CalculateLength := False;
|
CalculateLength := False;
|
||||||
@ -545,6 +601,64 @@ begin
|
|||||||
FPy := FPy + vars[22] * r * sin(a);
|
FPy := FPy + vars[22] * r * sin(a);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TXForm.Triblob;
|
||||||
|
var
|
||||||
|
r : double;
|
||||||
|
Angle: double;
|
||||||
|
begin
|
||||||
|
r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
|
Angle := arctan2(FTx, FTy)
|
||||||
|
else
|
||||||
|
Angle := 0.0;
|
||||||
|
|
||||||
|
r := r * (0.6 + 0.4 * sin(3 * Angle));
|
||||||
|
|
||||||
|
FPx := FPx + vars[23] * r * cos(Angle);
|
||||||
|
FPy := FPy + vars[23] * r * sin(Angle);
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TXForm.Daisy;
|
||||||
|
var
|
||||||
|
r : double;
|
||||||
|
Angle: double;
|
||||||
|
begin
|
||||||
|
r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
|
Angle := arctan2(FTx, FTy)
|
||||||
|
else
|
||||||
|
Angle := 0.0;
|
||||||
|
|
||||||
|
// r := r * (0.6 + 0.4 * sin(3 * Angle));
|
||||||
|
r := r * sin(5 * Angle);
|
||||||
|
|
||||||
|
FPx := FPx + vars[24] * r * cos(Angle);
|
||||||
|
FPy := FPy + vars[24] * r * sin(Angle);
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TXForm.TestVar;
|
||||||
|
var
|
||||||
|
r : double;
|
||||||
|
// dx, dy, dx2: double;
|
||||||
|
Angle: double;
|
||||||
|
begin
|
||||||
|
r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
|
Angle := arctan2(FTx, FTy)
|
||||||
|
else
|
||||||
|
Angle := 0.0;
|
||||||
|
|
||||||
|
// r := r * (0.6 + 0.4 * sin(3 * Angle));
|
||||||
|
r := r * sin(5 * Angle);
|
||||||
|
|
||||||
|
FPx := FPx + vars[NVARS-1] * r * cos(Angle);
|
||||||
|
FPy := FPy + vars[NVARS-1] * r * sin(Angle);
|
||||||
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.NextPoint(var px,py,pc: double);
|
procedure TXForm.NextPoint(var px,py,pc: double);
|
||||||
var
|
var
|
||||||
@ -892,5 +1006,6 @@ begin
|
|||||||
c[2, 1] := Matrix[1][2];
|
c[2, 1] := Matrix[1][2];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user