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