平板電視OSD的結構化界面設計
2. OSD包含的基本元素 本文引用地址:http://dyxdggzs.com/article/167910.htm
OSD信息中主要包括以下一些基本元素(可能本文的提法未必準確,希望讀者可以體會(huì )到其意思):區域、標簽、圖標、文字、進(jìn)度條、動(dòng)畫(huà)、數字、可選圖標、導航信息等。下面分別給出這些元素的定義、作用、屬性和響應事件。
a. 區域
定義:在OSD畫(huà)布中,以特定的屬性(顏色、閃爍、大小等)標示出的矩形或任意形狀的區域。
作用:對OSD內容進(jìn)行分類(lèi)或標示,例如標題區域,內容區域等。
屬性:位置、顏色、閃爍特性等。
響應事件:作為固定的信息內容,通常對UI輸入的控制無(wú)響應。
b. 標簽(Label)
定義:固定不變的文字信息,可以是一行或多行。
作用:對OSD內容進(jìn)行必要的文字說(shuō)明。

圖3:字符型OSD結構。
屬性:位置、顏色、閃爍特性、語(yǔ)言類(lèi)別、大小寫(xiě)、對齊方式等。
響應事件:作為固定的信息內容,通常對UI輸入的控制無(wú)響應。
c. 圖標(Icon)
定義:以特定的字符或像素組合構成形狀,以表達可識別的信息。
作用:對OSD內容進(jìn)行形象的提示,如播放、禁止等特定符號。
屬性:位置、顏色、閃爍特性等。
響應事件:作為固定的信息內容,通常對UI輸入的控制無(wú)響應。
d. 文字(Text)
定義:相較標簽,其同樣為文字信息,但是可以隨用戶(hù)的操作而改變。
作用:以隨選擇而改變的文字內容,提供關(guān)于用戶(hù)選擇的文字提示。
屬性:位置、顏色、語(yǔ)言類(lèi)別、大小寫(xiě)、對齊方式等。
響應事件:用戶(hù)的選擇,通常為上一個(gè)或下一個(gè)選擇。
e. 進(jìn)度條(Bar)
定義:矩形條狀的物件,隨其數值的不同而改變相關(guān)特性,未來(lái)也許會(huì )有其它形狀的此類(lèi)物件,如油量表狀等,但它們都具有同樣的屬性。
作用:以形象的圖形界面,給出關(guān)于某項數值的圖形說(shuō)明。
屬性:位置、顏色、上下限、當前值、類(lèi)型、大小、是否顯示數值等。
響應事件:數值的改變。
f. 動(dòng)畫(huà)(Movie)
定義:隨時(shí)間而改變的圖標組合。
作用:以活動(dòng)的圖形使OSD界面更生動(dòng),提高信息的表達效果。
屬性:位置、顏色、具有的圖標數目、變化速度等。
響應事件:作為固定的信息內容,通常對UI輸入的控制無(wú)響應。
g. 數字
定義:隨有關(guān)參數或用戶(hù)選擇改變而改變的數字組合,可以為十進(jìn)制或其它進(jìn)制,亦可以是百分比或其它數值形式。
作用:直觀(guān)地給出關(guān)于某項參數的數值量化指示,通常與進(jìn)度條聯(lián)合使用,以達到直觀(guān)與形象的雙重效果。
屬性:位置、顏色、上下限、當前值、進(jìn)制選擇等。
響應事件:對應參數的數值的改變。
h. 可選圖標(Option)
定義:隨有關(guān)參數或用戶(hù)選擇改變而改變的圖標組合。
作用:用戶(hù)選擇的圖形化表達,例如選擇、未選擇、開(kāi)啟、關(guān)閉等信息的圖形化表達。
屬性:位置、顏色、閃爍、選擇數目等。
響應事件:對應參數的選擇改變。
i. 導航信息
定義:呈現在OSD畫(huà)布上,對當前UI場(chǎng)景中的用戶(hù)操作進(jìn)行提示的信息。
作用:指引用戶(hù)操作相關(guān)按鍵,進(jìn)行OSD內容操作。通常具有可用按鍵的指示以及必要的文字說(shuō)明,通常作為OSD提示信息的完善和人機界面友好化的措施。
屬性:位置、顏色、閃爍等。
響應事件:UI場(chǎng)景、按鍵的改變。
需要說(shuō)明的是,上述的物件并不能涵蓋現在和將來(lái)所有的OSD中可能出現的內容,但卻是OSD的基本的和主要的內容,通過(guò)對它們進(jìn)行分類(lèi)和進(jìn)行統一的處理,可以幫我們完成通常意義上的OSD的80-90%的工作。
使用基于對象的方法處理OSD UI
傳統的處理手法是將特定場(chǎng)景下的OSD物件逐一用代碼“畫(huà)”出來(lái),在遇到特定的UI事件時(shí),再利用一堆if else判斷出特定場(chǎng)景和操作對象,并做相應的OSD處理。在OSD較簡(jiǎn)單的情況下,其不失為一個(gè)可行的方法。但在遇到OSD場(chǎng)景和模式較多的情況下,這個(gè)if else的結構會(huì )變得很大,而且更為重要的是極易出錯以及維護成本提高。
隨著(zhù)OSD越來(lái)越復雜以及代碼工作量的不斷提高,人們意識到我們需要花費太多時(shí)間在這些“表面文章”上,而真正重要的應用層和設備驅動(dòng)層的開(kāi)發(fā)時(shí)間會(huì )受到影響,進(jìn)而影響新產(chǎn)品的開(kāi)發(fā)進(jìn)度。固件工程師也不愿不斷重復編寫(xiě)同樣代碼來(lái)滿(mǎn)足不斷改變客戶(hù)的特定OSD需要。
筆者早期也曾遭遇同樣的困擾,面對部門(mén)里工程師毫無(wú)效率地做著(zhù)同樣的事情,感覺(jué)到開(kāi)發(fā)一個(gè)統一的OSD UI平臺的重要性?,F在對于上述OSD UI進(jìn)行的分析,可以讓我們開(kāi)發(fā)出獨立于特定數字視頻處理器平臺和OSD發(fā)生機制的硬件環(huán)境的獨立統一開(kāi)發(fā)工具。
事實(shí)上,平板顯示芯片方案的重要提供者如Genesis、Pixelworks等為了加速其產(chǎn)品的開(kāi)發(fā)和應用速度,已經(jīng)提供了具有這樣功能的基于Windows的固件開(kāi)發(fā)工具。本文試圖探討這一類(lèi)工具的運作原理,或許讀者基于本文可以開(kāi)發(fā)出自己所需要的工具,當然其應用具有更廣泛的代表性。
筆者在最近的液晶電視開(kāi)發(fā)案例中使用了這樣一個(gè)結構:
typedef struct
{
byte mode;//UI場(chǎng)景適用的模式
byte lan; // UI語(yǔ)言
byte scene; // UI場(chǎng)景
byte last; // UI上個(gè)場(chǎng)景
byte next; // UI下個(gè)場(chǎng)景
byte sel; //UI 當前場(chǎng)景對物件的選擇
byte sel_total; //UI當前場(chǎng)景中選擇項的總數
byte *info; // UI的物件指針
byte pos_v; // 物件垂直方向位置
byte pos_h; // 物件水平方向的位置
byte col_f; // 物件的前景顏色
byte col_b; // 物件的背景顏色
byte att; // 物件的其它顯示屬性
ACT_Struct (*act)[]; // 該物件的響應動(dòng)作表指針
byte *note; // 導航說(shuō)明信息
}UI_Struct;

圖4:Pixelworks的GUI Builder OSD
評論