サブルーチンの説明 : コントロールルーチン

SWDOPN/SWDCLS

  1. 機能
    デバイスをオープン/クローズする.

  2. 呼び出し方法
    CALL SWDOPN
    CALL SWDCLS

  3. 引数の説明
    なし.

  4. 備考
    1. SWpSET(SWpSTX), SWCSET(SWCSTX) をのぞく すべてのSWPACKルーチンはこの2つのルーチンの間で呼ばれる.
    2. 座標系の回転は STPACK が行う.
    3. SWDOPNを呼ぶ前に SWpGET/SWpSETが管理する 内部変数'IWS'を設定しておかなければならない. この設定はふつう SGOPN の中でおこなわれる.

SWPOPN/SWPCLS

  1. 機能
    ページををオープン/クローズする.

  2. 呼び出し方法
    CALL SWPOPN
    CALL SWPCLS

  3. 引数の説明
    なし.

  4. 備考
    1. CALCOMP系プロットルーチンの様にページの概念のない 処理系では,原点移動などにより仮想的にページの概念が 導入される.
    2. ページのクローズとオープンが "改ページ"として常にセットで行われる様な処理系では, どちらかのルーチンがDUMMYになる場合もある.

SWOOPN/SWOCLS

  1. 機能
    オブジェクトをオープン/クローズする.

  2. 呼び出し方法
    CALL SWOOPN(COBJ,COMM)
    CALL SWOCLS(COBJ)

  3. 引数の説明
                                         
      COBJ   (C*(*))   オブジェクト名.  
                                         
      COMM   (C*(*))   コメント.        
                                         
    

  4. 備考
    1. オブジェクトとは,同じ属性を持つ一まとまりの図形要素である.
    2. これらのルーチンは, SZPACK の上位インターフェイスルーチンの オープン/クローズのタイミングで呼ばれる.
    3. オブジェクトの概念のないデバイスではダミールーチンとなる.

サブルーチンの説明 : 描画ルーチン

SWSWDI/SWSCLI

  1. 機能
    描く線分の属性(線幅と色)を指定する.

  2. 呼び出し方法
    CALL SWSWDI(IWDIDX)
    CALL SWSCLI(ICLIDX)

  3. 引数の説明
                                                                            
      IWDIDX   (I)   線分の太さに関するインデクス. SGPACK (                
                     [here] 節)参照.                                      
                                                                            
      ICLIDX   (I)   線分の色に関するインデクス. SGPACK (                  
                     [here] 節)参照.                                      
                                                                            
    

  4. 備考
    1. これらのルーチンは実際に描画するルーチンの前に 呼ばなければならない.
    2. IWDIDX, ICLIDX が0の時は,1と見なして処理する.
    3. GRPH1で指定できる線幅は0から9までであるが, 色が指定できないデバイスの場合には, 線色のインデクスICLIDXを線幅のインデクスIWDIDX に読み変えてSWPACKに渡す場合があるので, このようなシステムにおいてはIWDIDXが99までの値をとる.
    4. 実際に線がどのような色になるか, また,どの程度の太さになるかは,システムに依存する.

SWGOPN/SWGCLS

  1. 機能
    線分をオープン/クローズする.

  2. 呼び出し方法
    CALL SWGOPN
    CALL SWGCLS

  3. 引数の説明
    なし.

  4. 備考
    1. CALCOMP 系の処理系では, どちらもDUMMYルーチンとなる.

SWGMOV/SWGPLT

  1. 機能
    ペンアップ/ペンダウンで移動する.

  2. 呼び出し方法
    CALL SWGMOV(WX,WY)
    CALL SWGPLT(WX,WY)

  3. 引数の説明
                                                 
      WX,     (R)   ワークステーション座標.(i)  
      WY                                         
                                                 
    

  4. 備考
    1. プリミティブの中にこの2つのルーチンは任意の回数 出現するが,プリミティブがオープンされた直後に呼ばれる ルーチンは SWGMOV でなければならない. SWGOPNの直後にSWGPLTを呼んだ場合の動作は 保証されない.

SWGTON

  1. 機能
    ハードフィルを行う.

  2. 呼び出し方法
    CALL SWGTON(NP,WPX,WPY,ITPAT)

  3. 引数の説明
                                                     
      NP     (I)   配列WPX,WPYの大きさ. (i)         
                                                     
      WPX    (R)   塗りつぶす領域の境界のX座標.(i)  
                                                     
      WPY    (R)   塗りつぶす領域の境界のY座標.(i)  
                                                     
      IPAT   (I)   塗りつぶしパターン番号. (i)      
                                                     
    

  4. 備考
    1. パターン番号は5桁の番号で, 上位2桁が色, 3桁目がパターンの種類(点または線), 4桁目が点または線の太さ,最下位桁が点または線の密度 に対応する.

SWIOPN/SWIDAT/SWICLS

  1. 機能
    イメージデータを描画する.

  2. 呼び出し方法
    CALL SWIOPN(IWX,IWY,IMW,IMH)
    CALL SWIDAT(IMAGE,NLEN)
    CALL SWICLS

  3. 引数の説明
                                                 
      IWX,      (I)   イメージの左上の座標.(i)  
      IWY                                        
                                                 
      IMW,      (I)   イメージの大きさ. (i)     
      IMH                                        
                                                 
      IMAGE     (I)   イメージデータ. (i)       
                                                 
      NLEN      (I)   イメージデータの長さ.(i)  
                                                 
    

  4. 備考
    1. イメージの位置,および大きさはイメージ座標で指定する.
    2. イメージデータは色番号(パレット番号)を4バイトの整数 で指定する.
    3. SWIOPNSWICLS の間で,SWIDAT を 複数回呼ぶことができる. すなわち,データを分割して指定することができる.
    4. 一回に指定するデータの長さは任意であるが, SWICLS が呼ばれるまでに SWIOPN で指定した イメージの大きさ分だけのデータを指定しなければならない. それより,多いか少い場合の動作は不定である.

サブルーチンの説明 : マウス

SWQPNT

  1. 機能
    マウスポイントの位置を返す.

  2. 呼び出し方法
    CALL SWQPNT(WX,WY,MB)

  3. 引数の説明
                                               
      WX,     (R)   マウスポイントの位置.(o)  
      WY                                       
                                               
      MB      (I)   ボタンの種類.(o)          
                                               
    

  4. 備考
    1. X ウインドウシステムにおいて MB としては 次のような値を返す. Button1 が押されたら1, Button2 が押されたら2, Button3 が押されたら3, その他の場合は0を返す.

サブルーチンの説明 : 座標変換

SWFINT/SWIINT

  1. 機能
    ワークステーション座標とイメージ座標の変換をする.

  2. 呼び出し方法
    CALL SWFINT(WX,WY,IWX,IWY)
    CALL SWIINT(IWX,IWY,WX,WY)

  3. 引数の説明
                                                     
      WX,WY     (R)   ワークステーション座標.(i/o)  
                                                     
      IWX,      (I)   イメージ座標.(i/o)            
      IWY                                            
                                                     
    

  4. 備考
    1. なし.

サブルーチンの説明 : 問い合わせルーチン

SWQWDC/SWQCLC/SWQTNC/SWQIMC/SWQPTC

  1. 機能
    SWPACKのルーチンが持つ能力を問い合わせる.

  2. 呼び出し方法
    CALL SWQWDC(LWD)
    CALL SWQCLC(LCL)
    CALL SWQTNC(LTN)
    CALL SWQIMC(LIM)
    CALL SWQPTC(LPT)

  3. 引数の説明
                                                                       
      LWD   (L)   線幅を変える能力がある時 .TRUE. (o)                  
                                                                       
      LCL   (L)   線色を変える能力がある時 .TRUE. (o)                  
                                                                       
      LTN   (L)   ハードフィルを行う能力がある時 .TRUE. (o)            
                                                                       
      LIM   (L)   イメージ描画を行う能力がある時 .TRUE. (o)            
                                                                       
      LIM   (L)   マウスポイントの位置を調べる能力がある時 .TRUE. (o)  
                                                                       
    

  4. 備考
    1. 線幅または線色が変化できない機種では, 特に指定されない限り上位ルーチンが,線分属性の情報を その機種で区別可能な属性に変換する.
    2. ハードフィルができない機種では, 上位ルーチンがソフトフィルを行う.

SWQFNM

  1. 機能
    各種データベースファイル名を得る.

  2. 呼び出し方法
    CALL SWQFNM(CPARA,CFNAME)

  3. 引数の説明
                                                                            
      CPARA    (C*(*))   データベース名を示す内部変数の 名前(               
                         [here] 節参照).                                   
                                                                            
      CFNAME   (C*(*))   データベースファイル名.                           
                                                                            
    

  4. 備考
    1. どのようなルールでファイル名を探すかはシステムに依存する.
    2. 標準ライブラリではまずカレントディレクトリを探す. 次に GLCGET/GLCSETが管理する内部変数 'DUPATH'のさすディレクトリを探す. 最後に内部変数'DSPATH'のさすディレクトリを探す.

SWQRCT

  1. 機能
    最大作画領域を通知する.

  2. 呼び出し方法
    CALL SWQRCT(WXMIN,WXMAX,WYMIN,WYMAX,FACT)

  3. 引数の説明
                                                  
      WXMIN   (R)   作画領域の左下のX座標. (o)   
                                                  
      WXMAX   (R)   作画領域の右上のX座標. (o)   
                                                  
      WYMIN   (R)   作画領域の左下のY座標. (o)   
                                                  
      WYMAX   (R)   作画領域の右上のY座標. (o)   
                                                  
      FACT    (R)   座標系の1単位の長さ(cm). (o)  
                                                  
    

  4. 備考
    1. ディスプレイの様な大きさのはっきりしない デバイスに対しては, 描画領域の大きさがほぼA4程度の紙の大きさであると考えて FACTを設定する.

SWSROT

  1. 機能
    画面の回転方向を指定する.

  2. 呼び出し方法
    CALL SWSROT(IWTROT)

  3. 引数の説明
                                                                            
      IWTROT   (I)   1 のとき正立; 2 のとき90度回転して                     
                     いることをあらわす.(i)                                
                                                                            
    

  4. 備考
    1. 通常SWPACKは上位ルーチンがどのような向きに図形を 描画しているか関知しないが, ハードフィルの際には図形の向きとデバイスの向きの関係が 問題になるので, それを通知するためのルーチンである. したがって,この情報はハードフィルルーチンのみが使用する.

サブルーチンの説明 : 内部変数管理ルーチン

SWpGET/SWpSET(SWpSTX)/SWCGET/SWCSET(SWCSTX)

  1. 機能
    SWpGET/SWpSET(SWpSTX) は整数・実数・論理型の 内部変数について, SWCGET/SWCSET(SWCSTX) は文字型の内部変数について 参照/変更する. (SWpSTX/SWCSTX は実行時オプションによる変更を許す.)

  2. 呼び出し方法
    CALL SWpGET(CP,IPARA)
    CALL SWpSET(CP,IPARA)
    CALL SWpSTX(CP,IPARA)
    CALL SWCGET(CP,CPARA)
    CALL SWCSET(CP,CPARA)
    CALL SWCSTX(CP,CPARA)

  3. 引数の説明
                                                                
      CP      (C*8)     内部変数の名前.                        
                                                                
      IPARA   (I,R,L)   (整数・実数・論理型の)内部変数の値.  
                                                                
      CPARA   (C*(*))   (文字型の)内部変数の値.              
                                                                
    

    以下に,電脳ライブラリが標準的に提供する図形出力装置 (Xサーバー,ポストスクリプト,テクトロ端末)に対し, CPとして指定できる名前のリストを記す. 値が整数・実数・論理型のものは SWpGET/SWpSET(SWpSTX)で 指定する; 値が文字型のものは SWCGET/SWCSET(SWCSTX)で 指定する.

    'FONT1', 'CL2TN' などデータベースファイル名を示す 内部変数は,その内部変数の値がファイル名としてそのまま 利用されるとは限らない. 実際に利用されるファイル名は SWQFNM が決める. その時のヒントとして これらのパラメータ名は定義されていなければならない. 標準ライブラリではまずカレントディレクトリを探す. 次にGLCGET/GLCSETが管理する内部変数 'DUPATH'(ユーザーの指定するパス名)のさすディレクトリを探す. 最後に内部変数'DSPATH'(システムがあらかじめ用意するパス名)の さすディレクトリを探す.

    また,出力装置に依存して.x11, .psxなどのサフィックスの ついたものを優先的に探したりする. たとえば,標準ライブラリにおいて 'CLRMAP' の示すファイル名を 探すときに,出力装置として X サーバーを選んでいれば, まず .x11 のサフィックスのついたものが探される; 次にサフィックスなしのものが探される; 最後に .psx のサフィックスのついたものが探される. いっぽう,出力装置として ポストスクリプトを選んでいれば, まず .psx のサフィックスのついたものが探される; 次にサフィックスなしのものが探される; 最後に .x11 のサフィックスのついたものが探される.

    [すべての出力装置に共通なパラメーター] - SWPACK がどのような出力装置を実現していても, これらの内部変数名は定義されていなければならない.

                                                                            
      'MAXWNU'     (I)   SWPACK が実現している出力装置の数.                
                         標準ライブラリにおける値は3 (X, PS, Tek)           
                         である. [-1ex]0ex1ex}                             
                                                                            
      'IWS'        (I)   オープンする装置番号.                             
                         1から'MAXWNU'の間の値を指定する(初期値は1)        
                         . この番号は SGOPN が設定する. [-1ex]0ex1ex}      
                                                                            
      'WSNAMEnn'   (C)   ワークステーション名(1 ≦ nn ≦ 'MAXWNU')          
                         . 標準ライブラリにおける値は, 'WSNAME01'='X'      
                         (Xサーバー), 'WSNAME02'='PS'(ポストスクリプト)  
                         , 'WSNAME03'='Tek'(テクトロ端末)                  
                         となっている. [-1ex]0ex1ex}                       
                                                                            
      'FONTn'      (C)   フォントファイル名(n=1,2)                          
                         . 標準ライブラリにおける値は, 'FONT1'='font1u',   
                         'FONT2'='font2u', [-1ex]0ex1ex}                    
                                                                            
      'CL2TN'      (C)   カラー番号をトーンパターン番号に読みかえるための   
                         ファイル名.                                       
                         標準ライブラリにおける値は'cl2tnmap'.              
                         [-1ex]0ex1ex}                                      
                                                                            
    

    [Xサーバー(X)およびポストスクリプト(PS)に共通なパラメーター]

                                                                            
      'IWIDTH'    (I)   イメージウインドウの横方向のサイズ (省略値は900)   
                        . [-1ex]0ex1ex}                                     
                                                                            
      'IHEIGHT'   (I)   イメージウインドウの縦方向のサイズ (省略値は650)   
                        . X では,'IWIDTH',  'IHEIGHT' のウインドウが       
                        オープンされる. PS では,縦横比が                  
                        'IHEIGHT':'IWIDTH' の描画領域が                     
                        最大描画領域に最大内接するように用意される.        
                        [-1ex]0ex1ex}                                       
                                                                            
      'FNAME'     (C)   出力ファイル名(省略値は'dcl')                      
                        . この値が'*' あるいは空白のとき,現在実行中の      
                        プログラム名が用いられる. X                        
                        のダンプファイル名,PS の複数ページ出力のための     
                        ファイル名として用いられるとき,この名前に ''       
                        (nnnはページ番号)を付けたものとなる. さらに X の  
                        ダンプファイル名の場合は'.xwd' の                   
                        サフィックスがつく; PS ファイル名の場合は'.ps'の    
                        サフィックスがつく. [-1ex]0ex1ex}                  
                                                                            
      'TITLE'     (C)   タイトル名(省略値は'*')                            
                        . この値が'*' あるいは空白のとき,DCLVNM            
                        (MISC1/MISCLIB参照)が返すバージョン名となる. X    
                        の場合,このタイトル名はウインドウのタイトル名とし  
                        て用いられる; PS                                    
                        の場合,このタイトル名はコメント部分の Creator      
                        部分に 書かれる. [-1ex]0ex1ex}                     
                                                                            
      'CLRMAP'    (C)   カラーマップを収めたファイル名.                    
                        標準ライブラリにおける値は'colormap'.               
                        [-1ex]0ex1ex}                                       
                                                                            
    

    [Xサーバー(X)に関するパラメーター]

                                                                            
      'IPOSX'    (I)   ウインドウの位置を示すX座標. (省略値は-999)        
                       . [-1ex]0ex1ex}                                      
                                                                            
      'IPOSY'    (I)   ウインドウの位置を示すY座標. (省略値は-999)        
                       . (IPOSX,IPOSY)=(-999,-999)                          
                       のときユーザーが マウスで指定する. [-1ex]0ex1ex}    
                                                                            
      'LWAIT'    (L)   改ページのタイミングで一時停止するかどうかを指定す   
                       る. .TRUE.なら一時停止する;                         
                       .FALSE.なら一時停止しない (省略値は .TRUE.)         
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LWAIT0'   (L)   デバイスをオープンするタイミングで一時停止するかど   
                       うかを指定する. .TRUE.なら一時停止する;             
                       .FALSE.なら一時停止しない (省略値は .FALSE.)        
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LWAIT1'   (L)   デバイスをクローズするタイミングで一時停止するかど   
                       うかを指定する. .TRUE.なら一時停止する;             
                       .FALSE.なら一時停止しない (省略値は .TRUE.)         
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LDUMP'    (L)   X のダンプファイル(xwd)                              
                       を作成するかどうか指定する. .TRUE.なら作成する;     
                       .FALSE.なら作成しない (省略値は .FALSE.)            
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LALT'     (L)   裏画面で描画するかどうかを指定する.                 
                       .TRUE.なら裏画面で描画する;                          
                       .FALSE.なら裏画面で描画しない (省略値は .FALSE.)    
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LKEY'     (L)   一時停止しているときに,キーボードからの指定を有効   
                       にするか どうかを指定する. .TRUE.なら有効にする;    
                       .FALSE.なら有効にしない (省略値は .TRUE.)           
                       . [-1ex]0ex1ex}                                      
                                                                            
                       SP, RETURN : 次ページに進む.                        
                                                                            
                       s : 'LWAIT'を.FALSE. にする.                       
                                                                            
                       w : 'LWAIT'を.TRUE. にする.                        
                                                                            
                       d : ダンプファイルを作成する.                       
                                                                            
                       q : 実行を中止する. [-1ex]0ex1ex}                   
                                                                            
      'BITMAP'   (C)   ビットマップを収めたファイル名.                     
                       標準ライブラリにおける値は'bitmap'. [-1ex]0ex1ex}    
                                                                            
    

    [ポストスクリプト(PS)に関するパラメーター]

                                                                            
      'LCOROL'   (L)   カラー対応した PS                                    
                       ファイルを出力するかどうかを指定する.               
                       .TRUE.ならカラー用のPSファイルを出力する;            
                       .FALSE.ならモノクロ用のPSファイルを出力する          
                       (省略値は .TRUE.). [-1ex]0ex1ex}                    
                                                                            
      'LSEP'     (L)   出力ファイルを1ページごとに分割して出力するかどうか  
                       を指定する. .TRUE.なら分割する;                     
                       .FALSE.なら分割しない (省略値は .FALSE.)            
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LPRINT'   (L)   作成された出力ファイルをプリンターに直接出力するか   
                       どうかを指定する.                                   
                       .TRUE.ならプリンターに直接出力する;                  
                       .FALSE.なら出力しない (省略値は .FALSE.)            
                       . [-1ex]0ex1ex}                                      
                                                                            
      'LPR'      (C)   'LPRINT'を.TRUE.としたときに用いられる               
                       プリントコマンドを指定する (省略値は 'lpr'))        
                       . [-1ex]0ex1ex}                                      
                                                                            
    

    [テクトロ端末(Tek)に関するパラメーター]

                                                                            
      'LWAIT'     (L)   改ページのタイミングで一時停止するかどうかを指定す  
                        る. .TRUE.なら一時停止する;                        
                        .FALSE.なら一時停止しない (省略値は .TRUE.)        
                        . [-1ex]0ex1ex}                                     
                                                                            
      'NLNSIZE'   (I)   テクトロ画面のうちコンソール部分の1行の長さを指定   
                        する (省略値は 21). [-1ex]0ex1ex}                  
                                                                            
    

  4. 備考
    1. 内部変数を管理するための下請けルーチンとして 以下のものがある. ここではサブルーチン名をあげるにとどめる.
                                                    
        SWPQNP   SWPQID   SWPQCP   SWPQVL   SWPSVL  
                                                    
        SWCQNP   SWCQID   SWCQCP   SWCQVL   SWCSVL  
                                                    
      
    2. SWpGETは上に述べたSWPQIDを呼んで 内部変数の位置を求め,SWPQVLによって値を参照する; SWpSETSWPQIDを呼んで内部変数の位置を求め, SWPSVLによって値を設定する. したがって指定した内部変数名が見つからないとき, エラーメッセージはSWPQIDが出力する.
    3. SWCGET は上に述べたSWCQIDを呼んで 内部変数の位置を求め,SWCQVLによって値を参照する; SWCSETSWCQIDを呼んで内部変数の位置を求め, SWCSVLによって値を設定する. したがって指定した内部変数名が見つからないとき, エラーメッセージはSWCQIDが出力する.
    4. IPARAとしては適切な型の定数または変数を指定すること.

使用例

以下では,電脳ライブラリが標準的に提供する図形出力装置 (Xサーバー,ポストスクリプト,テクトロ端末)に対する 使用例をいくつか紹介する.


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:06:51 EDT 1995