%表題   GRPH2 図形処理上位パッケージ
%
%履歴
%\Drireki{
%         original 佐藤薫
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/10 林祥介
%         92/02/05 塩谷雅人
%         92/03/05 塩谷雅人, 佐藤薫
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/04/04 塩谷雅人
%         95/04/14 酒井敏   (5.1版)
%        }
%
%  \Dchapter{UEPACK : トーン塗りつぶしルーチン}
\Dchapterhead
\label{uepack}

\section{概要}
%\label{uepack.概要}

UEPACK は2次元等値線図のぬりわけをおこなうサブルーチンパッケージである.
ぬりわけはU座標系でおこなわれるので,
すべての正規化変換に対応している.

\vspace{1em}
このパッケージにおいて, 等値線図のぬりわけは
「GRPH1」のトーンプリミティブを用いておこなわれている
(「GRPH1」のマニュアル参照).
なおこのパッケージでは, ぬりわけをおこなうだけで
等値線そのものや座標軸の外枠などは描かない.

\vspace{1em}
UEPACK において
ユーザーが使用するサブルーチンとしては以下のようなものがある.
\begin{itemize}
  \item 作画ルーチン
  \begin{description}
    \item {\tt UETONE} $ \cdots $ 
		トーンによる2次元等値線図のぬりわけをおこなう.
    \item {\tt UETONF} $ \cdots $ 
		イメージ描画機能により2次元等値線図のぬりわけをおこなう.
  \end{description}
  \item ぬりわけるレベルに関するルーチン
  \begin{description}
    \item {\tt UEGTLA} $ \cdots $ 最小値・最大値・きざみ値で
      ぬりわけるレベル生成する.
    \item {\tt UEGTLB} $ \cdots $ 格子点値を与える配列ときざみ値で
      ぬりわけるレベルを生成する.
    \item {\tt UESTLV} $ \cdots $ ぬりわけるレベルとパターンを
      1レベルごと指定する.
    \item {\tt UESTLN} $ \cdots $ ぬりわけるレベルとパターンを
      配列で複数レベル指定する.
    \item {\tt UEITLV} $ \cdots $ ぬりわけるレベルとパターンを
      すべて無効にする.
  \end{description}
  \item その他のルーチン
  \begin{description}
    \item \UEPGETSET $ \cdots $ 内部変数を参照/変更する.
  \end{description}
\end{itemize}

\vspace{1em}
格子点座標に関する情報はUWPACK (第\ref{uwpack}節参照)が管理している.
\begin{itemize}
  \item 格子点座標の設定に関するルーチン
  \begin{description}
    \item {\tt UWSGXA/UWSGYA} $ \cdots $ 各座標値で設定する.
    \item {\tt UWSGXB/UWSGYB} $ \cdots $ 最小値と最大値で設定する.
  \end{description}
\end{itemize}

\vspace{1em}
2次元データをとにかくぬりわけたい(quick look)というときには,
単に{\tt UETONE}を呼ぶだけでよい.
このときは, 現在設定されているウインドウいっぱいに
等間隔の格子点を設定し, 負の領域に斜線のハッチをつける.

\vspace{1em}
ぬりわけるレベル値の設定を UDPACK と同様にしておこないたいときは, 
\UEPGETSET の管理する内部変数 {\tt 'LTONE'} を {\tt .TRUE.} 
として {\tt UETONE} を呼べば, UDPACK が自動的に生成するきざみ値で
(厳密には UDPACK と同じアルゴリズムにもとづいてレベル値を設定し)ぬりわける. 
さらに, 
{\tt UDGCLA} に対応して {\tt UEGTLA},
{\tt UDGCLB} に対応して {\tt UEGTLB} を呼べば
コンターレベルとぬりわけるレベルの値が同一に設定される. 

\vspace{1em}
もしも格子点が不等間隔の場合は,
{\tt UETONE}を呼ぶ前に{\tt UWSGXA} (X方向)/ {\tt UWSGYA} (Y方向)を呼んで
格子点の座標値をあらかじめ指定すればよい.
あるいはウインドウのある一部分に等間隔の格子点を設定したい場合は,
{\tt UWSGXB} (X方向)/ {\tt UWSGYB} (Y方向)をもちい
最小値と最大値を指定して格子点を設定すればよい.

\vspace{1em}
上に述べたように, ぬりわけるレベルをあらかじめ指定したいときは,
{\tt UETONE}を呼ぶ前に{\tt UEGTLA}または{\tt UEGTLB}を呼べばよい.
ただしこの場合は, 等間隔のトーンレベルしか生成されない.
もしも, 不等間隔のトーンレベルとパターンを指定したい場合や,
特定のトーンレベルとパターンを追加したい場合は,
{\tt UESTLV}または{\tt UESTLN}を呼べばよい.
(すべてのレベルを無効にするには{\tt UEITLV}を呼べばよい. )
なお, ぬりわけは指定したレベルの順におこなう.
ぬりわけるトーンパターンについては, 「GRPH1」SGPACKの付録を参照の
こと.

\vspace{1em}
このパッケージが用いている「GRPH1」のトーンプリミティブは
出力装置の能力に応じてhard fillとsoft fillを切替えることができる.
\SGPGETSET が管理する
内部変数{\tt 'LSOFTF'} (「GRPH1」のマニュアル参照)が
{\tt .TRUE.}のときはsoft fillをおこなう;
{\tt .FALSE.}のときはhard fillをおこなう
(初期値は{\tt .TRUE.}).
ただし, hard fillを指定してもその能力がない場合は
soft fillとなる.
なおsoft fillはフィルエリアサブプリミティブ
(「GRPH1」フィルエリアサブプリミティブの節参照)の
下位ルーチンを用いている.
\vspace{1em}

また, 色を用いたべた塗り(下位3桁が999であるようなトーンパターン番号)
による塗りわけをおこなうとき, 色番号をドットなどのパターン番号として
読みかえることができる.
\SGPGETSET の管理する内部変数{\tt 'LCL2TN'}
(GRPH1/SGPACK参照)が{\tt .TRUE.}のときは読みかえる;
{\tt .FALSE.}のときは読みかえない
(初期値は{\tt .FALSE.}).
ただし, 色を用いた塗りわけができないような装置では,
{\tt 'LCL2TN'}が{\tt .FALSE.}と設定されていても,
パターン番号による読みかえをおこなおうとする.

\vspace{1em}
すでに描かれた図形の上にsoft fillをおこなっても, トーンパターンが上書き
されるだけで, それまでに描かれた図形が(べた塗りをしない限り)消えてしま
うことはない.
しかしながら, 出力装置によってはhard fillによるぬりわけによって
先に描かれた図形が消えてしまうことがあるので,
座標軸や等高線図と一緒にUEPACKを用いるときは
描く順番に注意すること.

\vspace{1em}
内部的には, {\tt UEBLK1}, {\tt UEBLK2}という名前の
共通ブロックを使用している.
ユーザーは同じ名前の外部手続き名・共通ブ
ロック名を用いてはならない.
