專利名稱:一種文字滾動顯示方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式終端的屏幕顯示(on-screen display,縮寫為OSD)技術(shù)領(lǐng)域, 具體地說,本發(fā)明涉及一種文字滾動顯示方法。
背景技術(shù):
文字滾動技術(shù),是媒體播放系統(tǒng)尤其新聞發(fā)布或者廣告插播中比較常見的技術(shù), 多采用將要發(fā)布或插播的內(nèi)容在屏幕底部由左向右的形式滾動播出。在當(dāng)前的很多 嵌入式媒體播放系統(tǒng)中,上述滾動形式很常見。同時,很多文件的文件名很長,在 顯示文件列表時,界面上一行無法完全顯示,這也需要當(dāng)焦點移到某個文件時將其 文件名以滾動形式顯示。
嵌入式系統(tǒng)中的文字顯示技術(shù),以機頂盒為例,通常都是將所要顯示的文字點 陣打入緩存中,再由2D圖形加速器畫出到屏幕上。對于滾動文字而言,以左移為例, 通常都是將左邊超出屏幕的部分減掉,剩余所有字符點陣讀入緩存中,再通過2D圖 形加速器顯示到屏幕上。超出屏幕的部分不能顯示,卻需要被讀入緩存、送入顯示 通道,顯然,這種顯示算法的復(fù)雜度高,并且消耗了嵌入式系統(tǒng)中緊缺的緩存資源, 當(dāng)待顯示的字符較多時,這一問題尤為突出,字符滾動顯示的速度會因讀入字符過 多而變得緩慢。在播放高清影片的同時顯示滾動文字,這一問題將更為嚴(yán)重。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有嵌入式終端文字滾動顯示算法消耗資源過多的不足, 提供一種高效低復(fù)雜度的文字滾動實現(xiàn)方案。
本發(fā)明提供了一種文字滾動的方法,包括下列步驟
1) 獲取屏幕的字符顯示區(qū)域所能顯示字符的個數(shù);
2) 設(shè)置字符顯示窗口,所述字符顯示窗口長度為所述屏幕的字符顯示區(qū)域所能 顯示字符的個數(shù)加1;所述字符顯示窗口的起始位置與待顯示字符串的起始位置對 齊;
3) 將當(dāng)前字符顯示窗口內(nèi)的字符轉(zhuǎn)換為像素點陣數(shù)據(jù);
4) 將步驟3)中得到的像素點陣數(shù)據(jù)讀入緩存并將其送入顯示通道,輸出所述 當(dāng)前字符顯示窗口內(nèi)的字符串的像素點陣,所述像素點陣按每次K列像素的速度在所述屏幕的字符顯示區(qū)域內(nèi)滾動,直至當(dāng)前字符顯示窗口內(nèi)的第一個字符完全移出所述屏幕的字符顯示區(qū)域,并且最后一個字符完全移入所述屏幕的字符顯示區(qū)域;所述K為自然數(shù);
5)判斷是否所述待顯示字符串的所有字符均顯示完畢,如果判斷為否,則將所述字符顯示窗口向后移動一個字符,釋放緩存,回到步驟3);如果判斷為是,則本
次字符串顯示完畢。
在上述技術(shù)方案中,進一步地,在所述步驟l)中,對所需顯示的字符所對應(yīng)的像素點陣進行解析,得到單個字符點陣的寬度和高度,然后根據(jù)屏幕的字符顯示區(qū)域長度方向所占的像素個數(shù),獲取屏幕的字符顯示區(qū)域所能顯示字符的個數(shù)。
在上述技術(shù)方案中,進一步地,在執(zhí)行所述步驟2)前,判斷待顯示字符串長度是否超出屏幕的字符顯示區(qū)域的長度,如果判斷為是,則執(zhí)行所述步驟2),如果判斷為否,則靜態(tài)顯示所述待顯示字符串。
在上述技術(shù)方案中,進一歩地,所述步驟4)中,所述K為4。
在上述技術(shù)方案中,進一步地,所述步驟4)包括下列子步驟
41 )將屏幕的字符顯示區(qū)域所能顯示的像素個數(shù)作為顯示長度maxWidth,
42) 在屏幕上顯示把所述字符顯示窗口內(nèi)字符串的前maxWidth個像素作為第一幀數(shù)據(jù)讀入緩存,將第一幀數(shù)據(jù)輸入顯示通道進行顯示,然后進入步驟43);
43) 將字符顯示窗口內(nèi)字符串的顯示起點后移K列像素,把本次顯示起點起始的maxWidth個像素緩存成一幀數(shù)據(jù),再把這幀數(shù)據(jù)輸入顯示通道進行顯示;在200MHZ的CPU上面利用其圖形加速功能,每顯示一幀字幕的時間周期為0.04s左右;
44) 判斷字符顯示窗口內(nèi)字符串的所有像素是否顯示完畢,如果判斷為否,則回到步驟43),如果判斷為是,結(jié)束當(dāng)前字符顯示窗口的顯示。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于
本發(fā)明基于嵌入式系統(tǒng),實現(xiàn)了一種文字滾動顯示的方法,降低了傳統(tǒng)文字滾動顯示算法實現(xiàn)的復(fù)雜度。本發(fā)明中每次滾動顯示僅需將屏幕顯示區(qū)域能放入的文字加1讀入緩存并顯示,無需將所有字符都讀入,這樣就減少了資源的消耗,避免了因讀入字符的增加而引起字符滾動速度變慢的問題。同時,每次多讀入一個字符,即為考慮按像素移動,最左邊的字符按像素移出,多讀入的那一個字符就按像素移入,直到左邊的字符完全移出,多讀的字符完全移入,使整個滾動顯示的效果看起來平滑自然。所謂按像素移動,即將每個字符的像素數(shù)讀出,每次移動固定的像素數(shù),通過調(diào)整每次移動的像素數(shù),也可以調(diào)節(jié)文字的滾動速度,在一個實施例中每次移動4列像素。
圖1是本發(fā)明文件名顯示的整體流程;
圖2是本發(fā)明判別是否需要滾動顯示的流程;
圖3是本發(fā)明靜態(tài)顯示文字的流程;
圖4是本發(fā)明滾動顯示文字的流程。
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細(xì)描述
本發(fā)明提供的嵌入式系統(tǒng)文字滾動顯示的實現(xiàn)方法,以文件列表中長文件名的顯示為例,包括是否需要滾動的判別模塊;滾動顯示模塊;靜態(tài)顯示模塊,如圖1所示。
在是否需要滾動的判別模塊中,參見圖2,首先進入while(m< length)循環(huán),length為文件名的字符個數(shù),每循環(huán)一次就從文件名中讀出一個字符,定義stringwidth為當(dāng)前已讀出的字符串長度,所述字符串長度是指字符串所對應(yīng)的總的像素的個數(shù),charwidth為下一個要讀入字符的長度,也就是像素個數(shù)。maxWidth為屏幕顯示區(qū)域的長度,即屏幕最大能顯示的像素個數(shù),如果stringwidth+charwidth+70> maxWidth,即返回TRUE值,即表明整個文件名長度在屏幕可顯示區(qū)域無法完全顯示出來,需要滾動顯示。若整個while循環(huán)完畢還沒有出現(xiàn)上述條件,即返回FALSE,即表明整個文件名可以在屏幕可顯示區(qū)域完全顯示出來,不需要滾動顯示。其中,判斷條件中的70為一個調(diào)整數(shù)值,即顯示內(nèi)容需要離屏幕顯示區(qū)域右側(cè)邊框的距離,可以適當(dāng)調(diào)整。
在靜態(tài)顯示模塊中,參見圖3,在設(shè)置一系列顯示參數(shù)并獲取顯示字符的初始X,Y坐標(biāo)后,進入while(nK length)循環(huán),該循環(huán)中,每循環(huán)一次,畫一個字符顯示出來,直至整個文件名均顯示出來,while循環(huán)也就結(jié)束。在每一次循環(huán)中,都需要判斷本次將顯示的字符是中文字符還是英文字符,并將中文字符與英文字符分開做顯示處理,因為中文字符與英文字符的像素、點陣等參數(shù)不同,所以分開處理會得到很好的顯示效果。
在滾動顯示模塊中,參見圖4,在設(shè)置一系列顯示參數(shù)并獲取顯示字符的初始X,Y坐標(biāo)后,進入while(j〈 length+30)循環(huán),length為整個文件名的長度,30為本次文件名滾動顯示尾部與下一次文件名滾動顯示頭部的距離,以空格為填充,可以適當(dāng)?shù)母淖冊撝祦碚{(diào)整距離達(dá)到需要的效果;每進入一次while (j< length+30),都首先進行一次字符串的字體裁減,即剪掉左側(cè)超出屏幕的部分,并在剩余字符中讀出當(dāng)前屏幕顯示區(qū)域所能顯示的字符長度加1個字符,用以進行顯示,其它部分同樣剪掉;如果剩余字符長度小于當(dāng)前可顯示字符長度,以空格填充,直到所填充空格數(shù)到30后,如若當(dāng)前讀入的字符還是小于可顯示區(qū)域的長度,將不夠的部分從文件名的頭部讀出來填充。讀出的當(dāng)前要顯示的字符放入modifiedText數(shù)組中。定義CHfor為一個字符像素數(shù),modifytextlen為modifiedText數(shù)組中的字符長度,在while (j<length+30)循環(huán)中首先嵌套for ( k = 0;k<CHfor;k+=4),此處,4即表明每次左移4列像素長度。在for循環(huán)中又嵌套while(m<modifytextlen)循環(huán),其中,while(nKmodifytextlen)中每循環(huán)一次就是畫當(dāng)前要顯示的字符的一個像素,直至該循環(huán)結(jié)束,當(dāng)前要顯示的字符全部畫出,在該while循環(huán)中同樣對中英文字符分開處理;而for (k = 0;k《Hfor;k+二4)循環(huán)則是為了將一個字符向左按像素移動,直到整個for循環(huán)結(jié)束,之前讀入到modifiedText中的字符,第一個字符完全移出顯示區(qū),最后一個字符完全移入顯示區(qū)。這樣整個while (j< length+30)也就循環(huán)完一次,即while(j< length+30)循環(huán)一次就完成一個字符的左移。當(dāng)jz^ength+30時,整個文件名完全滾動循環(huán)一遍,將j賦值為0,繼續(xù)第二次滾動顯示。
最后所應(yīng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參照實施例對本發(fā)明進行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明的技術(shù)方案進行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。同時,本發(fā)明中以文件列表中的長文件名的滾動顯示為例,但仍同樣適用于其它文字滾動窗口,只是不需進行是否需要滾動的判別而己。
權(quán)利要求
1、一種文字滾動的方法,包括下列步驟1)獲取屏幕的字符顯示區(qū)域所能顯示字符的個數(shù);2)設(shè)置字符顯示窗口,所述字符顯示窗口長度為所述屏幕的字符顯示區(qū)域所能顯示字符的個數(shù)加1;所述字符顯示窗口的起始位置與待顯示字符串的起始位置對齊;3)將當(dāng)前字符顯示窗口內(nèi)的字符轉(zhuǎn)換為像素點陣數(shù)據(jù);4)將步驟3)中得到的像素點陣數(shù)據(jù)讀入緩存,然后將其送入顯示通道顯示出當(dāng)前緩存內(nèi)的字符串的像素點陣,所述像素點陣按每次K列像素的速度在所述屏幕的字符顯示區(qū)域內(nèi)滾動,直至當(dāng)前字符顯示窗口內(nèi)的第一個字符完全移出所述屏幕的字符顯示區(qū)域,并且最后一個字符完全移入所述屏幕的字符顯示區(qū)域;所述K為自然數(shù);5)判斷是否所述待顯示字符串的所有字符均顯示完畢,如果判斷為否,則將所述字符顯示窗口向后移動一個字符,釋放緩存,回到步驟3);如果判斷為是,則本次字符串顯示完畢。
2、 根據(jù)權(quán)利要求1所述的文字滾動的方法,其特征在于,所述步驟l)中,對 所需顯示的字符所對應(yīng)的像素點陣進行解析,得到單個字符點陣的寬度和高度,然 后根據(jù)屏幕的字符顯示區(qū)域長度方向所占的像素個數(shù),獲取屏幕的字符顯示區(qū)域所 能顯示字符的個數(shù)。
3、 根據(jù)權(quán)利要求2所述的文字滾動的方法,其特征在于,執(zhí)行所述步驟2)前, 判斷待顯示字符串長度是否超出屏幕的字符顯示區(qū)域的長度,如果判斷為是,則執(zhí) 行所述步驟2),如果判斷為否,則靜態(tài)顯示所述待顯示字符串。
4、 根據(jù)權(quán)利要求1所述的文字滾動的方法,其特征在于,所述步驟4)中,所 述K為4。
5、 根據(jù)權(quán)利要求1所述的文字滾動的方法,其特征在于,所述步驟4)包括下列子步驟41) 將屏幕的字符顯示區(qū)域所能顯示的像素個數(shù)作為顯示長度maxWidth,42) 在屏幕上顯示把所述字符顯示窗口內(nèi)字符串的前maxWidth個像素作為第一 幀數(shù)據(jù)讀入緩存,將第一幀數(shù)據(jù)輸入顯示通道進行顯示,然后進入步驟43);43) 將字符顯示窗口內(nèi)字符串的顯示起點后移K列像素,把本次顯示起點起始 的maxWidth個像素緩存成一幀數(shù)據(jù),再把這幀數(shù)據(jù)輸入顯示通道進行顯示;在200MHZ的CPU上面利用其圖形加速功能,每顯示一幀字幕的時間周期為0.04s左 右;44)判斷字符顯示窗口內(nèi)字符串的所有像素是否顯示完畢,如果判斷為否,則 回到步驟43),如果判斷為是,結(jié)束當(dāng)前字符顯示窗口的顯示。
全文摘要
本發(fā)明提供了一種文字滾動的方法,包括1)獲取屏幕的字符顯示區(qū)域所能顯示字符的個數(shù);2)設(shè)置字符顯示窗口,其長度為所述屏幕的字符顯示區(qū)域所能顯示字符的個數(shù)加1;所述字符顯示窗口的起始位置與待顯示字符串的起始位置對齊;3)將當(dāng)前字符顯示窗口內(nèi)的字符轉(zhuǎn)換為像素點陣數(shù)據(jù);4)將像素點陣數(shù)據(jù)讀入緩存,然后將其送入顯示通道顯示出當(dāng)前緩存內(nèi)的字符串的像素點陣,所述像素點陣按每次K列像素的速度在所述屏幕的字符顯示區(qū)域內(nèi)滾動;5)判斷是否待顯示字符串顯示完畢,如果判斷為否,則字符顯示窗口向后移動一個字符,釋放緩存,回到步驟3);否則,本次字符串顯示完畢。本發(fā)明具有高效低復(fù)雜度的優(yōu)點,特別適合嵌入式系統(tǒng)。
文檔編號H04N5/445GK101662616SQ20091009278
公開日2010年3月3日 申請日期2009年9月17日 優(yōu)先權(quán)日2009年9月17日
發(fā)明者吳麗彬, 姜京梅, 胡建良, 曉 陳, 靳海力, 齊向東 申請人:北京中科智網(wǎng)傳媒技術(shù)有限公司;中國科學(xué)院聲學(xué)研究所