国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種用戶界面字體渲染方法及裝置的制作方法

      文檔序號(hào):7746568閱讀:227來源:國知局
      專利名稱:一種用戶界面字體渲染方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于手機(jī)用戶界面(UI)技術(shù)領(lǐng)域,尤其涉及一種用戶界面字體渲染方法及裝置。
      背景技術(shù)
      手機(jī)用戶界面又稱作人機(jī)界面(MMI),它負(fù)責(zé)和用戶的交互,在必要的時(shí)候調(diào)用其 它模塊的功能。UI設(shè)計(jì)則是指對(duì)軟件的人機(jī)交互、操作邏輯、界面美觀的整體設(shè)計(jì)。好的 UI設(shè)計(jì)不僅讓手機(jī)變得有個(gè)性有品味,還讓手機(jī)的操作變得舒適、簡單、自由,充分體現(xiàn)手 機(jī)的定位和特點(diǎn)。手機(jī)UI開發(fā)的核心是手機(jī)圖形界面渲染引擎。手機(jī)圖形界面渲染引擎不同于一 般的二維或三維圖形渲染引擎,不僅要求能夠渲染出更精美的圖形界面,還要求渲染的效 率能夠更高,對(duì)系統(tǒng)資源的占用盡量低。手機(jī)字體渲染引擎是手機(jī)圖形界面渲染引擎的一部分,負(fù)責(zé)所有字體的繪制。在 手機(jī)圖形界面渲染引擎中,手機(jī)字體渲染的速度往往是最慢的,效率往往是最低的,這使得 需要大量字體渲染的界面流暢程度非常差。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題是提供一種效率較高的用戶界面字體渲染方法及裝置。為解決上述技術(shù)問題,本發(fā)明用戶界面字體渲染方法包括如下步驟字體緩存表建立步驟,該步驟用于建立字體緩存表,對(duì)需要渲染的字體進(jìn)行緩 存;字體查找步驟,該步驟用于在所述字體緩存表中查找并返回需要渲染的字體;字體渲染步驟,該步驟用于將所述查找到的需要渲染的字體渲染出來。為解決上述技術(shù)問題,本發(fā)明用戶界面字體渲染裝置包括字體緩存模塊、字體查 找模塊和字體渲染模塊;其中,所述字體緩存模塊存放有字體緩存表,用于緩存需要渲染的字體;所述字體查找模塊用于在所述字體緩存表中查找并返回需要渲染的字體;所述字體渲染模塊用于將所述需要渲染的字體渲染出來。本發(fā)明的有益效果為本發(fā)明通過建立字體緩存表,將需要渲染的字體進(jìn)行預(yù)先緩存,從而能夠顯著提 高用戶界面字體渲染效率,特別使得包含大量字體渲染的動(dòng)態(tài)UI (如用戶界面的滑動(dòng),圖 標(biāo)的拖動(dòng))的流暢程度不會(huì)因?yàn)榇罅孔煮w渲染而降低。并且本發(fā)明還提出了字體緩存表的 字體補(bǔ)充方案和維護(hù)方案,使本發(fā)明更具有實(shí)用價(jià)值。


      圖1為一個(gè)具體實(shí)施例的本發(fā)明方法流程示意圖2為字體緩存表示意圖;圖3為本發(fā)明方法中緩存字體查找流程圖;圖4為一個(gè)具體實(shí)施例的本發(fā)明裝置結(jié)構(gòu)示意圖。
      具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
      對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清晰明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明做進(jìn)一步的詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方案利用AMC引擎(Adobe Mobile Client,Adobe公司的手機(jī)圖形引擎)作為圖形引擎,并且在Arena平臺(tái)(一種手 機(jī)開發(fā)平臺(tái))上實(shí)現(xiàn),用于解釋本發(fā)明,并不用于限定本發(fā)明。圖1為一個(gè)具體實(shí)施例的本發(fā)明方法流程示意圖,如圖所示,本發(fā)明用戶界面字 體渲染方法具體包括如下步驟A、建立字體緩存表,將需要渲染的字體即文字的形狀存儲(chǔ)在字體緩存表中;B、在字體緩存表中查找需要渲染的字體,若找到則進(jìn)入步驟C;若未找到,則進(jìn)入 步驟D;C、返回需要渲染的字體,即返回在字體緩存表中對(duì)應(yīng)的緩存位圖,進(jìn)入步驟E ;D、調(diào)用手機(jī)平臺(tái)字體繪制接口把未在字體緩存表中查找到的需要渲染的字體保 存到字體緩存表中相應(yīng)位置的緩存位圖中,并返回這個(gè)緩存位圖,進(jìn)入步驟E ;E、利用該緩存位圖繪制文字,即把需要渲染的字體渲染出來。本發(fā)明方法在具體實(shí)現(xiàn)時(shí),若在字體緩存表中未查找到需要渲染的字體,也可調(diào) 用手機(jī)平臺(tái)字體繪制接口把需要渲染的字體繪制出來,然后對(duì)該字體進(jìn)行渲染,同時(shí)將該 字體緩存到字體緩存表中。其中,步驟D的字體緩存過程包括D1、生成一個(gè)與字體相關(guān)聯(lián)的內(nèi)存,也就是讓這個(gè)內(nèi)存的幀緩沖區(qū)同字體的數(shù)據(jù) 區(qū)是同一塊內(nèi)存;D2、設(shè)置內(nèi)存的各種屬性,包括設(shè)置背景色為黑色,設(shè)置字體顏色以及字體格式;D3、調(diào)用手機(jī)平臺(tái)字體繪制接口把文字繪制到上述內(nèi)存上,也就是把文字的字體 保存在上述內(nèi)存中,實(shí)現(xiàn)以緩存位圖來描繪字體。步驟E中,字體渲染過程是一個(gè)緩存位圖的拷貝過程,對(duì)于字體的緩存位圖的每 一個(gè)像素pixel,做如下操作步驟E1、如果像素pixel的RGB值為零,則返回,否則進(jìn)入步驟402 ;步驟E2、計(jì)算像素pixel在屏幕幀緩沖區(qū)中對(duì)應(yīng)的像素p,把pixel的RGB值拷貝 到像素P。字體緩存表CASHER_TABLE是緩存渲染字體的數(shù)據(jù)結(jié)構(gòu),是一個(gè)哈希鏈表,字體緩 存表CASHER_TABLE由索引數(shù)組和緩存節(jié)點(diǎn)TextCasher構(gòu)成,如圖2所示,每一個(gè)緩存節(jié)點(diǎn) TextCasher包括兩部分文字信息和緩存位圖。文字信息存放了文字的編碼、字體名稱、字 體大小、字體顏色以及輸出矩形范圍,是判斷當(dāng)前需要渲染的字體和緩存在字體緩存表中 的字體是否一致的依據(jù)。緩存位圖存放了文字的字體,緩存位圖用于渲染字體。緩存節(jié)點(diǎn)TextCasher的定義如下
      typedef struct_TextCasher{AMTextInfo textlnfo ;BITMAP mbp ;struct_TextCasher氺next ;}TextCasher ;字體緩存表CASHER_TABLE定義如下#define HASH_TABLE_LENGTH 1000TextCasher*m_tcTab1e[HASH_TABLE_LENGTH];圖3是緩存字體查找的流程圖,具體步驟如下步驟101、利用文字的編碼、字體名稱、字體大小、字體顏色,利用函數(shù) ComputeHashIDO計(jì)算出哈希索引值id ;步驟102、如果m_tcTable[id]等于0,表示哈希索引值id處沒有緩存節(jié)點(diǎn) TextCasher,則進(jìn)入步驟103,否則進(jìn)入步驟104 ;步驟103、在m_tcTable [id]處添加一個(gè)緩存節(jié)點(diǎn)TextCasher,進(jìn)入步驟106 ;步驟104、查找m_tcTable[id]指向的鏈表,若需渲染字體的緩存節(jié)點(diǎn)存在,返回 該緩存節(jié)點(diǎn)的指針,進(jìn)入步驟107 ;否則返回該鏈表最后一個(gè)緩存節(jié)點(diǎn)的指針,進(jìn)入步驟 105 ;步驟105、在指向的緩存節(jié)點(diǎn)之后添加一個(gè)緩存節(jié)點(diǎn)TextCasher,進(jìn)入步驟106 ;步驟106、把需要渲染的字體保存到指向的緩存節(jié)點(diǎn)TextCasher中,并返回該節(jié) 點(diǎn)的指針,進(jìn)入步驟107;步驟107、把相應(yīng)緩存節(jié)點(diǎn)TextCasher中的緩存位圖渲染出來。為了提高查找的效率并且不讓字體緩存表占據(jù)過多的內(nèi)存,需要對(duì)字體緩存表進(jìn) 行維護(hù),具體方法如下定義變量aCCeSS_num,代表查找次數(shù);avg_st印,代表平均查找次數(shù)。步驟201、查找字體緩存表,若找到緩存字體,則把找到字體所需的查找次數(shù)保存 在變量temp_st印中,并且把a(bǔ)ccess_num的值加1 ;步驟202、按照下列方法計(jì)算平均查找次數(shù)aVg_st印avg_step = (avg_step*(access_num-l)+temp_step)/access_num ;步驟203、如果avg_st印大于閥值s,則清空字體緩存表,同時(shí)access_num和avg_ step重置為零。通過上述方法可以讓平均查找次數(shù)保持小于閥值S。閥值S為預(yù)先設(shè)定的平均查 找次數(shù)閥值,可根據(jù)實(shí)際情況設(shè)定,本實(shí)施例設(shè)定s = 3。圖4為一個(gè)具體實(shí)施例的本發(fā)明裝置結(jié)構(gòu)示意圖,如圖所示,本發(fā)明用戶界面字 體渲染裝置包括字體查找模塊、字體緩存模塊、字體渲染模塊和字體緩存表維護(hù)模塊。其中,字體緩存模塊存放有字體緩存表,字體緩存表用于緩存需要渲染的字體。 字體緩存表CASHER_TABLE是緩存渲染字體的數(shù)據(jù)結(jié)構(gòu),是一個(gè)哈希鏈表,字體緩存表 CASHER_TABLE由索引數(shù)組和緩存節(jié)點(diǎn)TextCasher構(gòu)成,每一個(gè)緩存節(jié)點(diǎn)TextCasher包括 兩個(gè)部分文字信息和緩存位圖。文字信息存放了文字的編碼、字體名稱、字體大小、字體顏色以及輸出矩形范圍,是判斷需要渲染的字體和緩存在字體緩存表中的字體是否一致的依 據(jù)。緩存位圖存放了文字的字體,緩存位圖用于渲染字體。緩存字體查找模塊用于查找需要渲染的字體在字體緩存表CASHER_TABLE中的位
      置。字體緩存模塊還用于將未在字體緩存表中查找到的字體緩存到字體緩存表中,調(diào) 用手機(jī)平臺(tái)字體繪制接口把未在字體緩存表中查找到的字體緩存到字體緩存表CASHER_ TABLE中,具體實(shí)現(xiàn)步驟同方法中的描述,在此不再贅述。在本實(shí)施例中,若字體查找模塊查找需要渲染的字體失敗,則字體緩存模塊將需 要渲染的字體通過上述方案緩存到字體緩存表中,同時(shí)返回需要渲染的字體,供字體渲染 模塊執(zhí)行。本實(shí)施例中由于把內(nèi)存的背景色設(shè)為了黑色,黑色的RGB(RGB代表計(jì)算機(jī)圖形學(xué) 顏色的三個(gè)分量,即紅、綠、藍(lán))值都為零,而字體顏色不為黑色,故在緩存位圖中,字體所 在的像素點(diǎn)的RGB值不為零,其它部分像素點(diǎn)的RGB值都為零。這樣這個(gè)緩存位圖的作用 就是一個(gè)掩碼,通過每個(gè)像素點(diǎn)的RGB值是否為零判斷這個(gè)像素點(diǎn)是字體部分還是其余背 景部分,因此本發(fā)明也把這種具有掩碼功能的緩存位圖稱為文字的掩碼位圖。本發(fā)明中該 掩碼位圖是指保存的位圖是文字形狀的緩存位圖。字體渲染模塊的主要功能是利用字體緩存表中的相應(yīng)字體的緩存位圖對(duì)字體進(jìn) 行高效的渲染。字體緩存表維護(hù)模塊用于對(duì)字體緩存表進(jìn)行維護(hù),以提高查找的效率并且不讓字 體緩存表占據(jù)過多的內(nèi)存,具體的字體緩存表維護(hù)方案同方法中的描述,在此不再贅述。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說明,所應(yīng)注意的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,本領(lǐng)域的技術(shù)人員可以對(duì) 本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改 和變型屬于本發(fā)明權(quán)利要求記載的技術(shù)方案及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包 含這些改動(dòng)和變型在內(nèi)。
      權(quán)利要求
      一種用戶界面字體渲染方法,其特征在于包括如下步驟字體緩存表建立步驟,用于建立字體緩存表,對(duì)需要渲染的字體進(jìn)行緩存;字體查找步驟,用于在所述字體緩存表中查找并返回需要渲染的字體;字體渲染步驟,用于將所述查找到的需要渲染的字體渲染出來。
      2.根據(jù)權(quán)利要求1所述的用戶界面字體渲染方法,其特征在于 所述字體緩存表為哈希鏈表,其每一個(gè)節(jié)點(diǎn)包括文字信息和緩存位圖;其中所述文字信息用于判斷所述需要渲染的字體和緩存在所述字體緩存表中的字體 是否一致;所述緩存位圖用于渲染所述字體。
      3.根據(jù)權(quán)利要求1或2所述的用戶界面字體渲染方法,其特征在于還包括字體緩存步驟,用于將未在所述字體緩存表中查找到的字體緩存到所述字體緩 存表中。
      4.根據(jù)權(quán)利要求3所述的用戶界面字體渲染方法,其特征在于,所述字體緩存步驟包括生成一個(gè)與需要緩存的字體相關(guān)聯(lián)的內(nèi)存;設(shè)置所述內(nèi)存的屬性,包括設(shè)置背景色為黑色,設(shè)置字體顏色以及字體格式; 調(diào)用手機(jī)平臺(tái)字體繪制接口將所述字體繪制到所述內(nèi)存上。
      5.根據(jù)權(quán)利要求3所述的用戶界面字體渲染方法,其特征在于若所述字體查找步驟查找所述需要渲染的字體失敗,則執(zhí)行所述字體緩存步驟,將所 述需要渲染的字體緩存到所述字體緩存表中,同時(shí)返回所述需要渲染的字體,供所述字體 渲染步驟執(zhí)行。
      6.一種用戶界面字體渲染裝置,其特征在于包括字體緩存模塊、字體查找模塊和字體 渲染模塊;其中,所述字體緩存模塊存放有字體緩存表,用于緩存需要渲染的字體; 所述字體查找模塊用于在所述字體緩存表中查找并返回需要渲染的字體; 所述字體渲染模塊用于將所述需要渲染的字體渲染出來。
      7.根據(jù)權(quán)利要求6所述的用戶界面字體渲染裝置,其特征在于 所述字體緩存表為哈希鏈表,其每一個(gè)節(jié)點(diǎn)包括文字信息和緩存位圖;其中所述文字信息用于判斷所述需要渲染的字體和緩存在所述字體緩存表中的字體 是否一致;所述緩存位圖用于渲染所述字體。
      8.根據(jù)權(quán)利要求6或7所述的用戶界面字體渲染裝置,其特征在于所述字體緩存模塊,還用于將未在所述字體緩存表中查找到的字體緩存到所述字體緩 存表中。
      9.根據(jù)權(quán)利要求8所述的用戶界面字體渲染裝置,其特征在于,所述字體緩存模塊采 用的字體緩存方案包括生成一個(gè)與需要緩存的字體相關(guān)聯(lián)的內(nèi)存;設(shè)置所述內(nèi)存的屬性,包括設(shè)置背景色為黑色,設(shè)置字體顏色以及字體格式; 調(diào)用手機(jī)平臺(tái)字體繪制接口把所述字體繪制到所述內(nèi)存上。
      10.根據(jù)權(quán)利要求6或7所述的用戶界面字體渲染裝置,其特征在于 還包括字體緩存表維護(hù)模塊,用于對(duì)所述字體緩存表進(jìn)行維護(hù)。
      全文摘要
      本發(fā)明公開了一種用戶界面字體渲染方法,包括如下步驟字體緩存表建立步驟,用于建立字體緩存表,對(duì)需要渲染的字體進(jìn)行緩存;字體查找步驟,用于在所述字體緩存表中查找并返回需要渲染的字體;字體渲染步驟,用于將所述查找到的需要渲染的字體渲染出來;字體緩存步驟,用于將未在所述字體緩存表中查找到的字體緩存到所述字體緩存表中。本發(fā)明方法能夠顯著提高用戶界面字體渲染效率,特別使得包含大量字體渲染的動(dòng)態(tài)界面的流暢程度不會(huì)因?yàn)榇罅孔煮w渲染而降低。本發(fā)明還提供了一種相應(yīng)的用戶界面字體渲染裝置,包括字體緩存模塊、字體查找模塊、字體渲染模塊和字體緩存表維護(hù)模塊。
      文檔編號(hào)H04M1/725GK101833542SQ201010152009
      公開日2010年9月15日 申請(qǐng)日期2010年4月21日 優(yōu)先權(quán)日2010年4月21日
      發(fā)明者廖海亮 申請(qǐng)人:中興通訊股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1