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

折れ線の図形出力(polyline primitive)に関するサブルーチン群.
% 使用例については\ref{sg.sgplu}節参照.

\vspace{1em}
\GLPGETSET が管理する内部変数{\tt 'LMISS'}を{\tt .TRUE.}にすると
欠損値処理をおこなう.
つまり欠損値の前後は線で結ばない.

\vspace{1em}
内部変数{\tt 'LCHAR'}を{\tt .TRUE.}にするとラベル付きの折れ線を描く.
ここでいうラベル付き折れ線とは, 描くべき線分のある長さを1サイクルとして,
その一部分を空白域としその空白部分に指定した文字列を描くものである.
ラベルとしてつける文字列は{\tt SGSPLC}で指定する
(\ref{sgpack.pline.sgsplc}節参照);
その文字列の高さは{\tt SGSPLS}で指定する
(\ref{sgpack.pline.sgspls}節参照).
サイクルの定義などに関しては \SGPGETSET が管理する内部変数を
参照のこと(\ref{sgpack.cntl.sgpget}節).

\vspace{1em}
なお, 内部変数{\tt 'LCHAR'}を{\tt .TRUE.}とした効果は線分描画ルーチンす
べてに及ぶ. したがって, {\tt 'LCHAR'}を{\tt .TRUE.}としてラベルつき線分
を描いたあとは必ず{\tt .FALSE.}に戻しておかなくてはいけな
い.

%-----------------------------------------------------------------------------
\subsection{SGPLZU/SGPLZV/SGPLZR}
%\label{sgpack.pline.sgplzu}
\begin{enumerate}
  \item 機能
  \begin{quote}
    U/V/R座標系で折れ線を描く. 属性も同時に指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGPLZU(N,UPX,UPY,ITYPE,INDEX)} \\
    {\tt CALL SGPLZV(N,VPX,VPY,ITYPE,INDEX)} \\
    {\tt CALL SGPLZR(N,RPX,RPY,ITYPE,INDEX)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\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)座標の値を与える. \\
      {\tt ITYPE} & {\tt (I)} & ラインタイプ. {\tt SGSPLT}参照. \\
      {\tt INDEX} & {\tt (I)} & ラインインデクス. {\tt SGSPLI}参照.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt N}は2以上でなければならない.
    \item ここで指定した{\tt ITYPE}, {\tt INDEX}は,
      {\tt SGPLU}, {\tt SGPLV}, {\tt SGPLR}が参照する
      {\tt ITYPE}, {\tt INDEX}を変更しない.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGPLU/SGPLV/SGPLR}
%\label{sgpack.pline.sgplu}
\begin{enumerate}
  \item 機能
  \begin{quote}
    U/V/R座標系で折れ線を描く.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGPLU(N,UPX,UPY)} \\
    {\tt CALL SGPLV(N,VPX,VPY)} \\
    {\tt CALL SGPLR(N,RPX,RPY)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\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}は2以上でなければならない.
    \item 描く折れ線の属性は{\tt SGSPLT}, {\tt SGSPLI}で設定する.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGSPLT}
%\label{sgpack.pline.sgsplt}
\begin{enumerate}
  \item 機能
  \begin{quote}
    {\tt SGPLU}, {\tt SGPLV}, {\tt SGPLR}で描く折れ線のラインタイプを設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSPLT(ITYPE)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt ITYPE} & {\tt (I)} & 折れ線の線種(初期値は1).
        {\tt ITYPE}が1のとき実線, 2のとき破線, 3のとき点線,
        4のとき1点鎖線となる.
        その他の0以外の整数は下位Nビット
        (Nは内部変数{\tt 'NBITS'}で決まる値.
        初期値は16; \ref{sgpack.cntl.sgpget}節参照)
        のビットパターンを用いて線種が設定される.
        たとえばN=16で{\tt ITYPE} = Z'0000F0F0' (16進定数)のとき,
        '\underline{4bits ON} 4bits OFF \underline{4bits ON} 4bits OFF'
        のような破線が設定される.
        1ビット当たりの長さは内部変数{\tt 'BITLEN'}が決める.
        ラインタイプの作画例は\ref{append.table.sgplin}節参照.
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt ITYPE}は0以外でなければならない.
      ただし{\tt ITYPE}が0のとき, メッセージは出力されるがなにもしない.
    \item {\tt ITYPE}の妥当性はこのルーチンでチェックされず,
      {\tt SGPLU}, {\tt SGPLV}, {\tt SGPLR}を呼んだときにチェックされる.
    \item 現在設定されているラインタイプは
      \begin{quote}
        {\tt CALL SGQPLT(ITYPE)}
      \end{quote}
      によって参照できる.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGSPLI}
%\label{sgpack.pline.sgspli}
\begin{enumerate}
  \item 機能
  \begin{quote}
    {\tt SGPLU}, {\tt SGPLV}, {\tt SGPLR}で描く折れ線の
    ラインインデクスを設定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSPLI(INDEX)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt INDEX} & {\tt (I)} & 折れ線のラインインデクス
        (\ref{gaiyou.outp}節参照;初期値は1).
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt INDEX}は1以上でなければならない.
      ただし{\tt INDEX}が0のとき, メッセージは出力されるがなにもしない.
    \item {\tt INDEX}の妥当性はこのルーチンでチェックされず,
      {\tt SGPLU}, {\tt SGPLV}, {\tt SGPLR}を呼んだときにチェックされる.
    \item 現在設定されているラインインデクスは
      \begin{quote}
        {\tt CALL SGQPLI(INDEX)}
      \end{quote}
      によって参照できる.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGSPLC}
\label{sgpack.pline.sgsplc}
\begin{enumerate}
  \item 機能
  \begin{quote}
    ラベルつき折れ線を描くとき, その文字列を指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSPLC(CHARX)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt CHARX} & {\tt (R)} & 描く文字列(初期値は{\tt 'A'}).
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item 設定する文字列の長さは32文字以下でなければならない.
    \item 現在設定されている文字列は
      \begin{quote}
        {\tt CALL SGQPLC(CHARX)}
      \end{quote}
      によって参照できる.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGSPLS}
\label{sgpack.pline.sgspls}
\begin{enumerate}
  \item 機能
  \begin{quote}
    ラベルつき折れ線を描くとき, 文字列の高さを指定する.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGSPLS(RSIZE)}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt RSIZE} & {\tt (R)} & 文字列の高さをV座標系の単位で
                                指定する(初期値は0.02).
    \end{tabular}
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item {\tt RSIZE}は0より大きくなければならない.
      ただし{\tt RSIZE}が0のとき, メッセージは出力されるがなにもしない.
    \item 現在設定されている文字列の高さは
      \begin{quote}
        {\tt CALL SGQPLS(RSIZE)}
      \end{quote}
      によって参照できる.
  \end{enumerate}
\end{enumerate}

%-----------------------------------------------------------------------------
\subsection{SGNPLC}
%\label{sgpack.pline.sgnplc}
\begin{enumerate}
  \item 機能
  \begin{quote}
    設定されている文字列の最後の文字の文字番号を1つ増やす.
  \end{quote}
  \item 呼び出し方法
  \begin{quote}
    {\tt CALL SGNPLC}
  \end{quote}
  \item パラメーターの説明
  \begin{quote}
    なし.
  \end{quote}
  \item 備考
  \begin{enumerate}
    \item このルーチンを呼ぶと,
      設定されている文字列の最後の文字の文字番号が1つふやされる.
      つまり文字列として{\tt 'X=1'}が指定されていたとすると,
      {\tt SGNPLC} を呼ぶことによって設定されている文字列が
      {\tt 'X=2'}となる.
  \end{enumerate}
\end{enumerate}
