version 1.3, 1999/12/24 04:38:04 |
version 1.11, 2002/09/03 02:15:35 |
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/process.texi,v 1.2 1999/12/21 02:47:31 noro Exp $ |
@comment $OpenXM: OpenXM/src/asir-doc/parts/process.texi,v 1.10 2002/08/14 03:26:36 noro Exp $ |
\BJP |
\BJP |
@node $BJ,;67W;;(B,,, Top |
@node $BJ,;67W;;(B,,, Top |
@chapter $BJ,;67W;;(B |
@chapter $BJ,;67W;;(B |
|
|
@section OpenXM |
@section OpenXM |
|
|
\BJP |
\BJP |
@b{Asir} $B$O(B, $BJ,;67W;;$K$*$1$kDL?.%W%m%H%3%k$H$7$F(B, @b{OpenXM} |
@b{Asir} $B$O(B, $BJ,;67W;;$K$*$1$kDL?.%W%m%H%3%k$H$7$F(B, |
(Open message eXchange protocol for Mathematics) $B$r:NMQ$7$F$$$k(B. |
@b{OpenXM} |
@b{OpenXM} $B$O(B, $B<g$H$7$F?t3X%*%V%8%'%/%H$r%W%m%;%94V$G$d$j$H$j$9$k(B |
(Open message eXchange for Mathematics) $B%W%m%H%3%k$r:NMQ$7$F$$$k(B. |
|
@b{OpenXM} $B%W%m%8%'%/%H$K$D$$$F$O(B, |
|
@ifhtml |
|
<A HREF="http://www.math.sci.kobe-u.ac.jp/OpenXM/"> |
|
@end ifhtml |
|
@code{http://www.math.sci.kobe-u.ac.jp/OpenXM/} |
|
@ifhtml |
|
</A> |
|
@end ifhtml |
|
$B$r;2>H$7$F$[$7$$(B. |
|
|
|
@b{OpenXM} $B%W%m%H%3%k$O(B, $B<g$H$7$F?t3X%*%V%8%'%/%H$r%W%m%;%94V$G$d$j$H$j$9$k(B |
$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 |
Line 38 On @b{Asir} distributed computations are done under @b |
|
Line 49 On @b{Asir} distributed computations are done under @b |
|
(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. |
|
See |
|
@ifhtml |
|
<A HREF="http://www.math.sci.kobe-u.ac.jp/OpenXM/"> |
|
@end ifhtml |
|
@code{http://www.math.sci.kobe-u.ac.jp/OpenXM/} |
|
@ifhtml |
|
</A> |
|
@end ifhtml |
|
for the details of @b{OpenXM}. |
In @b{OpenXM} a distributed computation is done as follows: |
In @b{OpenXM} a distributed computation is done as follows: |
\E |
\E |
|
|
Line 500 input @code{quit}. |
|
Line 520 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 608 UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, |
|
Line 629 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 632 ox_xterm*saveLines:1000 |
|
Line 665 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 694 let @code{Xserver} authorize the relevant hosts. |
|
Line 728 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 1179 The result is pushed to the stack. |
|
Line 1225 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 1189 The result is pushed to the stack. |
|
Line 1235 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 1223 The result is pushed to the stack. |
|
Line 1272 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 1249 Even if a process is running, the execution is safely |
|
Line 1305 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 1483 Usually @b{OX_SYNC_BALL} will be ignored by the peer. |
|
Line 1545 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 1843 identifier @var{id} is returned. |
|
Line 1905 identifier @var{id} is returned. |
|
@item plot(@var{func} [,@var{geometry}] [,@var{xrange}] [,@var{id}] [,@var{name}]) |
@item plot(@var{func} [,@var{geometry}] [,@var{xrange}] [,@var{id}] [,@var{name}]) |
\JP :: 1 $BJQ?t4X?t$N%0%i%U$rI=<($9$k(B. |
\JP :: 1 $BJQ?t4X?t$N%0%i%U$rI=<($9$k(B. |
\EG :: Displays the graph of a univariate function. |
\EG :: Displays the graph of a univariate function. |
|
@item polarplot(@var{func} [,@var{geometry}] [,@var{thetarange}] [,@var{id}] [,@var{name}]) |
|
\JP :: $B6K7A<0$GM?$($i$l$?6J@~$rI=<($9$k(B. |
|
\EG :: Displays the graph of a curve given in polar form. |
@item plotover(@var{func},@var{id},@var{number}) |
@item plotover(@var{func},@var{id},@var{number}) |
\JP :: $B$9$G$KB8:_$7$F$$$k%&%#%s%I%&$XIA2h$9$k(B. |
\JP :: $B$9$G$KB8:_$7$F$$$k%&%#%s%I%&$XIA2h$9$k(B. |
\EG Plots on the existing window real zeros of a bivariate function. |
\EG Plots on the existing window real zeros of a bivariate function. |
Line 1871 identifier @var{id} is returned. |
|
Line 1936 identifier @var{id} is returned. |
|
@item |
@item |
@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. |
$B%0%i%U$NI=<($r9T$&(B. Windows $BHG$O8=>u$G$OL$%5%]!<%H$G$"$k(B. |
@code{plot()} $B$O(B 1 $BJQ?t4X?t$N%0%i%U$NI=<($r9T$&(B. |
|
@code{polarplot()} $B$O(B $B6K7A<0(B @var{r=f(theta)} $B$GI=$5$l$?6J@~$N%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%"%/%F%#%V$J(B @samp{ox_plot} $B$N(B id $B$,(B @var{id} $B$H$7$F;XDj$5$l$?>l9g(B, |
|
$B$=$N%5!<%P$,MQ$$$i$l$k(B. id $B$N;XDj$,$J$$>l9g$K$O(B, $B5/F0$5$l$F(B |
|
$B$$$k%5!<%P$N$&$A(B, @samp{ox_plot} $B$,$"$l$P$=$N%5!<%P$,MQ$$$i$l$k(B. |
|
@samp{ox_plot} $B$,5/F0$5$l$F$$$J$$>l9g$K$O(B, |
|
@code{ox_launch_nox()} $B$,<+F0E*$K<B9T$5$l$F(B, @samp{ox_plot} $B$,(B |
|
$BN)$A>e$,$j(B, $B$=$l$,MQ$$$i$l$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 1886 UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$j<B8=$5$l$F$$$k( |
|
Line 1958 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 1985 Function @code{ifplot()} draws a graph of real zeros o |
|
Line 2057 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}). |
Function @code{polarplot()} draws the graph of a curve given in polar form |
|
@var{r=f(theta)}. |
|
|
@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()}. |
|
If the identifier of an active @samp{ox_plot} is specified as @var{id}, |
|
the server is used for drawing pictures. |
|
If @var{id} is not specified, an available @samp{ox_plot} server |
|
is used if it exists. If no @samp{ox_plot} server is available, |
|
then @code{ox_launch_nox()} is automatically executed to |
|
invoke @samp{ox_plot}. |
|
|
@item |
@item |
Argument @var{func} is indispensable. Other arguments are optional. |
Argument @var{func} is indispensable. Other arguments are optional. |
|
|
|
|
@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 2142 plot*form*ydone*background:white |
|
Line 2221 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 |