電網智能調度IDAMMI界面單元設計_第1頁
電網智能調度IDAMMI界面單元設計_第2頁
電網智能調度IDAMMI界面單元設計_第3頁
電網智能調度IDAMMI界面單元設計_第4頁
電網智能調度IDAMMI界面單元設計_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、idammi界面單元設計項目名稱:電網智能調度項目編號:jyf-ida主管部門:電網自動化事業(yè)部當前版本:1.0目錄一qt-opengl環(huán)境下中文字符的顯示11字體引擎和繪制22字體編碼轉換33字體文件定位43.1windows平臺字體文件定位43.2unix平臺字體到字體文件的映射6二 智能調度人機界面整體設計91描述92mmi框架主要分布和功能設計103人機界面主體和場景管理:123.1術語解釋:123.2mmi窗口與場景管理方案13一qt-opengl環(huán)境下中文字符的顯示摘要opengl下中文顯示是基于opengl環(huán)境應用開發(fā)必須面對的問題,本文提供了在qt-opengl環(huán)境下顯示中文字

2、符的綜合解決方案。目標:在opengl環(huán)境下,實現人機會話圖形文本的任意顯示,能兼容qt的字體設置和格式設置 約束顯示的字符能隨圖形一起縮放、旋轉、變形,滿足人機界面字符輸出的要求能跨平臺,采用矢量字體,縮放操作不會產生明顯的效果下降主要技術難點1 字體引擎和繪制2 字體的編碼轉換3字體文件的查找與定位4 字體風格的實現5 字體緩存1 字體引擎和繪制opengl環(huán)境下繪制字體,必須能讀取字體信息,并能使用opengl函數繪制在指定的位置,經過考察對比,引入開源項目ftgl作為opengl環(huán)境下的文字繪制引擎,ftgl使用另一個開源項目freetype作為字體引擎,讀取字體文件。ftgl的版本采

3、用的是2.1,freetype版本是2.3.5。ftgl和freetype可以支持ttf字體的讀取與繪制,但是目前的ftgl實現存在一個缺陷,即無法直接讀取ttc字體文件中的第二個字體,比如在windowsxp 環(huán)境中,字體“宋體”和“新宋體”使用的是同一個字體文件,ftgl只能讀取默認的第一個字體,freetype提供的接口,可以讀取默認的字體,然后得到字體文件中的總數目,繼續(xù)讀取其他字體,在此可以考慮重新實現ftgl的部分字體繪制類,在指定字體文件的時候可以同時指定字體文件中的字體索引。ftgl文字繪制,默認的字符方向:原點在左下側,軸向右為正,軸向上為正。一般的采用的是左上為原點,軸向右

4、為正,軸向下為正,因此進行文字繪制之前,可以改變坐標系,進行鏡像變換:glscale(1.0f,-1.0f,1.0f);在字體繪制過程中,可能出現部分字體小字號無法讀取的問題,為此可以采用一種間接的方法,在制定字體的時候,采用實際字體的一個特定倍數,使實際設置的字體位于3072之間,并返回這個倍數,在進行坐標系鏡像變換時,同時變換放大倍數,使實際繪制滿足制定的尺寸,此時鏡像變換變?yōu)椋篻lscale(k,-k, k);為時ftgl滿足應用需求,進行如下修改:1 修改ftface、ftfont、ftpolygonfont等類,使打開字體文件添加一個傳入字體索引的功能,保證能支持ttc類型的字體文件

5、(一個字體文件中包含多個字體);2 修改ftpolygonfont的加載字體的方法,由原來的 ftload_no_hint 添加標志 no_bitmap,保證使用多邊形類型的字體忽略字體文件中內嵌的位圖字體文件。在讀取windowsxp環(huán)境下 楷體_gb2312 字體時,發(fā)現無法正常顯示,具體表現為字體上天添加一個沒有規(guī)則的曲線,導致輪廓字體和多邊形字體都無法正常顯示。比較該字體和其他能正常顯示的字體文件(使用fontlibstudio5)發(fā)現,該字體的控制點都不在筆畫輪廓曲線中,一般的字體都是在兩個線上控制點之間一個線外控制點,跟蹤freetype發(fā)現,在讀入字庫文件,并進行貝塞爾差插值產生

6、中間筆畫點過程中,以最后一個線上控制點作為終止條件,在楷體這種情況下,無法正常終止,添加了許多人意曲線。修改該部分代碼,讀入控制點時,同時標志或點數目作為終止條件,可以解決該問題。2 字體編碼轉換ftgl的字體繪制類提供兩種參數類型的接口,一個是render( const char* string ),另一個是render( const wchar_t* string ),當進行非英文字符輸出時,只能采用wchar_t類型,qt內部采用的是unicode編碼方式保存文字信息,因此,可以直接使用qstring進行文字轉換。可能的幾種轉換方式如下:從單字節(jié)字符串得到qstring:qstring

7、str = qstring:fromlocal8bit(char*);從unicode字符串得到qstring:qstring u_str = qstring:fromucs2(wchar_t*);從qstring得到單字節(jié)c風格字符串:const char* buf = qstring.local8bit.data();從qstring 得到unicode字符串:const wchar_t* u_buf = qstring.ucs2();在unix平臺上,wcha_tr的長度是4個字節(jié),而在windows平臺上,wchar_t是2個字節(jié),qt336版本qstring內部使用2個字節(jié)保存uni

8、code編碼的字符串,在進行轉換時必須針對不同的操作系統(tǒng)進行處理,在windows平臺,直接通過qstring:ucs2()可以轉換成 wchar_t* 類型的指針,在unix平臺,通過字符串轉換類進行轉換??缙脚_轉換宏定義如下:#ifdef _unix #define jqstring2wchar(s) jwcharconverter(s).wchardata()#else#define jqstring2wchar(s) (wchar_t*)s.ucs2()#endif其中的jwcharconverter為數據類型轉化類,其核心的實現代碼如下:wchar_t* d;d = new wcha

9、r_tqs.length()+1;wchar_t * p = d;const unsigned short* ucsbuf = qs.ucs2();for(uint k=0;krender(jqstring2wchar(text);要正常使用wchar_t和unsigned short之間進行轉換,vs2005 工程設置中,不能把wchar_t視為內部類型,具體設置方法為:工程 - 屬性 - 配置屬性 - c/c+ - 語言:將wchar_t視為內部類型:否如果不進行上述設置,在傳遞unsigned short 作為wchar_t時,會提示錯誤。3 字體文件定位freetype加載字體,必須提

10、供字體文件路徑,而qt沒有提供直接訪問操作系統(tǒng)字體文件的方法,因此這部分工作必須應用程序實現。編寫一個專門的字體文件管理類,可以根據qfont查找字體文件的物理存儲路徑,實際的查找過程采用跨平臺方法,即同樣聲明的函數,通過采用平臺預處理命令來進行不同的實現,比如在windows平臺上,采用#if dfined(win32)來實現條件編譯。不同的平臺實現的方法各不相同,針對特定的平臺,搜集相關資料,不斷完善這一函數,最終實現系統(tǒng)跨平臺運行。負責該字體到字體文件映射的函數聲明為:bool getfilenamefromfont(const qfont& targetfont, qstring& f

11、ontfilepath,int& faceindex, bool& need_bold, bool& need_italic,bool& exact_match);該函數的輸入為qfont,輸出為字體文件的路徑以及是否繪制環(huán)節(jié)進行特殊的字體繪制風格處理,如是否需要斜體、是否需要粗體等等,以及所得到的字體文件是否精確匹配。該函數的實現采用跨平臺方式,通過條件編譯語句控制函數體的具體實現,現分別描述3.1 windows平臺字體文件定位windows 平臺上要定位字體文件需要解決三個問題:a. 系統(tǒng)字體文件保存路徑,雖然默認的字體文件夾是 %systemdir%fonts,但是不能以此作為程序的依

12、據;b. 字體名稱到字體文件名稱的對應;c. 字體家族、風格到字體名稱的對應。字體文件保存路徑可以通過windows平臺的api得到,具體使用的api是:shgetspecialfolderlocation():得到特殊文件夾的idshgetpathfromidlist():根據id得到文件夾的字符串描述這兩個的函數聲明位于頭文件:使用參數csidl_fonts調用第一個函數,得到一個id,根據第二個函數得到字體文件的保存文件夾。上述函數調用時,需要使用tchar作為參數,這是windows平臺為了適應單字節(jié)字符和unicode編碼而定義的數據類型,通過unicode宏定義來分別處理char和

13、wchar_t,相關的定義和處理函數生命位于頭文件 和,tchar與qstring轉換代碼為:tchar szpath max_path;qstring path;#ifdef unicodepath = qstring:fromucs2(szpath);#elsepath = qstring:fromlocal8bit(szpath);#endif字體名稱到字體文件名稱的對應windows平臺,字體名稱和字體文件的名稱可以從注冊表中查找,根據windows版本不同,存儲的位置不同,windowsnt及之后的系統(tǒng),注冊表存儲位置為:hkey_local_machinesoftwaremicro

14、softwindows ntcurrentversionfontswindowsnt之前的系統(tǒng),注冊表位置為:hkey_local_machinesoftwaremicrosoftwindowscurrentversionfonts存儲的形式是名稱和字符串值,名稱是字體的名稱,字符串是字體文件的文件名稱或者全路徑。比如:方正舒體 (truetype)=fzstk.ttf要根據字體名稱查找字體文件,使用windows注冊表訪問函數,遍歷該處的所有鍵名稱和鍵值,通過名稱的比較得到合適的字符串。還有兩個注冊表鍵需要進一步研究:fontdpifontlinkfontmapperfontsubsitut

15、eshkey _ ntcurrent versionfontsubstitutes當程序調用對常見系統(tǒng)或對話框字體, fontsubsitution 映射用來查找有關計算機的系統(tǒng)區(qū)域設置相應字體字體家族、風格到字體名稱的對應對于英文字體,每個家族中可能存在多個獨立的字體文件,比如:arial (truetype)=arial.ttfarial bold (truetype)=arialbd.ttfarial bold italic (truetype)=arialbi.ttfarial italic (truetype)=ariali.ttf這類文件中,字體名稱體現了家族、風格和字體文件類型,

16、可以根據字體家族名稱和風格,按照一定的規(guī)則形成字體名稱,在字體列表中查找;有些字體文件中包含多個字體,命名為ttc,比如:宋體 & 新宋體 (truetype)=simsun.ttcms mincho & ms pmincho (truetype)=msmincho.ttcms gothic & ms pgothic & ms ui gothic (truetype)=msgothic.ttcgulim & gulimche & dotum & dotumche (truetype)=gulim.ttcbatang & batangche & gungsuh & gungsuhche (tru

17、etype)=batang.ttcsimsun & nsimsun (truetype)=simsun.ttcmingliu & pmingliu (truetype)=mingliu.ttccambria & cambria math (truetype)=cambria.ttc這類字體文件,采用“&”符號連接字體文件中的所有字體,可以通過在打開字體文件時指定字體的序號來確定加載字體。對于字體文件的搜索,可以按照下列邏輯:首先根據家族名稱和風格名稱形成字符串:“家族名稱 bold italic”查找匹配的記錄,如果沒有,則把家族名稱后面添加一個空格“家族名稱 ” 然后查找所有的字體名稱,如果

18、找到,判斷位置是否在名稱的開始位置,如果是開始位置,直接可以使用對應的字體文件名稱。如果不在開始位置,重新根據家族名稱,得到字符串:“& 家族名稱 ” 搜索上述字符串,如果找到,截取其左邊的子串,查找“&”的個數(包括被找到的這個),該字體在字體文件中的索引即所有“&”的個數。對于中文字體,往往只有一個字體文件對應一個家族,沒有專門的粗體和斜體字體文件,windows是如何實現這類字體的斜體和粗體的,目前還沒有查找清楚。3.2 unix平臺字體到字體文件的映射unix操作系統(tǒng)有許多平臺實現,每種實現中字體文件的保存位置都不相同,在xwindows標準中,xlib提供核心字體管理的操作函數,這些

19、函數能查找匹配字體,并能生成虛擬字體,滿足繪制的需求臺,xwidnow核心字體管理的主要內容是字體搜索路徑以及每個路徑中保存有字體文件名和邏輯名(lfdp)對應關系的fonts.dir文件,對于矢量字體,還有fonts.scale文件,以及字體的別名文件fonts.alias,通過路徑和這些文件,xwindows實現了對字體文件的管理。qt字體信息中沒有字體文件信息,只有在具有xft選項的qt內部,有對字體文件的信息的管理。但是qt對字體的應用以及xwindows提供的對字體的操作,僅限于對光柵化之后字體顯示和操作的管理,不能完全依賴之實現對opengl字體繪制的實現,因此具決定采用xlib函

20、數自行進行矢量字體信息的訪問。3.2.1 字體保存路徑和字體文件的定位首先需要確定要查找的字體存放路徑,xlib函數庫中的函數:xgetfontpath()可以用來訪問所有的字體搜索路徑,該函數需要display*作為參數,調用方式如下:int result=0;char * fontpath = xgetfontpath(qpaintdevice:x11appdisplay(),&result);在對字符串使用完畢后,需要調用xfreefontpath(fontpath)來釋放返回的內存區(qū)域。之后通過查找字體路徑是否含有fonts.scale,以此作為是否矢量字體的標志,如果存在該文件,則讀

21、取該文件,得到該目錄下所有字體的xlfd到文件名的映射,如果存在fonts.alias,讀取之建立簡單名到xlfd的映射。提取文件名中的擴展選項,如“:”中間的內容,分離文件名本身和擴展內容,主要是獲得字模序號,即在ttc、otc類型的字體文件中,所使用字體在其中的編號,根據后臺字體引擎的不同,編號的格式可能是“:n:”或者“:fn=n:”,通過正則表達式匹配查詢搜索是否具有該類型的選項。在xlfd規(guī)范中,字體名稱的特定字段為0表示矢量字體,包括:pixel_size、point_size、resolution_x、resolution_y、average_width,通過檢查這些屬性是否為0

22、可以進一步確認是否矢量字體。可以將以上字體的信息通過讀取xlfd字符串轉換位可以快速訪問的數據結構,供查詢和匹配使用。3.2.2 字體的匹配字體匹配的目的是根據qfont對象的內容,確定其對應的xlfd,并根據到文件的映射關系和字模序號得到該字體對應的字體文件及其在文件中的編號。qfont提供的字體信息包括字體的家族名稱、繪制風格、字體大小等信息,矢量字體文件匹配僅需要考慮字體的家族、和字體的繪制風格。由于unix系統(tǒng)上,xlfd只支持英文描述的字體名稱,因此不能使用“宋體”之類的字體家族描述,需要進行映射,可以通過配置文件,把常用的中文字體家族映射到unix下對應的字體名稱,如:宋體- so

23、ng, songti,sung楷體- kai,kaiti黑體- hei,heiti仿宋體- fangsong,fangsongti從上面可見,影射映射不是唯一的,目的是確保在各種平臺的適應性。完成字體名稱映射后(如果有必要),根據字體名稱和顯示風格進行匹配,首先進行全部內容匹配,即根據字體名稱和風格匹配,如果能得到精確匹配,則返回結果,如果無法得到結果,則只針對字體名稱進行匹配,如果根據字體名稱也無法匹配,則根據配置文件制定的中文字體范圍,確定所查詢的字體是中文字體還是英文字體,分別提供默認的字體,作為查詢結果,保證顯示的正常。3.2.3 字體文件的編碼qstring內部使用unicode保存

24、文本,因此要求字體文件必須使用unicode或者兼容編碼進行字模匹配。各種常見的編碼與unixode的關系:gb2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區(qū)的內碼范圍高字節(jié)從b0-f7,低字節(jié)從a1-fe,占用的碼位是72*94=6768。其中有5個空位是d7fa-d7fe。 gb2312支持的漢字太少。1995年的漢字擴展規(guī)范gbk1.0收錄了21886個符號,它分為漢字區(qū)和圖形符號區(qū)。漢字區(qū)包括21003個字符。gbk: 對gb2312的擴充, 以容納gb2312字符集范圍以外的unicode 2.1的統(tǒng)一漢字部分, 并且增加了部分unico

25、de中沒有的字符gb 13000: 完全等同于iso 10646-1/unicode 2.1, 今后也將隨iso 10646/unicode的標準更改而同步更改;gb 18030-2000: 基于gb 13000, 作為unicode 3.0的gbk擴展版本, 覆蓋了所有unicode編碼, 地位等同于utf-8, utf-16, 是一種unicode編碼形式. 變長編碼, 用單字節(jié)/雙字節(jié)/4字節(jié)對字符編碼. gb18030向下兼容gb2312/gbk. gb 18030是中國所有非手持/嵌入式計算機系統(tǒng)的強制實施標準如果字體的編碼不能與unicode兼容,則需要查找兼容的編碼字體,否則程序

26、無法使用。ftgl支持的編碼映射類型包括:ft_encoding_noneft_encoding_unicodeft_encoding_ms_symbolft_encoding_adobe_latin_1ft_encoding_old_latin_2ft_encoding_sjisft_encoding_gb2312ft_encoding_big5ft_encoding_wansungft_encoding_johabft_encoding_adobe_standardft_encoding_adobe_expertft_encoding_adobe_customft_encoding_app

27、le_roman當利用ftgl并通過freetype讀入字體時,可以制定所使用的字符集,每個字體至少包括一個字符映射,有些字體文件包含多個字符映射,通過制定字集可以指定所使用的映射。3.2.4 字體風格常見的字體有四種風格:普通、粗體、斜體、粗斜體,有些字體家族具有不同的字體文件,有些家族只有一個字體文件,在freetype和ftgl都無法自動完成字體風格變換的情況下,可以考慮采用一定的技巧在opengl中實現不同風格字體的繪制:粗體:采用偏移一定距離,重新繪制的方式來實現粗體效果,偏移的量應根據字號動態(tài)調整,使不產生明顯的重疊感,同時又能達到加粗效果為原則,一般可以選擇:(字體寬度/(305

28、0)。斜體:通過坐標系變換,實現字體傾斜繪制。在調用ftgl繪制前,使modelview矩陣乘上一個變形矩陣,目的是使字形中的點坐標滿足:x=x+k*y,其中的k為斜體系數,矩陣的形式為:,k的取值范圍一般在0.20.4之間。粗斜體:同時應用上述兩種效果,得到粗斜體效果。下劃線和刪除線:對于下劃線,通過ffont類的bbox方法得到字體的外接四邊形的坐標,在(llx,(lly offset),llz)到(urx, (lly offset), llz)繪制一條直線即可,根據字體大小計算實際使了用的線寬,float width = (float)(int)(facesize / 50) + 1);

29、其中的常數 50 可以根據界面效果靈活選定,+1為了保證小字號的下劃線寬度不小于1個單位。為了使下劃線可以離開文字,y坐標進行偏移offset,偏移量可以選擇線寬。對于刪除線,通過計算,在(llx,(lly+ury)/2,llz),(urx,(lly+ury)/2,urz)之間繪制一條線,線寬選擇同上。實現一個字體管理功能模塊,能根據qfont查找相應的字體文件,返回字體文件全路徑、字體在文件中的索引、是否需要應用自己實現斜體、是否需要應用自己實現粗體、是否需要應用自己實現粗斜體,是否需要應用自己實現下劃線、是否需要應用自己實現刪除線等信息。如果調用者希望在無法找到字體時提供默認字體,則提供默

30、認的中文和英文字符的字體信息。3.2.5 字體緩存使用freetype訪問字體文件,不能實現緩存,必須應用程序自己緩存。ftgl內部對字形進行了一定的緩存,創(chuàng)建opengl顯示列表。程序中,需要對ftgl字體再進行緩存,模仿vtk,采用一個管理對象,使用單體模式,緩存所有的字體以及字體中的字形。二 智能調度人機界面整體設計1 描述本部分描述人界面中圖形刷新和安全分析結果展示的原理。要求:1 對于保存在gra文件中的監(jiān)視數據,可以從智能監(jiān)視服務器獲取監(jiān)視結果,控制3d可視化圖元顯示;2 對于安全分析結果,可以從安全分析服務器訪問結果,經過解釋,在人機界面上展示3 安全分析結果可以按照不同層次展示

31、,允許用戶選擇特定的結果,并對結果進一步展開;4 可以采用多場景、多窗口的方式展示不同層次的結果系統(tǒng)結果結構圖:jglwindowdatasubscriber智能監(jiān)視服務安全分析服務topictopics.inigrastagetopic-dllscenetopic:負責管理一個主題相關的圖形和附加圖形。topic的內容由配置文件讀入,包括:標題、圖形文件名稱、數據來源、動態(tài)文件名稱等。topic對象包含一個stage,stage中包含多個scene,同一個主題的不同場景顯示相同的gra,但顯示的圖層可以不同。不同的場景中可以顯示不同的附加可視化對象。stage:接受topic-dll創(chuàng)建場景

32、和顯示對象的操作,保存并解釋添加的對象,在首次繪制時,創(chuàng)建顯示列表,可以為每個對象創(chuàng)建一個顯示列表。維護具有可操作性顯示列表的屬性,如顯示對象的tooltip、接受操作的對象范圍等。根據topic-dll提供的部件坐標,從gra文件獲取圖形坐標,進而創(chuàng)建顯示場景中的對象。接受場景中的鼠標點擊消息,如果能觸發(fā)可操作的對象,則象topic-dll發(fā)送對象被操作消息,又dll決定用戶的操作產生什么響應。datasubscriber:負責刷新當前主題圖形中的實時數據,實現方式類似600pro mmi中的數據刷新器。數據刷新由jglwindow中的數據刷新定時器觸發(fā)。數據刷新器通過訂單從智能監(jiān)視服務器獲

33、取數據。topic-dll: 需要附加圖元的主題都可以提供一個動態(tài)加載的dll,實現一個統(tǒng)一的接口。mmi根據ini配置加載dll庫,并且創(chuàng)建對象。統(tǒng)一的接口實現初始化、釋放操作,實現根據結果向給定的stage中添加 actors的工作,即訪問安全分析或者其他可視化后臺服務器,解釋得到的結果,組織可視化展示場景,生成可視化圖元,添加到stage和scene中。actor: 動態(tài)dll創(chuàng)建的3d可視化圖元,采用文本方式(可以考慮是用xml)進行標記,包括:類型、對象編號、坐標、操作屬性、圖元屬性等。類型可以包括:單柱、雙柱、三柱;圓錐;圓筒;注視;連線;地形墻;顏色影射圖對象編號:有dll創(chuàng)建并

34、維護,作為圖形框架和dll交互的對象標識。坐標可以采用多種方式:固定坐標(gra圖形坐標系);部件中心坐標(指定部件類型和部件id) + 偏移(上、下、左、右和偏移量);部件沿途坐標(如線路)操作屬性:是否有tooltip,是否可以被鼠標選中圖元屬性:采用名值對方式設置屬性,如“r=10,h1=100,h2=200,color=rgb(1.0,0,5,0,5),aphpa=0.8”,不采用固定的數據結構,便于擴充。由于這種創(chuàng)建場景和對象不是實時性操作,采用字符串對性能影響較小,但非常有利于擴充。操作相應:部件選中、部件取消選中、部件被雙擊等。2 mmi框架主要分布和功能設計n-1結果分析系統(tǒng)(

35、s) 主題 視圖 工具 幫助 界面提示區(qū)域 消息滾動顯示區(qū)域預警列表主題列表主題細節(jié)界面主要說明:菜單:提供系統(tǒng)管理工具,包括常見的系統(tǒng)層次的操作、圖形視角設置、屏幕刷新設置、主題切換、子主題信息,主體相信信息展示等。菜單欄在全屏時不能隱藏(?),布局在屏幕的最上端,如下圖:n-1結果分析系統(tǒng)(s) 主題 視圖 工具 幫助工具欄:提供常見的操作快捷按鈕,如保存當前視角、旋轉操作、場景漫游等,工具欄在全屏時自動隱藏,工具欄上用于圖形瀏覽操作的按鈕,顯示區(qū)域都有等效按鈕,可以直接在顯示區(qū)域操作。左邊框左邊框用于顯示系統(tǒng)安全消息、主題列表和當前主題詳細信息。顯示當前智能監(jiān)視服務器所得到的各種預警告警

36、信息,按照嚴重級別排序,能顯示輔助決策系統(tǒng)提供的針對前述信息和其它必要的決策方案列表。雙擊預警列表中的條目,可以通過無模式對話框的方式顯示詳細信息,如果有必要,也可以在opengl視圖中顯示相關的接線圖和部件。相應的圖形必須存在,并且在產生的預警條目和輔助決策條目中有相應的提示信息,包括圖形或者場站文件名稱,設備類型和設備id等,便于人機界面顯示和定位。顯示所有系統(tǒng)可用的主題,并能顯示當前主題,提供對主題的簡要說明(展開可見),如果主題處理器能提供圖形以外的其它展示方式,此處提供提示,用戶觸發(fā)后可以顯示。由處理動態(tài)生成模式對話框,組織自行組織內部內容,并相應用戶的操作。用戶可以通過系統(tǒng)菜單重新

37、加載所有主題,也可以針對制定的主題卸載或者加載。主題的狀態(tài):正常顯示:所有數據正常,可用卸載:主題卸載,關閉圖形文件,釋放處理器,卸載后可以替換圖形文件和動態(tài)鏈接庫隱藏:某些主題暫時不關注,可以隱藏,界面顯示有隱藏的主題,同時提供菜單或者按鈕,恢復隱藏的主題。正在加載或卸載:主體正在加載或者卸載,顯示中間動畫過程優(yōu)先級低。程序啟動后,加載和卸載的過程應該由多線程機制來處理,保證界面的可操作性。對于一般的監(jiān)視類主題,可以在一個圖形文件中,通過不同的圖層建立多個子主題,比如在同一個單線圖中,可以展示變壓器承載比,可以展示母線電壓標尺,還可以展示線路潮流線。狀態(tài)欄 分為兩個區(qū)域,前面的區(qū)域顯示菜單、

38、工具欄等提示信息,和tooltip結合,類似于whats this? 提示,主要區(qū)域滾動顯示各個主題發(fā)出的提示信息,每個主題可以發(fā)送當前最重要的提示信,成為通告??梢灾贫ㄍǜ娑〞r撤銷,也可以主動撤銷。在全屏模式時,opengl窗口下端滾動顯示。主顯示區(qū)域 分為幾個功能區(qū)域,集中電網狀態(tài)指示標志(一個滾動顯示的球),球的顏色可以根據電網狀變化(如在正常的情況下,顯示國網綠色,接近預警是,現實黃色,有告警提示時顯示紅色。)緊接著顯示當前主題的標題,根據主題配置信息得到。在全屏模式下,此處還提供一個主題切換菜單,可以切換當前主題。顯示圖形瀏覽操作空間,包括圖形錯放、平移、視角變換、旋轉等操作。在全屏

39、模式下,此處顯示一個退出全屏模式按鈕。當在單窗口模式下,進行場景切換時,操作區(qū)域下方顯示兩個按鈕,分別對應返回上一個場景和返回主場景的按鈕。在全屏模式時,顯示非全屏模式下狀態(tài)欄通告消息。正常模式不顯示該狀態(tài)欄。3 人機界面主體和場景管理:3.1 術語解釋:主題:一系列相關的信息展示集合成為一個主題。場景:同一主體內,在同一幅底圖中顯示的不同可視化圖元。主題切換,涉及到重新顯示底圖、切換當前后臺服務,場景切換則是在同一主題內實現展現不同的場景,場景切換可以分為兩種:一種是圖形內容的場景顯示篩選,稱為選擇式場景變換;另一種是可操作主題中實現的場景變換,即通過鼠標點擊等操作,由一個場景切換到另一個場景,稱為漫游式場景變換。下表展示著兩種場景切換的細節(jié):對比選擇式場景變換漫游示場景變換變換內容和實現方式同一gra文件中不同圖層分布不同的可視化圖元,用于表述不同的主題,比如同一幅單線圖,電壓標尺監(jiān)控、變壓器熱穩(wěn)定監(jiān)控等、線路熱穩(wěn)定監(jiān)控等。同一主題處理dll可以根據需求,組織不同層次、不同側面的結果,用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論