新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 電子紙閱讀器的PPT格式引擎設計和優化

        電子紙閱讀器的PPT格式引擎設計和優化

        作者: 時間:2011-03-10 來源:網絡 收藏

        3 軟件設計
        本設計以嵌入式多格式解析引擎系統架構為基礎。解析引擎是負責對源文件進行解析,生成中間格式需要的數據的模塊。
        解析引擎的內部架構如圖2所示。

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

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

        矢量控制相關文章:矢量控制原理


        關鍵詞: 視頻 音頻

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荔浦县| 胶州市| 郸城县| 阳谷县| 绿春县| 灵璧县| 大关县| 垣曲县| 休宁县| 荔波县| 云林县| 喀喇沁旗| 祁阳县| 绥德县| 新源县| 互助| 高邑县| 尉犁县| 吐鲁番市| 旬阳县| 水城县| 晋州市| 汽车| 买车| 兴仁县| 曲靖市| 宁津县| 清徐县| 城步| 上虞市| 元谋县| 方山县| 都江堰市| 碌曲县| 永济市| 平湖市| 揭东县| 扶风县| 深水埗区| 竹溪县| 广宁县|