Ruby/SDLの3bppのサーフェスは

pixelsメソッドがバグってる。

SDL::Surface#pixelsは、RGBデータをStringで吐くメソッドだ。
出力されるStringの大きさは、普通に考えると 幅x高さxbpp(Bits Per Pixel)になる。
ところが、new_fromを使って3bppのサーフェスを作ると、内部でラインごとにパディングが発生する。1行の幅xbppが4で割り切れないとき、1〜3個の00がはさまれるのだ。
しかし、このサーフェスのpixelsは、このパディングを無視して真正直に 幅x高さxbpp だけの大きさのStringを吐く。末尾が切れている。


……しばらく悩みましたとも、ええ。