一種gmf圖形編輯器創(chuàng)建有向圖的自動布局方法
【專利摘要】本發(fā)明提出了一種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,包括如下步驟:解析GMF圖形編輯器建立的有向圖數(shù)據(jù),獲取圖元信息;使用拓撲排序的方法對所有的組件圖元進行分層處理;設(shè)置有向圖中連接點的位置;設(shè)置每個組件圖元位置;設(shè)置每個組件圖元大?。皇褂肕ikami-Tabuchi布線算法布置圖元之間的連線的路徑,當(dāng)連線出現(xiàn)重疊時,使用近鄰連線避讓策略消除重疊。本發(fā)明所公開的該GMF圖形編輯器創(chuàng)建有向圖的自動布局方法與GMF圖形編輯器自帶的布局算法相比,具有諸多優(yōu)點:組件圖元之間不會發(fā)生相互重疊的現(xiàn)象;每層組件中的圖元都被整齊排列,外觀清晰;圖元之間的連線不會穿過組件圖元,且連線之間不會相互重疊。
【專利說明】—種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及圖形布局技術(shù),具體涉及一種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法。
【背景技術(shù)】
[0002]圖形建??蚣?GraphicalModeling Framework,簡稱 GMF)是 Eclipse 平臺中用于圖形化編輯器開發(fā)的框架。開發(fā)者利用GMF提供的組件及其運行時環(huán)境,進行必要的圖形元素建模和相關(guān)配置,便可生成圖形化編輯器工程源代碼。因為圖形編輯器代碼編寫實現(xiàn)了高度自動化,使得圖形編輯器的設(shè)計與實現(xiàn)變得簡單而迅速。
[0003]圖形布局指按照要求設(shè)置圖元的大小、位置、圖元之間連線的路徑等信息。GMF圖形編輯器圖元具有嵌套組合的特點:大圖元由小圖元組成,小圖元又由小一級的圖元組成。大圖元的布局策略需要處理其內(nèi)部子圖元的布局排放,而內(nèi)部子圖元又能擁有自己的布局策略。一個好的布局算法既能保證圖形排版的美觀,又能增強圖形編輯器的易用性。
[0004]目前GMF框架中,已經(jīng)由Randy Hudson等人提供了一種有向圖布局算法的實現(xiàn)。但該算法執(zhí)行過程中有一個限制條件,該有向圖必須是有連接關(guān)系的圖,否則每個結(jié)點計算出的水平位置相同,所有結(jié)點從上往下排成一列。而且,對于圖元之間連線多,圖元層次復(fù)雜等情況,該算法在布局時會導(dǎo)致圖元布局重疊、圖元之間連線穿過圖元等現(xiàn)象的發(fā)生。
【發(fā)明內(nèi)容】
[0005]為解決上述問題,得到圖元連線簡潔、圖元間無重疊的圖形布局,本發(fā)明提出了一種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其具體技術(shù)方案如下:
一種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,包括如下步驟:
SlO:解析GMF圖形編輯器建立的有向圖數(shù)據(jù),獲取圖元信息,將每個組件圖元擁有的有向連線起點的個數(shù)作為該圖元的出度,將其擁有的有向連線的終點的個數(shù)作為該圖元的入度;
S20:使用拓撲排序的方法對所有的組件圖元進行分層處理;
S30:設(shè)置連接圖元的位置:將同一個組件圖元中,所有是有向連線起點的連接點均放置在組件圖元的右側(cè),是有向連線終點的連接點放置在組件圖元的左側(cè),兩個連接點之間等間距放置;然后在此前提下,將與同一個組件圖元相連的連接圖元相鄰放置;
S40:設(shè)置每個組件圖元的位置:將同一層次的組件圖元設(shè)置在同一個水平位置上,以圖元間所有連線的曼哈頓距離最短為目標(biāo),進行目標(biāo)規(guī)劃,以此設(shè)置每個層次中圖元的垂直位置;
S50:設(shè)置每個組件圖元的大小:將每個組件圖元的寬度設(shè)置為固定的值,然后根據(jù)該組件圖元左右兩側(cè)擁有的連接圖元的個數(shù)來設(shè)置組件圖元的長度;
S60:使用Mikam1-Tabuchi布線算法布置圖元之間的連線的路徑,當(dāng)連線出現(xiàn)重疊時,使用近鄰連線避讓策略消除重疊。[0006]進一步的,步驟S20中對組件圖元進行拓撲排序的具體包括:
S201:完成對不構(gòu)成連線環(huán)路、且不孤立的圖元的層次設(shè)置;將無直接前驅(qū)的圖元層次數(shù)設(shè)置為固定值,其他圖元的層次數(shù)為其所有直接前驅(qū)中層次數(shù)最大的加上I ;
S202:對構(gòu)成連接環(huán)路的圖元,將環(huán)路中層次數(shù)最低的任意一個圖元的層次數(shù)設(shè)置為當(dāng)前的層次數(shù)加1,然后將這些圖元重新加入到排序中;如果仍然存在連接環(huán)路,則重復(fù)執(zhí)行該步驟;
S203:對于孤立的圖元,將孤立的圖元的層次數(shù)依次設(shè)置為1,2,3…η,η為正整數(shù);當(dāng)某個孤立圖元的層次數(shù)達到η時,如果仍有孤立的圖元,則對剩余的圖元重新從I開始編
號,直至結(jié)束。
[0007]進一步的,步驟S40包括:
S401::將每個組件圖元長度、寬度設(shè)置為固定相同的值,令同一個層次中的圖元在本層次中根據(jù)垂直的距離均勻分布,并令其水平位置相同;
S402:使用每個圖元的重心代表該圖元的位置,計算所有存在連接的圖元之間的曼哈頓距離,其中:如果兩個連接圖元之間有多條連接,則在計算兩者距離時,每條連接的距離計算一次;最終得到當(dāng)前布局情況下,各個圖元之間的距離的總和;
S403:調(diào)整每個層次中的組件圖元的垂直方向的位置,保證每個組件圖元水平方向不變,垂直方向均勻分布,重新按照步驟S402計算距離值;最終將距離值最小的圖形布局設(shè)置為最終布局。
[0008]進一步的,步驟S50還 包括:
如果連接圖元具有大小,則將連接圖元大小固定,然后每個連接圖元相距等同的距離,分別計算組件圖元左右兩邊的長度,取兩者中長度較大的那個作為組件圖元的最終長度;如果連接圖元沒有大小時,則將連接圖元之間的距離設(shè)置為相同的值,分別計算組件圖元左右兩邊的長度,取兩者中長度較大的那個作為組件圖元的最終長度。
[0009]進一步的,所述近鄰連線避讓策略包括:首先檢測重疊路徑兩側(cè)某距離的地方是否有布線,如果沒有則隨機選擇一邊進行布線;否則增加檢測的距離,直至找到一個合適的路徑為止。
[0010]本發(fā)明的技術(shù)構(gòu)思是:提出一種自動布局GMF圖形編輯器有向圖的方法,該方法對組件圖元進行分層處理,將同一個層次的組件水平整齊排列,圖元之間的布線避免了穿過基本圖元,且連線之間沒有重疊。這個避免了 GMF框架原有布局策略組件圖元之間的相互重疊、連線穿過組件圖元的情況。
[0011]與現(xiàn)有技術(shù)相比,本發(fā)明至少具有以下優(yōu)點:(1)組件圖元之間不會發(fā)生相互重疊的現(xiàn)象;(2)每層組件中的圖元都被整齊排列,外觀清晰;(3)圖元之間的連線不會穿過組件圖元,且連線之間不會相互重疊。
【專利附圖】
【附圖說明】
[0012]圖1本發(fā)明實施例有向圖自動布局的方法示意圖。
[0013]圖2本發(fā)明實施例根據(jù)圖元信息進行拓撲排序分層的流程圖。
[0014]圖3本發(fā)明實施例設(shè)置圖元位置步驟的具體流程圖。
[0015]圖4本發(fā)明實施例對連線重新布置步驟的流程圖?!揪唧w實施方式】
[0016]下面結(jié)合附圖和實施例對本發(fā)明作進一步說明:
本實施例中,使用的GMF圖形編輯器是一個汽車開放系統(tǒng)架構(gòu)(AUTomotive OpenSystem Architecture,簡稱AUT0SAR)圖形編輯器,在該編輯器中可以創(chuàng)建于AUT0SAR模型。其中:對于復(fù)雜具有多個層次圖元的GMF圖形編輯器,組件圖元指的是擁有連接點的最小圖元,連接圖元指的是組件圖元所擁有的連接點,所有圖元均是矩形圖元。AUT0SAR模型的圖兀有Composition、Component、Port、連線。其中Composition圖兀是組合圖兀,該圖元可以包括一個Composition、Component、Port、連線等圖元,是整個有向圖的容器,包含整個有向圖Component則是組件圖元,是擁有連接點Port的圖元;兩個組件之間可以通過連線連接起來,其中連線的起點和終點均為Port,起點稱為RPort,終點稱為PPort。Composition、Component、Port 圖兀均為矩形圖兀。
[0017]本實施例的主要步驟如下:
I)解析有向圖數(shù)據(jù),對組件圖元進行分層設(shè)置:
SlO A^ZfAUTOSAR圖形編輯器所建立的有向圖數(shù)據(jù),獲取每個Component擁有的Port的個數(shù),并記錄與該Component相關(guān)的連線,以及與該Component相連的Component等信息;將這些信息處理存放在一個類數(shù)據(jù)結(jié)構(gòu)中。將每個Component中與其他的Component相連的RPort的個數(shù)記為其入度;將每個Component中與其他Component相連的PPort的個數(shù)記為其出度。
[0018]S20:使用拓撲排序的方法對所有的Component進行分層處理。
[0019]其中:對組件圖元進行拓撲排序的步驟包括:` S201:對Component開始進行拓撲排序,將拓撲排序能夠遍歷到的Component標(biāo)記分層;當(dāng)遍歷到一個Component時將其直接后繼的入度減1,并將其后繼的當(dāng)前層次加I。
[0020]S202:如果有Component與其他的Component構(gòu)成有向環(huán)路,將環(huán)路中當(dāng)前層數(shù)最低的Component中的某個Component的入度置為O,然后使拓撲排序進行下去;重復(fù)執(zhí)行步驟S202直至沒有Component環(huán)路為止。
[0021]S203:對于孤立與其他組件沒有相連的Component,將所有孤立的Component的層次數(shù)依次設(shè)置為1,2,3...η,η為正整數(shù);當(dāng)某個孤立Component的層次達到η時,仍有孤立的Component,則對剩余的圖元重新從I開始編號,直至結(jié)束。
[0022]在該實施例中我們?nèi)訑?shù)η為5,當(dāng)然η還可以是4、6、7等其它正整數(shù)。即:對于孤立與其他組件沒有相連的Component,將所有孤立的Component的層次數(shù)依次設(shè)置為
I,2,3,4,5 ;當(dāng)某個孤立Component的層次達到5時,仍有孤立的Component,則對剩余的圖元重新從I開始編號,直至結(jié)束。
[0023]S30:設(shè)置Port的位置:將同一個Component中,所有的是PPort均放置在Component右側(cè),將RPort均放置在Component左側(cè),兩個Port之間等間距放置。然后在此前提下,將與同一個Component相連的PPort或RPort放置相鄰位置,即所有與同一個組件圖元Component相連的連接圖元(PPort或RPort)之間是相鄰放置的。
[0024]S40:設(shè)置每個Component的在Composition中的位置:將分層數(shù)相同的Component設(shè)置在同一個水平位置上;以Component間所有連線的曼哈頓距離最短為目標(biāo),進行目標(biāo)規(guī)劃;以此設(shè)置每個層次中Component的垂直位置。
[0025]步驟S40在設(shè)置同一層次中Component的位置時,具體步驟包括:
S401:首先將每Component長度、寬度設(shè)置為固定相同的值,令同一個層次中的Component在本層次中根據(jù)垂直的距離均勻分布,并令其水平位置相同。
[0026]S402:計算Component的重心,并以此來表示該Component的位置,計算所有存在連接的Component之間的曼哈頓距離;其中如果兩個連接圖元之間的有多條連接,貝U在計算兩者距離時,每條連接的距離計算一次;最終得到當(dāng)前布局情況下,各個Component之間的距離的總和。
[0027]S403:調(diào)整每個層次中的Component的垂直方向的位置,保證每個Component水平方向不變,垂直方向均勻分布,重新按照步驟S402計算距離值;最終將總距離值最小的圖形布局設(shè)置為最終布局。
[0028]S50:設(shè)置每個Component的大小:將Component的寬度設(shè)置為固定的值,然后根據(jù)該Component左右兩側(cè)擁有的Port的個數(shù)來設(shè)置Component的長度;其中每個Port都是大小相同的矩形圖元。
[0029]其中在設(shè)置Component的大小時,其寬度被設(shè)置為一個固定的數(shù)值;在計算其長度時,其左邊至少需要的長度為所有RPort的本身長度與每個RPort之間距離的總和;其右邊至少需要的長度為所有PPort本身的長度與每個PPort之間距離的總和。得到左右兩邊至少需要的長度后,比較兩者的值,將兩者中較大的數(shù)值設(shè)置為Component的長度。
[0030]S60:使用Mikam1-Tabuchi布線算法布置Component之間的連線的路徑;當(dāng)連線出現(xiàn)重疊時,使用近鄰連線避讓 策略消除重疊。
[0031]其中在使用Mikam1-Tabuchi算法設(shè)置連線的路徑時,將Port的寬度設(shè)置為Mikam1-Tabuchi算法中網(wǎng)格的寬度;然后將整個Composition進行網(wǎng)格化,然后執(zhí)行Mikam1-Tabuchi算法。如果發(fā)生路徑重疊現(xiàn)象,在執(zhí)行近鄰避讓算法時,依次檢測距離該段連線1/4網(wǎng)格、1/2網(wǎng)格、3/4個網(wǎng)格…等地方是否有連線,直到?jīng)]有重疊為止。
[0032]以上本說明書實施例所述的內(nèi)容僅僅是對發(fā)明構(gòu)思的實現(xiàn)形式的列舉,本發(fā)明的保護范圍不應(yīng)當(dāng)被視為僅限于實施例所陳述的具體形式,本發(fā)明的保護范圍也及于本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明構(gòu)思所能夠想到的等同技術(shù)手段。
【權(quán)利要求】
1.一種GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其特征在于,包括如下步驟: SlO:解析GMF圖形編輯器建立的有向圖數(shù)據(jù),獲取圖元信息,將每個組件圖元擁有的有向連線起點的個數(shù)作為該圖元的出度,將其擁有的有向連線的終點的個數(shù)作為該圖元的入度; S20:使用拓撲排序的方法對所有的組件圖元進行分層處理; S30:設(shè)置連接圖元的位置:將同一個組件圖元中,所有是有向連線起點的連接點均放置在組件圖元的右側(cè),是有向連線終點的連接點放置在組件圖元的左側(cè),兩個連接點之間等間距放置;然后在此前提下,將與同一個組件圖元相連的連接圖元相鄰放置; S40:設(shè)置每個組件圖元的位置:將同一層次的組件圖元設(shè)置在同一個水平位置上,以圖元間所有連線的曼哈頓距離最短為目標(biāo),進行目標(biāo)規(guī)劃,以此設(shè)置每個層次中圖元的垂直位置; S50:設(shè)置每個組件圖元的大小:將每個組件圖元的寬度設(shè)置為固定的值,然后根據(jù)該組件圖元左右兩側(cè)擁有的連接圖元的個數(shù)來設(shè)置組件圖元的長度; S60:使用Mikam1-Tabuchi布線算法布置圖元之間的連線的路徑,當(dāng)連線出現(xiàn)重疊時,使用近鄰連線避讓策略消除重疊。
2.根據(jù)權(quán)利要求1所述的GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其特性在于,步驟S20中對組件圖元進行拓撲排序的具體包括: S201:完成對不構(gòu)成連線環(huán)路、且不孤立的圖元的層次設(shè)置;將無直接前驅(qū)的圖元層次數(shù)設(shè)置為固定值,其他圖元的層次數(shù)為其所有直接前驅(qū)中層次數(shù)最大的加上I ; S202:對構(gòu)成連接環(huán)路的圖元,將環(huán)路中層次數(shù)最低的任意一個圖元的層次數(shù)設(shè)置為當(dāng)前的層次數(shù)加1,然后將這些圖元重新加入到排序中;如果仍然存在連接環(huán)路,則重復(fù)執(zhí)行該步驟; S203:對于孤立的圖元,將孤立的圖元的層次數(shù)依次設(shè)置為1,2,3…η,η為正整數(shù);當(dāng)某個孤立圖元的層次數(shù)達到η時,如果仍有孤立的圖元,則對剩余的圖元重新從I開始編號,直至結(jié)束。
3.根據(jù)權(quán)利要求1或2所述的GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其特性在于,步驟S40包括: S401::將每個組件圖元長度、寬度設(shè)置為固定相同的值,令同一個層次中的圖元在本層次中根據(jù)垂直的距離均勻分布,并令其水平位置相同; S402:使用每個圖元的重心代表該圖元的位置,計算所有存在連接的圖元之間的曼哈頓距離,其中:如果兩個連接圖元之間有多條連接,則在計算兩者距離時,每條連接的距離計算一次;最終得到當(dāng)前布局情況下,各個圖元之間的距離的總和; S403:調(diào)整每個層次中的組件圖元的垂直方向的位置,保證每個組件圖元水平方向不變,垂直方向均勻分布,重新按照步驟S402計算距離值;最終將距離值最小的圖形布局設(shè)置為最終布局。
4.根據(jù)權(quán)利要求3所述的GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其特性在于,步驟S50還包括: 如果連接圖元具有大小,則將連接圖元大小固定,然后每個連接圖元相距等同的距離,分別計算組件圖元左右兩邊的長度,取兩者中長度較大的那個作為組件圖元的最終長度;如果連接圖元沒有大小時,則將連接圖元之間的距離設(shè)置為相同的值,分別計算組件圖元左右兩邊的長度,取兩者中長度較大的那個作為組件圖元的最終長度。
5.根據(jù)權(quán)利要求1或4所述的GMF圖形編輯器創(chuàng)建有向圖的自動布局方法,其特性在于,所述近鄰連線避讓策略包括:首先檢測重疊路徑兩側(cè)某距離的地方是否有布線,如果沒有則隨機選擇一邊進行布線;否則增加檢測的距離,直至找到一個合適的路徑為止。
【文檔編號】G06F17/50GK103500250SQ201310443605
【公開日】2014年1月8日 申請日期:2013年9月26日 優(yōu)先權(quán)日:2013年9月26日
【發(fā)明者】李紅, 楊國青, 陳坤, 郭徐, 雷健, 吳朝暉 申請人:浙江大學(xué)