chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Windows矢量字庫應用在嵌入式機頂盒中的設計

電子設計 ? 作者:電子設計 ? 2018-09-20 07:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

在當前嵌入式系統(tǒng)設計中,廣泛涉及到字符和圖標的顯示。過去的方法通常是使用硬件自帶字庫或者轉(zhuǎn)換中文操作系統(tǒng)(例如UCDOS)的點陣字庫,但隨著嵌入式開發(fā)技術(shù)的發(fā)展,人們對用戶界的要求也越來截止高,大小固定、字體有限、使用不便的點陣字庫已經(jīng)難再滿足要求。于是眾多開發(fā)人員將目光投向了Windows操作系統(tǒng)豐富的字庫和圖標資源,以Widnows 2000系統(tǒng)為例,其OpenType矢量字庫有基于Unicode內(nèi)碼的四萬多個字符,特殊符號以及近百種字體可以選用。但是Windows系統(tǒng)結(jié)構(gòu)復雜,難以直接提取矢量字庫,并且矢量字庫解析算法涉及到Micorosoft和Adobe公司OpenType字體專利,這些問題為Windows字庫的使用帶來了很大的困難。

在參與的DVB-S數(shù)字衛(wèi)星接收機頂盒用戶界面的設計工作中,也遇到了同樣的問題。按照設計要求,需要用到一套完備的,支持包括俄、德、拉丁、阿拉伯等多種語言和特殊符號的小型字庫,但是難以找到合適的現(xiàn)成字庫,在參考了一些商業(yè)字模提取軟件的功能后,提出了一種提取Windows矢量字符以及圖標資源的方法,并用Visual C++6.0程序?qū)崿F(xiàn)。實際應用表明,用本方法生成的字庫字形美觀,字體多樣,完全可以替代商業(yè)字庫,同時還具有使用方便,便于擴展等優(yōu)點。

1 機頂盒圖文顯示原理

機頂盒中文字和位圖的顯示是通過OSD(圖文屏顯技術(shù))模塊完成的。傳統(tǒng)的屏顯示OSD主要應用在VCR、LD和電視機上,采用專用的芯片修改屏幕上指定部位的信號的角度和亮度,實現(xiàn)模擬視頻的同步改變,從而達到顯示的目的。含有OSD的視頻輸出信號在屏幕上從底向上以6個層次顯示:邊界顏色、靜止視頻圖像、活動視頻圖像、OSD背窗口、OSD位圖區(qū)域和OSD硬件游標。本文介紹的機頂盒系統(tǒng)是基于ST公司的方案,接收機軟件是ST公司為其數(shù)字衛(wèi)星接收機硬件評估板配套提供的。其主芯片采用Sti5518微控制器,內(nèi)部集成OSD處理單元。OSD功能模塊框圖如圖1所示。

Windows矢量字庫應用在嵌入式機頂盒中的設計

OSD功能模塊位于NTSC/PAL/SECAM編碼之前,包括一張顏色查找表(LUTs)、Alpha混合濾波器和控制邏輯單元,所有子功能先于將信息從重建緩沖區(qū)傳到SDRAM或與其它靜態(tài)圖像混合前執(zhí)行。

當要輸出圖文信息時,將字符圖標的位圖信息送至OSD位圖區(qū)域的相應位置。OSD位圖區(qū)域由其頭部定義,每個OSD頭主要包括OSD顯示短形區(qū)域的起始位置、大小及兩個分別指向頂場和底場圖像數(shù)據(jù)的指針(這是針對隔行掃描顯示方式;對于逐行掃描,這兩個指針向同一塊內(nèi)存區(qū)域),還有一個指向下一個OSD位圖數(shù)據(jù)頭的指針。由于采用了這種基于指針的OSD數(shù)據(jù)管理結(jié)構(gòu),理論上OSD位圖數(shù)據(jù)塊的數(shù)目不受限制,實際上它要受到內(nèi)存大小的限制。頭部不僅定義了位圖區(qū)域的尺寸、位置以及及顏色信息,而且提供了顏色表更新等功能。字符的顏色設置使用OSD處理單元(LUT)的顏色查找表,也稱做調(diào)色板。2位的LUT意味著有4種顏色可以選擇,并且位圖中的每個像素僅占有存儲單元的2位。如果是透明文字,還要把第一個像素的調(diào)色板顏色值定為透明色掩碼值,這個過程由Alpha混合處理完成。如果輸出像素不在OSD區(qū)域,停止處理視頻接口處理器數(shù)據(jù);如果輸出像素在OSD區(qū)域,OSD數(shù)據(jù)或OSD和視頻接口處理數(shù)據(jù)的混合數(shù)據(jù)經(jīng)Alpha混合濾波處理后以16位YC(Cb,Cr)格式傳輸。對于調(diào)色板顏色值是透明的情況,則直接傳送視頻數(shù)據(jù)而略過OSD位圖數(shù)據(jù)。

OSD的軟件部分可以分為兩部分:硬件抽象層和圖形函數(shù)接口。OSD模塊軟件部分為整個系統(tǒng)軟件部分提供一系列的圖形函數(shù)接口,是實現(xiàn)圖文顯示的基礎,也是給用戶提供一個方便直觀的圖形文字交互方式的保障。本文中硬件抽象層為ST公司提供的STAPI函數(shù)庫,圖形函數(shù)接口在中間件的基礎上自行開發(fā)。

由此可見,在機頂盒系統(tǒng)中字符輸出有三個主要步驟:①系統(tǒng)專用字庫的建立;②字符數(shù)據(jù)的查找;③調(diào)用OSD模塊功能將字符在屏幕上輸出。下面介紹如何通過轉(zhuǎn)換Windows矢量字符,建立一套功能完善,使用方便的字庫系統(tǒng)。

2 提取矢量字符

Winodws矢量字庫存儲漢字的矢量圖形。因為存儲的是筆樣條,對于字符做旋轉(zhuǎn)、縮放、甚至三維拉伸都不會產(chǎn)生失真,但在字符顯示的時候需要計算樣條曲線而增加了計算量。由于嵌入式系統(tǒng)只是針對專一控制應用的系統(tǒng),處理器的性能和資源還不如PC機,一般使用的仍然是點陣字庫。本文介紹的DVB-S機頂盒系統(tǒng)同樣沒有直接使用矢量字庫;而是通過提取Windows中矢量字庫的方法將矢量字符轉(zhuǎn)換成相應的點陣信息。在本開發(fā)方案中,字庫文件中所有漢字的字模信息和圖標信息被存儲到兩個大的數(shù)組中,并作為一個頭文件包含在漢字顯示模塊中。利用計算出的偏移值得到字模數(shù)組中的下標,從而得到漢字存放在數(shù)組中的字模點陣信息。使用程序存儲器空間做字庫,這在漢字用量不大的情況下是一種較完美的解決方案。本系統(tǒng)中負責屏顯功能的API函烽是STOSD函數(shù)庫,里面已把位圖的寬度定義為32像素的整數(shù)倍。這是由于系統(tǒng)的內(nèi)存操作函數(shù)只能對16字節(jié)整數(shù)倍的塊進行拷貝操作,否則內(nèi)存只能一個字節(jié)一個字節(jié)地填充,速度非常慢。例如在16色的調(diào)色板情況下,無論是24×24點陣還是32×32點陣,基于字符單元寬度統(tǒng)一為32像素。一個寬為32像素,高為28像素的基本字符點陣信息需要一個大小為28字節(jié)的整型數(shù)組為記錄。以開發(fā)方案為例,大小為500字符的24×24點陣小型字庫將需要24 000字節(jié)的ROM空間。

轉(zhuǎn)換的關(guān)鍵是要獲得矢量字庫的點陣信息。程序中,回避了較困難的直接解板矢量字庫問題,巧妙地從PC顯示緩沖區(qū)中獲得位映像數(shù)據(jù),再將其轉(zhuǎn)換成OSD模塊函數(shù)支持的點陣格式。位圖法轉(zhuǎn)換矢量字符的算法如下。

①把漢字以位圖的形式顯示在指定的32×28的點陣區(qū)域內(nèi),然后按行提取像素點,每1行以8個像素點為1個字節(jié)(1行4個字節(jié)),以二進制補碼的形式分別存放在4個字節(jié)里。最低字節(jié)存放每一點陣行的前8位。每一行結(jié)束后將其轉(zhuǎn)化為十六進制點陣碼并保存于一個整型數(shù)組中。

②整個字符轉(zhuǎn)換結(jié)束后放在字庫信息文件里,生成一個字符區(qū)域地址映射表,為后面的字符分組查找提供方便。同時生成字符寬度、高度、字體、風格以及代碼頁等相關(guān)信息。

西文“特殊”字符(拉丁字符集里的第128~255字符,碼值大于0x80)的轉(zhuǎn)換是提取矢量字符過程中需要注意的問題。通過VC 6.0開發(fā)環(huán)境可以把執(zhí)行文件編譯成Unicode和ASCII兩片版本。對于Unicode內(nèi)碼版本的應用程序,Windows 2000對其字符的顯示有著很好的支持,但對于ASCII版本的應用程序則存在一定問題。當在應征程序中輸入字符時,因編輯框只支持單字節(jié),系統(tǒng)會將雙字節(jié)的Unicode輸入字符重新解釋,造成的后果是程序無法正確接收這些字符,輸出的特殊字符也一律被顯示為“?”。本文的矢量字庫提取程序為了和Win9x操作系統(tǒng)兼容而被設計為ASCII版本。為了解決上述問題,程序沿用了代碼頁的方法。代碼頁是一個內(nèi)部表,操作系統(tǒng)將字符、數(shù)字和標點等符號映射為字符編號,不同的代碼而支持不同國家所使用的字符集。代碼頁通過編號引用,例如,代碼頁932代表日 本字符集,950代表繁體中文字符集。由代碼頁確定字符集,首先把需要轉(zhuǎn)換的特殊矢量字符編輯后以RTF富文本格式的文本保存,矢量字符提取程序打開RTF文件并插入文本到視圖中,讀取每個特殊字符的值并轉(zhuǎn)換成十六進制。然后讀取RTF文件內(nèi)的代碼頁編號和字體,尺寸和風格等標簽。根據(jù)代碼頁確定對應的字符集,根據(jù)標簽設置顯示字符屬性。最后按一般字符的輸出方法將特殊字符顯示在視圖中。

3 程序?qū)崿F(xiàn)

3.1 功能設計和界面設計

主程序為MFC生成的SDI單文檔程序。視圖類由CscrollView派生,顯示的字符和位圖可以自由地放大和縮小,當字符超過窗口大小時視圖自動滾動,以滿足提取不同大小庫點陣的需要,用一個RichEditBox控件來接收輸入字符。添加靜態(tài)控件,顯示字符點陣的寬、高等信息。在菜單欄分別添加插入位圖、插入圖標、插入特殊字符、字體設置、字體放大和字體縮小等菜單項。

程序的界面如圖2所示。圖中程序正在提取阿拉伯矢量字符集,使用該程序時直接在該工具的圖形操作界面下輸入需要提取的字符或者插入位圖和圖標。待調(diào)整好全部所需的字符圖標后點擊保存,程序自動轉(zhuǎn)換矢量字符和圖形并生成存入文件。實現(xiàn)的功能有:①能在視圖顯示RichEditBox控件內(nèi)輸入英文、漢字等矢量字符,并通過圖形設備上下文CDC讀取視圖的點陣信息;②能讀取所有插入RTF文本內(nèi)的特殊字體點陣信息;③能讀取插入的位圖和圖標點陣信息;④能將點陣信息保存在font.h文件中,并添加字庫索引表和字符寬、高、字體等信息。

3.2 主要類和模塊

CfontView為CscrollView派生類,負責字符和圖標的縮放顯示,CfontModule類封裝了字符串操作函數(shù),CtextSetDlg類負責字符屬性的設定。程序中點陣信息的數(shù)據(jù)、位圖和圖標的數(shù)據(jù)和字符串數(shù)據(jù)分別封裝在類CdotMatrix、CimageElemnt和CwordElement中。在主要的模塊函數(shù)里,Create_Text_Dot_Matrix和Create_Bmp_Dot_Matrix函數(shù)是本程序的核心函數(shù)。功能是在內(nèi)存中形式位映射數(shù)據(jù),完成矢量漢字或矢量圖形向點陣數(shù)據(jù)的轉(zhuǎn)換。設向量圖型尺寸寬width像素,高height像素,程序流程如下:

①計算該位圖對應的緩沖區(qū)尺寸。每行長度為:BytePerLine=(width+1)/8,緩沖區(qū)大小為Buffersize=BytePerLine*height。

②申請內(nèi)存緩沖區(qū)。如果內(nèi)存不足以容納整 個圖形,則可以分段處理。

BufferPtr=(unsigned char*)malloc(BufferSize)。

③計算坐標點在所申請內(nèi)存緩沖區(qū)的偏移量和屏蔽位。設原點(0,0)在內(nèi)存中的偏移量為0,則圖中任意一點P(x,y)相對于原點(0,0)的偏移量為

offset=y*BytePerLine+x/8,該點對應的字節(jié)內(nèi)屏蔽位為mask=0x80》》(X%8)。

④讀取點P(x,y)在內(nèi)存中對應的顏色值Value,讀取所在的字節(jié)。

byte=(unsigned char)*(Bufferptr+offset),取該點對應的位,

Value=byte & mask最后得到點陣信息,輸出到屏幕或磁盤文件。

3.3 主程序流程

主程序流程圖如圖3所示。首先進入響應用戶消息分支,當從編輯框輸入標準漢字或ASCII字符,程序檢查字符同碼判斷字符有效性,若滿足條件則跳至顯示部分;當用戶從外部磁盤插入圖標或位圖圖片,程序直接讀入文件數(shù)據(jù);如果插入的是特殊字符則進入RTF格式文本解析部分,得到特殊字符的代碼頁、字體、大小等信息。然后將字符圖標信息在視圖中顯示,此時可通過圖形界面調(diào)整字符外觀。通過獲得內(nèi)存中圖像信息形成位映射數(shù)據(jù),計算點陣數(shù)據(jù)。最后將字庫點陣和索引表、字體、大小等附加信息按頭文件格式保存到字庫文件中。

4 結(jié)論

實際應用中,本方法可以有關(guān)鍵人物 地提取Windows環(huán)境下矢量字庫的字模,滿足嵌入式機頂盒系統(tǒng)的開發(fā)需要。字模提取程序具有多種功能,可以生成各種大小風格的字體、符號和圖形點陣信息,從而使機頂盒能利用Windows中豐富的字體和圖像資源,顯示更為精彩的圖形用戶界面。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5196

    文章

    20323

    瀏覽量

    332219
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3699

    瀏覽量

    93658
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    什么是嵌入式應用開發(fā)?

    概述 所謂的嵌入式應用開發(fā)就是在嵌入式操作系統(tǒng)下進行開發(fā)、軟硬件綜合開發(fā) ?嵌入式應用開發(fā)?是指在嵌入式操作系統(tǒng)下進行開發(fā),包括系統(tǒng)化設計指導下的硬件和軟件綜合研發(fā)。
    發(fā)表于 01-12 16:13

    arm嵌入式主板優(yōu)缺點

    Windows CE、Linux等主流的嵌入式操作系統(tǒng)。   ARM的優(yōu)點   一、高可靠性、高穩(wěn)定性:在工業(yè)控制領(lǐng)域,性能穩(wěn)定可靠是自動控制基本的要求,ARM嵌入式主板有著很特殊的優(yōu)勢。第一
    發(fā)表于 01-08 07:08

    系統(tǒng)嵌入式的學習路線

    嵌入式技術(shù)是各種電子產(chǎn)品的核心技術(shù),也是工業(yè)4.0、遠程醫(yī)療、3D打印等新興產(chǎn)業(yè)的核心技術(shù),具有廣闊的發(fā)展前景。很多計算機、電子信息類專業(yè)的學生都想把嵌入式開發(fā)作為自己的職業(yè)目標,但是因為嵌入式涉及
    發(fā)表于 12-16 07:49

    矢量字庫實操指南:從零基礎到高手進階全解析!

    在數(shù)字設計與印刷領(lǐng)域,矢量字庫因其無限縮放不失真的特性成為核心工具。無論是剛接觸設計的新手,還是希望提升效率的老手,掌握矢量字庫的應用都是必備技能。本教程將從基礎概念入手,拆解安裝、調(diào)用、編輯到優(yōu)化
    的頭像 發(fā)表于 11-24 13:15 ?1482次閱讀
    <b class='flag-5'>矢量字庫</b>實操指南:從零基礎到高手進階全解析!

    嵌入式系統(tǒng)的定義和應用領(lǐng)域

    應用系統(tǒng)在功能、可靠性、成本、體積和功耗等方面的嚴格要求的專用計算機系統(tǒng)。 那么,嵌入式系統(tǒng)具體應用在哪些領(lǐng)域呢?事實上,它們的應用非常廣泛。例如,在辦公自動化方面,我們常見的打印機、復印機和傳真機
    發(fā)表于 11-17 06:49

    GPMI生態(tài)再迎里程碑:GPMI微型機頂盒正式發(fā)布

    近日,全球領(lǐng)先的數(shù)字智能娛樂終端廠商創(chuàng)維數(shù)字正式發(fā)布基于我國自主研發(fā)的新一代通用多媒體接口(GPMI)的微型插入機頂盒。該產(chǎn)品將于年內(nèi)率先在江蘇省廣電有線信息網(wǎng)絡股份有限公司啟動試點應用,憑借
    的頭像 發(fā)表于 11-08 01:15 ?5865次閱讀

    嵌入式UI開發(fā)神器:AirFONTS_1000——矢量字體的“小巨人”

    體積小巧卻功能強大,AirFONTS_1000矢量字庫專為嵌入式系統(tǒng)量身打造。它采用矢量技術(shù)實現(xiàn)字體無損縮放,同時保持低內(nèi)存占用,助力開發(fā)者打造高效、美觀的嵌入式界面,突破資源限制。
    的頭像 發(fā)表于 08-28 14:37 ?336次閱讀
    <b class='flag-5'>嵌入式</b>UI開發(fā)神器:AirFONTS_1000——<b class='flag-5'>矢量</b>字體的“小巨人”

    AirFONTS_1000:嵌入式UI開發(fā)的“小而美”矢量字體庫

    針對嵌入式設備資源受限的痛點,AirFONTS_1000應運而生。迷你矢量字庫以極小的存儲空間實現(xiàn)高清字體渲染,支持多語言與動態(tài)縮放,為嵌入式UI設計提供兼具效率與美感的解決方案。 一、硬件接線說明
    的頭像 發(fā)表于 08-28 14:36 ?518次閱讀
    AirFONTS_1000:<b class='flag-5'>嵌入式</b>UI開發(fā)的“小而美”<b class='flag-5'>矢量</b>字體庫

    一文帶你了解嵌入式主板

    嵌入式主板是專為嵌入式系統(tǒng)設計的計算機主板。它與我們常見的臺式機或筆記本電腦主板有著顯著的區(qū)別,核心在于它不是為了通用計算,而是為了執(zhí)行特定任務而設計、集成到更大的設備或系統(tǒng)中。以下是嵌入式主板
    的頭像 發(fā)表于 06-30 16:12 ?607次閱讀
    一文帶你了解<b class='flag-5'>嵌入式</b>主板

    Linux嵌入式和單片機嵌入式的區(qū)別?

    Linux嵌入式與單片機嵌入式在多個方面存在顯著的區(qū)別,以下是詳細的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統(tǒng)運行在嵌入式設備上的一種配置。
    發(fā)表于 06-20 09:46

    嵌入式開發(fā)入門指南:從零開始學習嵌入式

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開發(fā)成為熱門技能之一。以下將為初學者提供一份詳細的嵌入式開發(fā)入門指南,涵蓋學習路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應用嵌入式系統(tǒng)
    發(fā)表于 05-15 09:29

    飛凌嵌入式2025嵌入式及邊緣AI技術(shù)論壇圓滿結(jié)束

    飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」在深圳深鐵皇冠假日酒店盛大舉行,此次活動邀請到了200余位嵌入式技術(shù)領(lǐng)域的技術(shù)專家、企業(yè)代表和工程師用戶,共享嵌入式及邊緣AI技術(shù)的盛宴!
    的頭像 發(fā)表于 04-28 13:57 ?4025次閱讀
    飛凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及邊緣AI技術(shù)論壇圓滿結(jié)束

    嵌入式適合自學嗎?

    嵌入式適合自學嗎?其實并不建議大家自學嵌入式,主要有以下原因。 一)學習難度大 1)知識體系復雜:嵌入式系統(tǒng)是一個復雜的領(lǐng)域,涉及到計算機、電子、通信等多學科知識,需要學習者具備扎實的軟硬件
    發(fā)表于 04-27 09:54

    飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」議程公布

    4月22日,飛凌嵌入式“2025嵌入式及邊緣AI技術(shù)論壇”將在深圳舉行,論壇以“新生態(tài),智未來”為主題,旨在匯聚行業(yè)智慧,探討嵌入式技術(shù)與邊緣AI的深度融合與創(chuàng)新應用。
    的頭像 發(fā)表于 04-02 15:12 ?1247次閱讀
    飛凌<b class='flag-5'>嵌入式</b>「2025<b class='flag-5'>嵌入式</b>及邊緣AI技術(shù)論壇」議程公布

    博通涉嫌壟斷韓國機頂盒SoC市場,達成和解

    定采用其他SoC的項目為博通SoC。此行為被指涉嫌壟斷市場,損害了其他競爭者和消費者的利益。 為達成和解,博通承諾將停止此類行為,不再要求下游企業(yè)在機頂盒中僅搭載自家SoC。同時,博通還承諾不會以有損機頂盒制造商的方式更改現(xiàn)有
    的頭像 發(fā)表于 02-11 10:24 ?1129次閱讀