get ready :-) mega commit approaching!
well, enough changes to release 2.03c... I think ;)
This commit is contained in:
parent
da95c740bb
commit
45d5a60086
@ -1866,7 +1866,7 @@ object AboutForm: TAboutForm
|
||||
object Label1: TLabel
|
||||
Left = 120
|
||||
Top = 8
|
||||
Width = 137
|
||||
Width = 131
|
||||
Height = 36
|
||||
Caption = 'Apophysis'
|
||||
Font.Charset = ANSI_CHARSET
|
||||
@ -1877,11 +1877,11 @@ object AboutForm: TAboutForm
|
||||
ParentFont = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 260
|
||||
Left = 268
|
||||
Top = 24
|
||||
Width = 65
|
||||
Width = 58
|
||||
Height = 13
|
||||
Caption = 'Version 2.03b'
|
||||
Caption = 'version 2.03'
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 120
|
||||
|
@ -4,7 +4,7 @@ object AdjustForm: TAdjustForm
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
BorderStyle = bsSingle
|
||||
Caption = 'Adjust'
|
||||
ClientHeight = 264
|
||||
ClientHeight = 263
|
||||
ClientWidth = 390
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
@ -172,7 +172,7 @@ object AdjustForm: TAdjustForm
|
||||
Left = 0
|
||||
Top = 133
|
||||
Width = 390
|
||||
Height = 131
|
||||
Height = 130
|
||||
ActivePage = TabSheet1
|
||||
Align = alBottom
|
||||
TabOrder = 1
|
||||
@ -331,13 +331,12 @@ object AdjustForm: TAdjustForm
|
||||
Caption = 'Rendering'
|
||||
ImageIndex = 1
|
||||
object lblContrast: TLabel
|
||||
Left = 8
|
||||
Left = 4
|
||||
Top = 80
|
||||
Width = 93
|
||||
Width = 69
|
||||
Height = 13
|
||||
Alignment = taRightJustify
|
||||
AutoSize = False
|
||||
Caption = 'Background color:'
|
||||
Caption = 'Background'
|
||||
end
|
||||
object btnGamma: TSpeedButton
|
||||
Left = 4
|
||||
@ -375,6 +374,13 @@ object AdjustForm: TAdjustForm
|
||||
ShowHint = True
|
||||
OnClick = btnVibrancyClick
|
||||
end
|
||||
object Label1: TLabel
|
||||
Left = 236
|
||||
Top = 80
|
||||
Width = 62
|
||||
Height = 13
|
||||
Caption = 'Master Scale'
|
||||
end
|
||||
object scrollGamma: TScrollBar
|
||||
Left = 72
|
||||
Top = 7
|
||||
@ -446,9 +452,9 @@ object AdjustForm: TAdjustForm
|
||||
OnKeyPress = txtVibrancyKeyPress
|
||||
end
|
||||
object ColorPanel: TPanel
|
||||
Left = 112
|
||||
Left = 72
|
||||
Top = 78
|
||||
Width = 113
|
||||
Width = 65
|
||||
Height = 21
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
@ -456,31 +462,24 @@ object AdjustForm: TAdjustForm
|
||||
TabOrder = 6
|
||||
OnClick = ColorPanelClick
|
||||
end
|
||||
object cbColor: TComboBox
|
||||
Left = 232
|
||||
Top = 78
|
||||
Width = 59
|
||||
Height = 21
|
||||
Enabled = False
|
||||
ItemHeight = 13
|
||||
ItemIndex = 0
|
||||
TabOrder = 7
|
||||
Text = '000000'
|
||||
Visible = False
|
||||
Items.Strings = (
|
||||
'000000'
|
||||
'FFFFFF')
|
||||
end
|
||||
object chkTransparent: TCheckBox
|
||||
Left = 296
|
||||
Left = 144
|
||||
Top = 80
|
||||
Width = 81
|
||||
Height = 17
|
||||
Caption = 'Transparent'
|
||||
Enabled = False
|
||||
TabOrder = 8
|
||||
TabOrder = 7
|
||||
Visible = False
|
||||
end
|
||||
object editPPU: TEdit
|
||||
Left = 304
|
||||
Top = 76
|
||||
Width = 75
|
||||
Height = 21
|
||||
TabOrder = 8
|
||||
OnKeyPress = editPPUKeyPress
|
||||
end
|
||||
end
|
||||
object TabSheet3: TTabSheet
|
||||
Caption = 'Gradient'
|
||||
@ -674,7 +673,7 @@ object AdjustForm: TAdjustForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 382
|
||||
Height = 45
|
||||
Height = 49
|
||||
Align = alTop
|
||||
BevelOuter = bvLowered
|
||||
Color = clAppWorkSpace
|
||||
@ -683,7 +682,7 @@ object AdjustForm: TAdjustForm
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 380
|
||||
Height = 43
|
||||
Height = 47
|
||||
Cursor = crHandPoint
|
||||
Align = alClient
|
||||
PopupMenu = GradientPopup
|
||||
|
@ -61,7 +61,6 @@ type
|
||||
txtVibrancy: TEdit;
|
||||
ColorPanel: TPanel;
|
||||
TabSheet3: TTabSheet;
|
||||
cbColor: TComboBox;
|
||||
scrollAngle: TScrollBar;
|
||||
txtAngle: TEdit;
|
||||
btnZoom: TSpeedButton;
|
||||
@ -131,6 +130,8 @@ type
|
||||
Bevel2: TBevel;
|
||||
N8: TMenuItem;
|
||||
mnuInstantPreview: TMenuItem;
|
||||
Label1: TLabel;
|
||||
editPPU: TEdit;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
@ -248,6 +249,7 @@ type
|
||||
procedure btnColorPresetClick(Sender: TObject);
|
||||
procedure btnApplySizeClick(Sender: TObject);
|
||||
procedure mnuInstantPreviewClick(Sender: TObject);
|
||||
procedure editPPUKeyPress(Sender: TObject; var Key: Char);
|
||||
|
||||
private
|
||||
Resetting: boolean;
|
||||
@ -337,7 +339,7 @@ begin
|
||||
PreviewImage.Top := 1;
|
||||
PreviewImage.Left := (pw - PreviewImage.Width) div 2;
|
||||
end;
|
||||
AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
|
||||
cp.AdjustScale(PreviewImage.Width, PreviewImage.Height);
|
||||
|
||||
cp.cmap := MainCp.cmap;
|
||||
|
||||
@ -361,7 +363,7 @@ begin
|
||||
end;
|
||||
|
||||
ColorPanel.color := cp.background[2] shl 16 + cp.background[1] shl 8 + cp.background[0];
|
||||
cbColor.text := IntToHex(integer(ColorPanel.Color), 6);
|
||||
//cbColor.text := IntToHex(integer(ColorPanel.Color), 6);
|
||||
|
||||
GetMainWindowSize;
|
||||
|
||||
@ -373,7 +375,7 @@ begin
|
||||
BackupPal := cp.cmap;
|
||||
|
||||
Resetting := False;
|
||||
|
||||
editPPU.Text := FloatToStr(cp.pixels_per_unit);
|
||||
end; //***
|
||||
DrawPreview;
|
||||
end;
|
||||
@ -532,7 +534,14 @@ begin
|
||||
Preset[i].Width := 512;
|
||||
Preset[i].Height := 384;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
for i:=1 to 3 do begin
|
||||
Preset[i].Left := MainForm.Left;
|
||||
Preset[i].Top := MainForm.Top;
|
||||
Preset[i].Width := 512;
|
||||
Preset[i].Height := 384;
|
||||
end;
|
||||
Registry.CloseKey;
|
||||
finally
|
||||
Registry.Free;
|
||||
@ -898,7 +907,7 @@ begin
|
||||
if ColorDialog.Execute then
|
||||
begin
|
||||
ColorPanel.Color := ColorDialog.Color;
|
||||
cbColor.text := IntToHex(integer(ColorDialog.Color), 6);
|
||||
//cbColor.text := IntToHex(integer(ColorDialog.Color), 6);
|
||||
col := ColorToRGB(ColorDialog.Color);
|
||||
cp.background[0] := col and 255;
|
||||
cp.background[1] := col shr 8 and 255;
|
||||
@ -1862,7 +1871,7 @@ end;
|
||||
|
||||
procedure TAdjustForm.btnColorPresetClick(Sender: TObject);
|
||||
begin
|
||||
cmbPalette.ItemIndex := random(701);
|
||||
cmbPalette.ItemIndex := Random(NRCMAPS);
|
||||
cmbPaletteChange(Sender);
|
||||
end;
|
||||
|
||||
@ -1876,5 +1885,23 @@ begin
|
||||
mnuInstantPreview.Checked := not mnuInstantPreview.Checked;
|
||||
end;
|
||||
|
||||
procedure TAdjustForm.editPPUKeyPress(Sender: TObject; var Key: Char);
|
||||
var
|
||||
t: double;
|
||||
begin
|
||||
if key=#13 then
|
||||
begin
|
||||
key := #0;
|
||||
try
|
||||
t:=strtofloat(editPPU.Text);
|
||||
except
|
||||
exit;
|
||||
end;
|
||||
MainForm.UpdateUndo;
|
||||
cp.pixels_per_unit:=t;
|
||||
UpdateFlame;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -56,7 +56,7 @@ begin
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
procedure TBaseVariation.prepare;
|
||||
procedure TBaseVariation.Prepare;
|
||||
begin
|
||||
end;
|
||||
|
||||
|
@ -156,11 +156,12 @@ type
|
||||
// CP-specific functions moved from unit Main
|
||||
function NumXForms: integer;
|
||||
function TrianglesFromCP(var Triangles: TTriangles): integer;
|
||||
procedure GetFromTriangles(const Triangles: TTriangles; const t: integer);
|
||||
procedure EqualizeWeights;
|
||||
procedure NormalizeWeights;
|
||||
procedure RandomizeWeights;
|
||||
procedure ComputeWeights(Triangles: TTriangles; t: integer);
|
||||
procedure GetFromTriangles(const Triangles: TTriangles; const t: integer);
|
||||
procedure AdjustScale(w, h: integer);
|
||||
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
@ -272,7 +273,7 @@ begin
|
||||
end;
|
||||
|
||||
LoopValue := 0;
|
||||
for i := 0 to 1023 do begin
|
||||
for i := 0 to PROP_TABLE_SIZE-1 do begin
|
||||
propsum := 0;
|
||||
j := -1;
|
||||
repeat
|
||||
@ -726,6 +727,7 @@ var
|
||||
CurrentXForm: integer;
|
||||
i: integer;
|
||||
OldDecimalSperator: Char;
|
||||
v: double;
|
||||
begin
|
||||
ParseValues := TStringList.Create;
|
||||
ParseValues.CommaText := AString;
|
||||
@ -871,7 +873,20 @@ begin
|
||||
xform[CurrentXForm].c[2, 0] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].c[2, 1] := StrToFloat(ParseValues[ParsePos]);
|
||||
end else if AnsiCompareText(CurrentToken, 'var') = 0 then begin
|
||||
end else if AnsiCompareText(CurrentToken, 'post') = 0 then begin
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[0, 0] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[0, 1] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[1, 0] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[1, 1] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[2, 0] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(ParsePos);
|
||||
xform[CurrentXForm].p[2, 1] := StrToFloat(ParseValues[ParsePos]);
|
||||
end else if AnsiCompareText(CurrentToken, 'vars') = 0 then begin
|
||||
for i := 0 to NRVAR - 1 do begin
|
||||
xform[CurrentXForm].vars[i] := 0;
|
||||
end;
|
||||
@ -887,6 +902,24 @@ begin
|
||||
xform[CurrentXForm].vars[i] := StrToFloat(ParseValues[ParsePos]);
|
||||
Inc(i);
|
||||
end;
|
||||
end else if AnsiCompareText(CurrentToken, 'variables') = 0 then begin
|
||||
v := 0;
|
||||
for i:= 0 to GetNrVariableNames-1 do begin
|
||||
xform[CurrentXForm].SetVariable(GetVariableNameAt(i), v);
|
||||
end;
|
||||
|
||||
i := 0;
|
||||
while true do begin
|
||||
if (ParsePos + 1) >= ParseValues.Count then
|
||||
break;
|
||||
if ParseValues[ParsePos + 1][1] in ['a'..'z', 'A'..'Z'] then
|
||||
break;
|
||||
|
||||
Inc(ParsePos);
|
||||
v := StrToFloat(ParseValues[ParsePos]);
|
||||
xform[CurrentXForm].SetVariable(GetVariableNameAt(i), v);
|
||||
Inc(i);
|
||||
end;
|
||||
|
||||
end else begin
|
||||
OutputDebugString(Pchar('Unknown Token: ' + CurrentToken));
|
||||
@ -1251,13 +1284,14 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
class function TControlPoint.interpolate(cp1, cp2: TControlPoint; Time: double): TControlPoint;
|
||||
class function TControlPoint.Interpolate(cp1, cp2: TControlPoint; Time: double): TControlPoint;
|
||||
var
|
||||
c0, c1: double;
|
||||
i, j: integer;
|
||||
r, s, t: array[0..2] of double;
|
||||
// totvar: double;
|
||||
{z,rhtime: double;}
|
||||
v1, v2: double;
|
||||
begin
|
||||
if (cp2.time - cp1.time) > 1E-6 then begin
|
||||
c0 := (cp2.time - time) / (cp2.time - cp1.time);
|
||||
@ -1319,9 +1353,18 @@ begin
|
||||
for i := 0 to NXFORMS - 1 do begin
|
||||
Result.xform[i].density := c0 * cp1.xform[i].density + c1 * cp2.xform[i].density;
|
||||
Result.xform[i].color := c0 * cp1.xform[i].color + c1 * cp2.xform[i].color;
|
||||
for j := 0 to NRVAR - 1 do begin
|
||||
// for j := 0 to NRVAR - 1 do
|
||||
// Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
|
||||
for j := 0 to NrVar-1 do
|
||||
begin
|
||||
Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
|
||||
end;
|
||||
for j:= 0 to GetNrVariableNames-1 do begin
|
||||
cp1.xform[i].GetVariable(GetVariableNameAt(j), v1);
|
||||
cp2.xform[i].GetVariable(GetVariableNameAt(j), v2);
|
||||
v1 := c0 * v1 + c1 * v2;
|
||||
Result.xform[i].SetVariable(GetVariableNameAt(j), v1);
|
||||
end;
|
||||
|
||||
(*
|
||||
totvar := 0;
|
||||
@ -1371,6 +1414,7 @@ var
|
||||
c0, c1: double;
|
||||
i, j: integer;
|
||||
r, s, t: array[0..2] of double;
|
||||
v1, v2: double;
|
||||
// totvar: double;
|
||||
{z,rhtime: double;}
|
||||
begin
|
||||
@ -1434,8 +1478,15 @@ begin
|
||||
Result.xform[i].density := c0 * cp1.xform[i].density + c1 * cp2.xform[i].density;
|
||||
Result.xform[i].color := c0 * cp1.xform[i].color + c1 * cp2.xform[i].color;
|
||||
Result.xform[i].symmetry := c0 * cp1.xform[i].symmetry + c1 * cp2.xform[i].symmetry;
|
||||
for j := 0 to NRVAR - 1 do begin
|
||||
// for j := 0 to NrVar - 1 do
|
||||
// Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
|
||||
for j := 0 to NrVar-1 do
|
||||
Result.xform[i].vars[j] := c0 * cp1.xform[i].vars[j] + c1 * cp2.xform[i].vars[j];
|
||||
for j:= 0 to GetNrVariableNames-1 do begin
|
||||
cp1.xform[i].GetVariable(GetVariableNameAt(j), v1);
|
||||
cp2.xform[i].GetVariable(GetVariableNameAt(j), v2);
|
||||
v1 := c0 * v1 + c1 * v2;
|
||||
Result.xform[i].SetVariable(GetVariableNameAt(j), v1);
|
||||
end;
|
||||
(*
|
||||
totvar := 0;
|
||||
@ -1472,9 +1523,10 @@ end;
|
||||
|
||||
procedure TControlPoint.SaveToStringlist(sl: TStringlist);
|
||||
var
|
||||
i, j: Integer;
|
||||
i, j, k: Integer;
|
||||
s: string;
|
||||
OldDecimalSperator: Char;
|
||||
v: double;
|
||||
begin
|
||||
OldDecimalSperator := DecimalSeparator;
|
||||
DecimalSeparator := '.';
|
||||
@ -1495,22 +1547,27 @@ begin
|
||||
sl.add(format('brightness %f gamma %f vibrancy %f hue_rotation %f cmap_inter %d',
|
||||
[brightness * BRIGHT_ADJUST, gamma, vibrancy, hue_rotation, cmap_inter]));
|
||||
|
||||
for i := 0 to NXFORMS - 1 do begin
|
||||
if xform[i].density = 0 then
|
||||
Continue;
|
||||
for i := 0 to NXFORMS - 1 do
|
||||
with xform[i] do begin
|
||||
if density = 0 then continue;
|
||||
|
||||
sl.add(format('xform %d density %g color %g symmetry %g', [i, xform[i].density, xform[i].color, xform[i].symmetry]));
|
||||
s := 'var';
|
||||
for j := 0 to NRVAR - 1 do begin
|
||||
s := format('%s %g', [s, xform[i].vars[j]]);
|
||||
sl.add(format('xform %d density %g color %g symmetry %g', [i, density, color, symmetry]));
|
||||
s := 'vars';
|
||||
for j := 0 to NRVAR - 1 do begin
|
||||
s := format('%s %g', [s, vars[j]]);
|
||||
end;
|
||||
sl.add(s);
|
||||
s := 'variables';
|
||||
for j:= 0 to GetNrVariableNames-1 do begin
|
||||
GetVariable(GetVariableNameAt(j), v);
|
||||
s := format('%s %g', [s, v]);
|
||||
end;
|
||||
sl.add(s);
|
||||
sl.Add(format('coefs %.6f %.6f %.6f %.6f %.6f %.6f',
|
||||
[c[0][0], c[0][1], c[1][0], c[1][1], c[2][0], c[2][1]]));
|
||||
sl.Add(format('post %.6f %.6f %.6f %.6f %.6f %.6f',
|
||||
[p[0][0], p[0][1], p[1][0], p[1][1], p[2][0], p[2][1]]));
|
||||
end;
|
||||
sl.add(s);
|
||||
// sl.Add(format('coefs %f %f %f %f %f %f',
|
||||
sl.Add(format('coefs %.6f %.6f %.6f %.6f %.6f %.6f',
|
||||
[xform[i].c[0][0], xform[i].c[0][1],
|
||||
xform[i].c[1][0], xform[i].c[1][1],
|
||||
xform[i].c[2][0], xform[i].c[2][1]]));
|
||||
end;
|
||||
|
||||
DecimalSeparator := OldDecimalSperator;
|
||||
end;
|
||||
@ -1697,7 +1754,7 @@ begin
|
||||
if xform[i].density = 0 then
|
||||
break;
|
||||
|
||||
for v := 23 to NrVar - 1 do
|
||||
for v := NRLOCVAR to NrVar - 1 do
|
||||
result := Result or (xform[i].vars[v] > 0);
|
||||
|
||||
if result then
|
||||
@ -2007,5 +2064,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TControlPoint.AdjustScale(w, h: integer);
|
||||
begin
|
||||
// if width >= height then
|
||||
pixels_per_unit := pixels_per_unit * w/width;
|
||||
// else
|
||||
// pixels_per_unit := pixels_per_unit * h/height;
|
||||
width := w;
|
||||
height := h;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
object EditForm: TEditForm
|
||||
Left = 279
|
||||
Top = 234
|
||||
Left = 302
|
||||
Top = 226
|
||||
Width = 586
|
||||
Height = 582
|
||||
Height = 573
|
||||
Caption = 'Transform Editor'
|
||||
Color = clBtnFace
|
||||
Constraints.MinHeight = 400
|
||||
@ -54,7 +54,7 @@ object EditForm: TEditForm
|
||||
TextHeight = 13
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Top = 539
|
||||
Top = 530
|
||||
Width = 578
|
||||
Height = 15
|
||||
Panels = <
|
||||
@ -244,28 +244,8 @@ object EditForm: TEditForm
|
||||
ShowHint = True
|
||||
OnClick = mnuFlipVerticalClick
|
||||
end
|
||||
object tbFlipAllHorz: TToolButton
|
||||
Left = 324
|
||||
Top = 0
|
||||
Hint = 'Flip all triangles horizontal'
|
||||
Caption = 'Flip All Horizontal'
|
||||
ImageIndex = 12
|
||||
MenuItem = mnuHorizintalFlipAll
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
end
|
||||
object tbFlipAllVert: TToolButton
|
||||
Left = 349
|
||||
Top = 0
|
||||
Hint = 'Flip all triangles vertical'
|
||||
Caption = 'Flip All Vertical '
|
||||
ImageIndex = 13
|
||||
MenuItem = mnuVerticalFlipAll
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
end
|
||||
object ToolButton2: TToolButton
|
||||
Left = 374
|
||||
Left = 324
|
||||
Top = 0
|
||||
Width = 8
|
||||
Caption = 'ToolButton2'
|
||||
@ -273,7 +253,7 @@ object EditForm: TEditForm
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object tbVarPreview: TToolButton
|
||||
Left = 382
|
||||
Left = 332
|
||||
Top = 0
|
||||
Hint = 'Show/hide variation preview'
|
||||
Caption = 'Variation Preview'
|
||||
@ -289,14 +269,14 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 24
|
||||
Width = 578
|
||||
Height = 515
|
||||
Height = 506
|
||||
Align = alClient
|
||||
TabOrder = 1
|
||||
object Splitter1: TSplitter
|
||||
Left = 396
|
||||
Top = 1
|
||||
Width = 9
|
||||
Height = 513
|
||||
Height = 504
|
||||
Align = alRight
|
||||
AutoSnap = False
|
||||
Beveled = True
|
||||
@ -307,7 +287,7 @@ object EditForm: TEditForm
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 395
|
||||
Height = 513
|
||||
Height = 504
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
Color = clAppWorkSpace
|
||||
@ -317,7 +297,7 @@ object EditForm: TEditForm
|
||||
Left = 405
|
||||
Top = 1
|
||||
Width = 172
|
||||
Height = 513
|
||||
Height = 504
|
||||
Align = alRight
|
||||
Alignment = taLeftJustify
|
||||
BevelOuter = bvNone
|
||||
@ -356,7 +336,7 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 138
|
||||
Width = 172
|
||||
Height = 375
|
||||
Height = 366
|
||||
Align = alClient
|
||||
TabOrder = 0
|
||||
object lblTransform: TLabel
|
||||
@ -389,7 +369,7 @@ object EditForm: TEditForm
|
||||
Left = 1
|
||||
Top = 30
|
||||
Width = 170
|
||||
Height = 344
|
||||
Height = 335
|
||||
ActivePage = TriangleTab
|
||||
Align = alBottom
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
@ -402,7 +382,7 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 162
|
||||
Height = 298
|
||||
Height = 289
|
||||
HorzScrollBar.Visible = False
|
||||
VertScrollBar.Smooth = True
|
||||
VertScrollBar.Style = ssFlat
|
||||
@ -416,29 +396,29 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 162
|
||||
Height = 277
|
||||
Height = 281
|
||||
BevelOuter = bvNone
|
||||
TabOrder = 0
|
||||
object Label9: TLabel
|
||||
object LabelB: TLabel
|
||||
Left = 4
|
||||
Top = 32
|
||||
Width = 10
|
||||
Width = 12
|
||||
Height = 13
|
||||
Caption = 'B:'
|
||||
Caption = 'O:'
|
||||
end
|
||||
object Label7: TLabel
|
||||
object LabelA: TLabel
|
||||
Left = 4
|
||||
Top = 8
|
||||
Width = 11
|
||||
Width = 10
|
||||
Height = 13
|
||||
Caption = 'A:'
|
||||
Caption = 'X:'
|
||||
end
|
||||
object Label11: TLabel
|
||||
object LabelC: TLabel
|
||||
Left = 4
|
||||
Top = 56
|
||||
Width = 11
|
||||
Width = 10
|
||||
Height = 13
|
||||
Caption = 'C:'
|
||||
Caption = 'Y:'
|
||||
end
|
||||
object btTrgRotateRight: TSpeedButton
|
||||
Left = 106
|
||||
@ -1016,27 +996,6 @@ object EditForm: TEditForm
|
||||
OnExit = CornerEditExit
|
||||
OnKeyPress = CornerEditKeyPress
|
||||
end
|
||||
object rgPivot: TRadioGroup
|
||||
Left = 16
|
||||
Top = 210
|
||||
Width = 129
|
||||
Height = 65
|
||||
BiDiMode = bdLeftToRight
|
||||
Caption = 'Triangle Pivot'
|
||||
Columns = 2
|
||||
Ctl3D = True
|
||||
ItemIndex = 1
|
||||
Items.Strings = (
|
||||
'A'
|
||||
'B'
|
||||
'C'
|
||||
'Center'
|
||||
'( 0; 0 )')
|
||||
ParentBiDiMode = False
|
||||
ParentCtl3D = False
|
||||
TabOrder = 6
|
||||
OnClick = rgPivotClicked
|
||||
end
|
||||
object txtTrgMoveValue: TComboBox
|
||||
Left = 56
|
||||
Top = 132
|
||||
@ -1045,7 +1004,7 @@ object EditForm: TEditForm
|
||||
AutoComplete = False
|
||||
ItemHeight = 13
|
||||
ItemIndex = 3
|
||||
TabOrder = 8
|
||||
TabOrder = 7
|
||||
Text = '0.1'
|
||||
OnExit = txtValidateValue
|
||||
OnKeyPress = txtValKeyPress
|
||||
@ -1065,7 +1024,7 @@ object EditForm: TEditForm
|
||||
Height = 21
|
||||
AutoComplete = False
|
||||
ItemHeight = 13
|
||||
TabOrder = 7
|
||||
TabOrder = 6
|
||||
Text = '15'
|
||||
OnExit = txtValidateValue
|
||||
OnKeyPress = txtValKeyPress
|
||||
@ -1087,7 +1046,7 @@ object EditForm: TEditForm
|
||||
AutoComplete = False
|
||||
ItemHeight = 13
|
||||
ItemIndex = 1
|
||||
TabOrder = 9
|
||||
TabOrder = 8
|
||||
Text = '125'
|
||||
OnExit = txtValidateValue
|
||||
OnKeyPress = txtValKeyPress
|
||||
@ -1099,43 +1058,98 @@ object EditForm: TEditForm
|
||||
'200')
|
||||
end
|
||||
end
|
||||
object chkPreserve: TCheckBox
|
||||
Left = 30
|
||||
Top = 280
|
||||
Width = 105
|
||||
Height = 17
|
||||
Caption = 'Preserve weights'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
object GroupBox3: TGroupBox
|
||||
Left = 8
|
||||
Top = 208
|
||||
Width = 146
|
||||
Height = 65
|
||||
Caption = 'Pivot Point'
|
||||
TabOrder = 1
|
||||
object btnResetPivot: TSpeedButton
|
||||
Left = 6
|
||||
Top = 40
|
||||
Width = 17
|
||||
Height = 17
|
||||
Hint = 'Reset pivot point to (0, 0)'
|
||||
Caption = 'R'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnResetPivotClick
|
||||
end
|
||||
object btnPickPivot: TSpeedButton
|
||||
Left = 122
|
||||
Top = 40
|
||||
Width = 17
|
||||
Height = 17
|
||||
Hint = 'Pick pivot point using mouse'
|
||||
Caption = 'P'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnPickPivotClick
|
||||
end
|
||||
object btnPivotMode: TSpeedButton
|
||||
Left = 24
|
||||
Top = 40
|
||||
Width = 97
|
||||
Height = 17
|
||||
Hint = 'Toggle pivot point mode'
|
||||
Caption = 'Local Pivot'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnPivotModeClick
|
||||
end
|
||||
object editPivotY: TEdit
|
||||
Left = 74
|
||||
Top = 16
|
||||
Width = 65
|
||||
Height = 21
|
||||
Hint = 'Pivot point coordinates in chosen coordinate system'
|
||||
AutoSelect = False
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
Text = '0'
|
||||
OnExit = PivotValidate
|
||||
OnKeyPress = PivotKeyPress
|
||||
end
|
||||
object editPivotX: TEdit
|
||||
Left = 6
|
||||
Top = 16
|
||||
Width = 65
|
||||
Height = 21
|
||||
Hint = 'Pivot point coordinates in chosen coordinate system'
|
||||
AutoSelect = False
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
Text = '0'
|
||||
OnExit = PivotValidate
|
||||
OnKeyPress = PivotKeyPress
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
object tabXForm: TTabSheet
|
||||
Caption = 'Transform'
|
||||
object Label6: TLabel
|
||||
Left = 36
|
||||
Top = 100
|
||||
Left = 10
|
||||
Top = 126
|
||||
Width = 38
|
||||
Height = 13
|
||||
Hint = '"weight" is the probability of this transform to be applied'
|
||||
Caption = 'Weight:'
|
||||
end
|
||||
object Label29: TLabel
|
||||
Left = 36
|
||||
Top = 124
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'Symmetry:'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
end
|
||||
object btnResetCoefs: TSpeedButton
|
||||
Left = 8
|
||||
Top = 148
|
||||
Top = 76
|
||||
Width = 145
|
||||
Height = 22
|
||||
Hint = 'Reset all vectors to default'
|
||||
Caption = 'Reset Coefs'
|
||||
Hint = 'Reset all vectors to default position'
|
||||
Caption = 'Reset transform'
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = mnuResetClick
|
||||
end
|
||||
object btnXcoefs: TSpeedButton
|
||||
@ -1143,10 +1157,10 @@ object EditForm: TEditForm
|
||||
Top = 4
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset point A'
|
||||
Hint = 'Reset vector X'
|
||||
Caption = 'X'
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnXcoefsClick
|
||||
end
|
||||
object btnYcoefs: TSpeedButton
|
||||
@ -1154,10 +1168,10 @@ object EditForm: TEditForm
|
||||
Top = 28
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset point C'
|
||||
Hint = 'Reset vector Y'
|
||||
Caption = 'Y'
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnYcoefsClick
|
||||
end
|
||||
object btnOcoefs: TSpeedButton
|
||||
@ -1165,33 +1179,99 @@ object EditForm: TEditForm
|
||||
Top = 52
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset point B'
|
||||
Hint = 'Reset vector O'
|
||||
Caption = 'O'
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnOcoefsClick
|
||||
end
|
||||
object btnCoefsRect: TSpeedButton
|
||||
Left = 8
|
||||
Top = 76
|
||||
Top = 101
|
||||
Width = 71
|
||||
Height = 17
|
||||
Hint = 'Show vectors in rectangular (cartesian) coordinates'
|
||||
GroupIndex = 1
|
||||
Down = True
|
||||
Caption = 'Rectangular'
|
||||
Flat = True
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnCoefsModeClick
|
||||
end
|
||||
object btnCoefsPolar: TSpeedButton
|
||||
Left = 82
|
||||
Top = 76
|
||||
Top = 101
|
||||
Width = 71
|
||||
Height = 17
|
||||
Hint = 'Show vectors in polar coordinates'
|
||||
GroupIndex = 1
|
||||
Caption = 'Polar (deg)'
|
||||
Flat = True
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnCoefsModeClick
|
||||
end
|
||||
object btnXpost: TSpeedButton
|
||||
Left = 8
|
||||
Top = 188
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset vector X'
|
||||
Caption = 'X'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnXpostClick
|
||||
end
|
||||
object btnYpost: TSpeedButton
|
||||
Left = 8
|
||||
Top = 212
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset vector Y'
|
||||
Caption = 'Y'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnYpostClick
|
||||
end
|
||||
object btnOpost: TSpeedButton
|
||||
Left = 8
|
||||
Top = 236
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Reset vector O'
|
||||
Caption = 'O'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnOpostClick
|
||||
end
|
||||
object btnResetPostXForm: TSpeedButton
|
||||
Left = 8
|
||||
Top = 164
|
||||
Width = 145
|
||||
Height = 22
|
||||
Hint = 'Reset post-transform vectors to defaults'
|
||||
Caption = 'Reset post-transform'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnResetPostXFormClick
|
||||
end
|
||||
object btnSwapXforms: TSpeedButton
|
||||
Left = 8
|
||||
Top = 260
|
||||
Width = 145
|
||||
Height = 22
|
||||
Hint = 'Swap Xform with PostXform'
|
||||
Caption = '[ Xform <-> PostXform ]'
|
||||
Flat = True
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
OnClick = btnSwapXformsClick
|
||||
end
|
||||
object txtA: TEdit
|
||||
Left = 36
|
||||
Top = 4
|
||||
@ -1254,7 +1334,7 @@ object EditForm: TEditForm
|
||||
end
|
||||
object txtP: TEdit
|
||||
Left = 96
|
||||
Top = 96
|
||||
Top = 122
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
@ -1262,15 +1342,81 @@ object EditForm: TEditForm
|
||||
OnExit = txtPExit
|
||||
OnKeyPress = txtPKeyPress
|
||||
end
|
||||
object txtSymmetry: TEdit
|
||||
Left = 96
|
||||
Top = 120
|
||||
object chkPreserve: TCheckBox
|
||||
Left = 8
|
||||
Top = 145
|
||||
Width = 145
|
||||
Height = 17
|
||||
Hint =
|
||||
'Keep this checked if you don'#39't want all weights to be recalculat' +
|
||||
'ed to screw up all your flame :-)'
|
||||
Alignment = taLeftJustify
|
||||
Caption = 'Preserve weights'
|
||||
Checked = True
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
State = cbChecked
|
||||
TabOrder = 7
|
||||
end
|
||||
object txtPost00: TEdit
|
||||
Left = 36
|
||||
Top = 188
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 7
|
||||
TabOrder = 8
|
||||
Text = '0'
|
||||
OnExit = txtSymmetryExit
|
||||
OnKeyPress = txtSymmetryKeyPress
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
object txtPost01: TEdit
|
||||
Left = 96
|
||||
Top = 188
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 9
|
||||
Text = '0'
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
object txtPost10: TEdit
|
||||
Left = 36
|
||||
Top = 212
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 10
|
||||
Text = '0'
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
object txtPost11: TEdit
|
||||
Left = 96
|
||||
Top = 212
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 11
|
||||
Text = '0'
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
object txtPost20: TEdit
|
||||
Left = 36
|
||||
Top = 236
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 12
|
||||
Text = '0'
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
object txtPost21: TEdit
|
||||
Left = 96
|
||||
Top = 236
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 13
|
||||
Text = '0'
|
||||
OnExit = PostCoefValidate
|
||||
OnKeyPress = PostCoefKeypress
|
||||
end
|
||||
end
|
||||
object tabVariations: TTabSheet
|
||||
@ -1279,7 +1425,7 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 162
|
||||
Height = 298
|
||||
Height = 289
|
||||
Align = alClient
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 0
|
||||
@ -1305,7 +1451,7 @@ object EditForm: TEditForm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 162
|
||||
Height = 298
|
||||
Height = 289
|
||||
Align = alClient
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 0
|
||||
@ -1331,9 +1477,16 @@ object EditForm: TEditForm
|
||||
Left = 8
|
||||
Top = 2
|
||||
Width = 145
|
||||
Height = 71
|
||||
Height = 100
|
||||
Caption = 'Transform color'
|
||||
TabOrder = 0
|
||||
object Label29: TLabel
|
||||
Left = 10
|
||||
Top = 72
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'Symmetry:'
|
||||
end
|
||||
object scrlXFormColor: TScrollBar
|
||||
Left = 8
|
||||
Top = 46
|
||||
@ -1363,67 +1516,43 @@ object EditForm: TEditForm
|
||||
OnExit = txtXFormColorExit
|
||||
OnKeyPress = txtXFormColorKeyPress
|
||||
end
|
||||
object txtSymmetry: TComboBox
|
||||
Left = 80
|
||||
Top = 70
|
||||
Width = 57
|
||||
Height = 21
|
||||
ItemHeight = 13
|
||||
ItemIndex = 0
|
||||
TabOrder = 3
|
||||
Text = '0'
|
||||
OnExit = txtSymmetryExit
|
||||
OnKeyPress = txtSymmetryKeyPress
|
||||
Items.Strings = (
|
||||
'0'
|
||||
'1')
|
||||
end
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
Left = 8
|
||||
Top = 77
|
||||
Top = 108
|
||||
Width = 145
|
||||
Height = 212
|
||||
Height = 137
|
||||
Caption = 'Graph'
|
||||
TabOrder = 1
|
||||
object Label20: TLabel
|
||||
Left = 8
|
||||
Top = 56
|
||||
Width = 56
|
||||
Height = 13
|
||||
Caption = 'Background'
|
||||
end
|
||||
object Label21: TLabel
|
||||
Left = 8
|
||||
Top = 96
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'Reference'
|
||||
end
|
||||
object Label8: TLabel
|
||||
Left = 75
|
||||
Top = 56
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'Grid colors'
|
||||
end
|
||||
object Label10: TLabel
|
||||
Left = 75
|
||||
Top = 96
|
||||
Width = 36
|
||||
Height = 13
|
||||
Caption = 'Helpers'
|
||||
end
|
||||
object Label1: TLabel
|
||||
Left = 8
|
||||
Top = 136
|
||||
Top = 56
|
||||
Width = 83
|
||||
Height = 13
|
||||
Caption = 'Variation preview'
|
||||
end
|
||||
object pnlBackColor: TPanel
|
||||
Left = 8
|
||||
Top = 72
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
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
|
||||
TabOrder = 0
|
||||
OnClick = chkUseXFormColorClick
|
||||
end
|
||||
object chkHelpers: TCheckBox
|
||||
@ -1434,56 +1563,12 @@ object EditForm: TEditForm
|
||||
Caption = 'Helper lines'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 2
|
||||
TabOrder = 1
|
||||
OnClick = chkHelpersClick
|
||||
end
|
||||
object pnlReference: TPanel
|
||||
Left = 8
|
||||
Top = 112
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clGray
|
||||
TabOrder = 3
|
||||
OnClick = pnlReferenceClick
|
||||
end
|
||||
object pnlGridColor1: TPanel
|
||||
Left = 75
|
||||
Top = 72
|
||||
Width = 29
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clBlack
|
||||
TabOrder = 4
|
||||
OnClick = pnlGridColor1Click
|
||||
end
|
||||
object pnlGridColor2: TPanel
|
||||
Left = 108
|
||||
Top = 72
|
||||
Width = 29
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clBlack
|
||||
TabOrder = 5
|
||||
OnClick = pnlGridColor2Click
|
||||
end
|
||||
object pnlHelpersColor: TPanel
|
||||
Left = 75
|
||||
Top = 112
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clGray
|
||||
TabOrder = 6
|
||||
OnClick = pnlHelpersColorClick
|
||||
end
|
||||
object trkVarPreviewDensity: TTrackBar
|
||||
Left = 8
|
||||
Top = 184
|
||||
Top = 104
|
||||
Width = 65
|
||||
Height = 25
|
||||
Max = 5
|
||||
@ -1492,14 +1577,14 @@ object EditForm: TEditForm
|
||||
PageSize = 1
|
||||
Position = 2
|
||||
ShowHint = True
|
||||
TabOrder = 7
|
||||
TabOrder = 2
|
||||
TabStop = False
|
||||
ThumbLength = 15
|
||||
OnChange = trkVarPreviewDensityChange
|
||||
end
|
||||
object trkVarPreviewRange: TTrackBar
|
||||
Left = 8
|
||||
Top = 152
|
||||
Top = 72
|
||||
Width = 129
|
||||
Height = 25
|
||||
Min = 1
|
||||
@ -1507,14 +1592,14 @@ object EditForm: TEditForm
|
||||
PageSize = 1
|
||||
Position = 2
|
||||
ShowHint = True
|
||||
TabOrder = 8
|
||||
TabOrder = 3
|
||||
TabStop = False
|
||||
ThumbLength = 15
|
||||
OnChange = trkVarPreviewRangeChange
|
||||
end
|
||||
object trkVarPreviewDepth: TTrackBar
|
||||
Left = 72
|
||||
Top = 184
|
||||
Top = 104
|
||||
Width = 65
|
||||
Height = 25
|
||||
Max = 5
|
||||
@ -1523,7 +1608,7 @@ object EditForm: TEditForm
|
||||
PageSize = 1
|
||||
Position = 1
|
||||
ShowHint = True
|
||||
TabOrder = 9
|
||||
TabOrder = 4
|
||||
TabStop = False
|
||||
ThumbLength = 15
|
||||
OnChange = trkVarPreviewDepthChange
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ object RenderForm: TRenderForm
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
BorderStyle = bsSingle
|
||||
Caption = 'RenderForm'
|
||||
ClientHeight = 424
|
||||
ClientHeight = 416
|
||||
ClientWidth = 424
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
@ -51,7 +51,7 @@ object RenderForm: TRenderForm
|
||||
TextHeight = 13
|
||||
object ProgressBar: TProgressBar
|
||||
Left = 0
|
||||
Top = 392
|
||||
Top = 384
|
||||
Width = 424
|
||||
Height = 13
|
||||
Align = alBottom
|
||||
@ -59,7 +59,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object btnRender: TButton
|
||||
Left = 256
|
||||
Top = 364
|
||||
Top = 356
|
||||
Width = 75
|
||||
Height = 23
|
||||
Caption = 'Render'
|
||||
@ -69,7 +69,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 344
|
||||
Top = 362
|
||||
Top = 354
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Close'
|
||||
@ -140,7 +140,6 @@ object RenderForm: TRenderForm
|
||||
Width = 281
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
Text = 'txtFilename'
|
||||
OnChange = txtFilenameChange
|
||||
end
|
||||
end
|
||||
@ -368,7 +367,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object btnPause: TButton
|
||||
Left = 168
|
||||
Top = 362
|
||||
Top = 354
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Pause'
|
||||
@ -377,7 +376,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object chkSave: TCheckBox
|
||||
Left = 8
|
||||
Top = 330
|
||||
Top = 322
|
||||
Width = 113
|
||||
Height = 17
|
||||
Caption = 'Save parameters'
|
||||
@ -439,7 +438,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Top = 405
|
||||
Top = 397
|
||||
Width = 424
|
||||
Height = 19
|
||||
Panels = <
|
||||
@ -455,7 +454,7 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object chkShutdown: TCheckBox
|
||||
Left = 8
|
||||
Top = 368
|
||||
Top = 360
|
||||
Width = 137
|
||||
Height = 17
|
||||
Caption = 'Shutdown on complete'
|
||||
@ -463,14 +462,14 @@ object RenderForm: TRenderForm
|
||||
end
|
||||
object cbPostProcess: TCheckBox
|
||||
Left = 8
|
||||
Top = 348
|
||||
Top = 340
|
||||
Width = 97
|
||||
Height = 17
|
||||
Caption = 'Post render'
|
||||
TabOrder = 9
|
||||
end
|
||||
object SaveDialog: TSaveDialog
|
||||
Left = 368
|
||||
Top = 328
|
||||
Left = 376
|
||||
Top = 320
|
||||
end
|
||||
end
|
||||
|
@ -89,8 +89,8 @@ type
|
||||
procedure cmbPresetChange(Sender: TObject);
|
||||
procedure chkMaintainClick(Sender: TObject);
|
||||
private
|
||||
StartTime: TDateTime;
|
||||
Remainder: TDateTime;
|
||||
StartTime, oldElapsed, edt: TDateTime;
|
||||
oldProg: double;
|
||||
|
||||
procedure DoPostProcess;
|
||||
|
||||
@ -171,7 +171,7 @@ begin
|
||||
if not chkLimitMem.Checked and cbPostProcess.checked then
|
||||
DoPostProcess;
|
||||
|
||||
Renderer.SaveImage(RenderForm.FileName);
|
||||
Renderer.SaveImage(FileName);
|
||||
|
||||
Renderer.Free;
|
||||
Renderer := nil;
|
||||
@ -192,33 +192,50 @@ end;
|
||||
|
||||
procedure TRenderForm.OnProgress(prog: double);
|
||||
var
|
||||
Elapsed: TDateTime;
|
||||
e, r: string;
|
||||
Elapsed, Remaining, dt: TDateTime;
|
||||
begin
|
||||
Elapsed := Now - StartTime;
|
||||
dt := Elapsed - oldElapsed;
|
||||
if (prog = 1.0) then begin
|
||||
StatusBar.Panels[0].text := Format('Elapsed %2.2d:%2.2d:%2.2d.%2.2d',
|
||||
[Trunc(Elapsed * 24),
|
||||
Trunc(Elapsed * 24 * 60) mod 60,
|
||||
Trunc(Elapsed * 24 * 60 * 60) mod 60,
|
||||
Trunc(Elapsed * 24 * 60 * 60 * 100) mod 100]);
|
||||
StatusBar.Panels[1].text := 'Remaining 00:00:00.00';
|
||||
exit;
|
||||
end;
|
||||
|
||||
if (dt < 1/24/60/60/10) then exit;
|
||||
oldElapsed := Elapsed;
|
||||
|
||||
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',
|
||||
StatusBar.Panels[0].text := 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)]);
|
||||
Trunc(Elapsed * 24 * 60) mod 60,
|
||||
Trunc(Elapsed * 24 * 60 * 60) mod 60,
|
||||
Trunc(Elapsed * 24 * 60 * 60 * 100) mod 100]);
|
||||
|
||||
if prog > 0 then
|
||||
Remainder := Min(Remainder, Elapsed * (power(1 / prog, 1.2) - 1));
|
||||
edt := edt + dt;
|
||||
if (edt > 1/24/60/60/2) and (prog > 0) then
|
||||
begin
|
||||
// Remainder := Min(Remainder, Elapsed * (power(1 / prog, 1.2) - 1)); // --Z-- this power() is weird
|
||||
// Remaining := Elapsed/prog - Elapsed; // --Z-- should've been like this maybe? ;) too easy anyway...
|
||||
|
||||
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)]);
|
||||
Remaining := (1 - prog) * edt / (prog - oldProg);
|
||||
edt := 0;
|
||||
oldProg := prog;
|
||||
|
||||
StatusBar.Panels[0].text := e;
|
||||
StatusBar.Panels[1].text := r;
|
||||
StatusBar.Panels[2].text := 'Slice ' + IntToStr(Renderer.Slice + 1) + ' of ' + IntToStr(Renderer.nrSlices);
|
||||
StatusBar.Panels[1].text := Format('Remaining %2.2d:%2.2d:%2.2d.%2.2d',
|
||||
[Trunc(Remaining * 24),
|
||||
Trunc(Remaining * 24 * 60) mod 60,
|
||||
Trunc(Remaining * 24 * 60 * 60) mod 60,
|
||||
Trunc(Remaining * 24 * 60 * 60 * 100) mod 100]);
|
||||
end;
|
||||
|
||||
StatusBar.Panels[2].text := 'Slice ' + IntToStr(Renderer.Slice + 1) + ' of ' + IntToStr(Renderer.nrSlices);
|
||||
end;
|
||||
|
||||
procedure TRenderForm.FormCreate(Sender: TObject);
|
||||
@ -232,9 +249,14 @@ 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;
|
||||
// if assigned(Renderer) then Renderer.Terminate;
|
||||
// if assigned(Renderer) then Renderer.WaitFor;
|
||||
// if assigned(Renderer) then Renderer.Free;
|
||||
if assigned(Renderer) then begin
|
||||
Renderer.Terminate;
|
||||
Renderer.WaitFor;
|
||||
Renderer.Free;
|
||||
end;
|
||||
cp.free;
|
||||
end;
|
||||
|
||||
@ -312,26 +334,31 @@ begin
|
||||
btnPause.enabled := true;
|
||||
btnCancel.Caption := 'Stop';
|
||||
StartTime := Now;
|
||||
Remainder := 365;
|
||||
// Remaining := 365;
|
||||
if Assigned(Renderer) then Renderer.Terminate;
|
||||
if Assigned(Renderer) then Renderer.WaitFor;
|
||||
if not Assigned(Renderer) then
|
||||
begin
|
||||
// disable screensaver
|
||||
// disable screensaver
|
||||
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0);
|
||||
|
||||
cp.sample_density := Sample_density;
|
||||
cp.spatial_oversample := Oversample;
|
||||
cp.spatial_filter_radius := Filter_Radius;
|
||||
AdjustScale(cp, ImageWidth, ImageHeight);
|
||||
cp.AdjustScale(ImageWidth, ImageHeight);
|
||||
renderPath := ExtractFilePath(Filename);
|
||||
if chkSave.checked then
|
||||
MainForm.SaveXMLFlame(cp, ExtractFileName(FileName), renderPath + 'renders.flame');
|
||||
|
||||
oldProg:=0;
|
||||
oldElapsed:=0;
|
||||
edt:=0;
|
||||
|
||||
Renderer := TRenderThread.Create;
|
||||
if chkLimitMem.checked then
|
||||
Renderer.MaxMem := StrToInt(cbMaxMemory.text);
|
||||
Renderer.OnProgress := OnProgress;
|
||||
Renderer.TargetHandle := RenderForm.Handle;
|
||||
Renderer.TargetHandle := self.Handle;
|
||||
Renderer.Compatibility := compatibility;
|
||||
Renderer.SetCP(cp);
|
||||
Renderer.Priority := tpLower;
|
||||
@ -354,9 +381,9 @@ begin
|
||||
if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Render', False) then
|
||||
begin
|
||||
if Registry.ValueExists('Left') then
|
||||
RenderForm.Left := Registry.ReadInteger('Left');
|
||||
self.Left := Registry.ReadInteger('Left');
|
||||
if Registry.ValueExists('Top') then
|
||||
RenderForm.Top := Registry.ReadInteger('Top');
|
||||
self.Top := Registry.ReadInteger('Top');
|
||||
end;
|
||||
Registry.CloseKey;
|
||||
finally
|
||||
@ -409,15 +436,26 @@ begin
|
||||
end;
|
||||
|
||||
procedure TRenderForm.txtOversampleChange(Sender: TObject);
|
||||
var
|
||||
o: integer;
|
||||
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);
|
||||
o := StrToInt(txtOversample.Text);
|
||||
except
|
||||
txtOversample.Text := IntToStr(Oversample);
|
||||
exit;
|
||||
end;
|
||||
if o > udOversample.Max then
|
||||
begin
|
||||
o := udOversample.Max;
|
||||
txtOversample.Text := IntToStr(o);
|
||||
end
|
||||
else if o < udOversample.Min then
|
||||
begin
|
||||
o := udOversample.Min;
|
||||
txtOversample.Text := IntToStr(o);
|
||||
end;
|
||||
Oversample := o;
|
||||
ShowMemoryStatus;
|
||||
end;
|
||||
|
||||
@ -435,9 +473,11 @@ end;
|
||||
procedure TRenderForm.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
if Assigned(Renderer) then
|
||||
Renderer.Terminate
|
||||
else
|
||||
close;
|
||||
begin
|
||||
Renderer.Terminate;
|
||||
Renderer.WaitFor; // --?--
|
||||
end
|
||||
else close;
|
||||
end;
|
||||
|
||||
procedure TRenderForm.txtDensityChange(Sender: TObject);
|
||||
@ -476,8 +516,8 @@ begin
|
||||
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);
|
||||
Registry.WriteInteger('Top', Top);
|
||||
Registry.WriteInteger('Left', Left);
|
||||
end;
|
||||
finally
|
||||
Registry.Free;
|
||||
@ -504,7 +544,10 @@ begin
|
||||
CanClose := False
|
||||
else
|
||||
begin
|
||||
if Assigned(Renderer) then Renderer.Terminate;
|
||||
if Assigned(Renderer) then begin
|
||||
Renderer.Terminate;
|
||||
Renderer.WaitFor;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -677,7 +720,7 @@ procedure TRenderForm.DoPostProcess;
|
||||
begin
|
||||
frmPostProcess.SetRenderer(Renderer.GetRenderer);
|
||||
frmPostProcess.SetControlPoint(CP);
|
||||
frmPostProcess.SetImageName(RenderForm.FileName);
|
||||
frmPostProcess.SetImageName(FileName);
|
||||
frmPostProcess.Show;
|
||||
end;
|
||||
|
||||
|
@ -62,7 +62,7 @@ uses Main, Math, Global;
|
||||
|
||||
procedure TFullscreenForm.DrawFlame;
|
||||
begin
|
||||
AdjustScale(cp, Image.Width, Image.Height);
|
||||
cp.AdjustScale(Image.Width, Image.Height);
|
||||
// cp.Zoom := MainForm.Zoom;
|
||||
// cp.center[0] := MainForm.center[0];
|
||||
// cp.center[1] := MainForm.center[1];
|
||||
|
@ -80,6 +80,10 @@ var
|
||||
Variation: TVariation; // Current variation
|
||||
NumTries, TryLength: integer; // Settings for smooth palette
|
||||
SmoothPaletteFile: string;
|
||||
{ Editor }
|
||||
UseFlameBackground, UseTransformColors: boolean;
|
||||
EditorBkgColor, ReferenceTriangleColor: integer;
|
||||
GridColor1, GridColor2, HelpersColor: integer;
|
||||
{ Display }
|
||||
defSampleDensity, defPreviewDensity: Double;
|
||||
defGamma, defBrightness, defVibrancy, defFilterRadius: Double;
|
||||
|
@ -1,10 +1,12 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 387
|
||||
Top = 166
|
||||
Width = 605
|
||||
Height = 635
|
||||
Left = 400
|
||||
Top = 157
|
||||
Width = 731
|
||||
Height = 530
|
||||
Caption = 'Apophysis'
|
||||
Color = clBtnFace
|
||||
Constraints.MinHeight = 240
|
||||
Constraints.MinWidth = 320
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
@ -27,12 +29,12 @@ object MainForm: TMainForm
|
||||
Left = 160
|
||||
Top = 28
|
||||
Width = 4
|
||||
Height = 540
|
||||
Height = 435
|
||||
end
|
||||
object ToolBar: TToolBar
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 597
|
||||
Width = 723
|
||||
Height = 28
|
||||
BorderWidth = 1
|
||||
Flat = True
|
||||
@ -43,7 +45,7 @@ object MainForm: TMainForm
|
||||
object btnOpen: TToolButton
|
||||
Left = 0
|
||||
Top = 0
|
||||
Hint = 'Open (Ctrl+O)|Opens parameter files for browsing'
|
||||
Hint = 'Open (Ctrl+O)|Open a parameter file for browsing'
|
||||
Caption = 'btnOpen'
|
||||
ImageIndex = 1
|
||||
OnClick = mnuOpenClick
|
||||
@ -131,7 +133,7 @@ object MainForm: TMainForm
|
||||
object btnFullScreen: TToolButton
|
||||
Left = 194
|
||||
Top = 0
|
||||
Hint = 'Fullscreen View (F3)|Shows full-screen view of the flame'
|
||||
Hint = 'Fullscreen View (F3)|Show full-screen view of the flame'
|
||||
Caption = 'btnFullScreen'
|
||||
ImageIndex = 52
|
||||
OnClick = mnuFullScreenClick
|
||||
@ -147,7 +149,7 @@ object MainForm: TMainForm
|
||||
object btnEditor: TToolButton
|
||||
Left = 225
|
||||
Top = 0
|
||||
Hint = 'Editor (F4)|Shows the Transform Editor'
|
||||
Hint = 'Editor (F4)|Show Transform Editor'
|
||||
Caption = 'btnEditor'
|
||||
ImageIndex = 19
|
||||
OnClick = mnuEditorClick
|
||||
@ -155,7 +157,7 @@ object MainForm: TMainForm
|
||||
object btnAdjust: TToolButton
|
||||
Left = 248
|
||||
Top = 0
|
||||
Hint = 'Adjust (F5)|Shows the Adjust window'
|
||||
Hint = 'Adjust (F5)|Adjust render-settings'
|
||||
Caption = 'btnAdjust'
|
||||
ImageIndex = 18
|
||||
OnClick = mnuAdjustClick
|
||||
@ -179,7 +181,7 @@ object MainForm: TMainForm
|
||||
object btnSize: TToolButton
|
||||
Left = 317
|
||||
Top = 0
|
||||
Hint = 'Image Size (F2)|Shows the Image Size window'
|
||||
Hint = 'Image Size|Adjust image size'
|
||||
Caption = 'ma'
|
||||
ImageIndex = 51
|
||||
OnClick = mnuImageSizeClick
|
||||
@ -192,27 +194,29 @@ object MainForm: TMainForm
|
||||
ImageIndex = 14
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object btnRun: TToolButton
|
||||
object btnDefine: TToolButton
|
||||
Left = 348
|
||||
Top = 0
|
||||
Hint = 'Run Script|Runs the Default Animation script'
|
||||
Hint = 'Edit Script (F8)|Open the Script Editor'
|
||||
Caption = 'btnDefine'
|
||||
ImageIndex = 42
|
||||
OnClick = mnuEditScriptClick
|
||||
end
|
||||
object btnRun: TToolButton
|
||||
Left = 371
|
||||
Top = 0
|
||||
Hint = 'Run Script|Run Script'
|
||||
Caption = 'Run'
|
||||
ImageIndex = 43
|
||||
OnClick = btnRunClick
|
||||
end
|
||||
object btnStop: TToolButton
|
||||
Left = 371
|
||||
Top = 0
|
||||
Caption = 'btnStop'
|
||||
ImageIndex = 36
|
||||
OnClick = mnuStopClick
|
||||
end
|
||||
object btnDefine: TToolButton
|
||||
Left = 394
|
||||
Top = 0
|
||||
Hint = 'Edit Script (F8)|Opens the Script Editor'
|
||||
Caption = 'btnDefine'
|
||||
ImageIndex = 42
|
||||
OnClick = mnuEditScriptClick
|
||||
Hint = 'Stop Script|Stop Script'
|
||||
Caption = 'Stop'
|
||||
ImageIndex = 36
|
||||
OnClick = mnuStopClick
|
||||
end
|
||||
object ToolButton5: TToolButton
|
||||
Left = 417
|
||||
@ -284,7 +288,7 @@ object MainForm: TMainForm
|
||||
Left = 0
|
||||
Top = 28
|
||||
Width = 160
|
||||
Height = 540
|
||||
Height = 435
|
||||
Align = alLeft
|
||||
Columns = <
|
||||
item
|
||||
@ -302,8 +306,8 @@ object MainForm: TMainForm
|
||||
object BackPanel: TPanel
|
||||
Left = 164
|
||||
Top = 28
|
||||
Width = 433
|
||||
Height = 540
|
||||
Width = 559
|
||||
Height = 435
|
||||
Align = alClient
|
||||
BevelInner = bvLowered
|
||||
BevelOuter = bvNone
|
||||
@ -313,8 +317,8 @@ object MainForm: TMainForm
|
||||
object Image: TImage
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 431
|
||||
Height = 538
|
||||
Width = 557
|
||||
Height = 433
|
||||
Align = alClient
|
||||
AutoSize = True
|
||||
PopupMenu = DisplayPopup
|
||||
@ -327,8 +331,8 @@ object MainForm: TMainForm
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Top = 568
|
||||
Width = 597
|
||||
Top = 463
|
||||
Width = 723
|
||||
Height = 19
|
||||
Panels = <
|
||||
item
|
||||
@ -2668,7 +2672,6 @@ object MainForm: TMainForm
|
||||
object mnuImageSize: TMenuItem
|
||||
Caption = 'Image Size'
|
||||
ImageIndex = 51
|
||||
ShortCut = 119
|
||||
OnClick = mnuImageSizeClick
|
||||
end
|
||||
object mnuimage: TMenuItem
|
||||
|
@ -38,7 +38,7 @@ const
|
||||
RS_XO = 2;
|
||||
RS_VO = 3;
|
||||
|
||||
AppVersionString = 'Apophysis 2.03b';
|
||||
AppVersionString = 'Apophysis 2.03c pre-release 5';
|
||||
|
||||
type
|
||||
TMouseMoveState = (msUsual, msZoomWindow, msZoomOutWindow, msZoomWindowMove, msZoomOutWindowMove, msDrag, msDragMove, msRotate, msRotateMove);
|
||||
@ -352,7 +352,7 @@ function NumXForms(const cp: TControlPoint): integer;
|
||||
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
||||
procedure ListFlames(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);
|
||||
procedure NormalizeVariations(var cp1: TControlPoint);
|
||||
function GetWinVersion: TWin32Version;
|
||||
|
||||
@ -418,16 +418,6 @@ begin
|
||||
end
|
||||
end;
|
||||
|
||||
procedure AdjustScale(var cp1: TControlPoint; width, height: integer);
|
||||
begin
|
||||
// if width >= height then
|
||||
cp1.pixels_per_unit := cp1.pixels_per_unit / (cp1.width / width);
|
||||
// else
|
||||
// cp1.pixels_per_unit := cp1.pixels_per_unit / (cp1.height / height);
|
||||
cp1.width := width;
|
||||
cp1.height := height;
|
||||
end;
|
||||
|
||||
procedure MultMatrix(var s: TMatrix; const m: TMatrix);
|
||||
var
|
||||
a, b, c, d, e, f, g, h: double;
|
||||
@ -1803,7 +1793,7 @@ begin
|
||||
begin
|
||||
if (MainCp.width <> Image.Width) or (MainCp.height <> Image.height) then
|
||||
begin
|
||||
AdjustScale(MainCp, Image.width, Image.height);
|
||||
MainCp.AdjustScale(Image.width, Image.height);
|
||||
if EditForm.Visible then EditForm.UpdateDisplay(true); // preview only?
|
||||
end;
|
||||
if AdjustForm.Visible then AdjustForm.UpdateDisplay(true); // preview only!
|
||||
@ -3728,7 +3718,8 @@ begin
|
||||
cp1.spatial_oversample := ExportOversample;
|
||||
cp1.spatial_filter_radius := ExportFilter;
|
||||
cp1.nbatches := ExportBatches;
|
||||
if (cp1.width <> ExportWidth) or (cp1.Height <> ExportHeight) then AdjustScale(cp1, ExportWidth, ExportHeight);
|
||||
if (cp1.width <> ExportWidth) or (cp1.Height <> ExportHeight) then
|
||||
cp1.AdjustScale(ExportWidth, ExportHeight);
|
||||
FileList.Text := FlameToXML(cp1, false);
|
||||
FileList.SaveToFile(ChangeFileExt(ExportDialog.Filename, '.flame'));
|
||||
FileList.Clear;
|
||||
@ -3992,6 +3983,7 @@ begin
|
||||
try
|
||||
if TagName = 'xform' then
|
||||
begin
|
||||
Parsecp.xform[nxform].Clear;
|
||||
v := Attributes.Value('weight');
|
||||
if v <> '' then ParseCp.xform[nxform].density := StrToFloat(v);
|
||||
v := Attributes.Value('color');
|
||||
@ -4010,6 +4002,20 @@ begin
|
||||
c[2][0] := StrToFloat(Tokens[4]);
|
||||
c[2][1] := StrToFloat(Tokens[5]);
|
||||
end;
|
||||
v := Attributes.Value('post');
|
||||
if v <> '' then begin
|
||||
GetTokens(v, tokens);
|
||||
if Tokens.Count < 6 then ShowMessage('Not enough post-cooeficients...crash?');
|
||||
with Parsecp.xform[nxform] do
|
||||
begin
|
||||
p[0][0] := StrToFloat(Tokens[0]);
|
||||
p[0][1] := StrToFloat(Tokens[1]);
|
||||
p[1][0] := StrToFloat(Tokens[2]);
|
||||
p[1][1] := StrToFloat(Tokens[3]);
|
||||
p[2][0] := StrToFloat(Tokens[4]);
|
||||
p[2][1] := StrToFloat(Tokens[5]);
|
||||
end;
|
||||
end;
|
||||
|
||||
for i := 0 to NRVAR - 1 do
|
||||
begin
|
||||
@ -4450,4 +4456,5 @@ end;
|
||||
{$ENDIF}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
end.
|
||||
|
@ -138,7 +138,7 @@ end;
|
||||
procedure TMutateForm.UpdateDisplay;
|
||||
begin
|
||||
cps[0].copy(MainCp);
|
||||
AdjustScale(cps[0], Image0.Width, Image0.Height);
|
||||
cps[0].AdjustScale(Image0.Width, Image0.Height);
|
||||
cps[0].cmap := MainCp.cmap;
|
||||
cmap := MainCp.cmap;
|
||||
name := Maincp.name;
|
||||
@ -600,7 +600,7 @@ 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].AdjustScale(Image0.width, Image0.Height);
|
||||
cps[0].zoom := MainCp.zoom;
|
||||
cps[0].center[0] := MainCp.center[0];
|
||||
cps[0].center[1] := MainCp.center[1];
|
||||
|
@ -51,19 +51,19 @@ object OptionsForm: TOptionsForm
|
||||
HelpContext = 1
|
||||
Caption = 'General'
|
||||
object chkConfirmDel: TCheckBox
|
||||
Left = 144
|
||||
Top = 135
|
||||
Width = 97
|
||||
Left = 8
|
||||
Top = 175
|
||||
Width = 121
|
||||
Height = 17
|
||||
HelpContext = 1005
|
||||
Caption = 'Confirm delete'
|
||||
TabOrder = 4
|
||||
TabOrder = 2
|
||||
end
|
||||
object JPEG: TGroupBox
|
||||
Left = 8
|
||||
Top = 132
|
||||
Top = 116
|
||||
Width = 121
|
||||
Height = 53
|
||||
Height = 55
|
||||
Caption = 'JPEG Quality'
|
||||
TabOrder = 0
|
||||
object txtJPEGquality: TComboBox
|
||||
@ -83,23 +83,23 @@ object OptionsForm: TOptionsForm
|
||||
end
|
||||
end
|
||||
object chkResize: TCheckBox
|
||||
Left = 144
|
||||
Top = 153
|
||||
Width = 169
|
||||
Left = 8
|
||||
Top = 193
|
||||
Width = 121
|
||||
Height = 17
|
||||
Caption = 'Resize on load'
|
||||
TabOrder = 5
|
||||
TabOrder = 3
|
||||
end
|
||||
object GroupBox16: TGroupBox
|
||||
Left = 8
|
||||
Top = 4
|
||||
Width = 121
|
||||
Height = 69
|
||||
Height = 55
|
||||
Caption = 'Multithreading'
|
||||
TabOrder = 1
|
||||
object cbNrTheads: TComboBox
|
||||
Left = 16
|
||||
Top = 24
|
||||
Top = 20
|
||||
Width = 89
|
||||
Height = 21
|
||||
ItemHeight = 13
|
||||
@ -113,18 +113,21 @@ object OptionsForm: TOptionsForm
|
||||
'8')
|
||||
end
|
||||
end
|
||||
object chkShowTransparency: TCheckBox
|
||||
Left = 144
|
||||
Top = 171
|
||||
Width = 169
|
||||
Height = 17
|
||||
Caption = 'Show Transparency'
|
||||
TabOrder = 6
|
||||
object rgRotationMode: TRadioGroup
|
||||
Left = 8
|
||||
Top = 60
|
||||
Width = 121
|
||||
Height = 55
|
||||
Caption = 'Rotation Mode'
|
||||
Items.Strings = (
|
||||
'Rotate image'
|
||||
'Rotate frame')
|
||||
TabOrder = 4
|
||||
end
|
||||
object rgReferenceMode: TRadioGroup
|
||||
Left = 280
|
||||
Left = 288
|
||||
Top = 4
|
||||
Width = 153
|
||||
Width = 145
|
||||
Height = 69
|
||||
Caption = 'Reference Triangle'
|
||||
ItemIndex = 0
|
||||
@ -132,30 +135,116 @@ object OptionsForm: TOptionsForm
|
||||
'Normal'
|
||||
'Proportional'
|
||||
'Wandering (old-style)')
|
||||
TabOrder = 3
|
||||
TabOrder = 5
|
||||
end
|
||||
object rgTransparency: TRadioGroup
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 136
|
||||
Top = 4
|
||||
Width = 137
|
||||
Height = 69
|
||||
Caption = 'PNG Transparency'
|
||||
Items.Strings = (
|
||||
'No transparency'
|
||||
'Flam3-style'
|
||||
'Flamesong-style')
|
||||
TabOrder = 2
|
||||
end
|
||||
object rgRotationMode: TRadioGroup
|
||||
Left = 8
|
||||
Top = 76
|
||||
Width = 121
|
||||
Height = 53
|
||||
Caption = 'Rotation Mode'
|
||||
Items.Strings = (
|
||||
'Rotate image'
|
||||
'Rotate frame')
|
||||
TabOrder = 7
|
||||
Width = 145
|
||||
Height = 138
|
||||
Caption = 'Editor Graph'
|
||||
TabOrder = 6
|
||||
object Label40: TLabel
|
||||
Left = 8
|
||||
Top = 56
|
||||
Width = 56
|
||||
Height = 13
|
||||
Caption = 'Background'
|
||||
end
|
||||
object Label41: TLabel
|
||||
Left = 8
|
||||
Top = 96
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'Reference'
|
||||
end
|
||||
object Label42: TLabel
|
||||
Left = 75
|
||||
Top = 56
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'Grid colors'
|
||||
end
|
||||
object Label43: TLabel
|
||||
Left = 75
|
||||
Top = 96
|
||||
Width = 36
|
||||
Height = 13
|
||||
Caption = 'Helpers'
|
||||
end
|
||||
object pnlBackColor: TPanel
|
||||
Left = 8
|
||||
Top = 72
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
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
|
||||
end
|
||||
object chkHelpers: TCheckBox
|
||||
Left = 8
|
||||
Top = 36
|
||||
Width = 129
|
||||
Height = 17
|
||||
Caption = 'Helper lines'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 2
|
||||
end
|
||||
object pnlReference: TPanel
|
||||
Left = 8
|
||||
Top = 112
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clGray
|
||||
TabOrder = 3
|
||||
OnClick = pnlReferenceClick
|
||||
end
|
||||
object pnlGridColor1: TPanel
|
||||
Left = 75
|
||||
Top = 72
|
||||
Width = 29
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clBlack
|
||||
TabOrder = 4
|
||||
OnClick = pnlGridColor1Click
|
||||
end
|
||||
object pnlGridColor2: TPanel
|
||||
Left = 108
|
||||
Top = 72
|
||||
Width = 29
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clBlack
|
||||
TabOrder = 5
|
||||
OnClick = pnlGridColor2Click
|
||||
end
|
||||
object pnlHelpersColor: TPanel
|
||||
Left = 75
|
||||
Top = 112
|
||||
Width = 62
|
||||
Height = 17
|
||||
Cursor = crHandPoint
|
||||
BevelOuter = bvLowered
|
||||
Color = clGray
|
||||
TabOrder = 6
|
||||
OnClick = pnlHelpersColorClick
|
||||
end
|
||||
end
|
||||
end
|
||||
object DisplayPage: TTabSheet
|
||||
@ -311,6 +400,27 @@ object OptionsForm: TOptionsForm
|
||||
TabOrder = 5
|
||||
end
|
||||
end
|
||||
object chkShowTransparency: TCheckBox
|
||||
Left = 192
|
||||
Top = 179
|
||||
Width = 129
|
||||
Height = 17
|
||||
Caption = 'Show Transparency'
|
||||
TabOrder = 2
|
||||
end
|
||||
object rgTransparency: TRadioGroup
|
||||
Left = 184
|
||||
Top = 104
|
||||
Width = 193
|
||||
Height = 69
|
||||
Caption = 'PNG Transparency'
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'No transparency'
|
||||
'Flam3-style'
|
||||
'Flamesong-style')
|
||||
TabOrder = 3
|
||||
end
|
||||
end
|
||||
object RandomPage: TTabSheet
|
||||
Caption = 'Random'
|
||||
@ -424,7 +534,7 @@ object OptionsForm: TOptionsForm
|
||||
Height = 21
|
||||
HelpContext = 1004
|
||||
TabOrder = 1
|
||||
Text = '100'
|
||||
Text = '10'
|
||||
end
|
||||
object udBatchSize: TUpDown
|
||||
Left = 169
|
||||
@ -434,7 +544,7 @@ object OptionsForm: TOptionsForm
|
||||
Associate = txtBatchSize
|
||||
Min = 1
|
||||
Max = 300
|
||||
Position = 100
|
||||
Position = 10
|
||||
TabOrder = 2
|
||||
Thousands = False
|
||||
end
|
||||
@ -609,8 +719,8 @@ object OptionsForm: TOptionsForm
|
||||
object clbVarEnabled: TCheckListBox
|
||||
Left = 12
|
||||
Top = 16
|
||||
Width = 309
|
||||
Height = 201
|
||||
Width = 317
|
||||
Height = 206
|
||||
Columns = 2
|
||||
ItemHeight = 13
|
||||
TabOrder = 0
|
||||
@ -1196,7 +1306,7 @@ object OptionsForm: TOptionsForm
|
||||
end
|
||||
end
|
||||
end
|
||||
object Paths: TTabSheet
|
||||
object PathsPage: TTabSheet
|
||||
Caption = 'Paths'
|
||||
ImageIndex = 7
|
||||
object GroupBox10: TGroupBox
|
||||
|
@ -146,7 +146,7 @@ type
|
||||
Label17: TLabel;
|
||||
txtServer: TEdit;
|
||||
chkResize: TCheckBox;
|
||||
Paths: TTabSheet;
|
||||
PathsPage: TTabSheet;
|
||||
GroupBox10: TGroupBox;
|
||||
btnDefGradient: TSpeedButton;
|
||||
Label25: TLabel;
|
||||
@ -166,15 +166,12 @@ type
|
||||
clbVarEnabled: TCheckListBox;
|
||||
GroupBox16: TGroupBox;
|
||||
cbNrTheads: TComboBox;
|
||||
chkShowTransparency: TCheckBox;
|
||||
rgReferenceMode: TRadioGroup;
|
||||
GroupBox13: TGroupBox;
|
||||
Label8: TLabel;
|
||||
Label10: TLabel;
|
||||
txtNumtries: TEdit;
|
||||
txtTryLength: TEdit;
|
||||
txtJPEGquality: TComboBox;
|
||||
rgTransparency: TRadioGroup;
|
||||
Label24: TLabel;
|
||||
txtSymNVars: TEdit;
|
||||
udSymNVars: TUpDown;
|
||||
@ -183,6 +180,21 @@ type
|
||||
udBatchSize: TUpDown;
|
||||
Label38: TLabel;
|
||||
Label39: TLabel;
|
||||
chkShowTransparency: TCheckBox;
|
||||
rgTransparency: TRadioGroup;
|
||||
rgReferenceMode: TRadioGroup;
|
||||
GroupBox1: TGroupBox;
|
||||
Label40: TLabel;
|
||||
Label41: TLabel;
|
||||
Label42: TLabel;
|
||||
Label43: TLabel;
|
||||
pnlBackColor: TPanel;
|
||||
chkUseXFormColor: TCheckBox;
|
||||
chkHelpers: TCheckBox;
|
||||
pnlReference: TPanel;
|
||||
pnlGridColor1: TPanel;
|
||||
pnlGridColor2: TPanel;
|
||||
pnlHelpersColor: TPanel;
|
||||
procedure btnCancelClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
@ -207,6 +219,11 @@ type
|
||||
procedure btnRendererClick(Sender: TObject);
|
||||
procedure SpeedButton2Click(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure pnlBackColorClick(Sender: TObject);
|
||||
procedure pnlReferenceClick(Sender: TObject);
|
||||
procedure pnlGridColor1Click(Sender: TObject);
|
||||
procedure pnlGridColor2Click(Sender: TObject);
|
||||
procedure pnlHelpersColorClick(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
@ -221,7 +238,7 @@ implementation
|
||||
{$R *.DFM}
|
||||
|
||||
uses
|
||||
Main, Global, Editor, ControlPoint, XFormMan;
|
||||
Main, Global, Editor, ControlPoint, XFormMan, Adjust;
|
||||
|
||||
procedure TOptionsForm.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
@ -278,6 +295,11 @@ begin
|
||||
txtMediumQuality.Text := FloatToStr(prevMediumQuality);
|
||||
txtHighQuality.Text := FloatToStr(prevHighQuality);
|
||||
|
||||
pnlBackColor.Color := TColor(EditorBkgColor);
|
||||
pnlGridColor1.Color := GridColor1;
|
||||
pnlGridColor2.Color := GridColor2;
|
||||
pnlReference.color := TColor(ReferenceTriangleColor);
|
||||
|
||||
{ Random tab }
|
||||
udMinXforms.Position := randMinTransforms;
|
||||
udMaxXforms.Position := randMaxTransforms;
|
||||
@ -620,5 +642,61 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOptionsForm.pnlBackColorClick(Sender: TObject);
|
||||
begin
|
||||
AdjustForm.ColorDialog.Color := pnlBackColor.Color;
|
||||
if AdjustForm.ColorDialog.Execute then
|
||||
begin
|
||||
pnlBackColor.Color := AdjustForm.ColorDialog.Color;
|
||||
EditorBkgColor := Integer(pnlBackColor.color);
|
||||
// GrphPnl.Color := BackgroundColor;
|
||||
// TriangleView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOptionsForm.pnlReferenceClick(Sender: TObject);
|
||||
begin
|
||||
AdjustForm.ColorDialog.Color := pnlReference.Color;
|
||||
if AdjustForm.ColorDialog.Execute then
|
||||
begin
|
||||
pnlReference.Color := AdjustForm.ColorDialog.Color;
|
||||
ReferenceTriangleColor := Integer(pnlReference.color);
|
||||
// TriangleView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOptionsForm.pnlGridColor1Click(Sender: TObject);
|
||||
begin
|
||||
AdjustForm.ColorDialog.Color := pnlGridColor1.Color;
|
||||
if AdjustForm.ColorDialog.Execute then
|
||||
begin
|
||||
pnlGridColor1.Color := AdjustForm.ColorDialog.Color;
|
||||
GridColor1 := Integer(pnlGridColor1.color);
|
||||
// TriangleView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOptionsForm.pnlGridColor2Click(Sender: TObject);
|
||||
begin
|
||||
AdjustForm.ColorDialog.Color := pnlGridColor2.Color;
|
||||
if AdjustForm.ColorDialog.Execute then
|
||||
begin
|
||||
pnlGridColor2.Color := AdjustForm.ColorDialog.Color;
|
||||
GridColor2 := Integer(pnlGridColor2.color);
|
||||
// TriangleView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TOptionsForm.pnlHelpersColorClick(Sender: TObject);
|
||||
begin
|
||||
AdjustForm.ColorDialog.Color := pnlHelpersColor.Color;
|
||||
if AdjustForm.ColorDialog.Execute then
|
||||
begin
|
||||
pnlHelpersColor.Color := AdjustForm.ColorDialog.Color;
|
||||
HelpersColor := Integer(pnlHelpersColor.color);
|
||||
// TriangleView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -3,7 +3,7 @@ object ScriptEditor: TScriptEditor
|
||||
Top = 383
|
||||
Width = 539
|
||||
Height = 390
|
||||
Caption = 'Default Animation'
|
||||
Caption = 'Script Editor'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
@ -20,7 +20,7 @@ object ScriptEditor: TScriptEditor
|
||||
TextHeight = 13
|
||||
object Splitter1: TSplitter
|
||||
Left = 0
|
||||
Top = 244
|
||||
Top = 250
|
||||
Width = 531
|
||||
Height = 4
|
||||
Cursor = crVSplit
|
||||
@ -30,7 +30,7 @@ object ScriptEditor: TScriptEditor
|
||||
Left = 508
|
||||
Top = 0
|
||||
Width = 23
|
||||
Height = 244
|
||||
Height = 250
|
||||
Align = alRight
|
||||
AutoSize = True
|
||||
Caption = 'ToolBar'
|
||||
@ -96,7 +96,7 @@ object ScriptEditor: TScriptEditor
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Top = 337
|
||||
Top = 343
|
||||
Width = 531
|
||||
Height = 19
|
||||
Anchors = [akLeft, akRight]
|
||||
@ -106,7 +106,7 @@ object ScriptEditor: TScriptEditor
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 508
|
||||
Height = 244
|
||||
Height = 250
|
||||
Align = alClient
|
||||
BevelInner = bvLowered
|
||||
BevelOuter = bvLowered
|
||||
@ -116,7 +116,7 @@ object ScriptEditor: TScriptEditor
|
||||
Left = 2
|
||||
Top = 2
|
||||
Width = 504
|
||||
Height = 240
|
||||
Height = 246
|
||||
Cursor = crIBeam
|
||||
PopupMenu = PopupMenu
|
||||
ActiveLineSettings.ShowActiveLine = False
|
||||
@ -190,14 +190,14 @@ object ScriptEditor: TScriptEditor
|
||||
UrlStyle.BkColor = clWhite
|
||||
UrlStyle.Style = [fsUnderline]
|
||||
UseStyler = True
|
||||
Version = '1.6.0.8'
|
||||
Version = '1.6.0.17'
|
||||
WordWrap = wwNone
|
||||
OnChange = EditorChange
|
||||
end
|
||||
end
|
||||
object Console: TMemo
|
||||
Left = 0
|
||||
Top = 248
|
||||
Top = 254
|
||||
Width = 531
|
||||
Height = 89
|
||||
Align = alBottom
|
||||
@ -389,6 +389,13 @@ object ScriptEditor: TScriptEditor
|
||||
EventSupport = False
|
||||
OnCompileError = ScripterCompileError
|
||||
ShortBooleanEval = False
|
||||
LibOptions.SearchPath.Strings = (
|
||||
'$(CURDIR)'
|
||||
'$(APPDIR)')
|
||||
LibOptions.SourceFileExt = '.psc'
|
||||
LibOptions.CompiledFileExt = '.pcu'
|
||||
LibOptions.UseScriptFiles = False
|
||||
CallExecHookEvent = False
|
||||
Left = 360
|
||||
Top = 32
|
||||
end
|
||||
|
@ -1475,7 +1475,7 @@ begin
|
||||
if nxform < NXFORMS then
|
||||
for i := nxform to NXFORMS - 1 do
|
||||
cp1.xform[i].density := 0;
|
||||
cp1.NormalizeWeights;
|
||||
// --?-- cp1.NormalizeWeights;
|
||||
// Check for symmetry parameter
|
||||
if cp1.symmetry <> 0 then
|
||||
begin
|
||||
@ -1517,7 +1517,7 @@ begin
|
||||
for i := 0 to NXFORMS - 1 do
|
||||
if ScriptEditor.cp.xform[i].density = 0 then break;
|
||||
NumTransforms := i;
|
||||
ScriptEditor.cp.NormalizeWeights;
|
||||
// --?-- ScriptEditor.cp.NormalizeWeights;
|
||||
// FlameName := FileList[index];
|
||||
finally
|
||||
IFSStrings.Free;
|
||||
@ -1589,7 +1589,7 @@ begin
|
||||
for i := 0 to NXFORMS - 1 do
|
||||
if ScriptEditor.cp.xform[i].density = 0 then break;
|
||||
NumTransforms := i;
|
||||
ScriptEditor.cp.NormalizeWeights;
|
||||
// --?-- ScriptEditor.cp.NormalizeWeights;
|
||||
if SavedPal then ScriptEditor.cp.cmap := Palette;
|
||||
ScriptEditor.cp.name := FileList[index];
|
||||
finally
|
||||
@ -1749,9 +1749,9 @@ begin
|
||||
if NumTransforms > 1 then
|
||||
begin
|
||||
AMachine.Paused := True;
|
||||
ScriptEditor.cp.NormalizeWeights;
|
||||
// --?-- ScriptEditor.cp.NormalizeWeights;
|
||||
PreviewForm.cp.Copy(ScriptEditor.cp);
|
||||
AdjustScale(PreviewForm.cp, PreviewForm.Image.Width, PreviewForm.Image.Height);
|
||||
PreviewForm.cp.AdjustScale(PreviewForm.Image.Width, PreviewForm.Image.Height);
|
||||
PreviewForm.Show;
|
||||
PreviewForm.DrawFlame;
|
||||
AMachine.Paused := False;
|
||||
@ -1764,7 +1764,7 @@ procedure TOperationLibrary.RenderProc(AMachine: TatVirtualMachine);
|
||||
begin
|
||||
if NumTransforms > 1 then
|
||||
begin
|
||||
ScriptEditor.cp.NormalizeWeights;
|
||||
// --?-- ScriptEditor.cp.NormalizeWeights;
|
||||
ScriptRenderForm.cp.Copy(ScriptEditor.cp);
|
||||
ScriptRenderForm.Caption := 'Rendering ' + ScriptEditor.Renderer.Filename; ;
|
||||
ScriptRenderForm.Show;
|
||||
@ -2913,7 +2913,7 @@ begin
|
||||
else
|
||||
if (LastError = '') and UpdateIt then
|
||||
begin
|
||||
cp.NormalizeWeights;
|
||||
// --?-- cp.NormalizeWeights;
|
||||
MainForm.UpdateUndo;
|
||||
MainCp.Copy(cp);
|
||||
UpdateFlame;
|
||||
@ -2945,11 +2945,11 @@ procedure TScriptEditor.UpdateFlame;
|
||||
begin
|
||||
MainForm.StopThread;
|
||||
MainForm.UpdateUndo;
|
||||
cp.NormalizeWeights;
|
||||
// --?-- cp.NormalizeWeights;
|
||||
MainCp.Copy(cp);
|
||||
// MainCp.name := FlameName;
|
||||
Transforms := MainCp.TrianglesFromCP(MainTriangles);
|
||||
AdjustScale(MainCp, MainForm.Image.Width, MainForm.Image.Height);
|
||||
MainCp.AdjustScale(MainForm.Image.Width, MainForm.Image.Height);
|
||||
if ResetLocation then MainCp.CalcBoundBox else
|
||||
begin;
|
||||
MainCp.Zoom := cp.zoom;
|
||||
|
@ -21,12 +21,7 @@ interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||
ComCtrls, StdCtrls, Render, cmap, ControlPoint;
|
||||
|
||||
const
|
||||
WM_THREAD_COMPLETE = WM_APP + 5437;
|
||||
WM_THREAD_TERMINATE = WM_APP + 5438;
|
||||
|
||||
ComCtrls, StdCtrls, RenderThread, cmap, ControlPoint;
|
||||
|
||||
type
|
||||
TScriptRenderForm = class(TForm)
|
||||
@ -36,11 +31,16 @@ type
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure btnCancelClick(Sender: TObject);
|
||||
private
|
||||
PixelsPerUnit: double;
|
||||
// PixelsPerUnit: double;
|
||||
StartTime: TDateTime;
|
||||
Remainder: TDateTime;
|
||||
|
||||
procedure HandleThreadCompletion(var Message: TMessage);
|
||||
message WM_THREAD_COMPLETE;
|
||||
procedure HandleThreadTermination(var Message: TMessage);
|
||||
message WM_THREAD_TERMINATE;
|
||||
public
|
||||
Renderer: TRenderer;
|
||||
Renderer: TRenderThread;
|
||||
ColorMap: TColorMap;
|
||||
cp: TControlPoint;
|
||||
Filename: string;
|
||||
@ -64,34 +64,44 @@ uses Global, Math, FormRender, ScriptForm;
|
||||
procedure TScriptRenderForm.SetRenderBounds;
|
||||
begin
|
||||
cp.copy(ScriptEditor.cp);
|
||||
cp.Width := ScriptEditor.Renderer.Width;
|
||||
cp.Height := ScriptEditor.Renderer.Height;
|
||||
cp.CalcBoundBox;
|
||||
//cp.Width := ScriptEditor.Renderer.Width;
|
||||
//cp.Height := ScriptEditor.Renderer.Height;
|
||||
cp.AdjustScale(ScriptEditor.Renderer.Width, 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;
|
||||
//PixelsPerUnit := cp.Pixels_per_unit;
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.Render;
|
||||
begin
|
||||
assert(not Assigned(Renderer));
|
||||
Renderer := TRenderThread.Create;
|
||||
|
||||
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;
|
||||
//cp.Width := ScriptEditor.Renderer.Width;
|
||||
//cp.Height := ScriptEditor.Renderer.Height;
|
||||
//cp.pixels_per_unit := PixelsPerUnit;
|
||||
cp.AdjustScale(ScriptEditor.Renderer.Width, ScriptEditor.Renderer.Height);
|
||||
|
||||
Renderer.OnProgress := OnProgress;
|
||||
Renderer.Compatibility := Compatibility;
|
||||
Renderer.Compatibility := Compatibility;
|
||||
Renderer.SetCP(cp);
|
||||
if (ScriptEditor.Renderer.MaxMemory > 0) then
|
||||
Renderer.RenderMaxMem(ScriptEditor.Renderer.MaxMemory)
|
||||
else Renderer.Render;
|
||||
Renderer.SaveImage(FileName);
|
||||
ScriptEditor.Scripter.Paused := False;
|
||||
if (ScriptEditor.Renderer.MaxMemory > 0) then Renderer.MaxMem := ScriptEditor.Renderer.MaxMemory;
|
||||
Renderer.TargetHandle := Handle;
|
||||
renderPath := ExtractFilePath(ScriptEditor.Renderer.Filename);
|
||||
Renderer.Priority := tpLower;
|
||||
Renderer.NrThreads := NrTreads;
|
||||
Renderer.Resume;
|
||||
|
||||
// Renderer.SaveImage(FileName);
|
||||
// ScriptEditor.Scripter.Paused := False;
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.OnProgress(prog: double);
|
||||
@ -101,20 +111,19 @@ 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));
|
||||
// if prog > 0 then Remainder := Elapsed * (1/prog - 1);
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
cp.free;
|
||||
Renderer.free;
|
||||
assert(not Assigned(Renderer)); //if Assigned(Renderer) then Renderer.free;
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Renderer := TRenderer.Create;
|
||||
//Renderer := TRenderThread.Create;
|
||||
cp := TControlPoint.Create;
|
||||
end;
|
||||
|
||||
@ -122,9 +131,34 @@ procedure TScriptRenderForm.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
ScriptEditor.Scripter.Halt;
|
||||
Cancelled := True;
|
||||
Renderer.Stop;
|
||||
// Renderer.Stop;
|
||||
if Assigned(Renderer) then begin
|
||||
Renderer.Terminate;
|
||||
Renderer.WaitFor;
|
||||
Renderer.Free;
|
||||
Renderer := nil;
|
||||
end;
|
||||
LastError := 'Render cancelled';
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.HandleThreadCompletion(var Message: TMessage);
|
||||
begin
|
||||
Renderer.SaveImage(FileName);
|
||||
|
||||
Renderer.Free;
|
||||
Renderer := nil;
|
||||
|
||||
ScriptEditor.Scripter.Paused := False;
|
||||
end;
|
||||
|
||||
procedure TScriptRenderForm.HandleThreadTermination(var Message: TMessage);
|
||||
begin
|
||||
if Assigned(Renderer) then
|
||||
begin
|
||||
Renderer.Free;
|
||||
Renderer := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@ uses
|
||||
BaseVariation;
|
||||
|
||||
const
|
||||
NRLOCVAR = 23;
|
||||
NRLOCVAR = 27;
|
||||
|
||||
function NrVar: integer;
|
||||
function Varnames(const index: integer): String;
|
||||
@ -57,7 +57,11 @@ const
|
||||
'power',
|
||||
'cosine',
|
||||
'rings',
|
||||
'fan'
|
||||
'fan',
|
||||
'eyefish',
|
||||
'bubble',
|
||||
'cylinder',
|
||||
'smoke'
|
||||
);
|
||||
begin
|
||||
if Index < NRLOCVAR then
|
||||
|
@ -1,8 +1,8 @@
|
||||
object frmPostProcess: TfrmPostProcess
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 434
|
||||
Height = 320
|
||||
Left = 38
|
||||
Top = 43
|
||||
Width = 640
|
||||
Height = 534
|
||||
Caption = 'Post Render'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
@ -19,14 +19,14 @@ object frmPostProcess: TfrmPostProcess
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 426
|
||||
Height = 149
|
||||
Width = 632
|
||||
Height = 71
|
||||
Align = alTop
|
||||
BevelOuter = bvLowered
|
||||
TabOrder = 0
|
||||
DesignSize = (
|
||||
426
|
||||
149)
|
||||
632
|
||||
71)
|
||||
object Label1: TLabel
|
||||
Left = 12
|
||||
Top = 12
|
||||
@ -42,36 +42,36 @@ object frmPostProcess: TfrmPostProcess
|
||||
Caption = 'Filter'
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 12
|
||||
Top = 52
|
||||
Left = 172
|
||||
Top = 12
|
||||
Width = 35
|
||||
Height = 13
|
||||
Caption = 'Gamma'
|
||||
end
|
||||
object Label4: TLabel
|
||||
Left = 12
|
||||
Top = 72
|
||||
Left = 332
|
||||
Top = 32
|
||||
Width = 45
|
||||
Height = 13
|
||||
Caption = 'Vibrancy:'
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 12
|
||||
Top = 92
|
||||
Left = 332
|
||||
Top = 12
|
||||
Width = 42
|
||||
Height = 13
|
||||
Caption = 'Contrast'
|
||||
end
|
||||
object Label6: TLabel
|
||||
Left = 12
|
||||
Top = 112
|
||||
Left = 172
|
||||
Top = 32
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'Brightness'
|
||||
end
|
||||
object btnSave: TButton
|
||||
Left = 340
|
||||
Top = 36
|
||||
Left = 552
|
||||
Top = 30
|
||||
Width = 75
|
||||
Height = 25
|
||||
Anchors = [akTop, akRight]
|
||||
@ -82,7 +82,7 @@ object frmPostProcess: TfrmPostProcess
|
||||
object pnlBackColor: TPanel
|
||||
Left = 104
|
||||
Top = 8
|
||||
Width = 97
|
||||
Width = 57
|
||||
Height = 21
|
||||
BevelOuter = bvLowered
|
||||
TabOrder = 0
|
||||
@ -90,15 +90,15 @@ object frmPostProcess: TfrmPostProcess
|
||||
end
|
||||
object ProgressBar1: TProgressBar
|
||||
Left = 1
|
||||
Top = 136
|
||||
Width = 424
|
||||
Top = 58
|
||||
Width = 630
|
||||
Height = 12
|
||||
Align = alBottom
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnApply: TButton
|
||||
Left = 340
|
||||
Top = 8
|
||||
Left = 552
|
||||
Top = 4
|
||||
Width = 75
|
||||
Height = 25
|
||||
Anchors = [akTop, akRight]
|
||||
@ -110,44 +110,44 @@ object frmPostProcess: TfrmPostProcess
|
||||
object txtFilterRadius: TEdit
|
||||
Left = 104
|
||||
Top = 28
|
||||
Width = 97
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 2
|
||||
end
|
||||
object txtGamma: TEdit
|
||||
Left = 104
|
||||
Top = 48
|
||||
Width = 97
|
||||
Left = 264
|
||||
Top = 8
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 3
|
||||
end
|
||||
object txtVib: TEdit
|
||||
Left = 104
|
||||
Top = 68
|
||||
Width = 97
|
||||
Left = 424
|
||||
Top = 28
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 4
|
||||
end
|
||||
object txtContrast: TEdit
|
||||
Left = 104
|
||||
Top = 88
|
||||
Width = 97
|
||||
Left = 424
|
||||
Top = 8
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 5
|
||||
end
|
||||
object txtBrightness: TEdit
|
||||
Left = 104
|
||||
Top = 108
|
||||
Width = 97
|
||||
Left = 264
|
||||
Top = 28
|
||||
Width = 57
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
end
|
||||
end
|
||||
object ScrollBox1: TScrollBox
|
||||
Left = 0
|
||||
Top = 149
|
||||
Width = 426
|
||||
Height = 137
|
||||
Top = 71
|
||||
Width = 632
|
||||
Height = 435
|
||||
Align = alClient
|
||||
TabOrder = 1
|
||||
object Image: TImage
|
||||
@ -159,7 +159,7 @@ object frmPostProcess: TfrmPostProcess
|
||||
end
|
||||
end
|
||||
object ColorDialog: TColorDialog
|
||||
Left = 284
|
||||
Top = 4
|
||||
Left = 508
|
||||
Top = 20
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user