added variations & variables as properties

added properties for coefs & post-coefs
This commit is contained in:
zueuk 2006-11-27 06:14:14 +00:00
parent 10ebbe564e
commit 0f4b4afc6a

View File

@ -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 }