規格や仕様の確認 です。
これが肝心で、後は、単に 書くだけ! と言い切ってしまっても良いかも知れません。
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 件のコメント:
コメントを投稿