giflib でフィルタ処理

giflib はデータ構造的にはエンコード用とデコード用で共通ですが、
各々の Open と Close が別になっている為、フィルタを書くのには面倒な API になってます。
こんな感じ。

GifFileType *GifFileIn, *GifFileOut;
GifFileIn  = DGifOpen(...);
GifFileOut = EGifOpen(...);
// <データ入力 →  GifFileIn の画像データを GifGileOut にコピー →データ出力>
DGifCloseFile(GifFileIn);
EGifCloseFile(GifFileOut);

仮に、Open と Close が共通であれば必要な部分だけデータを書き換えるだけですが、

↑これらを見ると、カラーマップとかピクセルとか Extension ブロック等を明示的に
一つ一つコピーする処理をかいてるので、手間をかけないとダメそう。
rotat や rsize は全部コピーしちゃうと、後で捨てるデータも出てくるので、
これはこれで合理的なんですけど。例えば、特定のインデックスのピクセルを塗りつぶす
とかの処理を書こうとする時は、無駄な手間って感じがするんですよね。

(処理コストは減らないけど、実装コストを減らすのに) GifFileClone(GifFileIn, GifFileOut);
とか作ると楽になるかな。