Interfacing function
eng


CLKINV_f

File content


function [x,y,typ]=CLKINV_f(job,arg1,arg2)
// Copyright INRIA
x=[];y=[];typ=[]
select job
case 'plot' then
  orig=arg1.graphics.orig;
  sz=arg1.graphics.sz;
  gr_i=arg1.graphics.gr_i;
  
  prt=arg1.model.ipar
  pat=xget('pattern');xset('pattern',default_color(-1))
  thick=xget('thickness');xset('thickness',2)
  x=orig(1)+sz(1)*[1/2;1;  1;0;0  ]
  y=orig(2)+sz(2)*[0;  1/3;1;1;1/3]
  xo=orig(1);yo=orig(2)+sz(2)/3
 
  if type(gr_i)==15 then 
    coli=gr_i(2);
    xfpolys(x,y,coli);
    pcoli=xget('pattern');xset('pattern',coli)
    xstringb(xo,yo,string(prt),sz(1),sz(2)/1.5)
    xset('pattern',pcoli)
    xstringb(xo,yo,string(prt),sz(1),sz(2)/1.5)
  else
    xstringb(xo,yo,string(prt),sz(1),sz(2)/1.5)
    xpoly(x,y,'lines',1)
  end
  
  xset('thickness',thick)
  xset('pattern',pat)
  //identification
  ident = arg1.graphics.id
  if ident <> [] & ident <> '' then
    font=xget('font')
    xset('font', options.ID(1)(1), options.ID(1)(2))
    rectangle = xstringl(orig(1), orig(2)+3/2*sz(2), ident)
    w = rectangle(3)
    h = rectangle(4)
    xstringb(orig(1) + sz(1)/2 -w/2, orig(2)+sz(2)+h/2 , ident , w, h)
    xset('font', font(1), font(2))
  end
case 'getinputs' then
  x=[];y=[];typ=[]
case 'getoutputs' then
  orig=arg1.graphics.orig
  sz=arg1.graphics.sz
  x=orig(1)+sz(1)/2
  y=orig(2)
  typ=-ones(x)
case 'getorigin' then
  [x,y]=standard_origin(arg1)
case 'set' then
  x=arg1;
  graphics=arg1.graphics
  model=arg1.model

  exprs=graphics.exprs
  exprs=exprs(1) // compatibility
  while %t do
    [ok,prt,exprs]=getvalue('Set Event Input block parameters',..
	'Port number',list('vec',1),exprs)
    prt=int(prt)
    if ~ok then break,end
    if prt<=0 then
      message('Port number must be a positive integer')
    else
      model.ipar=prt
      model.evtout=1
      model.firing=-1//compatibility
      graphics.exprs=exprs
      x.graphics=graphics
      x.model=model
      break
    end
  end
case 'define' then
  prt=1
  model=scicos_model()
  model.sim='input'
  model.evtout=1
  model.ipar=prt
  model.blocktype='d'
  model.firing=-1
  model.dep_ut=[%f %f]
  
  exprs=string(prt)
  gr_i=['xo=orig(1);yo=orig(2)+sz(2)/3';
        'xstringb(xo,yo,string(prt),sz(1),sz(2)/1.5)']
  x=standard_define([1 1.5],model,exprs,gr_i)
end
endfunction