2018年5月28日月曜日

VB .xcf ファイルの事

自分でプログラムを書く、 それも、既存のファイル形式を扱う上で重要なのは、
規格や仕様の確認 です。
これが肝心で、後は、単に 書くだけ! と言い切ってしまっても良いかも知れません。
GIMP で使われる .xcf ファイルのバージョンを取得するものの例で書いて見ます。


GIMP 2.9 も後半の頃、試しに使っていて、
GIMP 2.8 で そのファイル が開けないので、
おおっ!、 と思ったものです。

そして、もし、.xcf ファイルを公開する場合、
どのヴァージョンで使って! と、解説を書く事になるので、
さて、どうしたものか? と、 悩んでいました。

そして、もし、.xcf ファイルを色々なフォルダから掻き集めた状態になれば、
どのファイルがどの GIMP で作ったものか、一見では分からないぞ! と慄いたのです。

GIMP の起動は やはり 重いです。
ファイルバージョン確認の為だけに、それを立ち上げるのは ... 億劫です。
ならば、 何かひとつ書くか! ... 。


ファイル、それも、特定の拡張子のファイルを、自分のプログラムで扱おうと思えば、
先ずは、その 仕様 を確認する事から始まります。
大抵は、 Internet 上に公開されている Specification や Format 等と言った語句を頼りに、
資料を漁る事になるでしょう。

普通は、同じ様な考えをする方が多い為か、検索の上位に ヒント が見付かる筈です。
しかし、 GIMP の .xcf は、違いました。

その理由は ... 。
恐らく、そんな 無謀な! 無駄な! 事をする方は少ないのでしょう。
いえいえ、 実は、 GIMP、 Linux 起源のこのソフト、
彼の世界では、ご自分で コンパイル & ビルド される方も多いのでしょうね。
従って、ソースコードが公開されています。
そのソースコードを収めたファイルは、実行ファイルを得る為の情報がぎっしり詰まっています。
その中に、 簡単な .xcf ファイルの 説明解説 も記述されています。
詰まり、 検索する迄もなく、 情報は既に利用者に提供されている事になります。
そりゃぁ、 検索 からは登場しない訳ですね。

でも、 実行ファイルを インストーラの形で入手する Windows の世界から見ると、
その点に気付くのに、少しの時間が必要でした。


結論は、
tar.bz2 圧縮されたソースコードの \devel-docs\xcf.txt にある事が分かりました。

そこに簡単な .xcf の解説があります。
それを元に書いたのが、 件のプログラム です。



参考迄に、その部分を引用して置きます。  出典:\devel-docs\xcf.txt  (GIMP 2.10.0).

 前略

3. THE IMAGE STRUCTURE
======================

Header
------

The image structure always starts at offset 0 in the XCF file.

  byte[9] "gimp xcf " File type identification
  byte[4] version     XCF version
                         "file": version 0
                         "v001": version 1
                         "v002": version 2
                         "v003": version 3
  byte    0            Zero marks the end of the version tag.
  uint32  width        Width of canvas
  uint32  height       Height of canvas

  以下省略


ファイル冒頭のほんの少しの部分を読んで行くだけなので、
実に、軽快に動いてくれます。



確認の意味も含めて、
私の 長い (?) GIMP users の歴史上、初めて、2.10.0 の ソースコード を入手しました。

内容的には、 私なんかが見ても ちんぷんかんぷん です!。
ましてや、 巨大で、クロスプラットフォーム向けに書かれたものですから ... 。
自分で コンパイル & ビルド する事も無いと思います。

そして、この解説 (xcf.txt) は、GIMP 2.8 迄の内容で、2.10 の変更は反映されてはいませんが、
充分に利用価値があるものでした。  2.10.0 .

尚、 現在このファイルは、 GitHub にて、着々と更新が行われ、

現バージョンの内容を反映したものに変わって行き、
この投稿が公開されるずっと前に、 GIMP 2.10.2 のソースとして 訂正後のもの が公開されました。
但し、上記引用部分の記述に変更は無い為、 2.10.0 のもので引用しました。


尚、尚、
コードそのものは、実に簡単な、ファイルを読んで行く形ですから、
態々、ここに掲載する迄もないと判断し、 進め方のみ書きました。



0 件のコメント:

コメントを投稿