読者です 読者をやめる 読者になる 読者になる

複数のオブジェクトをアニメーションできない?

ここんところアニメーションGIFをビュー上に表示させることに挑戦してました。一応実現はできましたが、アイコン一つだけしかアニメーションできません。
EclipseのUIスレッドは1つだけです。UIスレッドに対し、描画処理を移譲しているんですが、複数のオブジェクトを同時に描画するのであれば,フレームの計算がそれらのオブジェクトで順次的にさせないとできない気がします。Eclipseが用意している描画クラスのGC*1は同時に複数の物を描画するようには作成されていないので、そういう処理をするためのクラスをこちらで用意する必要がありそうです。
そういえば同時に複数のものがアニメーションしている画面を見たことがありません。でももしかするとそういうクラスが用意されているかもしれません。一日探しても見当たらなかったのですが、ちょっと探してみようと思います。
ちょっと見てみた感じではすぐに分からなさそうです。SWTの画面描画部分はC++で書かれていますし、プラットフォーム、ウィンドウシステムごとに違います。例えばTree上に描画されるアイコンはプラットフォームで位置が少しずれていました。Windows XPの場合は特にずらす必要がないですが、Linuxの場合はx軸に1px、Y軸に3pxずつ足す必要がありました。そんな感じです。
今日分かった事はLinux GTKの場合,CairoというFirefoxでも使われている描画ライブラリを用いて描画されている事くらいです。ただ中を見てみるとGTKでも「このバージョンはこう」っていう感じで書かれているので、プラットフォームごとの互換性を保つのに相当苦労してるんだなということはよーく分かりましたよ。

*1:org.eclipse.swt.graphics.GC