字汚れの原因メモ

march

2007年10月31日 23:22


とりあえず直接的な原因は分かったのでメモ。
どう対処しますかねぇ。

---
昨日のBLOGも参照。
---
LLFontクラス内のmRawImagepの先に、グリフのビットマップをキャッシュしておく。
縦かける横のサイズを持ち、左上から右(X)方向に1文字ずつ入れていく。
次に入れる位置はmCurrentOffsetX, mCurrentOffsetY で管理している。

このキャッシュがあふれた際は、
(1)キャッシュに乗っているグリフは、そのままでは表示できないようにする(mIsRender = FALSE)
(2)次に入れる位置を1,1に戻す。
としているが、キャッシュはクリアしていない。

続けて使うと、以前のゴミがある状態で上書きする。

mRawImagepは他のフェース、フォントファミリー内の他のフェースとも共用なので、(★この辺が未調査)
外枠のサイズが違うグリフの場合は、以前のゴミも表示してしまう。のかなぁ。

文字と文字の間を1ドットあけて表示するために、上述のキャッシュに1ドットあけて格納し、
表示する際にはあけた1ドットも含めて表示している。
そのため、キャッシュをグリフのビットマップで上書きしたとしても、
あけた1ドットの所には何も書かないため、ゴミが表示される。

---
mRawImagepの、clearとかfillとか試してみたがうまくいかず。memsetでゼロクリアしようとしたらメモリ違反^^;
あけた1ドットの所に何か書くようにするかなぁ。
viewer