マージンに文字列を書く

沢山の図を出力すると, いつ, どのプログラムで描いた, 何の図だったのかわ からなくなってしまう。そんな時, タイトル, その図を出力したプログラム名, 使用したデータ名等々をマージンに書き込ん でおくと, あとの整理が楽になる。

下の例にあるように, 図のいちばん外側にタイトルなどを書くにはDclSetFrameTitleルー チンで書きたい文字列を指定しておく。文字列は, 最大5つまでの番号をつけて指定し(最後の引数), それぞれの書くべき位置を設定する(省略時は1)。 この番号を指定することで, 例えば右下の文字列だけをページごとに変える, というこ とが可能になる。その場合には、DclSetFrameTitleをDclNewFrameを呼んだ あとにも呼ぶことになる。位置の設定は、2番めの引数で 'T' (トップマージン)または 'B'(ボトムマージン)を指定し, 第3番め と第4番めの引数で, マージン内における文字列の位置を -1.0(左寄せまた は下寄せ)から+1.0(右寄せまたは上寄せ)までの実数値で指定する。0.0とす ると中央合わせになる。第5番めの引数では文字の高さを指定する。

DclSetFrameTitleルーチンでタイトル等を書くときには, そのためにあらかじめマージンをとっておく必要がある。この時, 文字列が書かれる のは, フレームの分割の有無に関わらず, 第1レベルのマージンに対してだけである。ここで注意すべきことは, マージンは各レベルごとの最大作画領域に 対する比率で指定されるのに対して,文字の大きさの単位は第1レベルにおける 最大作画領域の長辺を1とするような単位となることである。

なお, DclSetFrameTitleで指定できる文字列には、#DATE, #TIME, #PAGEという予約変数があって, それぞれ, 日付, 時刻, ページ数にあたる 文字列に変換される。 

layout05.f90
program layout05

  use dcl

    call DclOpenGraphics()

    call DclSetFrameMargin( 0.1, 0.1, 0.1, 0.1 )
    call DclSetFrameTitle( 'figure title', 't',  0.,  0., 0.03, 1 )
    call DclSetFrameTitle( 'program.name', 'b', -1.,  1., 0.02, 2 )
    call DclSetFrameTitle( '#date #time',  'b',  0.,  0., 0.02, 3 )
    call DclSetFrameTitle( 'page:#page',   'b',  1., -1., 0.02, 4 )

    call DclNewFrame
    call DclSetViewPort( 0.1,0.9,0.1,0.9 )
    call DclDrawViewPortFrame( 1 )
    call DclDrawTextNormalized( 0.5, 0.5, 'figure' )

    call DclCloseGraphics

end program


DclSetFrameMargin
(SLMGN)
マージンを設定する.
DclSetFrameTitle
(SLSTTL)
タイトルを設定する.

関連リンク