function EExecP0( X,Y: TObj; var Out_Prm: TObj; var Att: TAtt; Sg1,Sg2: integer; OW: pointer): boolean;
var A,B: complex;
Kind: TKindPoint;
begin
Result:=FALSE;
Out_Prm:=NIL;
if ((X is TOChisl) or (X is TOPoint)) and ((Y is TOChisl) or (Y is TOPoint)) then
begin
if X is TOChisl then with TOChisl(X).C do Compl(A,Re*Sg1,Im*Sg1);
if Y is TOChisl then with TOChisl(Y).C do Compl(B,Re*Sg2,Im*Sg2);
if X is TOPoint then with TOPoint(X).X do Compl(A,Re*Sg1,Im*Sg1);
if Y is TOPoint then with TOPoint(Y).Y do Compl(B,Re*Sg2,Im*Sg2);
Kind:=tp_fixed;
if (X is TOChisl) and (Y is TOChisl) then if (TOChisl(X).Kind=tc_Constant) or (TOChisl(Y).Kind=tc_Constant) then Kind:=tp_halfFree;
if (X is TOChisl) and (Y is TOChisl) then if (TOChisl(X).Kind=tc_Constant) and (TOChisl(Y).Kind=tc_Constant) then Kind:=tp_free;
if (X is TOPoint) and (Y is TOChisl) then if (TOChisl(Y).Kind=tc_Constant) then Kind:=tp_halfFree;
if (X is TOChisl) and (Y is TOPoint) then if (TOChisl(X).Kind=tc_Constant) then Kind:=tp_halfFree;
Out_Prm:=TOPoint.Create(A,B,1,0,Kind,Att,OW);
end
else
begin
if Att.Chk=1 then Out_Prm:=TOEmpty.Create([X,Y],OW,NIL);
end;
Result:=TRUE;
end; { EExecP0 } |