コッテリにゃ描画エンジン
2Dにゃの描画エンジンが必要にゃににゃって、普通にゃに GDIとかにゃでにゃっていることを、スクラッチするにゃには、どうするにゃ〜?っとですにゃ。
単純にゃ直線ですとかにゃ、円とかにゃは検索すればよく出てくるですけどにゃ、本格的にゃこってりとした描画にゃはにゃかにゃかにゃいにゃのですにゃ。
ググル先生にゃはCairoにゃ〜って教えてくれたにゃので、すにゃをにCairoにゃのソースにゃを読み読みですにゃ。
「うにゃ〜、これにゃ〜これにゃを探していたにゃのだにゃ〜。」
とこちらも勉強中ですにゃ。
インライン関数でにゃ、doubleを固定小数16:16にゃへ変換しているところがあったにゃのですがにゃ、これがわからにゃい……。
桁落ち?かにゃにかにゃを使って変換させてるみたいにゃんだが〜。
#define CAIRO_FIXED_FRAC_BITS 8 #define CAIRO_MAGIC_NUMBER_FIXED ((1LL << (52 - CAIRO_FIXED_FRAC_BITS)) * 1.5) /* For 32-bit fixed point numbers */ static inline cairo_fixed_t _cairo_fixed_from_double (double d) { union { double d; int32_t i[2]; } u; u.d = d + CAIRO_MAGIC_NUMBER_FIXED; #ifdef FLOAT_WORDS_BIGENDIAN return u.i[1]; #else return u.i[0]; #endif }
にゅ〜〜難しいにゃ〜。