新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計應(yīng)用 > 電子紙閱讀器的PPT格式引擎設(shè)計和優(yōu)化

電子紙閱讀器的PPT格式引擎設(shè)計和優(yōu)化

作者: 時間:2011-03-10 來源:網(wǎng)絡(luò) 收藏

3 軟件設(shè)計
本設(shè)計以嵌入式多格式解析引擎系統(tǒng)架構(gòu)為基礎(chǔ)。解析引擎是負(fù)責(zé)對源文件進(jìn)行解析,生成中間格式需要的數(shù)據(jù)的模塊。
解析引擎的內(nèi)部架構(gòu)如圖2所示。

c.JPG
3.1 語法分析器
語法分析器為輸入流數(shù)據(jù),輸出為結(jié)構(gòu)化數(shù)據(jù)供各模塊使用。PPT格式的記錄采用id-value結(jié)構(gòu),id和value占據(jù)規(guī)定的字節(jié)數(shù),語法分析器負(fù)責(zé)識別記錄id,并抽取value。
3.2 導(dǎo)航器
負(fù)責(zé)把數(shù)據(jù)從文件系統(tǒng)調(diào)入內(nèi)存,并把I/O流轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù),即用DOM結(jié)構(gòu)描述文件的整體架構(gòu)。
該模塊具有頁面導(dǎo)航作用。PPT使用OLE2組合文檔存儲。容器和結(jié)點只存儲粗粒度索引信息,對于不需要立即顯示的頁,只存儲容器結(jié)點,暫時不展開,需要顯示該頁時,再從該結(jié)點向下展開,從而減少了不必要的文件讀取。這種分層裝載方法,提高了打開速度,并且對于大文檔,進(jìn)入速度只和第一頁的復(fù)雜程度有關(guān)。
此外,為了更好地索引,建立了一系列的鏈表結(jié)構(gòu)。如:數(shù)據(jù)塊索引表、根目錄表、圖像數(shù)據(jù)流鏈表、用戶反向鏈表、文本鏈、母板鏈表等。
文件長度、版本號、進(jìn)行文件合法性等信息通過讀取初始化塊獲得。除此之外還需要初始化幾個重要的全局鏈表。
①數(shù)據(jù)塊索引表。文件以塊為單位存儲,且不連續(xù),數(shù)據(jù)所屬塊號和塊內(nèi)偏移量可以方便地進(jìn)行尋址操作。
②構(gòu)建根目錄表,包括存儲內(nèi)容的起始塊號和大小,用于尋址操作。讀操作只在當(dāng)前塊范圍內(nèi),當(dāng)超出當(dāng)前塊可讀長度時,通過查詢塊索引表找到下一塊的塊號。
③構(gòu)建圖像數(shù)據(jù)流鏈表。
④構(gòu)建用戶反向鏈表。為了快速保存,PPT采用增量式存儲,即每次保存時,直接生成頁面副本并追加到文檔末尾。增量式存儲的缺點是冗余量大。例如,有的文件只有幾頁,但文件大小幾MB甚至幾十MB,文件實際大小和修改次數(shù)有關(guān)。
⑤幻燈片文本鏈,流信息到排版元數(shù)據(jù)獨(dú)立存儲。純文本存儲在文本流中,存儲以及排版信息存儲在頁數(shù)據(jù)區(qū)。頁數(shù)據(jù)區(qū)還存儲了純文本在文本流中的位置。
⑥母板鏈表,母板一般作為背景,以頁為單位順次存儲。因為電子紙顯示灰度圖像,背景和正文疊加以后看不清楚,用戶閱讀時可以去除背景,而不會影響到文件本身。
增量式存儲的基本思想是:每次修改產(chǎn)生一個用戶信息,存儲修改的塊號,當(dāng)前用戶信息反向指向上一個用戶信息,從而構(gòu)成一個用戶反向鏈。遍歷用戶反向鏈可以找到最后一次修改。冗余數(shù)據(jù)可以直接丟棄。
3.3 布局管理器
負(fù)責(zé)屏幕劃分和圖層管理,布局管理器劃為不同的矩形區(qū)域,并標(biāo)識該區(qū)域的類型。然后分別將解析得到的文字,圖形,圖像緩沖區(qū)映射到屏幕位圖上。
3.4 文字處理器
PPT格式的文字種類和布局相對復(fù)雜,可以分為正文和圖形內(nèi)嵌文字兩種,各級標(biāo)題正文的布局也有要求。文字處理器針對各種文本的排版格式多樣性進(jìn)行解析和布局,完整再現(xiàn)原文檔的版式信息。
文字處理過程分為預(yù)排版和頁面排版兩部分,預(yù)排版負(fù)責(zé)填充字模緩沖區(qū),抽取字符編碼和字體信息作為FreeType的輸入,用生成的單個字模位圖填充緩沖區(qū)。然后結(jié)合標(biāo)尺和對其方式把映射到頁面顯示緩沖區(qū)。文字解析原理圖如圖3所示。

d.JPG
3.5 圖形渲染
負(fù)責(zé)圖形繪制和組合圖形坐標(biāo)空間轉(zhuǎn)換。本解析引擎不依賴于圖形服務(wù)器,擁有專用的矢量圖形繪制庫。能夠?qū)D形直接繪制到頁面位圖中,與物理顯示無關(guān)。
繪制直線,曲線和多邊形填充分別采用了經(jīng)典的Breshman算法,三次貝塞爾曲線畫線算法,列掃描多邊形填充算法3種成熟算法。為了提高了運(yùn)算效率,對于浮點數(shù)作取整運(yùn)算。經(jīng)驗證,在浮點數(shù)運(yùn)算效率不佳的嵌入式系統(tǒng)上也能到達(dá)較好的渲染效果。
組合圖形(Drawing Group)包含了一組圖形對象,采用了Dom結(jié)構(gòu)。子結(jié)點使用相對于父結(jié)點的坐標(biāo)空間。因此,圖形處理能夠遞歸地進(jìn)行坐標(biāo)轉(zhuǎn)化,并把圖形繪制在其父結(jié)點的坐標(biāo)空間內(nèi)。

矢量控制相關(guān)文章:矢量控制原理


關(guān)鍵詞: 視頻 音頻

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉