日記

9月 10日 (金)

1. 吉里吉里

2.23β4でビルド。LibERINA.libリンクエラーは、src\core\environ\win32\bcb6\tvpwin32.cpp 中のUSELIBしてる部分で、LibERINA.libのパスが違うのが原因。修正したら無事LibERINA.libはリンクできたが、そもそもERIフォーマットを使わないのでTVP_SUPPORT_ERIをundefしてリメイク。

今度こそ、と思ったら、またもやリンカエラー。[リンカ エラー] 外部シンボル '******' が未解決(XXX.OBJ が参照)が60個くらい出た。boost::regexとかlibpng関連。ライブラリはリンクされてるはずなんだが…何故だ。

9月 11日 (土)

1. 智美

智美メール キター。

バリエーションとしては春香メールとか彩香メール とかいろいろあるようです。うちに来たのは22歳でフリーターなんだそうです。文体からして「春香メール」よりもSPAMな感じが強いです。まだまだですね。(何が)

2. 文化女中器

まだ読んでませんが、ハインラインの「夏への扉」に出てくるアレこそが元祖メイドロボではないか、という疑惑が浮上しました。疑惑?

今度読んでみましょう。

3. 吉里吉里

W.Deeさんが貴重なリソースを提供してくださったおかげで、問題解決の糸口が見つかる。PNG、JPEG周りのリンクエラーは、おそらくバージョンの違いが原因だろう。libpngは1.0.6が手に入らなかったので1.0.16を使う。zlibは1.1系が手に入らなかったので…どうしよう。とりあえず頂いたライブラリ群から持ってくるか。バージョンを合わせてみたら、見事にリンカエラーが消えた。

残るはboost regex関係(かな?)。boostライブラリを再構築してみるも、相変わらず「re_detail::*** がない」と言ってくる。W.Deeさんの作ったboostライブラリをリンクさせれば、この部分は解決するんだが。何が違うんだろう。

9月 12日 (日)

1. Bookshelf

レーベルに対応してみました。書籍ごとの項目が増えてきたので、表形式にも対応しました。量も増えてきたので、出力ファイルを分割したほうがいいですかね。

2. 吉里吉里

ついに吉里吉里ビルド完了。なんか、幸せ…

メモメモ。boost regex関係のリンカエラーは解決。boost regexのバージョンが違うのが原因だった。1.30系を使わないといけないようだ(1.31.0だとnamespace re_detail関係でリンクに失敗する)。

そういえば、1.30付近でregexが大きく変わった、というような話を聞いたことがあるような、ないような。関係ないか。

このほか、謎リンカエラー[リンカ エラー] Section ConstSeg defined in .def file is empty 等で途方にくれていたが、W.Deeさんに聞いたら即解決。thx!

9月 14日 (火)

1. 吉里吉里

1.1. PNG

PNG画像が読めないことに気付く(Layer.loadImagesでEAccessViolation)。JPEG, BMPはOK。PNGライブラリの作成方法、リンク方法がおかしかったようだ。作り直して解決。

そうそう、忘れないうちに、構築手順をおさらいしておこう。TODO。

…考えてみれば、TLG6があればPNG要らないかなー。性能差は歴然としてるし。PNGまわりの機能って、はずしても大丈夫かなあ。今度やってみよう。

1.2. Plugin

Digital MarsC++ Compiler で吉里吉里付属のサンプルPluginを作ってみる。

DLLファイルはできた。吉里吉里Plugins.linkでリンクもできた。が、いざ関数をコールすると、そんな関数ないよん。 と言われてしまう。ガクッ。Bcc32で作ったDLLならちゃんと呼べるから、DMCでのコンパイル or リンク方法が悪いのかな。

9月 15日 (水)

1. SPAM

真希メール キター。

構成や書き方が素人っぽく、文章も短いながらも、ついつい返信したくなるような文面になっています。前回の智美メールよりはよくできています。まあまあですね(何が)。

さて、次は何でしょうね。どきどき。

2. うずら

IRC:#うにっくす:*.jp でuzuraの発言を見ていたのですが、本当に良くできています。人間よりも鋭い突っ込みをしてきます。恐ろしいですね、これは。

9月 16日 (木)

1. 吉里吉里

1.1. Opacity

メモメモ。レイヤ全体にグラデーションをかけるDLLプラグイン関数を作成。不透明対応。

iTJSDispatch2経由で何度もLayer.colorRect()をコールするのがちょっと嫌だったので、吉里吉里ソースを漁ってLayer.colorRect()の実装を探り、ほぼ同等の機能を実装してみる。core\visual\LayerBitmapIntf.cpp, LayerIntf.cpp, LayerBitmapIntf.h, LayerIntf.h, tvpgl.hあたりを見ると、Layer.colorRect()の不透明処理・アルファブレンドの実装には TVPAlphaBlend_o(), TVPConstColorAlphaBlend_d() が使われているようだ。嬉しいことに、これらは tp_stub.h に定義されている *1

左→右進行のグラデーションにはTVPAlphaBlend_o()を、上→下進行のグラデーションにはTVPConstColorAlphaBlend_d()を使ってみたが、なんとなくこれで大丈夫そう。不透明度処理に関してはLayer.colorRect()とほぼ同等のはず。

1.2. TODO

  • 指定した矩形領域だけにグラデーションを。
  • 今まで作ってきたグラフィック系関数は、不透明度に全く対応していない。ていうか、実装方法がわからなかった。暇を見つけて対応してみるか。
  • 任意方向グラデーションとか、カラーコード非線形変動のグラデーションとか…は、今のところやる気なし。
  • *1: TVP***Blend_***() シリーズって妙に種類が多くて、どれを使っていいのか迷う。

9月 18日 (土)

1. スト

プロ野球選手会がストを決定したそうですが。

プロ野球に興味がないので、ストライキでもストリップでも勝手にやってくれ、と。番組が野球放送で潰れるときくらいしか、プロ野球など気にもしません。エマのアニメ化の方がよっぽど気になる。

2. 吉里吉里 - Layer -

2.1. Stub

makestub.plをいじってtp_stub.h, tp_stub.cppを高速化改造した…つもりだったが、生成されたDLLファイルがでかくなった上に、ちっとも速くならなかった。がっかり。

2.2. Opacity

不透明度処理に関してはLayer.colorRect()とほぼ同等…どころか全然違ってた。同等なのはdfAlphaだけだった。がくっ。描画クリップ領域を無視してるだとか、描画方式を無視してるだとか、その他いろいろ無視しているという、かなりトンデモな仕様。まあ、おいおい対応していくとしよう。

今日は今まで作ってきたグラフィック系関数を(中途半端に)不透明対応にしてみた。

  • 直線
  • 円(塗りつぶし)
  • 角丸矩形
  • 角丸矩形(塗りつぶし)
  • 三角形(塗りつぶし)
  • 矩形(グラデーション)

あと、プラグインインターフェース部と実装部を分けた。

9月 19日 (日)

1. 吉里吉里

1.1. Layer

additive alphaや他の描画モードがどうなっているのか確かめるため、レイヤ関係のソースを漁る。読む。パクる。吉里吉里のソースをDLLプラグイン用としてそのまま持ってきたいところだが、そうすると痛い目に会いそうな予感がした、ていうか以前痛い目に会ったような気がするので、部分的にパクることにした。本家と実装がダブってしまうが、これは仕方がない。本家の変更にはできる範囲で追従するようにしよう。

…ComplexRectはそのまま持ってきても大丈夫っぽい。

2. Page Info

Mozilla 1.5
Ctrl-I で Page Info 表示
Firefox 0.9x
Ctrl-I で Side Bar 表示トグル、Ctrl-J で Page Info 表示
Firefox 1.0PR
Ctrl-I で Side Bar 表示トグル、Ctrl-J で Download Manager 表示トグル、Page Info を表示するショートカットキー無し

Mozilla系はどうしてころころインターフェースが変わるんだよ。どんどん使いにくくなっていくよ。ユーザが増えない一因のようにも思える。