カテゴリー: Programming

Programming, コンピュータ

fltk bug on OSX

fltkを OSX で使うために最新のリビジョンをビルドしたものの、テキスト編集まわりの挙動がどうにもおかしい。
カーソルを動かせばゴミが残るし、エディタなんかになると表示がボロボロに崩れて使えたものじゃない。
正式リリースじゃないしテキスト入力系のバグはよくあるのでとりあえず調査開始。

 ・Windows でビルドすると?
最新版じゃビルドできないww。ML のアーカイブを見ると、Windows 版では対応していない機能が最近追加されたらしい。追加される前のリビジョンでテストするとうまく動く。OSX ではやっぱりダメ。

 ・もっと古いリビジョンを試す
かなり古いものを持ってきても症状は同じ。

 ・src をいじる
Windows で OK で OSX で NG  なので、怪しいのは src/osx の中。問題のあるウィジェットのソースを見てるとFont.cxx の中の getwidth() 関数が怪しそう。OSX のテキスト処理とか詳しくないし調べるのもメンドいので、とりあえず返り値の数字をいじってみる→思った通りに挙動が変わる。更に、7.201172 とかキリの悪い数字を返していることもわかる。この時点で嫌な予感。

 ・TextDisplay.cxx に戻る
予想通り、getwidth() の返り値を int でキャストしてる(ぎゃー!!。これが原因か。半端な数字が丸められて、結果カーソル位置の計算がずれるっぽい。
これを直すのは面倒臭そう。キャストするのをやめるだけで直ればいいんだけど、それだけで足りるかなぁ。

とりあえず今日はここで力尽きたのでやめ。あんまりにも面倒臭そうだったら fltk-ml に丸投げするかw

というか、OSX でちゃんと使ってる人は誰もいないの!?

CG, Proce55ing, Programming

知らなかった…

Proce55ing って、標準では行列が扱えないのかー。知らなかったよ…

これは困った。手軽に描画ができるからって Proce55ing を使ってたのに、これじゃ手軽に描画ができないよ(笑。

JAMAみたいなライブラリを簡単に使えたりするのかなぁ?それならありがたいんだけど。そうでなかったら、昔 C++ で作ったプログラムのコードを流用して一から作ったほうが早そうな気がする。fltk を使ってるから、OSX に移植するのもそれほど手間じゃなさそうだしなぁ。気合いを入れれば一、二日でできるかも?

あとは、描画まわりは全部 Maya にお任せしてプラグインとして作るか。これが一番楽そうな気がする。


モノは試しに一番単純なアプリを移植したら、さっくりと移植できたw。

やったのは Makefile を書いたのと、windows 特有のヘッダファイルやら WinMain やらを書きかえただけ。あと、fltk1.x 用のコードだったので fltk2.x 用に書きかえたり。

これだったらfltk を使おうかなぁ。


コメントで jar が扱えるということを教えて頂いたので試してみました。手順は [Processing][仕様]外部ライブラリ(*.jar)の設置方法 を参考にして、JAMA を入れてみたところ何の問題もなくインストールできて拍子抜け(笑。

コードも、Webページにあったサンプルを copy&paste するだけで動いちゃいました。これは素晴らしい!!

更に、PackageLoc という3D幾何・代数操作パッケージもあるそうなので、Proce55ing に死角無しです。