Fonction d'interfaçage
fr
PROD_f
function [x,y,typ]=PROD_f(job,arg1,arg2)
// Copyright INRIA
x=[];y=[];typ=[];
p=1 //pixel sizes ratio
select job
//**-----------------------------------------------------------------------
case 'plot' then
wd = xget('wdim')
graphics = arg1.graphics;
orig = graphics.orig,
sz = graphics.sz
orient = graphics.flip
thick = xget('thickness');xset('thickness',2)
//** patt=xget('dashes');xset('dashes',default_color(1))
rx = sz(1)*p/2
ry = sz(2)/2
xarc(orig(1),orig(2)+sz(2),sz(1)*p,sz(2),0,23040) // (23040=360*64)
gh_temp = gce();
gh_temp.foreground = default_color(1);
t=%pi/4
xx=(orig(1)+rx)+..
[sin(5*t) , sin(-t);
sin(t) , sin(3*t)]*diag([rx;rx]/1.7)
yy=(orig(2)+ry)+..
[cos(5*t) , cos(-t);
cos(t) , cos(3*t)]*diag([ry;ry]/1.7)
xsegs(xx,yy,0)
gh_temp = gce();
gh_temp.segs_color = [default_color(1), default_color(1)] ;
xset('thickness',1)
if orient then //standard orientation (port)
out= [0 -1/14
1/7 0
0 1/14]*3
xfpoly(sz(1)*out(:,1)+ones(3,1)*(orig(1)+sz(1)*p),sz(2)*out(:,2)+ones(3,1)*(orig(2)+sz(2)/2),1);
gh_temp = gce();
gh_temp.foreground = default_color(1);
gh_temp.background = default_color(1);
else //tilded orientation
out= [0 -1/14
-1/7 0
0 1/14]*3
xfpoly(sz(1)*out(:,1)+ones(3,1)*orig(1),sz(2)*out(:,2)+ones(3,1)*(orig(2)+sz(2)/2),1);
gh_temp = gce();
gh_temp.foreground = default_color(1);
gh_temp.background = default_color(1);
end
//** xset('dashes',patt)
//**-------------------------------------------------------------------------------------------
case 'getinputs' then
graphics=arg1.graphics
orig=graphics.orig
sz=graphics.sz
orient=graphics.flip
wd=xget('wdim');
if orient then
t=[%pi -%pi/2]
else
t=[%pi %pi/2]
end
r=sz(2)/2
rx=r*p
x=(rx*sin(t)+(orig(1)+rx)*ones(t))
y=r*cos(t)+(orig(2)+r)*ones(t)
typ=ones(x)
case 'getoutputs' then
graphics=arg1.graphics;
orig=graphics.orig,
sz=graphics.sz
orient=graphics.flip
wd=xget('wdim');
if orient then
t=%pi/2
dx=sz(1)/7
else
t=-%pi/2
dx=-sz(1)/7
end
r=sz(2)/2
rx=r*p
x=(rx*sin(t)+(orig(1)+rx)*ones(t))+dx
y=r*cos(t)+(orig(2)+r)*ones(t)
typ=ones(x)
case 'getorigin' then
[x,y]=standard_origin(arg1)
case 'set' then
x=arg1;
case 'define' then
model=scicos_model()
model.sim=list('prod',2)
model.in=[-1;-1]
model.out=-1
model.blocktype='c'
model.dep_ut=[%t %f]
x=standard_define([1 1]/1.2,model,[],[])
end
endfunction