<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 * Copyright (C) 2018 - Samuel GOUGEON
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="graphics_entities">
    <refnamediv>
        <refname>graphics_entities</refname>
        <refpurpose>グラフィックスエンティティデータ構造体の説明</refpurpose>
    </refnamediv>
    <refsection>
        <title>説明</title>
        <para> Scilabでは,
            グラフィックウインドウおよびそのウインドウに描画されたもの
            は階層的なエンティティにより表されます.
            最上位の階層は <literal>Figure</literal> (図)です.
            各 <literal>Figure</literal>は,1個以上の<literal>Axes</literal>型の子を定義します.
            各<literal>Axes</literal> エンティティは
            <literal>Polylines</literal>, <literal>Rectangles</literal>,
            <literal>Arcs</literal>, <literal>Segs</literal> ,...のような
            一連の葉(leaf)エンティティを有します.
            エンティティの再帰的な集合の<literal>Compound</literal>型を有することも可能です.
            グラフィックモードの主要な関心事は,プロパティの変更をより簡単に
            することです.このグラフィックモードは,
            データ,座標やスケーリング,色や外観のようなオブジェクトのプロパティを
            最初のグラフィックコマンドを再度実行することなく制御するために
            複数の高レベルグラフ作成ルーチン
            を提供します (<link linkend="set">set</link>, <link linkend="get">get</link>参照)
        </para>
        <para>
            グラフィックエンティティは<literal>handle</literal>型のScilab変数に
            対応します.
            このハンドルは,
            作成されたグラフィックエンティティの各インスタンスを示すユニークなIDです.
            このハンドルを用いて,<function>set</function> および <function>get</function>
            ルーチンによりエンティティの
            プロパティにアクセスすることができるようになります.
            ハンドルはグラフィックオブジェクトを操作したり,移動したり,
            コピーまたは削除する際にも使用されます.
        </para>
        <para/>
        <variablelist>
            <varlistentry>
                <term>Console, root, mouse: </term>
                <listitem>
                    <para>
                        With its menus, the console may be considered as a special graphic windows.
                        Its menus and some graphical meta options may be addressed through its
                        handle as returned by <code>c=get(0)</code>.
                        See <link linkend="console_properties">Console properties</link> for details.
                    </para>
                    <para>
                        The root object is a virtual graphical object used to get the computer
                        screen properties. Its handle is the same as the console's one:
                        <code>r=get(0)</code>, but the screen properties can be addressed only
                        in read-only mode.
                        See <link linkend="root_properties">Root properties</link> for details.
                    </para>
                    <para>
                        On Windows, some additional screen, windowing and mouse parameters may be
                        retrieved throught the <link linkend="getsystemmetrics">getsystemmetrics</link>
                        function.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Figure: </term>
                <listitem>
                    <para>
                        <literal>Figure</literal> エンティティは,グラフィックエンティティ階層の最上位です.
                        このエンティティは図(figure)本体のパラメータを定義し,
                        同時に子を作成する際のデフォルト値も定義します.
                        figureの子は<literal>Axes</literal>エンティティです.
                    </para>
                    <para>
                        カレントのfigure(描画指示が送信されるfigure)のハンドル
                        は,<code>get("current_figure")</code>により取得でき,
                        <code>set("current_figure",h)</code>により設定できます.
                        ただし, <literal>h</literal> は figureのハンドルまたは
                        <literal>figure_id</literal> のどちらかです.
                        後者について,その図がまだ作成されていない場合には,作成されます.
                    </para>
                    <para>
                        詳細は<link linkend="figure_properties">figure_properties</link>
                        を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Axes: </term>
                <listitem>
                    <para>
                        <literal>Axes</literal> エンティティはグラフィックエンティティ階層の第二レベルです.
                        このエンティティは座標系の変化に関するパラメータおよび
                        軸に描画されるものを定義し,
                        同時に,作成される子のデフォルトのパラメータを定義します.
                        詳細は,<link linkend="axes_properties">axes_properties</link>を参照ください.
                        カレントの <literal>Axes</literal>のハンドルは,
                        <code>get("current_axes")</code>により取得できる可能性があります.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Compound: </term>
                <listitem>
                    <para>
                        <literal>Compound</literal> エンティティは単なる子のベクトルで,
                        プロパティを1つだけ(visibilityプロパティ)有しています.
                        これは,一連のエンティティを集約するためのグルーとして
                        使用されます.
                    </para>
                    <para>
                        <link linkend="glue">glue</link>, <link linkend="unglue">unglue</link>および
                        <link linkend="Compound_properties">Compoundプロパティ</link> 関数を
                        参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Axis: </term>
                <listitem>
                    <para>
                        <literal>Axis</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは軸の目盛および外観に関するパラメータを定義します.
                    </para>
                    <para>
                        詳細は,<link linkend="axis_properties">axisプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Polyline: </term>
                <listitem>
                    <para>
                        <literal>Polyline</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは,2次元および3次元ポリラインおよび
                        ポリラインの拡張描画プロパティを定義します.
                    </para>
                    <para>
                        詳細は,<link linkend="polyline_properties">polylineプロパティ</link> を
                        参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Arc: </term>
                <listitem>
                    <para>
                        <literal>Arc</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは楕円および楕円の一部を定義します.
                    </para>
                    <para>
                        詳細は<link linkend="arc_properties">arcプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Rectangle: </term>
                <listitem>
                    <para>
                        <literal>Rectangle</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは矩形および塗りつぶされた矩形のパラメータを
                        定義します.
                    </para>
                    <para>
                        詳細は<link linkend="rectangle_properties">rectangleプロパティ</link>
                        を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Surface: </term>
                <listitem>
                    <para>
                        <literal>Surface</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティはサブタイプ <literal>Fac3d</literal> または
                        <literal>Plot3d</literal>を有します. このエンティティは
                        3次元プロットのパラメータを定義します.
                    </para>
                    <para>
                        詳細は<link linkend="surface_properties">surfaceプロパティ</link>
                        を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Fec: </term>
                <listitem>
                    <para>
                        <literal>Fec</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは2次元有限要素プロットを表します.
                    </para>
                    <para>
                        詳細は <link linkend="fec_properties">fecプロパティ</link>
                        を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Grayplot: </term>
                <listitem>
                    <para>
                        <literal>Grayplot</literal> エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは色および画像による曲面の二次元プロット表します.
                    </para>
                    <para>
                        詳細は <link linkend="grayplot_properties">grayplotプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Matplot: </term>
                <listitem>
                    <para>
                        <literal>Matplot</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは整数行列による二次元プロット表します.
                    </para>
                    <para>
                        詳細は <link linkend="Matplot_properties">Matplotプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Segs: </term>
                <listitem>
                    <para>
                        <literal>Segs</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは,一連の色付の線分または色付の矢印のパラメータを定義します.
                    </para>
                    <para>
                        詳細は <link linkend="segs_properties">segsプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Champ: </term>
                <listitem>
                    <para>
                        <literal>Champ</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは2次元ベクトルフィールドに関するパラメータを定義します.
                    </para>
                    <para>
                        詳細は <link linkend="champ_properties">champプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Text: </term>
                <listitem>
                    <para>
                        <literal>Text</literal>エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは文字列の描画に関するパラメータを定義します.
                    </para>
                    <para>
                        詳細は <link linkend="text_properties">textプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Label: </term>
                <listitem>
                    <para>
                        <literal>Label</literal>エンティティは<literal>Axes</literal>グラフィックエンティティの
                        子です.このエンティティはグラフィックウィンドウに描画される
                        x, y, z 軸のラベルとタイトルを定義します.
                    </para>
                    <para>
                        詳細は <link linkend="label_properties">Labelエンティティプロパティ</link> を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Legend: </term>
                <listitem>
                    <para>
                        <literal>Legend</literal> エンティティはグラフィックエンティティ階層の葉です.
                        このエンティティは,<literal>plot2dx</literal>グラフに描画される
                        凡例に関するパラメータを定義します.
                        このエンティティはまだ開発中です.
                    </para>
                    <para>
                        詳細は,<link linkend="legend_properties">Legendエンティティプロパティ</link>
                        を参照ください.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Light: </term>
                <listitem>
                    <para>
                        Scilabにおける照明は,
                        光線と面の物性の間の相互作用により面の外観が対話的に指定されるように
                        実世界の照明を近似します.
                        実世界の照明を模擬することは複雑で計算負荷が高いため,
                        簡単化されたモデルが使用されます.
                    </para>
                    <para>
                        詳細は,<link linkend="light_properties">lightエンティティプロパティ</link>を参照ください.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <refsect3>
            <title>Other entities</title>
            <variablelist>
                <varlistentry>
                    <term>Interactive components (uicontrol)</term>
                    <listitem>
                        <para>
                            Scilab allows to create graphical interactive components like sliders,
                            spinners, editable tables, editable texts on graphics, checkboxes,
                            groups of radio buttons, listboxes, popup menus, push buttons, etc.
                            These objects are direct children of the figure where they are defined.
                            Their properties can be set and tuned through their handles as for
                            any other graphical objects. Please
                            see <link linkend="uicontrol_properties">uicontrol properties</link> for
                            details.
                        </para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term>UI menus</term>
                    <listitem>
                        <para>
                            <link linkend="uimenu">uimenu</link>() allows to add and manage some
                            menus on the menu bar of any graphical figure. <literal>uimenu()</literal>
                            returns a handle through which the contents and properties of the
                            created menu can be addressed. Please see
                            <link linkend="uimenu_properties">uimenus properties</link> for details.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </refsect3>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
//この例を行単位で実行してください

// エンティティモードで図を作成. Figureエンティティのハンドルを取得し,そのプロパティを表示
f = scf()
a = f.children //Axisの子のハンドル
x = (1:10)';  plot2d(x,[x.^2 x.^1.5])
e = a.children // 2つのポリラインからなるCompound

p1 = e.children(1)   // 直近に描画されたポリラインのプロパティ
p1.foreground = 5;   //  ポリラインの色を変更
e.children.thickness=5; // 2つのポリラインの幅を変更

delete(e.children(2))

move(e.children,[0,30]) //ポリラインを変換

a.axes_bounds=[0 0 0.5 0.5];

subplot(222) //新たにAxesエンティティを作成
plot(1:10);
a1 = f.children(1); //ハンドルを取得
copy(e.children,a1); //最初のプロットのポリラインを新しい軸にコピー
a1.data_bounds = [1 0;10 100]; //軸の範囲を変更

scf(10); // figure_id=10の新規図を作成
plot3d() // 描画データは figure 10に送信される
scf(f);  // 前の図をカレントの図にする
plot2d(x,x^3)  //描画データは最初の図に送信される
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="set">set</link>
            </member>
            <member>
                <link linkend="get">get</link>
            </member>
            <member>
                <link linkend="move">move</link>
            </member>
            <member>
                <link linkend="delete">delete</link>
            </member>
            <member>
                <link linkend="ged">ged</link>
            </member>
            <member>
                <link linkend="object_editor">オブジェクトエディタ</link>
            </member>
            <member>
                <link linkend="plot">plot</link>
            </member>
            <member>
                <link linkend="surf">surf</link>
            </member>
            <member>
                <link linkend="getsystemmetrics">getsystemmetrics</link>
            </member>
            <member>
                <link linkend="setlookandfeel">setlookandfeel</link>
            </member>
        </simplelist>
    </refsection>
</refentry>