LR

已經過了一週多了沒動這個了,先發布文章吧,最近進入項目組,可能時間不大多,以後慢慢改。
或許可以近期將一些這裏研究過的東西寫些感受放上來

目標:
1.可以顯示不同編碼的漢字,可自行更換字體,更改字體大小
2. 不同方式顯示,例如,橫版,豎版,雙屏等等
3.多種控制方式
4.良好的界面,足夠的速度,文件大小回避等。
5.支持壓縮文件

達成:
1.使用freetype2庫,可以打印Unicode漢字,使用ttf字體,可更改字體大小
2.可以實現GBK的打印
3.簡單排版
4.讀取配置文件
5.顯示速度
6.字型灰度表示
7.簡單的自動排版
8.簡單的按鍵控制
9.1bit的位圖的顯示
10.自動判斷幾種編碼方式,Unicode,UnicodeBigEnd,GBK(兼容GB2312,兼容ANSI)。
11.文件列表,及文件選擇
12.簡單的鍵盤,筆操作實現

短期目標:
1.各種操作的結合行
2.文件列表的緩衝顯示
3.書籤
4.常用字符點陣緩存功能
5.支持壓縮文件,至少要zip
6.看能否實現最大程度的編碼範圍,比如使用iconv庫來實現


log:
2008
2月
16日:決定自己做一款閱讀器,開始蒐集資料
17:安裝devkitpro以及palib,hellowold成功
18:嘗試讀取文本,讀取文本成功,直接打印英文成功,中文失敗
19:研究點陣字庫打印
20:GBK字庫打印失敗,GB2312打印成功
21:使用各種方式嘗試使用GBK字庫(system.fon),失敗。PS,這個fon字體是不是有問題啊。。。
22:放棄點陣字庫,發現開源freetype庫,簡單研究,發現freetype for nds,還是先thanks一下 Robots w/lasers http://blog.davr.org/
23:簡單查看文檔,根據demo編制程序,編譯失敗
24:freetype2古怪的include編譯器不支持,更改其爲普通的include方式,編譯成功,使用fat.h for nds(應該是有更改流方式的作用),字體讀取成功。未有顯示結果,研究palib bitmap處理,果然,是顏色未定義。漢字打印失敗,英文成功。考慮編碼問題,果然是編碼問題,使用unicode編碼文字替代原有文字,打印成功。開心,終於完成了一個目標。
25:荒廢了一日,基本。無論怎麼include,都提示各種輸入方式的wchar方式未定義
26:繼續嘗試各種widechar方式,無奈沒有一種可以成功。放棄,改爲直接讀取char,然後將char類型轉換成wchar_t類型,基本成功。
27:發現windows下字體全是unicode,故想用windows的字體直接使用GBK編碼文件是不可能的,唯一的方法是寫出轉換函數,將GBK(或者GB2312,GBK向下兼容)編碼轉換成unicode編碼,也就是windows採用的codepage方式,nds估計沒有codepage,自己編一個。從gbk編碼表中提取了GB2312編碼表,實現轉換。
28:利用stlmap,實現gbk編碼查找,速度的問題暫時不知道,等有空去nds上實際測試一下。測試效果,不如人意。速度慢,效果差。。。進行了簡單的排版試驗
29:字體調整中,實在是受不了那個難看的效果了,想到兩種方法,一種將各種灰度表現出來,二,看能否轉換成單色(這個bitmap可能會小)。採用第一種方法成功,r=g=b爲各種灰度。速度問題,讀字體的時候,是非常慢的。看來只有先將要顯示的讀出來的辦法了,不然確實很慢。不過,有個關鍵在於,看書的時候,看完一頁需要時間,這個時間用來緩存應該是足夠的。搞定。發現一個libiconv可以轉換編碼,應該會有所幫助吧,但是我這周的主要工作就沒了。。。。看見說simsun字體在小字號下使用嵌入式bitmap,1bit,我忘記考慮這個了,怪不得。應該要做進去,可以自動判斷得到FTbitmap的類型。不過我找到一種load方式,FT_LOAD_NO_BITMAP,不使用嵌入的字體。算是一個偷懶的方法吧。對於字體,我簡單將其居中,繼續偷懶。。。
3.1:簡單實現了自動排版。今天,從字體解脫吧。開始選擇文件!實現了簡單的按鍵控制,可以簡單的翻頁了,但是速度很不理想,主要是需要緩衝很長時間。需要開始考慮FT_CACHE的問題,也許會有所幫助。
3.2:搞定了1bit bitmap和gray bitmap之間的顯示,都是抄的代碼-_-!。實現了編碼自動判斷,這個有了就比較方便了,其實早就編好了,只是今天去將最後的判斷代碼編寫一下if..else if..else... :-)調整灰度函數,現在顯示效果還不錯了。使用點陣字庫顯示文件列表,不過16點陣看起來有些大啊,找找12點陣的看
3.3:漢字常用的字符頻率:最常用的140個字符佔50%,常用的1000個漢字佔90%的應用,所以,漢字cache的作用應該會是相當明顯的。不過,cache就要寫數據了,模擬器好像還不能。最好是針對字體的字號進行cache。爲了減少開發複雜性,我決定將目錄結構定死。因爲,需要將txt文件放到指定的目錄是一件可以接受的複雜度事件,但卻我需要爲這件事搞很多時間。但是我又想到,不支持目錄的話,就會不方便管理書籍,這點比較麻煩。所有txt都放在一個目錄下的話,似乎不好。不管怎麼說,先做好了反色顯示選擇條目的功能,代碼應該可以有很多改進,因爲我複製了N回,多綜合一下複用情況,應該可以改進。
3.4:實現了文件列表,以及瀏覽選擇功能。現在還差書籤功能,以及幾個功能之間的調整和結合問題了,比如文件列表顯示不全,顯示了文本以後的輸入問題,等等。然後除開主要功能就是性能方面的cache了。寫了個半角全角的顯示。今天好睏啊,不想做事。
3.5:研究研究zip文件
3.6:已經荒廢了兩天,算上今天就是3天。不過還是比較慵懶。重新設計一下類吧。

發佈了35 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章