アルファチャンネルが不要な拡張編集フィルタ処理
元々は入力フィルタ(図形など)と出力フィルタ(標準描画など)のみが対象でExEdit::Filter::Flagは0x40
そのようなフィルタ処理にするメリット
透明度計算を省略することで高速化した処理を実装することが出来る
同じオブジェクトに付与している他フィルタが高速化する
条件
透明度が不要な画像データ・画像処理
実装方法・注意点
クロマキーのようなフィルタなどは絶対的に透明度を扱うはずのためフラグは付けない
ExEdit::FilterProcInfo.no_alphaがtrue判定であればExEdit::FilterProcInfo.obj_editは透明度の無いデータ(ExEdit::PixelYC*)である
画像のストライドはExEdit::FilterProcInfo.scene_lineに変わる
入力フィルタの開発者向け
条件オブジェクトに付与されている全てのフィルタがアルファチャンネルが不要な拡張編集フィルタ処理の対象であるを満たしている場合、ExEdit::FilterProcInfo::Flag::alpha_omittable(0x40)フラグがたっている
透明度が不要な画像データとオブジェクトのサイズがシステムの設定側の最大画像サイズ以内は入力フィルタの役割として調べる必要がある。例として図形では四角か背景であれば透明度が不要な画像データ、トラックバーのサイズがシステムの設定側の最大画像サイズ以下であるかという判定を行っている
条件をすべて満たしている場合はExEdit::FilterProcInfo.no_alpha=1、そうでない場合も念のためExEdit::FilterProcInfo.no_alpha=0は明記しておくべき
フィルタ効果・出力フィルタの開発者向け
座標や回転のようなフィルタ効果は画像データに対する処理を行わないため、フラグをたてるだけで良い
画像データに対する処理を行うフィルタの場合、ExEdit::FilterProcInfo.no_alphaがtrue判定であればそれ用の処理に切り替える必要がある
処理中に条件を満たさなくなる場合にはExEdit::FilterProcInfo.no_alpha=0を書き、アルファチャンネルを付ける処理を行えば正常に動作させることは可能(サイズ拡張の処理によってシステムの設定の最大画像サイズを超えてしまうなど) 但しアルファチャンネルを付ける処理が行われる頻度が多い場合、逆に遅くなる可能性があるため注意
アドバイス