DXRuby1.5.11devリリース

DXRuby1.5.11devをWikiに置いといた。
http://dxruby.sourceforge.jp/cgi-bin/hiki.cgi?%A5%D5%A5%A1%A5%A4%A5%EB%C3%D6%A4%AD%BE%EC

Input::IMEの機能追加で、変換中の文字列や候補の一覧、数などを取得できるようにした。
通常、IMEの変換中文字列の描画はIMEがやってくれるのだが、ゲームなどの場合はIMEによる描画の上にDirectXで描画しちゃったりすることになるので、基本的に自前で描画してやる必要がある。
DXRubyの場合、ライブラリが勝手に描画するのもなんだかなーということで、描画に必要な情報一式をCompInfo構造体で返すようにしてみた。それを使って頑張って描画してくれたまえ。諸君の手腕に期待する。一応、ime_test.rbとしてサンプルにクッソ手抜きなものを入れてあるので参考にどうぞ。
あと、IMEの変換候補にはUNICODE依存文字が出てきてしまって、いままでのDXRubyの文字列処理ではまずい場合が多かったから、全体的に文字列はUTF16LEに変換してWつきのAPIを呼ぶように変更した。ASCII-8BITが渡されたらWindows-31Jと仮定するし、文字列を返すメソッドもWindows-31Jで返すのでこのへんの動作は互換性はあるはずである。描画できない文字が描画できるようになった、という感じ。
Input::IMEのget_string、get_comp_infoで取得する文字列はそういった都合でUTF-8固定で返ってくる。どうしてもWindows-31Jを使いたい人は変換してくれればいいけど、変換時に例外が出るかもしれんという覚悟は必要だろう。
また、エンコーディング関連を書き直すに伴い、これ以降はRuby1.8用にはコンパイルできないコードになる。Input::IME追加版をDXRuby1.4.2として出すとしても、それはRuby1.8では使えないだろう。SourceForgeを見るとなんかRuby1.8用がたくさんダウンロードされてるけども、さすがにRuby1.8用はDXRuby1.4.1が最後になると思うので諦めて移行するように。