このページは過去に掲載していたものをそのまま使用しています。

Diaの構造

DiaはC言語で作成するのが無理だと言わんばかりの 構造を持っているように感じます。素直(かな…?)にC++で作成すればいいのに なぁ、と思います。そんなDiaの構造を読むのに参考になりそうな事というより、 むしろメモに近いことを残すことにします。

もくじ


Dia-0.83のソースを読む

附属のREADMには、「lib/object.hを読むべし」とあります。 このObjectという構造体がDiaでの描画、内部データ構造を理解する上で 重要になってきます。その他にもfont.hやrender.hは描画とEPS出力の 部分を理解する上で重要です。

しかし実際は、app/app_procs.cから処理が始まっているので、 処理の全体を知りたい場合には、ここを基点にすると良いでしょう。

make installせずにデバッグする

makeをすると作成される、app/diaというのはシェルスクリプトなので このファイルをeidtorで開いて、最後のほうに次のような仕掛を入れておきます。 (赤字になっているところを追加)

  PATH="$progdir:$PATH"
  export PATH

  exec gdb $program ${1+"$@"}

  $echo "$0: cannot exec $program ${1+"$@"}"
  exit 1
fi

まぁgdbが使えないとどうしようもないですが、これでrender_eps.cや text.cなどにブレークポイントを仕掛けることでだいたいの処理の流れを 見る事はできます。

実行するときにはapp/run_dia.shを実行してください。 app/diaを実行するために必要な環境変数の定義などを行なって います。

こんな事を参考にしながら、自由気ままにdiaを改造してみてください。

Dia-0.83のディレクトリ構造

dia-0.83.tar.gzを展開すると、dia-0.83というディレクトリの下に いくつかのサブディレクトリが展開されます。

日本語化に関係のありそうなディレクトリはこれぐらいですね。 それぞれについて簡単な説明をします。

app/

文字通りアプリケーションのsourceが入っています。処理の最初は main.cよりもapp_procs.cに書いてあります。処理の流れを読みたいなら ここから読むと良いでしょう。またgtk, gnomeに独特な書式については それぞれの関係するwebサイトのチュートリアルなどが参考になります。

参考書

lib/

app/で使われる基本的なデータ構造が定義されています。その他にも 基本的な部品である線やテキストといったものもここにあります。 READMEを読にも書いてありますが、object.hの内容をまず読むと良いでしょう。

objects/

この中にはUMLや回路図用の部品のためのsourceが入っています。

po/

いわずとしれたgettextに対応したアプリケーションにあるディレクトリです。 この中にあるdia.potというファイルをja.poなどの名前に変更してmstidに対応する 日本語の文字をmsgstrに入れておけば自動的に日本語化されます。

実際はおおよそ日本語化されたja.poファイルが、あらかじめ附属するので これを元に追加をしたり自分の言葉でメッセージを入れたりすることができます。


Yasuhiro Abe <yasu@europa.u-aizu.ac.jp>
Last modified: Sun May 21 13:06:35 2000