「りも」トップページへ
TIPS index へ

GdkPixbuf 0.6.0 と 0.7.0 の違い

Apr.23.2000

GdkPixbuf 0.7.0 Release において変わった部分
GdkPixbuf が 0.7.0 になって、0.6.0 時のソースがそのままコンパイル 出来なくなったので、そのあたりについての軽い解説。


・ はじめに

GdkPixbuf は GNOME 2.0 の一部として現在どこどこと開発中のライブラリの 一部です。大きな仕様は大分おちついたみたいですが、それでもいくつか 変わっている所がありました。ここでは 0.6.0 と 0.7.0 に注視してその 変更点について解説します。

・ GdkPixbuf-0.7.0 の変更点

0.6.0 まで GdkPixbuf は 2つのライブラリを使用していました。libart と gdkrgb です。gdkrgb は主にレンダリングに使われるのですが、これは GDK の一部なので、おおよそインストールされていると思います。
ですが、他方の libart は GNOME core の一部で、GNOME 環境をインストール している場合既に入っているのですが、そうでない場合 GNOME のインストール をせねばならないというイメージが付きまといなかなか簡単にいれようという 気にならないようです。
開発側においてもその点は大きいらしく、現在は依存している libart, gdkrgb の二つを GdkPixbuf に含めてしまおうという方針が GdkPixbuf のロードマップ において示されています。
そういった動きがあって、今回の GdkPixbuf 0.7.0 においては完全に libart から切り離されました。つまり GNOME がインストールされていない環境に おいても GdkPixbuf が(難なく)扱えるようになったということです。
今回のこの措置でインターフェースに他のライブラリ形式が依存している という形は無くなったと思われます。つまり、今後内部的に変更がかかっても 利用プログラム側の変更は無くても済むのではないかという安心感があります。

・ 具体的な修正事項

具体的な修正箇所です。

Pixbuf 生成関数(gdk_pixbuf_new等)において、RGBとかYMCKとかYUVとかの ピクセルカラーフォーマットを指定する際 内の ArtPixFormat で指定しなければならなかったところが GdkColorspace で指定する様になっています。
どっちにしても RGB 型しかインプリメントされてはいませんけど。

typedef enum {
  ART_PIX_RGB
  /* gray, cmyk, lab, ... ? */
} ArtPixFormat;
typedef enum {
  GDK_COLORSPACE_RGB
} GdkColorspace;

Scaling関数(拡大縮小する関数)におけるスムージングするか否かの指定を いままで 内の ArtFilterLevel で指定 する必要がありましたが、0.7.0 からは GdkInterpType で指定します。

typedef enum {
  ART_FILTER_NEAREST,
  ART_FILTER_TILES,
  ART_FILTER_BILINEAR,
  ART_FILTER_HYPER
} ArtFilterLevel;
typedef enum {
  GDK_INTERP_NEAREST,
  GDK_INTERP_TILES,
  GDK_INTERP_BILINEAR,
  GDK_INTERP_HYPER
} GdkInterpType;


rero2@yuumu.rim.or.jp