|
昨日のカウンタ: 今日のカウンタ: |
このところ、ひさびさにこの辺りのお絵描きソフトをいじっています。表面的な変化はないのですが、新たな画像ファイルフォーマットを採用しました。PtPtフォーマットの情報を丸ごと含んだPNGファイルをPetite PeintureとPeintureroidで採用しました。(Petite Peintureの方は審査期間があるので未公開ですが、(rejectされなければ)一週間以内に公開されると思います。)
これまでPeintureroidには、レイヤーごとにファイルを保存する方法はありませんでしたが、これで一つのファイルに複数のレイヤー情報を保存することができます。
また、Petite PeintureとPeintureroidでは同じフォーマットを使うことになりますので、ファイルの交換も可能となります。iPhone, iPad, iPod touch, Androidの複数を持っている人は少ないかも知れませんが、友達と(レイヤー付きで)画像を交換することも可能となります。
Linux Zaurus版から開発がスタートしたPetite Peintureですが、iOS版でもその頃の描画エンジンを使っています。そして、その頃からユーザの方々からは強い要望がありました。色深度の32ビット(RGBでは24ビット)化です。
Linux Zaurus版からPetite PeintureはRGB565でやってきました。理由は以下の通りです。
・メモリ使用量削減: 一つのピクセルに16ビットしか使わないため、32ビットカラーに比べてメモリの使用量を半分にできます。これより、自由にレイヤーを増やすことが可能です。
・描画速度向上: CoreGraphicsなどを使わず、ラスター処理をベタにビット計算、バイト計算で書いています。32ビットCPUであることを意識して、RGBの計算をできるだけ一度に多く処理できるようなアルゴリズムを開発して高速化を実現しています。これを32ビットにすると処理すべきバイトが増える分だけ処理速度、描画速度が低下し、レスポンスが悪くなることが想像されます。
しかし、新しいiOSデバイスではこれらの状況は変ってきています。
・メモリは潤沢に搭載されるようになり、メモリ使用量が倍増してもそれほどは問題にならなくなりました。(ただし一方でRetina化により、ピクセルの絶対数が増えているため、メモリが不足する機種もでるかも知れません。)
・去年から描画ルーチンをバックグラウンドに移しつつありましたが、今度のバージョン1.36にて描画処理(線引き及びレイヤー合成)を全てバックグラウンド側に移動しました。これにより、マルチコアを搭載した最近の機種では、反応速度は向上し、また、多少重い描画処理をさせてもユーザ体験の悪化には繋がらない状況となりました。
これらの状況の変化によりARGB888などの32ビットカラーをPetite Peintureに導入することは現実的になったと思います。
なお、これまで「32ビット版は作りたいけど、やるとしたら別アプリ」と言っていましたが、描画部分(sketchpainter.{h,mm})とレイヤー合成部分(layeredpaitner.{h,mm})だけを書き直せばほぼ動くんじゃないかなーと入浴中に思ってしまいまして、Petite Peintureのバージョンアップで行けるんじゃないかなとも思っているところです。(まだ変更分を確認してないので、撤回するかも知れませんけど。)
Petite Peintureのユーザーインターフェースは評判悪いので、新アプリにするタイミングでこの辺りは新規で作り直そうかという考えもありましたが、どうなりますことやら。ただ、新規アプリであれバージョンアップであれ、ユーザーインターフェースを変更するいいチャンスであることには違いないと思いますけど。
まぁ、Lite版のこともありますので、とりあえずはブランチ切って作業してみようかと思いますけど。