Kanru’s 探險日誌

當發現美好的事物時,所要做的第一件事,就是把它分享給所有人

Archive for the ‘IME’ tag

IME 進度(r1478)

leave comments »

一些改變。

鑒於用到 AVDictionary 的程式都需要連結到 tinyxml 有點花空間,所以把 tinyxml 獨立 compile 成 tinyxml.dll.. 所以用的程式越多,省的越多 :p 目前 PCMan 的 UI 已經可以透過 config.xml 來調整 candidate 列顯示的元素各數。

pcchen 詢問是否可以把 POJ merge 回 trunk,這樣要 update 的時候才不用兩邊修改,所以請改用 trunk/Modules/OVIMPOJ-Holo/make.bat 來編譯 ;-)

之前用二元開關的方法來設定 keycode 完全沒有使用到 keycode 的介面,現在 loader.keyEvent 直接接收 AVKeyCode 當作參數,對 Shift/CapsLock 等 modifier 的設定比較方便且不易出錯。

AVConfig 中的 UserDir 搬移到 :\Document and Settings\%USER%\Application Data\OpenVanilla 因應 XP 為多使用者環境。config.xml 的目錄也應該設定到 UserDir;是否應該做成 AVDictionary 的預設選項呢…

Written by Kanru Chen

September 10th, 2005 at 2:24 am

Posted in Programming

Tagged with

IME 進度(r1471)

leave comments »

今天把 AVLoader 整個 class 化了,一樣是 singleton,還發現之前的 AVDictionary 忘記 shutdown/release method… 基本上現在運作的結果跟以前完全一樣,只是內部構造改變,不過清爽很多 :)

從原本的一堆 global function 變成現在比較好用的 singleton class,遇到了一個問題,我把我之前自己在用的 DummyDisplayServer 和 test tool 也 commit 到 svn 了,今天在改的時候用 test tool 來測一直沒有問題,可是拿到 ime 去就會出現要 delete 某個指標時會出現 "XXX 記憶體不能為 read… ",用進各種辦法就是不能 delete XD,只好讓它暫時 memory leak…

架構改變以後與 Win32 相關的部分變的極少,剩下的部分看是要用 interface 或是 façade 來做還要看看,等 AVKeyCode 想好要怎麼做以後就要開始搬家到 Loaders 目錄了 :D

說到這不禁要抱怨一下,Win32 處理 keyboard 的部分真是麻煩 -_-#,一堆 VirtualKeyCode,ScanCode,blahblah… 常數又定義不完整… 為什麼要搞成這麼複雜呢!難道是我太嫩了,找不到簡單的方法.. (暈)

Written by Kanru Chen

September 8th, 2005 at 6:01 pm

Posted in Programming

Tagged with

IME 進度(1464)

leave comments »

從台北回到埔里,終於有 nb 可以開始修 bug 改程式 :)

先修掉了幾個比較嚴重的 bug 像是使用 OVIMGeneric 的輸入法在應數模示下空白鍵會跑出 processed 等等。

之後就是開始快樂的 refactoring ,AVDictionary 變成 singleton ,同一個 process 裡面只會有一個實體,並從原本的 autoflush 模式改為預設不要 autoflush ,應該可以增加不少效能。

還把 AVLoader.cpp 徹底的整理了一下,現在裡面的東西已經少了大約一半,不屬於 Loader 的 code 大多已經移出去,變成 AVKeyCode、AVBuffer、AVCandidate,其中 AVKeyCode 還可以再跟 IME.cpp 裡面的東西整合,應該會更清楚。

另外一個重大的改變是把 UI 的控制包裝於 AVDisplayServer 中,這樣 Loader 可以直接對 Display 下指示,而 IME 只要實做 AVDisplayServer 的介面即可… 以這樣的架構,把 DisplayServer 的層次提高,AVService 也可以利用 AVDisplayServer 來作 notify area 的顯示。

AVLoader 裡面還有許多 extern “C” {} 的 wrapper 介面,這是因為之前是以分開的 dll 來連結 Loader 與 IME ,現在是直接 compile 在一起,應該可以考慮包裹成 class。

還有好多可以改的地方 XD

Written by Kanru Chen

September 7th, 2005 at 5:50 pm

Posted in Programming

Tagged with