%表題   GRPH1 基本グラフィックルーチンライブラリ
%
%履歴
%\Drireki{
%         91/12/12 塩谷雅人
%         92/02/07 塩谷雅人
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/03/12 塩谷雅人
%        }
%
\section{サブルーチンの説明 : トーンプリミティブ}
\label{sgpack.tone}

多角形閉領域のぬりつぶし図形出力(tone primitive)に関するサブルーチン群.
% 使用例については\ref{sg.sgtone}節参照.

\vspace{1em}
出力装置の能力に応じて, hard fillまたはsoft fillを切替える.
内部変数{\tt 'LSOFTF'} (\ref{sgpack.cntl.sgpget}節参照)が
{\tt .TRUE.}のときはsoft fillをおこなう;
{\tt .FALSE.}のときはhard fillをおこなう
(初期値は{\tt .FALSE.}).
ただし, hard fillを指定してもその能力がない場合は
soft fillとなる.
\vspace{1em}

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

すでに描かれた図形の上にsoft fillをおこなってもトーンパターンが上書き
されるだけで, それまでに描かれた図形が(べた塗りをしない限り)消えてしま
うことはない.
しかしながら, 出力装置によってはhard fillによるぬりわけによって
先に描かれた図形が消えてしまうことがあるので,
ほかの図形出力と一緒にトーンプリミティブを用いるときは
描く順番に注意すること.

\vspace{1em}
以下のサブルーチンの説明で, 多角形を定義する頂点の座標
({\tt PX($i$)}, {\tt PY($i$)}) ($i=1,{\tt N}$)
(これらはU/V/R座標系で指定できる)に関しては, 次のように解釈される.
({\tt PX(1)}, {\tt PY(1)})と({\tt PX(N)}, {\tt PY(N)})は
同一な点である必要はない. つまり,
({\tt PX($i$)}, {\tt PY($i$)})と
({\tt PX($i+1$)}, {\tt PY($i+1$)}) ($i=1,{\tt N}-1$) および
({\tt PX(N)}, {\tt PY(N)})と({\tt PX(1)}, {\tt PY(1)})を結んだ
閉領域をぬりつぶす.

\vspace{1em}
現在サポートされているサブルーチン群は,
内部的に確保している作業領域の制約から座標値を与える配列の長さ{\tt N}は
256以下でなければならない.

%------------------------------------------------------------------------------
\subsection{SGTNZU/SGTNZV/SGTNZR}
%\label{sgpack.tone.sgtnzu}
\begin{enumerate}
  \item 機能
  \begin{quote}
    U/V/R座標系で多角形閉領域をぬりつぶす.
    トーンパターン番号も同時に指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGTNZU(N,UPX,UPY,ITPAT)} \\
    {\tt CALL SGTNZV(N,VPX,VPY,ITPAT)} \\
    {\tt CALL SGTNZR(N,RPX,RPY,ITPAT)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11.5cm}}
      {\tt N} & {\tt (I)} & 配列{\tt UPX}, {\tt UPY}の長さ. \\
      {\tt UPX}, {\tt UPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt VPX}, {\tt VPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt RPX}, {\tt RPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt ITPAT} & {\tt (I)} & トーンパターン番号. {\tt SGSTNP}参照. \\
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt N}は3以上でなければならない.
    \item ここで指定した
      {\tt ITPAT}は, {\tt SGTNU}, {\tt SGTNV}, {\tt SGTNR}が参照する
      {\tt ITPAT}を変更しない.
  \end{enumerate}
\end{enumerate}

%------------------------------------------------------------------------------
\subsection{SGTNXU/SGTNXV/SGTNXR}
%\label{sgpack.tone.sgtnxu}
\begin{enumerate}
  \item 機能
  \begin{quote}
    U/V/R座標系で多角形閉領域をぬりつぶす.
    トーンパターン番号も同時に指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGTNXU(N,UPX,UPY,ITPAT,ICOLOR)} \\
    {\tt CALL SGTNXV(N,VPX,VPY,ITPAT,ICOLOR)} \\
    {\tt CALL SGTNXR(N,RPX,RPY,ITPAT,ICOLOR)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11.5cm}}
      {\tt N} & {\tt (I)} & 配列{\tt UPX}, {\tt UPY}の長さ. \\
      {\tt UPX}, {\tt UPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt VPX}, {\tt VPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt RPX}, {\tt RPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt ITPAT} & {\tt (I)} & トーンパターン番号. {\tt SGSTNP}参照. \\
      {\tt ICOLOR} & {\tt (I)} & ICOLOR型の色. {\tt ISGRGB}参照.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt N}は3以上でなければならない.
    \item ここで指定した
      {\tt ITPAT}は, {\tt SGTNU}, {\tt SGTNV}, {\tt SGTNR}が参照する
      {\tt ITPAT}を変更しない.
  \end{enumerate}
\end{enumerate}

%------------------------------------------------------------------------------
\subsection{SGTNU/SGTNV/SGTNR}
%\label{sgpack.tone.sgtnu}
\begin{enumerate}
  \item 機能
  \begin{quote}
    U/V/R座標系で多角形閉領域をぬりつぶす.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGTNU(N,UPX,UPY)} \\
    {\tt CALL SGTNV(N,VPX,VPY)} \\
    {\tt CALL SGTNR(N,RPX,RPY)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11.5cm}}
      {\tt N} & {\tt (I)} & 配列{\tt UPX}, {\tt UPY}の長さ. \\
      {\tt UPX}, {\tt UPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のU座標系における(X, Y)座標の値を与える. \\
      {\tt VPX}, {\tt VPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のV座標系における(X, Y)座標の値を与える. \\
      {\tt RPX}, {\tt RPY} & {\tt (R)} & 長さ{\tt N}の配列.
        多角形を定義する頂点のR座標系における(X, Y)座標の値を与える. \\
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt N}は3以上でなければならない.
    \item 領域をぬりつぶすトーンパターン番号は
      {\tt SGSTNP}で設定する.
  \end{enumerate}
\end{enumerate}

%------------------------------------------------------------------------------
\subsection{SGSTNP}
%\label{sgpack.tone.sgstnp}
\begin{enumerate}
  \item 機能
  \begin{quote}
    {\tt SGTNU}, {\tt SGTNV}, {\tt SGTNR}で用いるトーンパターン番号を設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSTNP(ITPAT)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt ITPAT} & {\tt (I)} & トーンパターン番号(初期値は1).
         \ref{append.table.sgtone0}-
         \ref{append.table.sgtone6}節参照.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt ITPAT}は1以上でなければならない.
      ただし{\tt ITPAT}が0のとき, メッセージは出力されるがなにもしない.
    \item {\tt ITPAT}の妥当性はこのルーチンでチェックされず,
      {\tt SGTNU}, {\tt SGTNV}, {\tt SGTNR}を呼んだときにチェックされる.
    \item 現在設定されているトーンパターン番号は
      \begin{quote}
        {\tt CALL SGQTNP(ITPAT)}
      \end{quote}
      によって参照できる.
  \end{enumerate}
\end{enumerate}



