この章の目次にもどる
前頁:2.3 基本関数にもどる
次頁:2.5 文字(列)描画関数にすすむ
個別には示さないが、図形描画関数で PAT *pat と DCM mode を引数に持つ関数は、描画モードとして G_CVFORM と G_CVCOLOR を指定することが可能である。
 
      - G_CVFORM:ビットマップ形式変換
      
 - 
          
           -  パターン(kind=1, mpat)のビットマップの形式(プレーン数、
           ピクセルビット数)が描画環境のビットマップ形式と異なる場合は
           変換を行なう。
           
 -  この指定が無い場合、 ソースとディスティネーションのビットマッ
           プの形式(プレーン数、ピクセルビット数)が異なる場合は  EG_PAR
           のエラーとなる。
           
 -  変換は、 変換後の双方の下位Nビットのピクセル値が等しくなるよ
           うに行なわれる(ここで、 Nは   ソースとディスティネーションの
            depth の最小値を意味する)。
          
 
       - G_CVCOLOR: カラー変換
      
 - 
          
           -  描画環境に設定されている変換用カラー情報と描画環境自体の
           カラー情報が異なり、パターンが kind = 1, mpat である場合に
           変換を行なう。 パターンとして指定されたビットマップの
           カラー形式として、描画環境に設定されている変換用カラー形式が
           適用される。
           どちらか一方のカラー表現方式が未定義の場合は変換は行なわれない。
           
 -  カラー変換はソースのピクセル値を絶対カラーに変換し、 その絶対
           カラーに最も近い絶対カラーに対応するディスティネーションのピ
           クセル値を求めることにより行なわれる。
           
 -  ディスティネーションのカラー表現形式がカラーマップ形式の場合
           は、 その時点のカラーマップの内容を使用し、カラーマップの内容
           の自動変更は行なわない。
          
 
 
直線の描画では、指定した2点を結ぶ直線を、線幅(太さ)、線種、パターン、描
画モードを指定して描画する。
直線の描画方法としては、指定した線幅の大きさの正方形の左上の点が線を構成
する点の軌跡上を移動していった場合の、正方形全体の軌跡を直線として描画す
る。即ち、移動した正方形に重なったピクセルが描画されることになる。従って、
線幅が1以上の直線は全体に右下にずれた形となる。(下図参照)。
図 36 : 直線の描画
点の描画では、指定した点のピクセル値の取り出し、指定したピクセル値による
描画、指定したパターンによる描画の関数が用意されている。
- 【形式】
 
 - ERR gdra_lin ( GID gid, PNT p1, PNT p2, LATTR attr, PAT *pat, DCM mode )
 - 【解説】
 
 - gid で指定した描画環境で、点 p1 と p2 結ぶ直線を attr で指定した属性、pat で指定した描画パターン、mode で指定した描画モードで描画する。
 - 【リターン値】
 
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正)
  
 
 
| gtst_pnt |  
| Test Point |  
| 点の状態の取り出し |  
  | 
- 【形式】
 - Bool gtst_pnt ( GID gid, PNT p, PIXVAL *val )
 - 【解説】
 - gid で指定した描画環境で、点 p  がクリッピング領域の内部にあり描画され
    る場合は関数値 "0"を戻し、
    そのピクセル値を val で指定した領域に取り出
    す。点 p がクリッピング領域の外部にあり描画されない場合は関数値
    "1"を戻し、val には何も設定されない。
 - 【リターン値】
 - ≧0    : 正常終了(関数値は点のクリッピング状態(0/1))
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(val)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
  
 
 
- 【形式】
 - ERR gdra_pnt ( GID gid, PNT p, PIXVAL val, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、点 p を、val で指定したピクセル値、mode で指定した描画モードで描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(modeが不正)
  
 
 
| gfil_pnt |  
| Fill Point |  
| 点のパターン描画 |  
  | 
- 【形式】
 - ERR gfil_pnt ( GID gid, PNT p, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、点 p を、pat で指定したパターン、mode で指定した描画モードで描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正)
  
 
 
長方形の描画関数としては、枠の描画、長方形領域のパターンによる塗り潰し、
が用意されている。
長方形の左上の点を中心として、反時計方向に任意の角度回転させた傾いた長方
形の描画も可能である。回転角度は 0以上の度単位の非負の数値で指定し、
360の剰余が有効となる。なお、回転した場合、線のパターン、および塗り潰しの
パターン自体は回転しない。
    /* 回転角度 */
    typedef UW  DEG     /* 回転角度 */
長方形は、top, left, bottom, right の値により指定されるが、top ≧ bottom
またはleft  ≧  right  の場合は、 その長方形は「空」であり、描画関数では
EG_PAR のエラーとなる。
長方形の領域は、half-open property のため、 右と下の部分が1ピクセルだけ
左および上にずれた形となる点に注意が必要である。(下図参照)
枠の描画で、太い枠の場合は必ず内側に太くなり決して外側にはみでることはな
い。また、枠以外の描画では、その対象となる領域は枠を含んだ長方形全体の領
域となる。
図 37 : 長方形の描画
| gfra_rec |  
| Frame Rectangle |  
| 長方形の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_rec ( GID  gid,  RECT r, LATTR attr, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r で指定した長方形の枠を attr で指定した属性、
    pat で指定した描画パターン、angle で指定した回転角度、mode  で指定した
    描画モードで描画する。
    
    線幅>1の場合には枠は内側に線幅だけ太くなり、指定した枠の外側にはみで
    ることはない。線幅が大き過ぎて枠をはみでるような場合は、枠の中を指定した
    パターンで塗り潰す。(エラーとはならない)
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr,      modeが不正、rが空)
  
 
 
| gfil_rec |  
| Fill Rectangle |  
| 長方形の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_rec ( GID gid, RECT r, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r で指定した長方形を、pat で指定したパターン、angle で指定した回転角度、mode で指定した描画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不      正、rが空)
  
 
 
角丸長方形は長方形の角を楕円弧により丸めた図形であり、長方形の場合と同様
に、枠の描画、指定パターンによる塗り潰しの描画関数が用意されている。
長方形の左上の点を中心として、反時計方向に任意の角度回転させた傾いた角丸
長方形の描画も可能である。回転角度は 0以上の度単位の非負の数値で指定し、
360の剰余が有効となる。なお、回転した場合、線のパターン、および塗り潰
しのパターン自体は回転しない。
長方形は、top, left, bottom, right の値により指定されるが、top ≧ bottom
またはleft ≧ right  の場合は、 その長方形は「空」 であり、 描画関数では
EG_PAR のエラーとなる。
角は、指定した垂直直径(rv)と水平直径(rh)により定義される楕円の弧により丸
められる。どちらかの直径が0の場合は、角は丸められずに通常の長方形が描画
されることになる。 rv が長方形の高さより大きい場合、または rh が長方形の
幅より大きい場合は、rv, rh はそれぞれ長方形の高さ、 幅に等しいものとして
描画され、エラーとはならない。
枠の描画で、太い枠の場合は必ず内側に太くなり決して外側にはみでることはな
い。また、枠以外の描画では、その対象となる領域は枠を含んだ長方形全体の領
域となる。
| gfra_rrc |  
| Frame Round Rectangle |  
| 角丸長方形の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_rrc ( GID  gid,  RECT  r, UW rh, UW rv, LATTR attr, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r および rh,  rv  で示された角丸長方形の枠を
    attr で指定した属性、pat で指定したパターン、angle で指定した回転角度、
    mode で指定した描画モードで描画する。
    
    線幅>1の場合には枠は内側に線幅だけ太くなり、指定した枠の外側にはみで
    ることはない。線幅が大き過ぎて枠をはみでるような場合は、枠の中を指定し
    たパターンで塗り潰す(エラーとはならない)。 なお、rv または rh が0の場
    合は、gfra_rec() と同じとなる。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正、rが空)
  
 
 
| gfil_rrc |  
| Fill Round Rectangle |  
| 角丸長方形の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_rrc ( GID gid, RECT r, UW rh, UW rv, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r および rh, rv  で示された角丸長方形を  pat
    で指定したパターン、 angle で指定した回転角度、mode で指定した描画モー
    ドで塗り潰す。rv または rh が0の場合は、gfil_rec() と同じとなる。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不          正、rが空)
  
 
 
楕円(円)の描画関数としては、枠の描画、楕円(円)領域の指定パターンによる塗
り潰し、が用意されている。
楕円(円)の描画は、外接する長方形を指定して行なう。即ち、指定した長方形の
枠に内接する楕円(円)を描画することになる。この場合、長方形の枠と楕円(円)
の枠は接点では重なることになる。また、指定した長方形が正方形の場合は、楕
円でなく円となる。
長方形の左上の点を中心として、反時計方向に任意の角度回転させた傾いた長方
形で定義される楕円の描画も可能である。回転角度は0以上の度単位の非負の数
値で指定し、360の剰余が有効となる。なお、回転した場合、線のパターン、
および塗り潰しのパターン自体は回転しない。
長方形は、top, left, bottom, right の値により指定されるが、top ≧ bottom
またはleft ≧ right  の場合は、 その長方形は「空」 であり、 描画関数では
EG_PAR のエラーとなる。
枠の描画で、太い枠の場合は必ず内側に太くなり決して外側にはみでることはな
い。枠の太さは長方形の枠と重なる部分(水平/垂直軸上の部分)の太さとして定
義される。即ち、上下左右の辺を内側に枠の幅だけ小さくした長方形に対する楕
円(円)の部分をくり貫いた形となる。
また、枠以外の描画では、その対象となる領域は枠を含んだ楕円(円)全体の領域
となる。
図 38 : 楕円(円)の描画
| gfra_ovl |  
| Frame Oval |  
| 楕円(円)の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_ovl ( GID  gid,  RECT r, LATTR attr, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r で示された長方形(正方形)に内接する楕円(円)
    の枠を attr で指定した属性、pat で指定したパターン、angle で指定した回
    転角度、mode で指定した描画モードで描画する。
    
    線幅>1の場合には枠は内側に線幅だけ太くなり、垂直/水平の格子と交わる
    部分の幅が線幅になる。指定した枠の外側にはみでることはない。線幅が大き
    過ぎて枠をはみでるような場合は、 枠の中を指定したパターンで塗り潰す(エ
    ラーとはならない)。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正, rが空)
  
 
 
| gfil_ovl |  
| Fill Oval |  
| 楕円(円)の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_ovl ( GID gid, RECT r, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r で示された長方形(正方形)に内接する楕円(円)
    を、patで指定したパターン、angle で指定した回転角度、mode で指定した描
    画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不          正, rが空)
  
 
 
弧/扇形/弓形の描画関数としては、弧の描画、扇形/弓形の枠の描画、扇形/
弓形領域のパターンによる塗り潰し、が用意されている。
弧の描画は、外接する長方形(r)と開始点(sp)および終了点(ep) を指定して行な
う。即ち、指定した長方形の枠に内接する楕円(円)の開始点から終了点までの弧
を描画することになる。開始点、終了点は弧の線上にある必要はなく、実際には
中心と開始点を結ぶ線から、時計回りで、中心と終了点を結ぶ線までの範囲の弧
の描画を行なう。開始点と終了点が等しい場合は一周しているものと見なすため
楕円(円)となる。
弧の実際の描画方法はインプリメントに依存し特に規定しないが、正確に楕円(円)
枠を切り取った形として描画する方法と、直線と同様に指定した幅を持つ正方形
が移動した軌跡を描く方法が考えられる。どちらの方法によっても、幅が1の場
合は同一図形となり、指定した長方形に対する楕円(円)の枠と一致するが、幅が
2以上の場合には、後者の方法では、全体として右下にずれた形となり楕円(円)
の枠と一致しないことになる。
扇形の描画では、弧の描画に加えて弧の開始点と中心を結ぶ線、および弧の終了
点と中心を結ぶ線を描画したものが枠となり、枠を含んだ内部の領域が扇形の領
域となる。開始点と終了点が等しい場合は中心からの線は描画されず、楕円(円)
となる。
弓形の描画では、弧の描画に加えて弧の両端の点を結ぶ線(弦)を描画したものが
枠となり、枠を含んだ内部の領域が弓形の領域となる。開始点と終了点が等しい
場合は弦は描画されず、楕円(円)となる。
扇形/弓形の枠(特に太い場合)の描画方法は、弧と同様にインプリメントに依存
し特に規定しないが、幅1の枠の内側に太くなり外側にはみ出さない方法と、そ
れぞれ指定された幅の弧と直線の組み合せとして描く方法が考えられる。どちら
の方法によっても、幅が1の場合は同一図形となるが、幅が2以上の場合には、
後者の方法では、全体として右下にずれた形となる。
長方形の左上の点を中心として、反時計方向に任意の角度回転させた傾いた長方
形で定義される楕円弧、扇形、弓形の描画も可能である。回転角度は0以上の度
単位の非負の数値で指定し、360の剰余が有効となる。なお、回転した場合、
線のパターン、および塗り潰しのパターン自体は回転しない。
長方形は、top, left, bottom, right の値により指定されるが、top ≧ bottom
またはleft  ≧  right  の場合は、 その長方形は「空」であり、描画関数では
EG_PAR のエラーとなる。
- 【形式】
 - ERR gdra_arc ( GID gid, RECT r, PNT sp, PNT ep, LATTR attr, PAT  *pat,
            DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r, sp, ep で指定した弧を attr で指定した属性、
    pat  で指定したパターン、angle で指定した回転角度、mode で指定した描画
    モードで描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr,          modeが不正、rが空)
  
 
 
| gfra_sec |  
| Frame Sector |  
| 扇形の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_sec ( GID  gid, RECT r, PNT sp, PNT ep, LATTR attr, PAT *pat,
            DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r, sp, ep で指定した扇形の枠を attr で指定した属性、pat で指定したパターン、angle で指定した回転角度、mode  で指定した描画モードで描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正、rが空)
  
 
 
| gfil_sec |  
| Fill Sector |  
| 扇形の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_sec ( GID gid, RECT r, PNT sp, PNT ep, PAT *pat,  DEG  angle, DCM mode )
 - 【解説】
 - gid  で指定した描画環境で、r, sp, ep で指定した扇形を pat で指定したパターン、angle で指定した回転角度、mode で指定した描画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正、rが空)
  
 
 
| gfra_cho |  
| Frame Chord |  
| 弓形の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_cho ( GID gid, RECT r, PNT sp, PNT ep, LATTR attr, PAT  *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r, sp, ep で指定した弓形の枠を attr で指定し
    た属性、 pat で指定したパターン、angle で指定した回転角度、mode で指定
    した描画モードで描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr,          modeが不正、rが空)
  
 
 
| gfil_cho |  
| Fill Chord |  
| 弓形の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_cho ( GID  gid,  RECT r, PNT sp, PNT ep, PAT *pat, DEG angle, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、r, sp, ep で指定した弓形を pat  で指定したパ
    ターン、angle で指定した回転角度、mode で指定した描画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正、rが空)
  
 
 
多角形の描画関数としては、枠の描画、多角形領域のパターンによる塗り潰し、
が用意されている。また、開いた多角形としての直線列(polyline)の描画も用意
されている。
多角形は、いくつかの点を与えて、それらの点を線で結んで得られる図形であり、
点の配列として以下の構造体により定義される。
/* 多角形 */
#define NP  1       /* ダミー */
struct Polygon {
    UH      round;      /* 角を丸める場合の円の直径 */
    UH      size;       /* 構成する頂点の数 */
    PNT     pt[NP];     /* 構成する頂点の配列(size 個の要素) */
};
typedef Polygon     POLY;   /* 多角形 */
即ち、 pt[0] → pt[1] → pt[2] ... pt[size-2] → pt[size-1] の順番に
頂点を結んでいくことにより直線列が描画され、さらに pt[size-1] →  pt[0]
を結ぶことにより多角形が描画される。 従って、直線列では size>1、多角形
では size>2; でない場合は EG_PAR のエラーとなる。
多角形の頂点の最大数はインプリメントに依存するが、最低でも1000個はサ
ポートするものとする。頂点の数が制限をオーバーした場合、または全体の図形
が、描画環境で定義されている領域より(非常に)大きくて、描画できない場合は
EG_LIMIT のエラーとなり、その場合には、描画動作はいっさい行われない。
round は角を丸める指定であり、0の場合は角を丸めない多角形を意味し、0で
ない場合は、角を丸める場合の円の直径を示す。round が大きすぎて丸めた角の
円弧部分が隣合う頂点で重なってしまうような場合は、エラーとならずに、重な
らないような適当な大きさの円弧により角が丸められて描画される。
閉じた多角形の枠の実際の描画方法はインプリメントに依存し特に規定しないが、
線幅1の枠を指定された太さだけ内側に太らす方法と、単に定義された頂点を順
番に指定された太さの直線で結ぶ方法がある。幅が1の場合は同一図形となるが、
幅が2以上の場合には後者の方法では全体として右下にずれた形となる。また、
頂点や、線の交差する点では、線が2重書きされることがあるため、G_XOR モー
ドでの描画では注意する必要がある。
枠以外の描画では、その描画対象領域は、幅1で描かれた多角形の枠により生ず
る内部閉領域であり、枠自体も含まれる。この場合、ある点Pが多角形の内部に
あるかどうかは以下のように定義される。
  -  点Pが多角形の辺(枠)上にあれば、 点Pは多角形の内部にあると定義する。
  
 - 多角形から十分に離れた任意の外部の点と、 点Pを結ぶ線分が多角形の辺と交差する点の数が奇数であれば、点Pは多角形の内部にあり、 偶数であれば、点Pは多角形の外部にあると定義する。
 
図 39 : 多角形の描画
| gdra_pln |  
| Draw Polyline |  
| 直線列の描画 |  
  | 
- 【形式】
 - ERR gdra_pln ( GID gid, POLY *p, LATTR attr, PAT *pat, DCM mode )
 - 【解説】
 - gid  で指定した描画環境で、 p で指定した開いた多角形の枠、即ち直線列を
    attr で指定した属性、pat で指定したパターン、mode で指定した描画モード
    で描画する。指定した多角形の最後の点と最初の点は結ばれずに開いた形とな
    る。
    
    線幅>1の場合には、線幅の太さの直線を連続して書いたものになる。線幅が
    大きすぎて、全体の図形より大きくなってしまう場合にも、単に太い直線で枠
    を描画する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(p, pat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。(頂点の数が制限以上)
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正、poly.size≦1)
  
 
 
| gfra_pol |  
| Frame Polygon |  
| 多角形の枠の描画 |  
  | 
- 【形式】
 - ERR gfra_pol ( GID gid, POLY *p, LATTR attr, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、p で指定した多角形の枠を attr で指定した属性、
    pat で指定したパターン、mode で指定した描画モードで描画する。
    
    線幅>1の場合の描画方法はインプリメントに依存する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(p, pat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 - システムの制限を越えた。(頂点の数が制限以上)
    
 - EG_NOSPC
    
 - システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正、poly.size≦2)
  
 
 
| gfil_pol |  
| Fill Polygon |  
| 多角形の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_pol ( GID gid, POLY *p, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、p で指定した多角形を、pat で指定したパターン、mode で指定した描画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(p, pat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 - システムの制限を越えた。(頂点の数が制限以上)
    
 - EG_NOSPC
    
 - システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正、poly.size≦ 2 )
  
 
 
| gfil_gen |  
| Fill Generic Region |  
| 任意領域の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_gen ( GID gid, GRGN *rgn, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、rgn で指定した任意領域を、pat で指定したパターン、mode で指定した描画モードで塗り潰す。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rgn,  pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 -  EG_LIMIT
    
 - システムの制限を越えた。(rgn の定義が制限を越えた)
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,rgnの内容,mode が不正)
  
 
 
| gfil_rgn |  
| Fill Region |  
| 任意閉領域の塗り潰し |  
  | 
- 【形式】
 - Bool gfil_rgn ( GID gid, PIXVAL val, PNT p, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、p で指定した点を含む閉領域を、pat で指定したパターン、mode で指定した描画モードで塗り潰す。
    
    塗り潰す閉領域は、ビットマップ境界(bounds)内で、val の値により以下のように決められる。
    
    
     - val ≧ 0 の時:
     
 - val で指定した値と異なるピクセル値を持つピクセルの、点 p  を含
        む閉領域を塗り潰す。即ち、val で指定したピクセル値を境界点のピ
        クセル値とする。
     
 - val < 0 の時:
     
 - p で指定した点のピクセル値と同じピクセル値を持つピクセルの、点
         p を含む閉領域を塗り潰す。即ち、点 p のピクセル値以外のすべて
        を境界点のピクセル値とする。
    
 
    
    指定した点 p がクリッピングにより、描画されない位置にある場合は、 塗り
    潰しは一切行なわれず関数値として "1" が戻り、塗り潰しが行なわ
    れた場合は関数値 "0" が戻る。
 - 【リターン値】
 - ≧0    : 正常終了(関数値は描画状態(0:行なわれた、1:行なわれなかった))
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正)
  
 
 
| gdra_spl |  
| Draw Spline |  
| スプライン曲線の描画 |  
  | 
- 【形式】
 - ERR gdra_spl ( GID gid, UW np, PNT *pt, LATTR attr, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、np 個の pt  で指定した点による3次のB−スプ
    ライン曲線を描画する。 attr  で指定した属性、 pat で指定したパターン、
    mode で指定した描画モードが使用される。
    
    pt は np個の要素から構成される点の配列へのポインタである。pt[0] !=  pt
    [np-1] の場合は開曲線の描画であり、pt[0]==pt[np-1] の場合は、pt[0]〜pt
    [np-2] の点を結ぶ閉曲線の描画となる。
    
    np≧3(閉曲線の場合は4)の場合に曲線が描画され、それ以下の場合は、点ま
    たは直線が描画される。
    
    B-スプライン曲線であるため、描画される曲線は一般に指定した点を通らな
    い。 但し、開曲線の場合は、曲線の両端は指定した端点(pt[0] と pt[np-1])
    に一致するように描画される。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pt,pat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。(np が制限を越えた)
    
 - EG_NOSPC
    
 - システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。 (patの内容, attr, modeが不正, np=0)
  
 
 
| gfil_spl |  
| Fill Spline |  
| 閉スプライン曲線領域の塗り潰し |  
  | 
- 【形式】
 - ERR gfil_spl ( GID gid, UW np, PNT *pt, PAT *pat, DCM mode )
 - 【解説】
 - gid で指定した描画環境で、np 個の pt  で指定した点による3次の閉じたB
    -スプライン曲線で囲まれた領域を、 pat で指定したパターン、mode で指定
    した描画モードで塗り潰す。
    
    pt は np個の要素から構成される点の配列へのポインタであり、pt[0]〜pt[np
    -1] の点を結ぶ閉曲線の描画となる。
    
    np≧3の場合に曲線が描画され、それ以下の場合は、点または直線が描画される。
    
    B-スプライン曲線であるため、描画される曲線は一般に指定した点を通らな
    い。但し曲線の両端は指定した端点(pt[0]) に一致するように描画される。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pt,pat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。(np が制限を越えた)
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容,modeが不正, np=0)
  
 
 
ビットマップの操作用の関数としては、以下の図に示すものが用意されている。
図 40 : ビットマップの操作関数
gcop_bmp(), gsav_bmp(), grst_bmp (), grst_mbm() では、指定した描画モードに従って、デ
ータ転送を行なうが、以下の変換指定を演算モードの追加パラメータとして指定
することができる。
  - G_CVFORM: ビットマップ形式変換
  
 - 
      
        - ソースとディスティネーションのビットマップの形式(プレーン数、
        ピクセルビット数)が異なる場合は変換を行なう。
        
 -  この指定が無い場合、 ソースとディスティネーションのビットマッ
        プの形式(プレーン数、ピクセルビット数)が異なる場合は  EG_FORM
        のエラーとなる。
        
 -  変換は、 変換後の双方の下位Nビットのピクセル値が等しくなるよ
        うに行なわれる(ここで、 Nは   ソースとディスティネーションの
        depth の最小値を意味する)。
      
 
   - G_CVCOLOR: カラー変換
  
 - 
      
        -  ソースとディスティネーションのカラー表現形式が異なる場合は、
        変換を行なう。 どちらか一方のカラー表現方式が未定義の場合は変
        換は行なわれない。
        
 -  カラー変換はソースのピクセル値を絶対カラーに変換し、 その絶対
        カラーに最も近い絶対カラーに対応するディスティネーションのピ
        クセル値を求めることにより行なわれる。
        
 -  ディスティネーションのカラー表現形式がカラーマップ形式の場合
        は、 その時点のカラーマップの内容を使用し、カラーマップの内容
        の自動変更は行なわない。
      
 
 
| gcop_bmp |  
| Copy Bitmap |  
| ビットマップ間のデータ転送 |  
  | 
- 【形式】
 - ERR gcop_bmp ( GID srcid, RECT *sr, GID dstid, RECT *dr,  GRGN  *mask,
            DCM mode )
 - 【解説】
 - srcid  で指定した描画環境のビットマップ中の sr で指定した領域を、dstid
    で指定した描画環境のビットマップ中の dr で指定した領域に mode で指定し
    た演算により転送を行なう。dstid=srcid としても構わない。
    
dr と sr の大きさが異なる場合は、拡大/縮小が行なわれ、dr=NULL の場合
    は、dr=sr と見なされる。
    dstid の描画環境で定義されているクリップ領域が適用され、さらに mask が
    NULL でない場合は、mask で定義された領域に含まれる部分のみが転送される。
    mask は、dstid の座標系で定義される。
    srcid の描画環境のクリップ領域は無視され、sr と ビットマップの  bounds
    の共通部分が転送される。
    mode は、描画モード指定に以下の変換指定を追加したものとなる。
  
    - G_CVFORM
        
 - ビットマップ形式の変換
    
 - G_CVCOLOR
        
 - カラー変換
  
 
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(sr, dr,mask)のメモリのアクセスは許されていない。
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_NOSPT
    
 -  現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。(変換をサポートしていないカラー形式/ビットマップ形式である。)
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(maskの内容,mode が不正, sr,drが空)
  
 
 
| gsav_bmp |  
| Save Bitmap |  
| ビットマップの保存 |  
  | 
- 【形式】
 - ERR gsav_bmp ( GID gid, RECT *gr, BMP *bmap, RECT *br, GRGN *mask, DCM
            mode )
 - 【解説】
 - gid で指定した描画環境のビットマップ中の gr で指定した領域を、bmap  で
    指定した独立したビットマップ中の br で指定した領域に mode で指定した演
    算により転送を行なう。
    
gr と br の大きさが異なる場合は、拡大/縮小が行なわれ、br=NULL の場合
    は、br=gr と見なされる。
    mask が NULL でない場合は、mask で定義された領域に含まれる部分のみが転
    送される。mask は、bmap の座標系で定義される。
    gid の描画環境のクリップ領域は無視され、gr と ビットマップの bounds の
    共通部分が転送される。
    bmap の baseaddr が NULL の場合は、そのプレーンは転送されない。
    mode は、描画モード指定に以下の変換指定を追加したものとなる。
  
    - G_CVFORM
        
 - ビットマップ形式の変換
    
 - G_CVCOLOR
        
 - カラー変換
  
 
    カラー変換に関しては、描画環境に色変換用カラー情報が設定されている場合のみ有効で、色変換用カラー情報を転送先ビットマップのカラー情報として扱う。
    色変換用カラー情報と転送先ビットマップ形式に矛盾がある場合、EG_ENV のエラーを戻す。
    この関数は、 gcop_bmp() のディスティネーションを独立したビットマップとしたものである。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(gr,bmap,br,mask)のメモリのアクセスは許      されていない。
    
 - EG_ENV
    
 -  色変換用カラー情報とビットマップの形式に矛盾がある。        (G_CVCOLOR 指定時のみ)
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。
    
 - EG_NOSPC
    
 - システムのメモリが不足した。
    
 - EG_NOSPT
    
 - 現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。(変換をサポートしていないビットマップ形式である。)
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(bmapの内容, maskの内容,modeが不正, gr,brが空)
 
 
| grst_bmp |  
| Restore Bitmap |  
| ビットマップの回復 |  
  | 
- 【形式】
 - ERR grst_bmp ( GID gid, RECT *gr, BMP *bmap, RECT *br, GRGN *mask, DCM
            mode )
 - 【解説】
 - bmap  で指定した独立したビットマップ中の br で指定した領域を、gid で指定した描画環境のビットマップ中の gr で指定した領域に mode で指定した演算により転送を行なう。
    
br と gr の大きさが異なる場合は、拡大/縮小が行なわれ、gr=NULL の場合は、gr=br と見なされる。
    gid の描画環境で定義されているクリップ領域が適用され、さらに  mask  が NULL でない場合は、mask で定義された領域に含まれる部分のみが転送される。mask は、gid の座標系で定義される。
    br   と  bmap  のビットマップの  bounds  の共通部分が転送され、 bmap-> baseaddr が NULL の場合は、そのプレーンは転送されない。
    mode は、描画モード指定に以下の変換指定を追加したものとなる。
  - G_CVFORM
      
 - ビットマップ形式の変換
  
 - G_CVCOLOR
      
 - カラー変換
 
  カラー変換に関しては、描画環境に色変換用カラー情報が設定されている場合のみ有効で、色変換用カラー情報を転送元ビットマップのカラー情報として扱う。
    色変換用カラー情報と転送先ビットマップ形式に矛盾がある場合、EG_ENV のエラーを戻す。
  この関数は、gcop_bmp() のソースを独立したビットマップとしたものである。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(gr,bmap,br,mask)のメモリのアクセスは許されていない。
    
 - EG_ENV
    
 -  色変換用カラー情報とビットマップの形式に矛盾がある。(G_CVCOLOR 指定時のみ)
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_NOSPT
    
 - 現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。(変換をサポートしていないビットマップ形式である。)
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(bmapの内容, maskの内容,modeが不正, gr,brが空)
  
 
 
| grst_mbm |  
| Restore Masked Bitmap |  
| ビットマップの回復 |  
  | 
- 【形式】
 - ERR grst_mbm ( GID gid, RECT *gr, BMP *bmap, RECT *br, UB *mask, DCM mode )
 - 【解説】
 - bmap で指定した独立したビットマップ中の br で指定した領域を、gid で指
    定した描画環境のビットマップ中の gr で指定した領域に mode で指定した演
    算により転送を行なう。
    
br と gr の大きさが異なる場合は、拡大/縮小が行なわれ、gr=NULL の場合
    は、gr=br と見なされる。
    gid の描画環境で定義されているクリップ領域が適用され、さらに  mask  が
    NULL でない場合は、mask で定義された領域に含まれる部分のみが転送される。
    mask は、br で示された領域に対応する pixbits=0x0101のビットマップ
    であり、マスクイメージの1の部分が実際に転送されることになる。
    以下のサイズの領域のビットマップイメージが設定されていなければならない。
((((br.c.right - vr.c.left)+15)/16) * 2) * (br.c.bottom - br.c.top)
    br   と  bmap  のビットマップの  bounds  の共通部分が転送され、 
    bmap->baseaddr が NULL の場合は、そのプレーンは転送されない。
    mode は、描画モード指定に以下の変換指定を追加したものとなる。
  - G_CVFORM
      
 - ビットマップ形式の変換
  
 - G_CVCOLOR
      
 - カラー変換
 
    カラー変換に関しては、描画環境に色変換用カラー情報が設定されている場合のみ
    有効で、色変換用カラー情報を転送元ビットマップのカラー情報として扱う。
    色変換用カラー情報と転送先ビットマップ形式に矛盾がある場合、
    EG_ENV のエラーを戻す。
    この関数は、grst_bmp() のマスクをビットマップ表現にしたものである。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(gr,bmap,br,mask)のメモリのアクセスは許されていない。
    
 - EG_ENV
    
 -  色変換用カラー情報とビットマップの形式に矛盾がある。(G_CVCOLOR 指定時のみ)
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_LIMIT
    
 -  システムの制限を越えた。
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_NOSPT
    
 -  現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。(変換をサポートしていないビットマップ形式である。)
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(bmapの内容, maskの内容,modeが不正, gr,brが空)
  
 
 
| grot_bmp |  
| Rotate Bitmap |  
| ビットマップの回転 |  
  | 
- 【形式】
 - ERR grot_bmp ( GID  srcid,  GID  dstid,  RECT *rp, PNT *dp, DEG angle,
            GRGN *mask, DCM mode )
 - 【解説】
 - srcid で指定した描画環境の rp で指定した長方形の内容を回転し、dstid で
    指定した描画環境の dp で指定した点を左上の点とする長方形領域に mode で
    指定した演算により転送する。dp=NULL の場合は、rp の左上の点と同じとみ
    なされる。
    
srcid と dstid のビットマップの構造が同一でない場合は EG_FORM のエラー
    となる。なお、srcid での rp の領域と dstid  での転送先領域のビットマッ
    プは重なっても良い。
    dstid の描画環境で定義されているクリップ領域が適用され、さらに mask が
    NULL でない場合は、mask で定義された領域に含まれる部分のみが転送される。
    mask  は、dstid の座標系で定義される。srcid の描画環境のクリップ領域は
    適用されない。
    angle により反時計回りの回転角度(0〜)を指定する。実際は360の剰余の
    値が有効となり、0、90、180、270 以外の回転角度のサポートはインプリメント
    に依存する。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rp,dp,mask) のメモリのアクセスは許されていない。
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPC
    
 - システムのメモリが不足した。
    
 - EG_NOSPT
    
 -  現在のインプリメントではサポートしていない。(angle)
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。(maskの内容,modeが不正, angle<0, rpが空)
  
 
 
| gscr_rec |  
| Scroll Rectangle |  
| 長方形領域のスクロール |  
  | 
- 【形式】
 - W gscr_rec ( GID gid, RECT r, W dh, W dv RLIST *rlp, PAT *pat )
 - 【解説】
 - gid で指定した描画環境で、r で指定した領域を dh, dv だけスクロール移動し、発生した隙間の部分を指定したパターンで塗りつぶす。前置長方形リストを含めたすべてのクリッピングが適用される。前置長方形リストによりオーバーラップされていた部分がでてきた場合は、その部分も指定したパターンで塗りつぶされる。
関数値として、パターンで塗りつぶされた部分の矩形領域の数が戻り、rlp が NULL でない場合は、その矩形領域のリストが設定される。rlpの要素が不足する場合は、rlpの要素分のみ設定される。
rlpの各要素は、水平線分解された矩形であり、垂直座標値の小さい順、同一垂直座標値の場合は水平座標値の小さい順に並べられる。
pat=NULLの場合は塗りつぶしは行わないが、矩形リストはrlpに設定される。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rlp,pat)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPC
    
 -  システムのメモリが不足した。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(patの内容が不正、rが空)
  
 
 
| gsiz_cbm |  
| Get Compression Size |  
| 圧縮ビットマップのサイズ計算 |  
  | 
- 【形式】
 - ERR gsiz_cbm ( GID gid, RECT *rp, W compac, W *size )
 - 【解説】
 - gid で指定した描画環境内の rp で指定した長方形領域の内容を、compac  で
    指定した圧縮方法で圧縮した場合の各プレーン毎のデータのバイトサイズを
    size で指定した領域に格納する。
    size  は、プレーン数個の W 配列へのポインタであり、size[0] にプレーン#
    0の圧縮後データのバイトサイズ、size[1]  にプレーン#1の圧縮後データの
    バイトサイズが戻されることになる。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rp, size)のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPT
    
 - 現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。(compacが不正, rpが空)
  
 
 
| gcom_bmp |  
| Compress Bitmap |  
| ビットマップの圧縮 |  
  | 
- 【形式】
 - Bool gcom_bmp ( GID gid, RECT *rp, CBMP *cbmp, W *stat )
 - 【解説】
 - gid で指定した描画環境の rp で指定した長方形領域のイメージを圧縮して、cbmp で指定した圧縮ビットマップとする。拡大/縮小は行なわれない。
    
cbmp->compac には圧縮方法を、cbmp->bmp.baseaddr[] には圧縮イメージの格
    納領域の先頭アドレスをあらかじめ設定しておかなくてはいけない。格納領域
    の先頭には、 その領域の全体のバイトサイズを W size として設定してお
    く必要がある。cbmp の他の要素は、自動的に以下に示す値に設定されるので、
    特に設定しておく必要はない。
    
      - cbmp->compac
          
 - 実行前に圧縮方法を設定しておく。
      
 - bmap.planes
          
 - 実行後に gid と同じ値が設定される。
      
 - bmap.pixbits
          
 - 実行後に gid と同じ値が設定される。
      
 - bmap.rowbytes
          
 - 実行後に r を含む最小の値が設定される。
      
 - bmap.bounds
          
 - 実行後に r と同じ値が設定される。
      
 - bmap.baseaddr[]
          
 - 実行前に格納アドレスを設定しておく。
    
 
    描画環境の描画ピクセルマスクは適用されず、描画環境のビットマップの全プ
    レーンがデータ圧縮の対象となるが、cbmp->bmp.baseaddr[] が NULL  の場合
    は、そのプレーンは対象とならない。
    プレーンの圧縮イメージが、設定バイトサイズ以内の場合は、実際に圧縮した
    イメージのバイトサイズが、 イメージ領域の先頭に入り、stat の対応するプ
    レーンのビット(LSB がプレーン#0に対応する)は0にセットされる。 プレー
    ンの圧縮イメージが、 設定バイトサイズを越える場合は、stat の対応するプ
    レーンのビットは1にセットされる。この場合イメージ領域の内容は保証され
    ないが設定したサイズを越えて書かれることはない。
    cbmp->bmp.baseaddr[] = -1の場合は、そのビットマップ領域は、直前のプレ
    ーンの領域の直後に取ることを意味し、実行後に自動的にそのアドレスが設定
    され、対応する stat のビットは0にセットされる。領域が不足した場合は、
    実行後も−1のままとなり、対応する stat のビットは1にセットされる。
図 41 : ビットマップの圧縮
    存在しないプレーン、または cbmp->bmp.baseaddr[]=NULL のプレーンに対応
    する stat のビットは常に0にセットされる。
    すべてのプレーンが正しく圧縮された場合、即ち  stat=0の場合は関数値と
    して"0"が戻り、1つ以上のプレーンの領域が不足した場合、即ち、stat≠0
    の場合は関数値として"1"が戻る。
    なお、 gid  で指定した描画環境のビットマップの領域と、cbmp->baseaddr[]
    で指定した領域が重なる場合の動作は保証されない。
 - 【リターン値】
 - ≧0    : 正常終了(関数値は(0:正常、1:領域不足))
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rp,cbmp,stat) のメモリのアクセスは許されていない。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPT
    
 -  現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。
    
 - EG_PAR
    
 -  パラメータが不正、または範囲外である。 (rp  が空,  cbmp-> compacが不正)
  
 
 
| gunc_bmp |  
| Uncompress Bitmap |  
| 圧縮ビットマップの復元 |  
  | 
- 【形式】
 - ERR gunc_bmp ( GID gid, RECT *dr, CBMP *cbmp, RECT *sr, DCM mode )
 - 【解説】
 - cbmp で指定した圧縮ビットマップの sr で指定した長方形領域の内容を、gid
    で指定した描画環境の dr で指定した長方形領域に復元しながら mode で指定
    した演算により転送を行なう。
    
sr と dr の大きさが異なる場合は、拡大/縮小が行なわれ、dr=NULL の場合
    は、dr=sr と見なされる。
    gid の描画環境で定義されているクリップ領域、描画ピクセルマスクは有効となる。
    描画環境のビットマップと、圧縮ビットマップの形式は、同一でなくてはいけ
    ない。また、cbmp->bmp.baseaddr[]が NULL の場合は、そのプレーンに対して
    のデータ復元は行なわれない。
    なお、gid で指定した描画環境のビットマップの領域と cbmp->baseaddr[] で
    指定した領域が重なる場合の動作は保証されない。
 - 【リターン値】
 - =0(E_OK)  : 正常終了
    <0        : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(dr, cbmp,sr)のメモリのアクセスは許されていない。
    
 - EG_FORM
    
 -  ビットマップの形式が異なる。
    
 - EG_GID
    
 -  指定した描画環境IDが不正(存在しない)。
    
 - EG_NOSPT
    
 -  現在のインプリメントではサポートしていない、 もしくは予約されているパラメータ値である。
    
 - EG_PAR
    
 -  パラメータが不正、 または範囲外である。(cbmpの内容が不正, sr,drが空)
  
 
 
ピッキング処理関数は、指定した点が、指定した図形の描画領域に含まれるか否
かをチェックするための関数であり、個々の図形に対応した関数が用意される。
ピッキング処理関数では、基本的には、同一のパラメータで実際に図形描画を行
なった場合に、指定した点が含まれているか否かを厳密にチェックするものであ
るが、描画環境の対象デバイスや、インプリメントによっては、実際に描画した
場合と僅かに結果が異なる場合もある。
この関数群は描画環境とは無関係の独立した関数である。
図形のパラメータが不正で描画できないような図形の場合は、結果として含まれ
ていないことを示す値"0"を戻し、エラーは発生しない。
| gpic_lin |  
| Pick Line |  
| 直線のピッキング |  
  | 
- 【形式】
 - Bool gpic_lin ( PNT pt, PNT p0, PNT p1, UW width )
 - 【解説】
 - pt で指定した点が、p0 から p1 へ太さ width の直線に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_rec |  
| PicK Rectangle |  
| 長方形のピッキング |  
  | 
- 【形式】
 - Bool gpic_rec ( PNT pt, RECT r, DEG angle, UW width )
 - 【解説】
 - pt で指定した点が、r で指定した、線幅 width、回転角度 angle の長方形に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
    
    width が大きすぎて長方形の枠をはみ出るような場合、または width=0の場
    合は、長方形の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_rrc |  
| Pick Round Rectangle |  
| 角丸長方形のピッキング |  
  | 
- 【形式】
 - Bool gpic_rrc ( PNT pt, RECT r, UW rh, UW rv, DEG angle, UW width )
 - 【解説】
 - pt  で指定した点が、 r  および rv, rh で指定した、線幅 width、回転角度
    angle の角丸長方形に含まれているか否かをチェックし、含まれている場合は
    関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
    
    width が大きすぎて角丸長方形の枠をはみ出るような場合、または width=0
    の場合は、角丸長方形の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_ovl |  
| Pick Oval |  
| 楕円(円)のピッキング |  
  | 
- 【形式】
 - Bool gpic_ovl ( PNT pt, RECT r, DEG angle, UW width )
 - 【解説】
 - pt で指定した点が、r で指定した、線幅 width、回転角度 angle の楕円(円)
    に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、
    含まれていない場合は関数値 "0" を戻す。
    
    width  が大きすぎて楕円(円)の枠をはみ出るような場合、または width =0
    の場合は、楕円(円)の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_arc |  
| Pick Arc |  
| 弧のピッキング |  
  | 
- 【形式】
 - Bool gpic_arc ( PNT pt, RECT r, PNT sp, PNT ep, DEG angle, UW width )
 - 【解説】
 - pt  で指定した点が、 r  および sp, ep で指定した、線幅 width、回転角度angle の弧に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_sec |  
| Pick Sector |  
| 扇形のピッキング |  
  | 
- 【形式】
 - Bool gpic_sec ( PNT pt, RECT r, PNT sp, PNT ep, DEG angle, UW width )
 - 【解説】
 - pt  で指定した点が、 r  および sp, ep で指定した、線幅 width、回転角度 angle の扇形に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
    
    width=0の場合は、扇形の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_cho |  
| Pick Chord |  
| 弓形のピッキング |  
  | 
- 【形式】
 - Bool gpic_cho ( PNT pt, RECT r, PNT sp, PNT ep, DEG angle, UW width )
 - 【解説】
 - pt  で指定した点が、 r  および sp, ep で指定した、線幅 width、回転角度
    angle の弓形に含まれているか否かをチェックし、含まれている場合は関数値 "
    1" を戻し、含まれていない場合は関数値 "0" を戻す。
    
    width=0の場合は、弓形の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (発生しない)
 - 【エラーコード】
 - 発生しない。
 
| gpic_pln |  
| Pick Polyline |  
| 直線列のピッキング |  
  | 
- 【形式】
 - Bool gpic_pln ( PNT pt, POLY *poly, UW width )
 - 【解説】
 - pt  で指定した点が、*poly で示された開いた多角形、即ち直線列に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(poly) のメモリのアクセスは許されていない。
  
 
 
| gpic_pol |  
| Pick Polygon |  
| 多角形のピッキング |  
  | 
- 【形式】
 - Bool gpic_pol ( PNT pt, POLY *poly, UW width )
 - 【解説】
 - pt で指定した点が、*poly  で示された多角形に含まれているか否かを
    チェックし、含まれている場合は関数値 "1" を戻し、
    含まれていない場合は関数値 "0" を戻す。
    
    width =0の場合は、多角形の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(poly) のメモリのアクセスは許されていない。
  
 
 
| gpic_gen |  
| Pick Generic Region |  
| 任意図形のピッキング |  
  | 
- 【形式】
 - Bool gpic_gen ( PNT pt, GRGN *rgn )
 - 【解説】
 - pt で指定した点が、*rgn で示された任意図形に含まれているか否かをチェックし、含まれている場合は関数値 "1" を戻し、含まれていない場合は関数値 "0" を戻す。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(rgn)のメモリのアクセスは許されていない。
  
 
 
| gpic_spl |  
| Pick Spline |  
| スプライン曲線のピッキング |  
  | 
- 【形式】
 - Bool gpic_spl ( PNT p, UW np, PNT *pt, UW width )
 - 【解説】
 - pt で指定した点が、np, pt で示された太さ width の gdra_spl()  で描画した曲線に含まれているか否かをチェックし、 含まれている場合は関数値 "1"を戻し、含まれていない場合は関数値 "0" を戻す。
width=0で、閉じた曲線の場合は、 曲線の内部に含まれているか否かをチェックする。
 - 【リターン値】
 - =1    :正常終了(含まれている)
    =0    :正常終了(含まれていない)
    <0    : エラー  (関数値はエラーコード)
 - 【エラーコード】
 - 
  
    - EG_ADR
    
 -  指定されたアドレス(pt)のメモリのアクセスは許されていない。
  
 
 
この章の目次にもどる
前頁:2.3 基本関数にもどる
次頁:2.5 文字(列)描画関数にすすむ