[BACK]Return to process.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / parts

Diff for /OpenXM/src/asir-doc/parts/process.texi between version 1.2 and 1.8

version 1.2, 1999/12/21 02:47:31 version 1.8, 2002/07/10 09:33:52
Line 1 
Line 1 
 @comment $OpenXM$  @comment $OpenXM: OpenXM/src/asir-doc/parts/process.texi,v 1.7 2001/03/16 05:18:04 noro Exp $
 \BJP  \BJP
 @node $BJ,;67W;;(B,,, Top  @node $BJ,;67W;;(B,,, Top
 @chapter $BJ,;67W;;(B  @chapter $BJ,;67W;;(B
Line 34 
Line 34 
 $B$?$a$N5,Ls$G$"$k(B. @b{OpenXM} $B$K$*$$$F$O(B  $B$?$a$N5,Ls$G$"$k(B. @b{OpenXM} $B$K$*$$$F$O(B
 \E  \E
 \BEG  \BEG
 In @b{Asir} distributed computations are done under @b{OpenXM}  On @b{Asir} distributed computations are done under @b{OpenXM}
 (Open message eXchange protocol for Mathematics), which  (Open message eXchange protocol for Mathematics), which
 is a protocol for exchanging mainly mathematical objects  is a protocol for exchanging mainly mathematical objects
 between processes.  between processes.
Line 115  are available.
Line 115  are available.
 @item @code{ox_push_cmo()}  @item @code{ox_push_cmo()}
   
 \JP $B%G!<%?$r(B server $B$N%9%?%C%/$K@Q$`(B  \JP $B%G!<%?$r(B server $B$N%9%?%C%/$K@Q$`(B
 \EG It requests a server to push an object to the stack of the server.  \EG It requests a server to push an object to the stack of a server.
   
 @item @code{ox_pop_cmo()}  @item @code{ox_pop_cmo()}
 \JP $B%G!<%?$r(B server $B$N%9%?%C%/$+$i<h$j=P$9(B.  \JP $B%G!<%?$r(B server $B$N%9%?%C%/$+$i<h$j=P$9(B.
 \EG It request a server to pop an object from the stack of the server.  \EG It request a server to pop an object from the stack of a server.
   
 @item @code{ox_cmo_rpc()}  @item @code{ox_cmo_rpc()}
   
Line 191  Mathcap is also defined as a @b{CMO} and the elements 
Line 191  Mathcap is also defined as a @b{CMO} and the elements 
 or strings.  or strings.
 The format of mathcap is as follows.  The format of mathcap is as follows.
   
 [[version number, server name],@b{SM}taglist,[@b{OX}taglist,@b{CMO}taglist, @b{CMO}taglist,...]]  [[version number, server name],@b{SM}taglist,
 [[version number, server name],@b{SM}taglist,[[@b{OX}tag,@b{CMO}taglist],  [[@b{OX}tag,@b{CMO}taglist],[@b{OX}tag,@b{CMO}taglist],...]]
 [@b{OX}tag,@b{CMO}taglist],...]]  
   
 [@b{OX}tag,@b{CMO}taglist] indicates that available object tags for  [@b{OX}tag,@b{CMO}taglist] indicates that available object tags for
 a category of data specified by @b{OX}tag.  a category of data specified by @b{OX}tag.
Line 501  input @code{quit}.
Line 500  input @code{quit}.
 * ox_push_cmd ox_sync::  * ox_push_cmd ox_sync::
 * ox_get::  * ox_get::
 * ox_pops::  * ox_pops::
 * ox_reset register_handler::  * ox_reset ox_intr register_handler::
 * ox_select::  * ox_select::
 * ox_flush::  * ox_flush::
 * ox_get_serverinfo::  * ox_get_serverinfo::
 * generate_port try_bind_listen try_connect try_accept register_server::  * generate_port try_bind_listen try_connect try_accept register_server::
 * ifplot conplot plot plotover::  * ifplot conplot plot plotover::
   * open_canvas clear_canvas draw_obj draw_string::
 @end menu  @end menu
   
 \JP @node ox_launch ox_launch_nox ox_shutdown,,, $BJ,;67W;;$K4X$9$k4X?t(B  \JP @node ox_launch ox_launch_nox ox_shutdown,,, $BJ,;67W;;$K4X$9$k4X?t(B
Line 588  UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, 
Line 588  UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, 
   
 @enumerate  @enumerate
 @item  @item
 $B%[%9%H(B @code{B} $B$N(B @code{csh} $B$N%5!<%A%Q%9$K5/F0$5$l$k%W%m%0%i%`(B  
 $B$N$"$k%G%#%l%/%H%j$r$$$l$k(B. $B%W%m%0%i%`$O(B @code{rsh} $B$G5/F0$5$l$k(B. $B$7$?(B  
 $B$,$C$F(B, $B%[%9%H(B @code{B} $B$N%5!<%A%Q%9$K(B $B$=$N%W%m%0%i%`$,F~$C$F$$$J$$>l(B  
 $B9g$K$O5/F0$G$-$J$$(B. $B$3$N>l9g@dBP%Q%9$rM?$($k$+(B, @samp{~/.cshrc} $B$N%5!<(B  
 $B%A%Q%9$K$=$N%W%m%0%i%`$N$"$k%G%#%l%/%H%j$rDI2C$9$kI,MW$,$"$k(B. $B$=$N:](B,  
 $BAj<j@h%[%9%H$K$*$1$k%G%#%l%/%H%j$G$"$k$3$H$rK:$l$J$$$h$&$K$9$k$3$H(B.  
   
 @item  
 $B%[%9%H(B @code{B} $B$N(B @samp{~/.rhosts} $B$K(B, $B%[%9%H(B @code{A} $B$N%[%9%H(B  $B%[%9%H(B @code{B} $B$N(B @samp{~/.rhosts} $B$K(B, $B%[%9%H(B @code{A} $B$N%[%9%H(B
 $BL>$rEPO?$9$k(B.  $BL>$rEPO?$9$k(B.
   
Line 617  UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, 
Line 609  UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, 
 @code{DISPLAY} $B$NCM$rMQ$$$k(B.  @code{DISPLAY} $B$NCM$rMQ$$$k(B.
   
 @item  @item
   $B4D6-JQ?t(B @code{ASIR_RSH} $B$,%;%C%H$5$l$F$$$k>l9g(B, $B%5!<%P$NN)$A>e$2%W%m%0%i%`(B
   $B$H$7$F(B@samp{rsh} $B$NBe$o$j$K$3$NJQ?t$NCM$,MQ$$$i$l$k(B. $BNc$($P(B,
   
   @example
   % setenv ASIR_RSH "ssh -f -X -A "
   @end example
   
   $B$K$h$j(B, $B%5!<%P$NN)$A>e$2$K(B @samp{ssh} $B$,MQ$$$i$l(B,
   X11 $B$NDL?.$,(B forwarding $B$5$l$k(B. $B>\$7$/$O(B @samp{ssh} $B$N%^%K%e%"%k$r(B
   $B;2>H(B.
   
   @item
 @code{ox_shutdown()} $B$O<1JL;R(B @var{id} $B$KBP1~$9$k1s3V%W%m%;%9(B  @code{ox_shutdown()} $B$O<1JL;R(B @var{id} $B$KBP1~$9$k1s3V%W%m%;%9(B
 $B$r=*N;$5$;$k(B.  $B$r=*N;$5$;$k(B.
   
Line 641  ox_xterm*saveLines:1000
Line 645  ox_xterm*saveLines:1000
   
 $B$K$h$j(B, icon $B$G5/F0(B, scrollbar $B$D$-(B, scrollbar $B$G;2>H$G$-$k9T?t(B  $B$K$h$j(B, icon $B$G5/F0(B, scrollbar $B$D$-(B, scrollbar $B$G;2>H$G$-$k9T?t(B
 $B$,:GBg(B 1000 $B9T(B, $B$H$$$&;XDj$,$G$-$k(B.  $B$,:GBg(B 1000 $B9T(B, $B$H$$$&;XDj$,$G$-$k(B.
   
 \E  \E
   
 \BEG  \BEG
Line 653  is invoked on @var{host}. Then @samp{ox_launch} invoke
Line 658  is invoked on @var{host}. Then @samp{ox_launch} invoke
 If @var{host} is equal to 0, all the commands are invoked  If @var{host} is equal to 0, all the commands are invoked
 on the same machine as the @b{Asir} is running.  on the same machine as the @b{Asir} is running.
 If no arguments are specified, @var{host}, @var{dir} and @var{command}  If no arguments are specified, @var{host}, @var{dir} and @var{command}
 are regarded as 0, the value of @code{get_rootdir()} and @samp{ox_dir} in  are regarded as 0, the value of @code{get_rootdir()} and @samp{ox_asir} in
 the same directory respectively.  the same directory respectively.
   
 @item  @item
Line 692  Here, Let @code{A} be the host on which @b{Asir} is ru
Line 697  Here, Let @code{A} be the host on which @b{Asir} is ru
   
 @enumerate  @enumerate
 @item  @item
 Set the command search path of @code{csh} on the remote host @code{B}  
 so that your program, say @code{P}, can run on @code{B}.  
 This is done by putting the directory of @code{P} to the command search  
 path of @code{csh} on @code{B}.  
 The program @code{P} is invoked by @code{rsh} or @code{remsh}.  
 Thus, invocation of  
 the program @code{P} shall fail unless it is found within the search  
 path on the host @code{B}.  
 For such a case, you can run the program @code{P} by either giving  
 the absolute path or adding the directory of the program @code{P} to  
 the search path description in your @samp{~/.cshrc}.  
 Note that the the `directory' means the directory on the remote host  
 @code{B}.  
   
 @item  
 Register the hostname of the host @code{A} to the @samp{~/.rhosts} of  Register the hostname of the host @code{A} to the @samp{~/.rhosts} of
 the host @code{B}.  the host @code{B}.
 That is, you should be allowed to access the host @code{B} from @code{A}  That is, you should be allowed to access the host @code{B} from @code{A}
Line 718  let @code{Xserver} authorize the relevant hosts.
Line 708  let @code{Xserver} authorize the relevant hosts.
 Adding the hosts can be done by command @code{xhost}.  Adding the hosts can be done by command @code{xhost}.
   
 @item  @item
   If an environment variable @code{ASIR_RSH} is set,
   the content of this variable is used as a promgram to invoke
   remote servers instead of @var{rsh}. For example,
   
   @example
   % setenv ASIR_RSH "ssh -f -X -A "
   @end example
   
   implies that remote servers are invoked by @samp{ssh} and that
   X11 forwarding is enabled. See the manual of @samp{ssh} for the detail.
   
   @item
 Some @var{command}'s consume much stack space.  You are recommended  Some @var{command}'s consume much stack space.  You are recommended
 to set the stack size to about 16MB large in @samp{.cshrc} for safe.  to set the stack size to about 16MB large in @samp{.cshrc} for safe.
 To specify the size, put @code{limit stacksize 16m} for an example.  To specify the size, put @code{limit stacksize 16m} for an example.
Line 1203  The result is pushed to the stack.
Line 1205  The result is pushed to the stack.
 @fref{ox_pop_cmo ox_pop_local}  @fref{ox_pop_cmo ox_pop_local}
 @end table  @end table
   
 \JP @node ox_reset register_handler,,, $BJ,;67W;;$K4X$9$k4X?t(B  \JP @node ox_reset ox_intr register_handler,,, $BJ,;67W;;$K4X$9$k4X?t(B
 \EG @node ox_reset register_handler,,, Functions for distributed computation  \EG @node ox_reset ox_intr register_handler,,, Functions for distributed computation
 @subsection @code{ox_reset},@code{register_handler}  @subsection @code{ox_reset},@code{ox_intr},@code{register_handler}
 @findex ox_reset  @findex ox_reset
 @findex register_handler  @findex register_handler
   
Line 1213  The result is pushed to the stack.
Line 1215  The result is pushed to the stack.
 @item ox_reset(@var{number})  @item ox_reset(@var{number})
 \JP :: $B%W%m%;%9$N%j%;%C%H(B  \JP :: $B%W%m%;%9$N%j%;%C%H(B
 \EG :: Resets an OpenXM server  \EG :: Resets an OpenXM server
   @item ox_intr(@var{number})
   \JP :: $B%W%m%;%9$N$K(B @code{SIGINT} $BAwIU(B
   \EG :: Sends @code{SIGINT} to an OpenXM server
 @item register_handler(@var{func})  @item register_handler(@var{func})
 \JP :: $B%W%m%;%9$N%j%;%C%H$N$?$a$N4X?tEPO?(B  \JP :: $B%W%m%;%9$N%j%;%C%H$N$?$a$N4X?tEPO?(B
 \EG :: Registers a function callable on a keyboard interrupt.  \EG :: Registers a function callable on a keyboard interrupt.
Line 1247  The result is pushed to the stack.
Line 1252  The result is pushed to the stack.
 $B7W;;ESCf$G$N6/@)CfCG$KMQ$$$k(B.  $B7W;;ESCf$G$N6/@)CfCG$KMQ$$$k(B.
   
 @item  @item
   @code{ox_intr()} $B$O(B, $B<1JL;R(B @var{number} $B$N%W%m%;%9$r$KBP$7$F(B
   @code{SIGINT} $B$rAwIU$9$k(B. @code{SIGINT} $B$KBP$9$k%W%m%;%9$NF0:n$O(B
   $B5,Dj$5$l$F$$$J$$$,(B, @samp{ox_asir} $B$N>l9g(B, $B$?$@$A$K(B debug mode $B$K(B
   $BF~$k(B. X $B>e$GF0:n$7$F$$$k>l9g(B, $B%G%P%C%0%3%^%s%IF~NOMQ$N%&%#%s%I%&$,(B
   $B%]%C%W%"%C%W$9$k(B.
   
   @item
 @code{register_handler()} $B$O(B, @kbd{C-c} $B$J$I$K$h$k3d$j9~$_$N:]$K(B,  @code{register_handler()} $B$O(B, @kbd{C-c} $B$J$I$K$h$k3d$j9~$_$N:]$K(B,
 @kbd{u} $B$r;XDj$9$k$3$H$G(B, $BL50z?t%f!<%6Dj5A4X?t(B @var{func()} $B$,8F$S=P$5$l$k(B  @kbd{u} $B$r;XDj$9$k$3$H$G(B, $BL50z?t%f!<%6Dj5A4X?t(B @var{func()} $B$,8F$S=P$5$l$k(B
 $B$h$&$K@_Dj$9$k(B. $B$3$N4X?t$K(B, @code{ox_reset()} $B$r8F$S=P$5$;$k$3$H$G(B,  $B$h$&$K@_Dj$9$k(B. $B$3$N4X?t$K(B, @code{ox_reset()} $B$r8F$S=P$5$;$k$3$H$G(B,
Line 1273  Even if a process is running, the execution is safely 
Line 1285  Even if a process is running, the execution is safely 
 It can be also used to interrupt a distributed computation.  It can be also used to interrupt a distributed computation.
   
 @item  @item
   @code{ox_intr()} sends @code{SIGINT} to a process whose identifier is
   @var{number}. The action of a server against @code{SIGINT} is not
   specified in @b{OpenXM}. @samp{ox_asir} immediately enters the debug
   mode and pops up an window to input debug commands on X window system.
   
   @item
 @code{register_handler()} registers a function @var{func()}.  @code{register_handler()} registers a function @var{func()}.
 If @kbd{u} is specified on a keybord interrupt, @var{func()}  If @kbd{u} is specified on a keybord interrupt, @var{func()}
 is executed before returning the toplevel.  is executed before returning the toplevel.
Line 1507  Usually @b{OX_SYNC_BALL} will be ignored by the peer.
Line 1525  Usually @b{OX_SYNC_BALL} will be ignored by the peer.
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item $B;2>H(B
 \EG @item References  \EG @item References
 @fref{ox_rpc ox_cmo_rpc ox_execute_string}, @fref{ox_reset register_handler}  @fref{ox_rpc ox_cmo_rpc ox_execute_string}, @fref{ox_reset ox_intr register_handler}
 @end table  @end table
   
 \JP @node ox_get,,, $BJ,;67W;;$K4X$9$k4X?t(B  \JP @node ox_get,,, $BJ,;67W;;$K4X$9$k4X?t(B
Line 1896  identifier @var{id} is returned.
Line 1914  identifier @var{id} is returned.
 @code{ifplot()} $B$O(B, 2 $BJQ?t4X?t(B @var{func} $B$N<B?t>e$G$NNmE@$N(B  @code{ifplot()} $B$O(B, 2 $BJQ?t4X?t(B @var{func} $B$N<B?t>e$G$NNmE@$N(B
 $B%0%i%U$NI=<($r9T$&(B. @code{conplot()} $B$O(B, $BF1MM$N0z?t$KBP$7(B,  $B%0%i%U$NI=<($r9T$&(B. @code{conplot()} $B$O(B, $BF1MM$N0z?t$KBP$7(B,
 $BEy9b@~$NI=<($r9T$&(B. @code{plot()} $B$O(B 1 $BJQ?t4X?t$N(B  $BEy9b@~$NI=<($r9T$&(B. @code{plot()} $B$O(B 1 $BJQ?t4X?t$N(B
 $B%0%i%U$NI=<($r9T$&(B. Windows $BHG$O8=>u$G$OL$%5%]!<%H$G$"$k(B.  $B%0%i%U$NI=<($r9T$&(B.
   
 @item  @item
 UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$j<B8=$5$l$F$$$k(B. $B%3%^%s%I$O(B @samp{ox_plot}  $B$3$l$i$O(B OpenXM $B%5!<%P$H$7$F<B8=$5$l$F$$$k(B. UNIX $B>e$G$O(B
 $B$G(B, @code{ox_launch()} $B$K$h$j5/F0$7$F$*$/I,MW$,$"$k(B. @samp{ox_plot}  @samp{ox_plot} $B$,(B, Windows $B>e$G$O(B @samp{engine} $B$,$3$l$i$N5!G=(B
 $B$O(B, @b{Asir} $B$NI8=`%i%$%V%i%j%G%#%l%/%H%j$K$"$k(B.  $B$rDs6!$7$F$*$j(B, $B$3$l$i$O(B @b{Asir} $B$NI8=`%i%$%V%i%j%G%#%l%/%H%j$K$"$k(B.
   $B$3$l$i$O(B @code{ox_launch()} $B$^$?$O(B @code{ox_launch_nox()}
    $B$K$h$j5/F0$7$F$*$/I,MW$,$"$k(B.
   
 @item  @item
 $B0z?t$NFb(B, @var{func} $B$OI,?\$G$"$k(B. $B$=$NB>$N0z?t$O%*%W%7%g%s$G$"$k(B.  $B0z?t$NFb(B, @var{func} $B$OI,?\$G$"$k(B. $B$=$NB>$N0z?t$O%*%W%7%g%s$G$"$k(B.
Line 1910  UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$j<B8=$5$l$F$$$k(
Line 1930  UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$j<B8=$5$l$F$$$k(
 @table @var  @table @var
 @item geometry  @item geometry
 $B%&%#%s%I%&$N%5%$%:$r%I%C%HC10L$G(B @var{[x,y]} $B$G;XDj$9$k(B.  $B%&%#%s%I%&$N%5%$%:$r%I%C%HC10L$G(B @var{[x,y]} $B$G;XDj$9$k(B.
 (UNIX $BHG$G$O(B @var{[}@code{300},@code{300}@var{]}. )  (@var{[}@code{300},@code{300}@var{]}. )
   
 @item xrange, yrange  @item xrange, yrange
 $BJQ?t$NHO0O$N;XDj$G(B, @var{[v,vmin,vmax]} $B$G;XDj$9$k(B.  $BJQ?t$NHO0O$N;XDj$G(B, @var{[v,vmin,vmax]} $B$G;XDj$9$k(B.
Line 2009  Function @code{ifplot()} draws a graph of real zeros o
Line 2029  Function @code{ifplot()} draws a graph of real zeros o
 function.  function.
 Function @code{conplot()} plots the contour lines for a same argument.  Function @code{conplot()} plots the contour lines for a same argument.
 Function @code{plot()} draws the graph of a uninivariate function.  Function @code{plot()} draws the graph of a uninivariate function.
 These functions are available on UNIX version (on @code{X11}).  
   
 @item  @item
 The plotting functions for UNIX version are realized on remote process  The plotting functions are realized by an OpenXM server.
 facilities described previously.  On UNIX it is @samp{ox_plot} in @b{Asir} root directory.
 The command for this is  @samp{ox_plot} in @b{Asir} root directory.  On Windows @samp{engine} acts as @samp{ox_plot}.
 Of course, it must be activated by @code{ox_launch()}.  Of course, it must be activated by @code{ox_launch()} @code{ox_launch_nox()}.
   
 @item  @item
 Argument @var{func} is indispensable. Other arguments are optional.  Argument @var{func} is indispensable. Other arguments are optional.
Line 2095  the window. 
Line 2114  the window. 
   
 @item  @item
 Several operations are available on the window: by button operations  Several operations are available on the window: by button operations
 for UNIX version, and pull-down menus for Macintosh version.  for UNIX version, and pull-down menus for Windows version.
   
 @table @code  @table @code
 @item quit  @item quit
Line 2166  plot*form*ydone*background:white
Line 2185  plot*form*ydone*background:white
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item $B;2>H(B
 \EG @item References  \EG @item References
 @fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset register_handler}  @fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset ox_intr register_handler}
   @end table
   
   \JP @node open_canvas clear_canvas draw_obj draw_string,,, $BJ,;67W;;$K4X$9$k4X?t(B
   \EG @node open_canvas clear_canvas draw_obj draw_string,,, Functions for distributed computation
   @subsection @code{open_canvas}, @code{clear_canvas}, @code{draw_obj}, @code{draw_string}
   @findex open_canvas
   @findex clear_canvas
   @findex draw_obj
   @findex draw_string
   
   @table @t
   @item open_canvas(@var{id}[,@var{geometry}])
   \JP :: $BIA2hMQ%&%#%s%I%&(B ($B%-%c%s%P%9(B) $B$r@8@.$9$k(B.
   \EG :: Opens a canvas, which is a window for drawing objects.
   @item clear_canvas(@var{id},@var{index})
   \JP :: $B%-%c%s%P%9$r%/%j%"$9$k(B.
   \EG :: Clears a canvas.
   @item draw_obj(@var{id},@var{index},@var{pointorsegment} [,@var{color}])
   \JP :: $B%-%c%s%P%9>e$KE@$^$?$O@~J,$rIA2h$9$k(B.
   \EG :: Draws a point or a line segment on a canvas.
   @item draw_string(@var{id},@var{index},@var{[x,y]},@var{string} [,@var{color}])
   \JP :: $B%-%c%s%P%9>e$KJ8;zNs$rIA2h$9$k(B.
   \EG :: Draws a character string on a canvas.
   @end table
   
   @table @var
   @item return
   0
   @item id, index, color, x, y
   \JP $B@0?t(B
   \EG integer
   @item pointorsegment
   \JP $B%j%9%H(B
   \EG list
   @item string
   \JP $BJ8;zNs(B
   \EG character string
   @end table
   
   @itemize @bullet
   @item
   \BJP
   $B$3$l$i$O(B OpenXM $B%5!<%P(B @samp{ox_plot} (Windows $B>e$G$O(B @samp{engine})
   $B$K$h$jDs6!$5$l$k(B.
   \E
   \BEG
   These functions are supplied by the OpenXM server @samp{ox_plot}
   (@samp{engine} on Windows).
   \E
   @item
   \BJP
   @code{open_canvas} $B$O(B, $BIA2hMQ$N%&%#%s%I%&(B($B%-%c%s%P%9(B)$B$r@8@.$9$k(B.
   @var{geometry} $B$K$h$j%&%#%s%I%&$N%5%$%:$r(B pixel $BC10L$G(B @var{[x,y]} $B$G;XDj$9$k(B.
   default size $B$O(B @var{[}@code{300},@code{300}@var{]}.
   $B%-%c%s%P%9$N<1JL;R$H$7$F(B, $B@0?tCM$r(B OpenXM $B%5!<%P$N%9%?%C%/$K(B push $B$9$k(B.
   $B$3$N<1JL;R$O(B @code{draw_obj} $B$N8F$S=P$7$KI,MW$G$"$j(B, @code{ox_pop_cmo} $B$K(B
   $B$h$j<h$j=P$7$FJ];}$9$kI,MW$,$"$k(B.
   \E
   \BEG
   @code{open_canvas} opens a canvas, which is a window for drawing objecgts.
   One can specifies the size of a canvas in pixel by
   supplying @var{geometry} option @var{[x,y]}. The default size is
   @var{[}@code{300},@code{300}@var{]}.
   This function pushes an integer value onto the stack of the OpenXM server.
   The value is used to distiguish the opened canvas and one has to pop
   and maintain the value by @code{ox_pop_cmo} for subsequent calls of
   @code{draw_obj}.
   \E
   @item
   \BJP
   @code{clear_canvas} $B$O(B, $B%5!<%P(B id @var{id}, $B%-%c%s%P%9(B id @var{index}
   $B$G;XDj$5$l$k%-%c%s%P%9$r%/%j%"$9$k(B.
   \E
   \BEG
   @code{clear_canvas} clears a canvas specified by a server id @var{id}
   and a canvas id @var{index}.
   \E
   @item
   \BJP
   @code{draw_obj} $B$O(B, $B%5!<%P(B id @var{id}, $B%-%c%s%P%9(B id @var{index}
   $B$G;XDj$5$l$k%-%c%s%P%9$KE@$^$?$O@~J,$rIA2h$9$k(B. @var{pointorsegment}
   $B$,(B @var{[x,y]} $B$N>l9gE@$N:BI8(B, @var{[x,y,u,v]} $B$N>l9g(B @var{[x,y]},
   @var{[u,v]} $B$r7k$V@~J,$rI=$9$H8+$J$5$l$k(B.
   $B%-%c%s%P%9$N:BI8$O(B, $B:8>e6y$r86E@$H$7$F2#J}8~$K(B
   $BBh0l:BI8(B, $B=DJ}8~$KBhFs:BI8$r$H$k(B. $BCM$O(B pixel $BC10L$G;XDj$9$k(B.
   @var{color} $B$N;XDj$,$"$k>l9g(B, @var{color/65536} mod 256,
   @var{color/256} mod 256, @var{color} mod 256 $B$r$=$l$>$l(B Red, Green, Blue
   $B$NCM(B ($B:GBg(B 255) $B$H$_$J$9(B.
   \E
   \BEG
   @code{draw_obj} draws a point or a line segment on
   a canvas specified by a server id @var{id} and a canvas id @var{index}.
   If @var{pointorsegment} is @var{[x,y]}, it is regarded as a point.
   If @var{pointorsegment} is @var{[x,y,u,v]}, it is regarded
   as a line segment which connects @var{[x,y]} and @var{[u,v]}.
   If @var{color} is specified, @var{color/65536} mod 256,
   @var{color/256} mod 256, @var{color} mod 256 are regarded as the vaules
   of Red, Green, Blue (Max. 255) respectively.
   \E
   @item
   \BJP
   @code{draw_string} $B$O(B, $B%5!<%P(B id @var{id}, $B%-%c%s%P%9(B id @var{index}
   $B$G;XDj$5$l$k%-%c%s%P%9$KJ8;zNs$rIA2h$9$k(B. $B0LCV$O(B @var{[x,y]} $B$K$h$j;XDj$9$k(B.
   \E
   \BEG
   @code{draw_string} draws a character string @var{string} on
   a canvas specified by a server id @var{id} and a canvas id @var{index}.
   The position of the string is specified by @var{[x,y]}.
   \E
   @end itemize
   
   @example
   [182] Id=ox_launch_nox(0,"ox_plot");
   0
   [183] open_canvas(Id);
   0
   [184] Ind=ox_pop_cmo(Id);
   0
   [185] draw_obj(Id,Ind,[100,100]);
   0
   [186] draw_obj(Id,Ind,[200,200],0xffff);
   0
   [187] draw_obj(Id,Ind,[10,10,50,50],0xff00ff);
   0
   [187] draw_string(Id,Ind,[100,50],"hello",0xffff00);
   0
   [189] clear_canvas(Id,Ind);
   0
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset ox_intr register_handler}, @fref{ox_pop_cmo ox_pop_local}.
 @end table  @end table

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>