マージンに情報を書く

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

下の例にあるように, 図のいちばん外側にタイトルなどを書くには DclSetFrameTitleルーチンで書きたい文字列を指定しておきます. 文字列は, 最大5つまでの番号をつけて指定し(最後の引数), それぞれの書くべき位置を設定します(省略時は1). この番号を指定することで, 例えば右下の文字列だけをページごとに変える, ということが可能になります. その場合には, DclSetFrameTitleDclNewFrameを呼んだあとにも呼ぶことになります. 位置の設定は, 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)
タイトルを設定する.