added variations & variables as properties
added properties for coefs & post-coefs
This commit is contained in:
parent
10ebbe564e
commit
0f4b4afc6a
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
||||||
Apophysis Copyright (C) 2005-2006 Ronald Hordijk, Piotr Borys, Peter Sdobnov
|
Apophysis Copyright (C) 2005-2006 Ronald Hordijk, Piotr Borys, Peter Sdobnov
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -22,9 +22,9 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||||
ExtCtrls, StdCtrls, ControlPoint, Buttons, ComCtrls, ToolWin,
|
ExtCtrls, StdCtrls, ControlPoint, Buttons, ComCtrls, ToolWin, Menus,
|
||||||
Menus, atScript, atPascal, AdvMemo, Advmps, XFormMan, XForm, GradientHlpr,
|
// Variants,
|
||||||
cmap;
|
atScript, atPascal, AdvMemo, Advmps, XFormMan, XForm, GradientHlpr, cmap;
|
||||||
|
|
||||||
const NCPS = 10;
|
const NCPS = 10;
|
||||||
type
|
type
|
||||||
@ -176,6 +176,14 @@ type
|
|||||||
procedure SetTransformVarProc(AMachine: TatVirtualMachine);
|
procedure SetTransformVarProc(AMachine: TatVirtualMachine);
|
||||||
procedure GetTransformSymProc(AMachine: TatVirtualMachine);
|
procedure GetTransformSymProc(AMachine: TatVirtualMachine);
|
||||||
procedure SetTransformSymProc(AMachine: TatVirtualMachine);
|
procedure SetTransformSymProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure GetTransformVariationProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure SetTransformVariationProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure GetTransformVariableProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure SetTransformVariableProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure GetTransformCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure SetTransformCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure GetTransformPostCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure SetTransformPostCoefsProc(AMachine: TatVirtualMachine);
|
||||||
{ Render interface }
|
{ Render interface }
|
||||||
procedure GetRenderFilenameProc(AMachine: TatVirtualMachine);
|
procedure GetRenderFilenameProc(AMachine: TatVirtualMachine);
|
||||||
procedure SetRenderFilenameProc(AMachine: TatVirtualMachine);
|
procedure SetRenderFilenameProc(AMachine: TatVirtualMachine);
|
||||||
@ -375,10 +383,15 @@ type
|
|||||||
procedure SaveGradientProc(AMachine: TatVirtualMachine);
|
procedure SaveGradientProc(AMachine: TatVirtualMachine);
|
||||||
procedure GetVariation(AMachine: TatVirtualMachine);
|
procedure GetVariation(AMachine: TatVirtualMachine);
|
||||||
procedure SetVariation(AMachine: TatVirtualMachine);
|
procedure SetVariation(AMachine: TatVirtualMachine);
|
||||||
|
{
|
||||||
procedure GetVariable(AMachine: TatVirtualMachine);
|
procedure GetVariable(AMachine: TatVirtualMachine);
|
||||||
procedure SetVariable(AMachine: TatVirtualMachine);
|
procedure SetVariable(AMachine: TatVirtualMachine);
|
||||||
procedure GetVariableStr(AMachine: TatVirtualMachine);
|
procedure GetVariableStr(AMachine: TatVirtualMachine);
|
||||||
procedure SetVariableStr(AMachine: TatVirtualMachine);
|
procedure SetVariableStr(AMachine: TatVirtualMachine);
|
||||||
|
}
|
||||||
|
procedure GetProgramVersionProc(AMachine: TatVirtualMachine);
|
||||||
|
procedure VariationSupportedProc(AMachine: TatVirtualMachine);
|
||||||
|
|
||||||
procedure CalculateScale(AMachine: TatVirtualMachine);
|
procedure CalculateScale(AMachine: TatVirtualMachine);
|
||||||
procedure NormalizeVars(AMachine: TatVirtualMachine);
|
procedure NormalizeVars(AMachine: TatVirtualMachine);
|
||||||
procedure CalculateBounds(AMachine: TatVirtualMachine);
|
procedure CalculateBounds(AMachine: TatVirtualMachine);
|
||||||
@ -1169,10 +1182,15 @@ begin
|
|||||||
Scripter.DefineMethod('SaveGradient', 2, tkNone, nil, SaveGradientProc);
|
Scripter.DefineMethod('SaveGradient', 2, tkNone, nil, SaveGradientProc);
|
||||||
Scripter.DefineMethod('Variation', 0, tkInteger, nil, GetVariation);
|
Scripter.DefineMethod('Variation', 0, tkInteger, nil, GetVariation);
|
||||||
Scripter.DefineMethod('SetVariation', 1, tkInteger, nil, SetVariation);
|
Scripter.DefineMethod('SetVariation', 1, tkInteger, nil, SetVariation);
|
||||||
|
{
|
||||||
Scripter.DefineMethod('GetVariable', 1, tkFloat, nil, GetVariable);
|
Scripter.DefineMethod('GetVariable', 1, tkFloat, nil, GetVariable);
|
||||||
Scripter.DefineMethod('SetVariable', 2, tkNone, nil, SetVariable);
|
Scripter.DefineMethod('SetVariable', 2, tkNone, nil, SetVariable);
|
||||||
Scripter.DefineMethod('GetVariableStr', 1, tkFloat, nil, GetVariableStr);
|
Scripter.DefineMethod('GetVariableStr', 1, tkFloat, nil, GetVariableStr);
|
||||||
Scripter.DefineMethod('SetVariableStr', 2, tkNone, nil, SetVariableStr);
|
Scripter.DefineMethod('SetVariableStr', 2, tkNone, nil, SetVariableStr);
|
||||||
|
}
|
||||||
|
Scripter.DefineMethod('ProgramVersion', 0, tkString, nil, GetProgramVersionProc);
|
||||||
|
Scripter.DefineMethod('VariationSupported', 1, tkInteger, nil, VariationSupportedProc);
|
||||||
|
|
||||||
Scripter.DefineMethod('CalculateScale', 0, tkNone, nil, CalculateScale);
|
Scripter.DefineMethod('CalculateScale', 0, tkNone, nil, CalculateScale);
|
||||||
Scripter.DefineMethod('CalculateBounds', 0, tkNone, nil, CalculateBounds);
|
Scripter.DefineMethod('CalculateBounds', 0, tkNone, nil, CalculateBounds);
|
||||||
Scripter.DefineMethod('NormalizeVars', 0, tkNone, nil, NormalizeVars);
|
Scripter.DefineMethod('NormalizeVars', 0, tkNone, nil, NormalizeVars);
|
||||||
@ -1725,16 +1743,23 @@ begin
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
(*
|
||||||
procedure TOperationLibrary.SetVariable(AMachine: TatVirtualMachine);
|
procedure TOperationLibrary.SetVariable(AMachine: TatVirtualMachine);
|
||||||
var
|
var
|
||||||
i: integer;
|
|
||||||
vb: double;
|
vb: double;
|
||||||
|
v: Variant;
|
||||||
begin
|
begin
|
||||||
with AMachine do
|
with AMachine do
|
||||||
begin
|
begin
|
||||||
i := GetInputArgAsInteger(0);
|
v := GetInputArg(0);
|
||||||
vb := GetInputArgAsFloat(1);
|
vb := GetInputArgAsFloat(1);
|
||||||
ScriptEditor.cp.xform[ActiveTransform].SetVariable(GetVariableNameAt(i), vb);
|
if varType(v) and varTypeMask = varByte then begin
|
||||||
|
ScriptEditor.cp.xform[ActiveTransform].SetVariable(GetVariableNameAt(Integer(v)), vb);
|
||||||
|
end
|
||||||
|
else if varType(v) and varTypeMask = varString then begin
|
||||||
|
ScriptEditor.cp.xform[ActiveTransform].SetVariable(String(v), vb);
|
||||||
|
end;
|
||||||
|
// else error...?
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1776,6 +1801,25 @@ begin
|
|||||||
ScriptEditor.cp.xform[ActiveTransform].SetVariable(variable, vb);
|
ScriptEditor.cp.xform[ActiveTransform].SetVariable(variable, vb);
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
*)
|
||||||
|
|
||||||
|
procedure TOperationLibrary.GetProgramVersionProc(AMachine: TatVirtualMachine);
|
||||||
|
begin
|
||||||
|
AMachine.ReturnOutputArg(AppVersionString);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TOperationLibrary.VariationSupportedProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
str: string;
|
||||||
|
begin
|
||||||
|
with AMachine do begin
|
||||||
|
str := GetInputArgAsString(0);
|
||||||
|
i := 0;
|
||||||
|
while (i < NRVAR) and (varnames(i) <> str) do Inc(i);
|
||||||
|
ReturnOutputArg(i < NRVAR);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TOperationLibrary.FileCountProc(AMachine: TatVirtualMachine);
|
procedure TOperationLibrary.FileCountProc(AMachine: TatVirtualMachine);
|
||||||
begin
|
begin
|
||||||
@ -2598,6 +2642,127 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// -- vars as props --
|
||||||
|
|
||||||
|
procedure TScriptEditor.GetTransformVariationProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
v: double;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
i := 0;
|
||||||
|
while (i < NRVAR) and (varnames(i) <> CurrentPropertyName) do Inc(i);
|
||||||
|
// if (i >= NRVAR) then error
|
||||||
|
ReturnOutPutArg(cp.xform[ActiveTransform].vars[i]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.SetTransformVariationProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
v: double;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
i := 0;
|
||||||
|
while (i < NRVAR) and (varnames(i) <> CurrentPropertyName) do Inc(i);
|
||||||
|
if (i < NRVAR) then
|
||||||
|
cp.xform[ActiveTransform].vars[i] := GetInputArgAsFloat(0);
|
||||||
|
//else error
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.GetTransformVariableProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
cp.xform[ActiveTransform].GetVariable(CurrentPropertyName, v);
|
||||||
|
ReturnOutPutArg(v);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.SetTransformVariableProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
v := GetInputArgAsFloat(0);
|
||||||
|
ScriptEditor.cp.xform[ActiveTransform].SetVariable(CurrentPropertyName, v);
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
// -- coefs & post-coefs --
|
||||||
|
|
||||||
|
procedure TScriptEditor.GetTransformCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
with AMachine do begin
|
||||||
|
i := GetArrayIndex(0);
|
||||||
|
j := GetArrayIndex(1);
|
||||||
|
v := cp.xform[ActiveTransform].c[i, j];
|
||||||
|
if (i=0)and(j=0) or (i=1)and(j=1) or (i=2)and(j=0) then
|
||||||
|
ReturnOutPutArg(v)
|
||||||
|
else
|
||||||
|
ReturnOutPutArg(-v);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.SetTransformCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
v := GetInputArgAsFloat(0);
|
||||||
|
i := GetArrayIndex(0);
|
||||||
|
j := GetArrayIndex(1);
|
||||||
|
if (i=0)and(j=0) or (i=1)and(j=1) or (i=2)and(j=0) then
|
||||||
|
cp.xform[ActiveTransform].c[i, j] := v
|
||||||
|
else if (i=0)and(j=1) or (i=1)and(j=0) or (i=2)and(j=1) then
|
||||||
|
cp.xform[ActiveTransform].c[i, j] := -v;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.GetTransformPostCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
with AMachine do begin
|
||||||
|
i := GetArrayIndex(0);
|
||||||
|
j := GetArrayIndex(1);
|
||||||
|
v := cp.xform[ActiveTransform].p[i, j];
|
||||||
|
if (i=0)and(j=0) or (i=1)and(j=1) or (i=2)and(j=0) then
|
||||||
|
ReturnOutPutArg(v)
|
||||||
|
else
|
||||||
|
ReturnOutPutArg(-v);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TScriptEditor.SetTransformPostCoefsProc(AMachine: TatVirtualMachine);
|
||||||
|
var
|
||||||
|
v: double;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
with AMachine do
|
||||||
|
begin
|
||||||
|
v := GetInputArgAsFloat(0);
|
||||||
|
i := GetArrayIndex(0);
|
||||||
|
j := GetArrayIndex(1);
|
||||||
|
if (i=0)and(j=0) or (i=1)and(j=1) or (i=2)and(j=0) then
|
||||||
|
cp.xform[ActiveTransform].p[i, j] := v
|
||||||
|
else if (i=0)and(j=1) or (i=1)and(j=0) or (i=2)and(j=1) then
|
||||||
|
cp.xform[ActiveTransform].p[i, j] := -v;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ *************************** Render interface ****************************** }
|
{ *************************** Render interface ****************************** }
|
||||||
|
|
||||||
|
|
||||||
@ -2658,6 +2823,8 @@ end;
|
|||||||
{ ********************************* Scripter ********************************* }
|
{ ********************************* Scripter ********************************* }
|
||||||
|
|
||||||
procedure TScriptEditor.PrepareScripter;
|
procedure TScriptEditor.PrepareScripter;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
Scripter.AddLibrary(TatSysUtilsLibrary);
|
Scripter.AddLibrary(TatSysUtilsLibrary);
|
||||||
with Scripter.defineClass(TScriptRender) do
|
with Scripter.defineClass(TScriptRender) do
|
||||||
@ -2697,6 +2864,8 @@ begin
|
|||||||
{ Transform interface }
|
{ Transform interface }
|
||||||
with Scripter.defineClass(TTransform) do
|
with Scripter.defineClass(TTransform) do
|
||||||
begin
|
begin
|
||||||
|
DefineProp('coefs', tkFloat, GetTransformCoefsProc, SetTransformCoefsProc, nil, false, 2);
|
||||||
|
DefineProp('post', tkFloat, GetTransformPostCoefsProc, SetTransformPostCoefsProc, nil, false, 2);
|
||||||
DefineProp('a', tkFloat, GetTransformAProc, SetTransformAProc);
|
DefineProp('a', tkFloat, GetTransformAProc, SetTransformAProc);
|
||||||
DefineProp('b', tkFloat, GetTransformBProc, SetTransformBProc);
|
DefineProp('b', tkFloat, GetTransformBProc, SetTransformBProc);
|
||||||
DefineProp('c', tkFloat, GetTransformCProc, SetTransformCProc);
|
DefineProp('c', tkFloat, GetTransformCProc, SetTransformCProc);
|
||||||
@ -2705,8 +2874,13 @@ begin
|
|||||||
DefineProp('f', tkFloat, GetTransformFProc, SetTransformFProc);
|
DefineProp('f', tkFloat, GetTransformFProc, SetTransformFProc);
|
||||||
DefineProp('Color', tkFloat, GetTransformColorProc, SetTransformColorProc);
|
DefineProp('Color', tkFloat, GetTransformColorProc, SetTransformColorProc);
|
||||||
DefineProp('Weight', tkFloat, GetTransformWeightProc, SetTransformWeightProc);
|
DefineProp('Weight', tkFloat, GetTransformWeightProc, SetTransformWeightProc);
|
||||||
DefineProp('Variation', tkFloat, GetTransformVarProc, SetTransformVarProc, nil, false, 1);
|
|
||||||
DefineProp('Symmetry', tkFloat, GetTransformSymProc, SetTransformSymProc);
|
DefineProp('Symmetry', tkFloat, GetTransformSymProc, SetTransformSymProc);
|
||||||
|
for i:= 0 to NRVAR - 1 do
|
||||||
|
DefineProp(Varnames(i), tkFloat, GetTransformVariationProc, SetTransformVariationProc);
|
||||||
|
for i:= 0 to GetNrVariableNames - 1 do
|
||||||
|
DefineProp(GetVariableNameAt(i), tkFloat, GetTransformVariableProc, SetTransformVariableProc);
|
||||||
|
|
||||||
|
DefineProp('Variation', tkFloat, GetTransformVarProc, SetTransformVarProc, nil, false, 1); // obsolete
|
||||||
end;
|
end;
|
||||||
Scripter.AddObject('Transform', Transform);
|
Scripter.AddObject('Transform', Transform);
|
||||||
{ Options interface }
|
{ Options interface }
|
||||||
|
Loading…
Reference in New Issue
Block a user