Interfacing function
eng


AFFICH_m

File content


function [x,y,typ]=AFFICH_m(job,arg1,arg2)
// Copyright INRIA
//** 22 Aug 2006: looking for a nasty "font" bugs 
x=[];y=[];typ=[]

select job

case 'plot' then
  ipar = arg1.model.ipar
  standard_draw(arg1)

case 'getinputs' then
  [x,y,typ]=standard_inputs(arg1)

case 'getoutputs' then
  x=[];y=[];typ=[];

case 'getorigin' then
  [x,y]=standard_origin(arg1)

case 'set' then
  x = arg1;
  graphics = arg1.graphics; exprs = graphics.exprs
  model = arg1.model;
  while %t do
    [ok,in,font,fontsize,colr,nt,nd,herit,exprs]=getvalue(..
         'Set  parameters',..
        ['Input Size',
         'Font number';
         'Font size';
         'Color';
         'Total number of digits';
         'Number of rational part digits';
         'Block inherits (1) or not (0)'],..
         list('mat',[1 2],'vec',1,'vec',1,'vec',1,'vec',1,'vec',1,'vec',1),exprs)

    if ~ok then break,end //user cancel modification

    mess = [] ; //** no message

    if font<=0 then
      mess=[mess;'Font number must be positive';' ']
      ok=%f
    end

    if fontsize<=0 then
      mess=[mess;'Font size must be positive';' ']
      ok=%f
    end

    if nt<=3 then
      mess=[mess;'Total number of digits must be greater than 3';' ']
      ok=%f
    end

    if nd<0 then
      mess=[mess;'Number of rational part digits must be '
                 'greater or equal 0';' ']
      ok=%f
    end

    if ~ok then
      message(['Some specified values are inconsistent:';
               ' ';mess]);
    end

    if ~or(herit==[0 1]) then
      mess=[mess;'Accept inherited values are 0 and 1';' ']
      ok=%f
    end

    if ~ok then
      message(['Some specified values are inconsistent:';
               ' ';mess])
    end

    //** Positive case ->
    if ok then
      //[model,graphics,ok]=check_io(model,graphics,1,[],ones(1-herit,1),[])
      [model,graphics,ok]=set_io(model,graphics,...
                                 list(in,1),list(),...
                                 ones(1-herit,1),[])
    end

    if ok then
      model.ipar=[font;fontsize;colr;xget('window');nt;nd;in(1,1)];
      model.dstate = [-1;0;0;1;1;zeros(in(1,1)*in(1,2),1)]
      model.evtin=ones(1-herit,1)
      graphics.exprs=exprs;
//       sz_ref=[60 40];
//       if model.in2<>1 then
//         graphics.sz(1)=sz_ref(1)*(model.in2-1);
//       else
//         graphics.sz(1)=sz_ref(1)
//       end
//       if model.in<>1 then
//         graphics.sz(2)=sz_ref(2)*model.in*0.75;
//       else
//         graphics.sz(2)=sz_ref(2)
//       end

      x.graphics=graphics;x.model=model
      break
    end

  end


case 'define' then
  font = 1
  fontsize = 1
  colr = 1
  nt = 5
  nd = 1
  in = [1 1]

  model = scicos_model();
  model.sim = 'affich2' ;
  model.in = in(1,1);
  model.in2 = in(1,2);
  model.evtin  = 1 ;
  model.dstate = [-1;0;0;1;1;zeros(in(1,1)*in(1,2),1)]
  model.ipar   = [font;fontsize;colr;1000;nt;nd;in(1,1)]
  model.blocktype = 'c' ;
  model.firing = []     ;
  model.dep_ut = [%t %f]
  model.label = '' ;

  exprs = [ sci2exp([model.in model.in2]);
            string(font);
            string(fontsize);
            string(colr);
            string(nt);
            string(nd);
            string(0) ]

  gr_i=['fnt=xget(''font'')'
        'xset(''font'',ipar(1),ipar(2))';
        'str='' ''+part(''0'',ones(1,ipar(5)-ipar(6)-2))+''.''+part(''0'',ones(1,ipar(6)))'
        'str(1:model.in*model.in2)=str'
        'str=matrix(str,model.in,model.in2)'
        'rr=xstringl(orig(1),orig(2),str)'
        'xstring(orig(1)+max(0,(sz(1)-rr(3))/2),orig(2)+max(0,(sz(2)-rr(4))/2),str)'
        'xset(''font'',fnt(1),fnt(2))']

  x = standard_define([3 2],model,exprs,gr_i)

end

endfunction