GILを使う

Giant Interpreter Lockを(違

そろそろ自作キャンバスライブラリも色々つっこまれてぐだぐだになってきたのでここらで整理し直そうかなーと。とか言っていたらid:nyaxtに「boost::gilでいいじゃん」と言われる。しらんかった!こんなのあったなんて!自分でlibpngを叩いたりとかしなくてよかったんじゃん!

というわけで参考文献: letsboost::gil, Adobe Generic Image Library(GIL)を使ってみる Generic Image Library Tutorial 日本語訳 ‎(Twinkle of Silence)‎

viewとimageっていう似たようなものが出てくるけど、imageがpixelのコンテナ。imageを作成するとメモリが確保され、imageをコピーするとさらにメモリを消費する。各種アルゴリズムが扱うのは基本的にviewで、これはコンテナではなくピクセル群への参照。コピーをしても重たくない。

うはー。ピクセルにたいしてイテレータみたいなものがあるのか。横方向だけじゃなくて縦方向にスキャンするとかも用意されている。

メモリアクセスのパターンだのキャッシュフレンドリだのと言った言葉が出てくるライブラリチュートリアルwww 

>planar型のpixelはメモリ上で不連続に配置されたchannelをもっています.そのリファレンスは,色要素をchannel iteratorとするcolor baseを用いたproxyクラスです.

なるほど!