%表題   GRPH1 基本グラフィックルーチンライブラリ
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/12 塩谷雅人
%         92/02/07 塩谷雅人
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         93/10/19 塩谷雅人
%         94/01/06 酒井敏   (5.x版)
%         94/03/15 塩谷雅人
%        }
%
%  \Dchapter{SGPACK : SGKS 基本グラフィックルーチン}
  \Dchapterhead
  \label{sgpack}

\section{概要}
%\label{sgpack.gaiyou}


SGPACK は GRPH1 の他のパッケージを統合し,
ユーザーに使いやすいインターフェイスを提供するものである.
SGPACK には, デバイスやページの制御などを行なうコントロールルーチン,
座標変換の設定ルーチン, 図形の基本要素 (出力プリミティブ) を作画する
ルーチンなどがある.
\vspace{1em}

出力プリミティブとしては次のものがある.
\begin{itemize}
  \item ポリライン(polyline) : 折れ線.
  \item ポリマーカー(polymarker) : マーカー列.
  \item テキスト(text) : 文字列.
  \item トーン(tone) : 多角形のぬりつぶし.
\end{itemize}
このほか, 補助的に次のプリミティブがある.
\begin{itemize}
% \item フィルエリア(fill area) : 斜線による多角形のぬりつぶし.
  \item ライン(line) : 線分.
  \item アロー(arrow) : 矢印.
\end{itemize}

これら6つのプリミティブのうち, トーンプリミティブ以外の5つは
すべて線分で構成される.
トーンプリミティブは出力装置の能力に応じて,
hard fillまたはsoft fillを切替えて多角形のぬりつぶしをおこなう;
soft fillは斜線を引くことによって実現される.
また, GRPH1では各プリミティブを
ユーザー座標系(U座標系), 仮想直角座標(V座標系),
および正規直角座標(R座標系)で定義できる

\vspace{1em}
6つの出力プリミティブには次のような属性がある.
\begin{enumerate}
  \item ポリラインプリミティブについては,
  \begin{itemize}
    \item 折れ線の線種.
    \item 折れ線のラインインデクス.
  \end{itemize}
  \item ポリマーカープリミティブについては,
  \begin{itemize}
    \item マーカーの種類.
    \item マーカーを描く線のラインインデクス.
    \item マーカーの大きさ.
  \end{itemize}
  \item テキストプリミティブについては,
  \begin{itemize}
    \item 文字の高さ.
    \item 文字列の回転角.
    \item 文字列のセンタリングオプション.
    \item 文字を描く線のラインインデクス.
  \end{itemize}
  \item トーンプリミティブについては,
  \begin{itemize}
    \item トーンパターン.
  \end{itemize}
  \item ラインサブプリミティブについては,
  \begin{itemize}
    \item 線分のラインインデクス.
  \end{itemize}
  \item アローサブプリミティブについては,
  \begin{itemize}
    \item 矢印の軸部分の線種.
    \item 矢印の軸部分のラインインデクス.
  \end{itemize}
\end{enumerate}
これらの属性は個別に指定することもできるし,
すべて同時に指定することもできる
(\ref{sgpack.pline}, \ref{sgpack.pmark}, \ref{sgpack.text},
\ref{sgpack.tone}, \ref{sgpack.line}節参照).

\vspace{1em}
%最後に, 以上の点を総括して, 各プリミティブを定義する
%サブルーチン名の命名規約について簡単に述べる.
各プリミティブを定義するサブルーチン名の命名規約は
以下のようになっている.
\begin{enumerate}
  \item 先頭の2文字はすべて{\tt SG}で始まる.
  \item 属性を設定/参照する場合,
    3文字目は{\tt S} (set)/ {\tt Q} (query)である.
  \item 各プリミティブの名前がそれに続く. それぞれ,
    \begin{itemize}
      \item {\tt PL} : ポリラインプリミティブ.
      \item {\tt PM} : ポリマーカープリミティブ.
      \item {\tt TX} : テキストプリミティブ.
      \item {\tt TN} : トーンプリミティブ.
%     \item {\tt FA} : フィルエリアサブプリミティブ.
      \item {\tt LN} : ラインサブプリミティブ.
      \item {\tt LA} : アローサブプリミティブ.
    \end{itemize}
  \item プリミティブを定義(出力)するルーチンについて, 属性を同時に指定する
    場合は{\tt Z}が続く.
  \item さらにプリミティブをどこに定義するかによって,
    {\tt U} (U座標系で定義する), {\tt V} (V座標系で定義する)
    または{\tt R} (R座標系で定義する)が続く.
  \item プリミティブの属性を定義/参照する場合,
    6文字目はその属性を示す.
    \begin{itemize}
      \item {\tt T} : ラインタイプ, マーカータイプ.
      \item {\tt I} : ラインインデクス.
      \item {\tt S} : マーカーサイズ, 文字の高さ.
      \item {\tt R} : 文字列の回転角.
      \item {\tt C} : 文字列のセンタリングオプション.
      \item {\tt P} : トーンパターン.
    \end{itemize}
\end{enumerate}

