用戶界面上的組件的高效布局的制作方法
【專利摘要】公開了用于基于布局生成顯示的裝置和方法。接收布局,該布局指定容器矩形內的一組矩形組件。每個矩形組件具有至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與至少兩條網格線相關聯。所述至少兩條網格線基于該矩形組件的至少一個大小。計算設備生成約束的系統,每個約束與多條網格線中的至少兩條網格線相關。計算設備解決約束的系統以確定多條網格線中的每條網格線的位置。計算設備基于網格線的位置來生成矩形組件的顯示。
【專利說明】用戶界面上的組件的高效布局
[0001]相關申請的交叉引用
[0002]本申請要求2012年8月3日遞交的美國專利申請13/566,840號的優(yōu)先權,該美國專利申請要求2011年9月30日遞交的標題為“Apparatus and Methods for EfficientLayout of Components on a User-1nterface” 的美國臨時申請 61/541,853 號的優(yōu)先權,這里通過引用將這些美國申請的內容完全并入用于所有目的。
【背景技術】
[0003]在計算設備上操作的許多現代計算機應用提供圖形用戶界面來用于用戶交互??刂朴嬎阍O備的操作系統頻繁地向這些應用提供某種類型的支持以輔助設計用戶界面來允許利用操作系統的應用有共同的外觀和感覺。
[0004]操作系統提供給應用來幫助設計用戶界面的示例工具是“布局管理器”,其被配置為接收“布局”(layout),或者說用于將用戶界面可用的一個或多個相對較大的矩形劃分成可由空間分隔的一組較小的矩形的系列指令。相對較大的矩形通常被稱為“容器”(container),而這些較小的矩形通常被稱為“組件”(component)。通常,布局管理器實現與容器相關聯的布局策略。
【發(fā)明內容】
[0005]在第一方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件。每個矩形組件具有至少一個維度上的至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備生成約束的系統,其中約束的系統的每個約束與多條網格線中的至少兩條網格線相關。計算設備解決約束的系統,以為多條網格線中的每條網格線確定該網格線的位置。計算設備基于網格線的位置生成該組矩形組件中的至少一些矩形組件的顯示。
[0006]在第二方面中,計算設備接收用戶界面布局,用戶界面布局被配置為指定至少第一矩形組件和第二矩形組件,兩者都在容器矩形內。第一矩形組件在水平或垂直維度上具有第一大小。第二矩形組件在水平或垂直維度上具有第二大小。計算設備基于用戶界面布局確定多條網格線。第一矩形組件與多條網格線中的第一組至少兩條網格線相關聯,并且第二矩形組件與多條網格線中的第二組至少兩條網格線相關聯。計算設備可生成約束的系統,其中約束的系統中的第一約束與第一組至少兩條網格線相關,并且約束的系統中的第二約束與第二組至少兩條網格線相關。計算設備解決約束的系統以為第一組和第二組網格線中的各條網格線確定各條網格線各自的位置。計算設備可基于各條網格線各自的位置生成包括第一和第二矩形組件的用戶界面顯示。計算設備可顯示該用戶界面顯示。
[0007]在第三方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件。每個矩形組件具有至少一個維度上的至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線基于該矩形組件的至少一個大小。計算設備生成約束的系統,其中約束的系統的每個約束與多條網格線中的至少兩條網格線相關。計算設備生成包括多個節(jié)點和多個邊緣的圖。每個節(jié)點與節(jié)點值相關聯。多個節(jié)點對應于多條網格線,并且多個邊緣對應于約束的系統。計算設備對多個邊緣進行拓撲排序。計算設備通過利用被配置為結合經拓撲排序的多個邊緣進行操作的貝爾曼-福特(Bellman-Ford)算法的變體對于圖解決單源路徑長度問題來確定網格線的位置。計算設備基于網格線的位置生成該組矩形組件中的至少一些矩形組件的顯示。
[0008]在第四方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件,其中該組矩形組件中的每個矩形組件具有至少一個維度上的至少一個大小。該組矩形組件包括空間組件,該空間組件被配置為不可見并且被配置為不對用戶界面事件作出反應。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備生成約束的系統,其中約束的系統的每個約束與多條網格線中的至少兩條網格線相關。計算設備解決約束的系統以為多條網格線中的每條網格線確定該網格線的位置。計算設備基于網格線的位置生成該組矩形組件中的至少一些矩形組件的顯示。
[0009]在第五方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件。該組矩形組件中的每個矩形組件具有至少一個維度上的至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備生成約束的系統,約束的系統包括一個或多個正常順序約束。約束的系統的每個約束與多條網格線中的至少兩條網格線相關。一個或多個正常順序約束指定多條網格線的正常順序。計算設備解決約束的系統以為多條網格線中的每條網格線確定該網格線的第一位置。計算設備識別一個或多個正常順序約束中的至少一個可放松的正常順序約束。計算設備基于放松至少一個可放松的正常順序約束來解決約束的系統以為多條網格線中的每條網格線確定該網格線的第二位置。對于多條網格線中的至少一條被放松的網格線,第二位置不同于第一位置。計算設備基于網格線的第二位置來生成該組矩形組件中的至少一些矩形組件的顯示。計算設備顯示該顯示。
[0010]在第六方面中,在計算設備處接收布局。該布局被配置為指定容器矩形內的一組矩形組件。每個矩形組件具有至少一個維度上的至少一個大小,并且被配置有重力參數。每個矩形組件基于該矩形組件的重力參數被分類為靈活的或不靈活的。計算設備可從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備可生成約束的系統,其中約束的系統的各個約束與多條網格線中的至少兩條網格線相關。計算設備可解決約束的系統以為多條網格線中的每條網格線確定該網格線的位置。計算設備可基于網格線的位置來生成該組矩形組件中的至少一些矩形組件的顯示。
[0011]在第七方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件。該組矩形組件中的每個矩形組件具有至少一個維度上的至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備生成約束的系統,約束的系統包括最小約束和最大約束。約束的系統的每個約束與所述多條網格線中的至少兩條網格線相關。最小約束指定至少兩條網格線之間的最小值,并且最大約束指定至少兩條網格線之間的最大值。計算設備解決約束的系統以為多條網格線中的每條網格線確定該網格線的位置。計算設備基于網格線的位置來生成該組矩形組件中的至少一些矩形組件的顯示。
[0012]在第八方面中,計算設備接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件。該組矩形組件中的每個矩形組件具有至少一個維度上的至少一個大小。計算設備從布局確定多條網格線。該組矩形組件中的每個矩形組件與這多條網格線中的至少兩條網格線相關聯。這至少兩條網格線是基于該矩形組件的至少一個大小的。計算設備生成約束的系統。約束的系統的每個約束與多條網格線中的至少兩條網格線相關。約束的系統包括不一致約束。生成具有多個節(jié)點和多個邊緣的圖。每個節(jié)點與節(jié)點值相關聯。多個節(jié)點對應于多條網格線。多個邊緣對應于約束的系統。計算設備利用被配置為結合不一致約束進行操作的貝爾曼-福特算法的變體解決約束的系統以確定網格線的位置。計算設備基于網格線的位置生成該組矩形組件中的至少一些矩形組件的顯示。
[0013]本領域普通技術人員通過閱讀以下詳細描述并在適當時參考附圖,將清楚這些以及其他方面、優(yōu)點和替換方案。另外,應當理解,此
【發(fā)明內容】
部分和本文獻中其他地方提供的描述打算以示例而非限制的方式說明要求保護的主題。
【專利附圖】
【附圖說明】
[0014]圖1示出了根據示例實施例的分布式計算體系結構。
[0015]圖2A是根據示例實施例的計算設備的框圖。
[0016]圖2B示出了根據示例實施例的基于云的服務器系統。
[0017]圖3根據示例實施例示出了不具有和具有網格線的示例用戶界面的場景。
[0018]圖4根據不例實施例不出了與圖3的不例用戶界面相對應的不例網格、約束和圖。
[0019]圖5根據示例實施例示出了圖4所示的示例圖的初始和最終圖。
[0020]圖6A和6B根據示例實施例示出了基于圖5的最終圖中的值的示例用戶界面。
[0021]圖6C、6D和6E根據示例實施例示出了基于圖3的示例用戶界面的高度約束的示例用戶界面。
[0022]圖7A和7B根據示例實施例示出了另一場景,其中包括示例網格中的值的范圍的指定,以及相應的約束、最終圖和用戶界面。
[0023]圖8是根據示例實施例的方法的流程圖。
[0024]圖9是根據示例實施例的方法的流程圖。
[0025]圖10是根據示例實施例的方法的流程圖。
[0026]圖11是根據示例實施例的方法的流程圖。
[0027]圖12是根據示例實施例的方法的流程圖。
[0028]圖13是根據示例實施例的方法的流程圖。
[0029]圖14是根據示例實施例的方法的流程圖。
[0030]圖15是根據示例實施例的方法的流程圖?!揪唧w實施方式】
[0031]概述
[0032]隨著支持計算應用的設備的類型的種類增加,設計能夠支持這些設備的靈活的布局管理器的挑戰(zhàn)也相應地增加了。例如,可能希望軟件應用能夠在不同類型的移動電話、平板計算機和/或數字電視上恰當地操作。[0033]然而,這些設備支持的顯示大小和顯示分辨率(例如,像素密度)可能大不相同。移動電話可具有從208x208以下那么小到960x640以上那么大的顯示分辨率(這里,m χ η的顯示分辨率一般指的是設備上的顯示屏幕支持水平方向上m像素和垂直方向上η像素)。平板計算機可支持從768x480以下那么小到1280x1024以上的顯示分辨率?,F代的高清晰度數字電視支持許多顯示分辨率,一些超過了 1920x1080。
[0034]由于顯示分辨率的這種極大的多樣性,所以即使在所有可能設備的子集上促進具有一致格式的應用用戶界面布局也是有挑戰(zhàn)性的。尤其有挑戰(zhàn)性的是設計能夠支持在具有更小屏幕分辨率的設備上恰當顯示用戶界面布局的布局管理器。
[0035]在一些布局管理器中,設計布局策略涉及指定并隨后確定:(i)組件內的水平和/或垂直對齊,以及(ii)容器內的組件的固定或可改變的“靈活性”。組件的靈活性可用于指示組件的大小在至少一個維度上能夠被調整以便將組件適配在組件的顯示內的程度。布局管理器隨后可收集容器矩形內的每個組件的大小、對齊和靈活性要求以基于這些組件的位置和大小來產生用戶界面。然后,應用可利用布局的用戶界面來允許用戶與應用的其余部分交互。
[0036]本公開涉及基于解決由布局為容器矩形內的一個或多個矩形組件指定的一系列約束來生成用戶界面顯示。布局可將容器矩形在邏輯上劃分成行和列,包含的矩形組件沿著這些行和列布置。一般來說,可將組件定義為占據容器矩形的多于一行和/或多于一列,只要這些行和列是毗鄰的。這種組件的指定通常是按照起始行或列index (索引)和span(跨度)來指示的一垂直軸以行索引和行跨度指定,而水平軸以列索引和列跨度指定。
[0037]“單元群組”被定義為沿著X軸和Y軸由start (開始)和end (結束)索引定界的一組單元:總共四個數字。例如,如果想要一個占據被分割成5列和5行的用戶界面的整個最頂行的組件,則可利用以下四個數字在布局內指定最頂行的單元群組:[0038]rowStart (開始行)=0[0039]rowEnd (結束行)=1
[0040]CoIumnStart (開始列)=0
[0041]columnEnd (結束列)=5
[0042]在所公開的布局系統中,這些數字可標識將容器矩形分成行和列的“網格線”??梢园凑誷tart索引和span或者一對start和end索引來指定這些行和列。例如,當定義容器內的四列時,定義這四列的網格線可被稱為X0、X1、X2、X3和X4。類似地,定義四行的網格線可被標注為Y0、Y1、Y2、Y3和Y4。組件和容器矩形都可利用這些標注來定義;例如,容器矩形具有從XO跨越到Χ4的列和從YO跨越到Υ4的行。
[0043]標注列的網格線的索引可按“正常順序”在查看區(qū)域中出現;即,XO — Xl — Χ2 — Χ3 — Χ4。行的相應正常順序條件是YO — Yl — Υ2 — Υ3 — Υ4。然而,對于一些組件放棄正常順序條件可允許網格線在受容器矩形控制的空間的一部分或全部上自由移動并產生一個強大得多的系統。其使得可能具有負的行高度和/或列寬度。例如,對于不可見組件指定負的行高度和/或列寬度可使得布局系統能夠找到更好地適配其內容的布局解決方案。
[0044]利用網格線來指定組件和容器矩形允許了轉換到用于針對網格線指定像素位置的一系列約束。例如,如果一組件在χ維由網格線Xl至X3指定并且必須正好是200像素寬,則對于此組件在χ維指定的相應約束是X3 -Xl=200。如果該組件在y維由網格線Y2和Y3指定并且高度必須在150到200像素之間,則可以使用兩個相應的約束來指定行條件:Y2 - Y3 ≥-200 并且 Y3-Y2 ≥ 150。
[0045]在一些實施例中,可以指定具有一個維度或多于兩個維度的組件和容器。然而,在每個維度上,可以使用一對數字來定義該維度內的開始位置和結束位置;從而,要指定N個維度的組件,可以使用2N個數字。
[0046]然后可以利用線性編程或其他算法來解決該組約束。在一個實施例中,可將該組約束轉換成相應的圖。對于該圖可以解決“單源路徑長度問題”(single-sourcepath-length problem)以確定 每條網格線相對于源網格線的位置。單源路徑長度問題的示例包括找出單個源節(jié)點與圖中的其他節(jié)點之間的最短路徑的“單源最短路徑問題”和找出單個源節(jié)點與圖中的其他節(jié)點之間的最長路徑的“單源最長路徑問題”。布局系統可使用這些位置來指定容器矩形內的網格線的位置,并且利用定位的網格線來生成容器矩形內的組件中的至少一些的顯示。
[0047]解決單源路徑長度問題的一種算法是貝爾曼-福特(Bellman-Ford)算法。在本公開的一個方面中,這里公開的貝爾曼-福特算法變體的一種實現方式可以用O (IE I)的平均運行時間解決單源路徑長度問題,其中|E| =該圖中與該組約束相對應的弧(邊緣)的數目。在一些特定方面中,圖可以是有向圖。在其他特定方面中,這里公開的貝爾曼-福特算法變體的實現方式可識別并去除圖中表示無效約束的弧。
[0048]布局系統接受布局的簡化指定,這些簡化指定不要求對靈活性約束的明確指定。(如上所述,組件的靈活性指的是組件的大小在至少一個維度上能夠被調整多少以便將組件適配在組件的顯示中)。在聲明性系統和傳統的面向對象的系統中,用戶通??梢赃x擇完全不聲明重力。公開的系統可利用未定義的狀態(tài)來推斷組件在一行或列內的靈活性。如果為組件定義了水平或垂直對齊,則可以認為組件的靈活性是靈活的,因為已經定義了對于額外的空間會發(fā)生什么。在沒有明確定義“重力”或者水平/垂直對齊的情況下,系統可作出相反的推斷:單元的大小由其包含的組件——例如文本、按鈕、顯示等等——的大小固定,從而是不靈活的。在像這里描述的Space (空間)組件那樣對于給定的組件沒有指定大小的另一種情況下,可以認為給定的組件是靈活的。
[0049]為了即使在行和列包含多個組件的情況下也進一步推斷行和列的靈活性,可以部署以下兩個化簡規(guī)則:
[0050]規(guī)則1:平行元素(例如,在列中對齊的元素)是靈活的,如果所有平行元素都是靈活的話。
[0051]規(guī)則2:系列元素(例如,一行中的元素)是靈活的,如果該系列元素之一是靈活的話。通過去除對靈活性的明確指定,布局管理器簡化了用戶界面設計者和工具對布局的指定。[0052]布局管理器允許對于與不可見組件相關聯的網格線放松行和列的正常順序條件。正常順序條件的放松在一些情況下可使得即使當容器矩形比正常順序條件下所要求的更小時也能夠完整顯示用戶界面。另外,在這里公開的實施例中,布局管理器利用高效的算法來迅速地操作,從而使能了用戶界面的迅速的調整大小和重繪制操作。
[0053]示例數據網絡
[0054]轉到附圖,圖1示出了被配置為經由網絡106與可編程設備104a、104b和104c通信的服務器設備108、110。網絡106可對應于LAN、廣域網(wide area network,WAN)、公司內聯網、公共因特網、或者任何其他類型的被配置為在聯網的計算設備之間提供通信路徑的網絡。網絡106也可對應于一個或多個LAN、WAN、公司內聯網和/或公共因特網的組合。
[0055]雖然圖1只示出了三個可編程設備,但分布式應用體系結構可為數十、數百或數千的可編程設備服務。另外,可編程設備104a、104b和104c (或任何額外的可編程設備)可以是任何種類的計算設備,例如普通的膝上型計算機、桌面型計算機、網絡終端、無線通信設備(例如蜂窩電話或智能電話),等等。在一些實施例中,可編程設備104a、104b和104c可專用于軟件應用的設計和使用。在其他實施例中,可編程設備104a、104b和104c可以是被配置為執(zhí)行多個任務并且不需要專用于軟件開發(fā)工具的通用計算機。
[0056]服務器設備108、110可被配置為按照可編程設備104a、104b和/或104c的請求執(zhí)行一個或多個服務。例如,服務器設備108和/或110可向可編程設備104a-104c提供內容。內容可包括但不限于網頁、超文本、腳本、諸如編譯的軟件之類的二進制數據、圖像、音頻和/或視頻。內容可包括壓縮的和/或未壓縮的內容。內容可被加密和/或解密。其他類型的內容也是可能的。
[0057]作為另一示例,服務器設備108和/或110可向可編程設備104a_104c提供對用于數據庫、搜索、計算、圖形、音頻、視頻、萬維網/因特網利用和/或其他功能的軟件的訪問。服務器設備的許多其他示例也是可能的。
[0058]計算設備體系結構
[0059]圖2A是根據示例實施例的計算設備(例如系統)的框圖。具體地,圖2A所示的計算設備200可被配置為執(zhí)行服務器設備108、110、網絡106和/或可編程設備104a、104b和104c中的一個或多個的一個或多個功能。計算設備200可包括用戶接口模塊201、網絡通信接口模塊202、一個或多個處理器203和數據存儲裝置204,所有這些都可經由系統總線、網絡或其他連接機制205鏈接在一起。
[0060]用戶接口模塊201可操作來向外部用戶輸入/輸出設備發(fā)送和/或從外部用戶輸入/輸出設備接收數據。例如,用戶接口模塊201可被配置為向用戶輸入設備發(fā)送和/或從用戶輸入設備接收數據,用戶輸入設備例如是鍵盤、小鍵盤、觸摸屏、計算機鼠標、軌跡球、操縱桿、相機、語音識別模塊和/或其他類似的設備。用戶接口模塊201還可被配置為向用戶顯示設備提供輸出,用戶顯示設備例如是一個或多個陰極射線管(cathode ray tube,CRT)、液晶顯不器(liquid crystal display,LCD)、發(fā)光二極管(light emitting diode,LED)、使用數字光處理(digital light processing, DLP)技術的顯示器、打印機、燈泡和/或現在已知或以后開發(fā)的其他類似設備。用戶接口模塊201還可被配置為生成可聽輸出,例如揚聲器、揚聲器插孔、音頻輸出端口、音頻輸出設備、耳機和/或其他類似的設備。特別地,具有用戶接口模塊201的計算設備200可用于顯示用戶界面,該用戶界面包括容器矩形內的一個或多個組件。
[0061]網絡通信接口模塊202可包括一個或多個無線接口 207和/或一個或多個有線接口 208,這些無線接口 207和有線接口 208可配置為經由網絡通信,例如圖1所示的網絡106。無線接口 207可包括一個或多個無線發(fā)送器、接收器和/或收發(fā)器,例如藍牙收發(fā)器、Zigbee收發(fā)器、W1-Fi收發(fā)器、WiMAX收發(fā)器、和/或可配置為經由無線網絡通信的其他類似類型的無線收發(fā)器。有線接口 208可包括一個或多個有線發(fā)送器、接收器和/或收發(fā)器,例如以太網收發(fā)器、通用串行總線(Universal Serial Bus,USB)收發(fā)器、或者可配置為經由雙絞線、同軸電纜、光纖鏈路或到有線網絡的類似物理連接來通信的類似的收發(fā)器。
[0062]在一些實施例中,網絡通信接口模塊202可被配置為提供可靠的、安全的和/或經認證的通信。對于這里描述的每個通信,可以提供用于確??煽客ㄐ诺男畔?有保證消息遞送),可能作為消息頭部和/或尾部的一部分提供(例如,分組/消息排序信息、封裝頭部和/或尾部、大小/時間信息、以及諸如CRC和/或奇偶校驗值之類的傳輸驗證信息)??梢岳靡粋€或多個密碼協議和/或算法來對通信加以保護(例如編碼或加密)和/或解密/解碼,這些密碼協議和/或算法例如但不限于是DES、AES、RSA、Diffie-Hellman和/或DSA。除了這里列出的那些之外也可使用其他密碼協議和/或算法來對通信進行保護(然后進行解密/解碼)。
[0063]處理器203可包括一個或多個通用處理器和/或一個或多個專用處理器(例如,數字信號處理器、專用集成電路,等等)。處理器203可被配置為執(zhí)行包含在數據存儲裝置204中的計算機可讀程序指令206a和/或如這里所述的其他指令。
[0064]數據存儲裝置204可包括可被至少一個處理器203讀取和/或訪問的一個或多個計算機可讀存儲介質。一個或多個計算機可讀存儲介質可包括易失性和/或非易失性存儲組件,例如光學、磁性、有機或者其他存儲器或盤存儲裝置,它們可以全部或部分與至少一個處理器203集成。在一些實施例中,數據存儲裝置204可利用單個物理設備(例如,一個光學、磁性、有機或其他存儲器或盤存儲單元)來實現,而在其他實施例中,數據存儲裝置204可利用兩個或更多個物理設備來實現。
[0065]數據存儲裝置204可包括計算機可讀程序指令206a、實際環(huán)境206b以及可能額外的數據。實際環(huán)境206b可存儲被軟件應用的一個或多個進程和/或線程使用的數據中的至少一些。在一些實施例中,數據存儲裝置204還可包括執(zhí)行這里描述的方法和技術的至少一部分和/或這里描述的設備和網絡的功能的至少一部分所需要的存儲裝置。
[0066]基于云的服務器
[0067]圖2B描繪了根據示例實施例布置為基于云的服務器系統的計算集群209a、209b、209c的網絡106。服務器設備108和/或110可以是存儲基于云的應用和/或服務的程序邏輯和/或數據的基于云的設備。在一些實施例中,服務器設備108和/或110可以是駐留在單個計算中心中的單個計算設備。在其他實施例中,服務器設備108和/或110可包括單個計算中心中的多個計算設備,或者甚至在位于多個不同地理位置的多個計算中心中的多個計算設備。例如,圖1描繪了服務器設備108和110中的每一個駐留在不同的物理位置。
[0068]在一些實施例中,服務器設備108和/或110處的數據和服務可被編碼為存儲在有形計算機可讀介質(或計算機可讀存儲介質)中并可被可編程設備104a、104b和104c和/或其他計算設備訪問的計算機可讀信息。在一些實施例中,服務器設備108和/或110處的數據可存儲在單個盤驅動器或其他有形存儲介質上,或者可實現在位于一個或多個不同地理位置的多個盤驅動器或其他有形存儲介質上。
[0069]圖2B描繪了根據示例實施例的基于云的服務器系統。在圖2B中,服務器設備108和/或110的功能可分布在三個計算集群209a、209b和209c之間。計算集群209a可包括由本地集群網絡212a連接的一個或多個計算設備200a、集群存儲陣列210a和集群路由器211a。類似地,計算集群20%可包括由本地集群網絡212b連接的一個或多個計算設備200b、集群存儲陣列210b和集群路由器211b。類似地,計算集群209c可包括由本地集群網絡212c連接的一個或多個計算設備200c、集群存儲陣列210c和集群路由器211c。
[0070]在一些實施例中,計算集群209a、209b和209c中的每一個可具有相等數目的計算設備、相等數目的集群存儲陣列和相等數目的集群路由器。然而,在其他實施例中,每個計算集群可具有不同數目的計算設備、不同數目的集群存儲陣列和不同數目的集群路由器。每個計算集群中的計算設備、集群存儲陣列和集群路由器的數目可取決于指派給每個計算集群的一個或多個計算任務。
[0071]例如,在計算集群209a中,計算設備200a可被配置為執(zhí)行電子通信服務器112的各種計算任務。在一個實施例中,電子通信服務器112的各種功能可分布在計算設備200a、200b和200c中的一個或多個之間。計算集群209b和209c中的計算設備200b和200c可與計算集群209a中的計算設備200a類似地來配置。另一方面,在一些實施例中,計算設備200a、200b和200c可被配置為執(zhí)行不同的功能。
[0072]在一些實施例中,與服務器設備108和/或110相關聯的計算任務和存儲數據可至少部分基于服務器設備108和/或110的處理要求、計算設備200a、200b和200c的處理能力、每個計算集群中的計算設備之間和計算集群本身之間的網絡鏈路的延遲和/或可對整個系統體系結構的成本、速度、容錯、彈性、效率和/或其他設計目標作出貢獻的其他因素,來分布在計算設備200a、200b和200c上。
[0073]計算集群209a、209b和209c的集群存儲陣列210a、210b和210c可以是數據存儲陣列,這些數據存儲陣列包括被配置為管理對硬盤驅動器群組的讀取和寫入訪問的盤陣列控制器。盤陣列控制器單獨地或者與其各自的計算設備相聯合也可被配置為管理集群存儲陣列中存儲的數據的備份或冗余拷貝,以針對可妨礙一個或多個計算設備訪問一個或多個集群存儲陣列的盤驅動器或其他集群存儲陣列故障和/或網絡故障加以保護。
[0074]與服務器設備108和/或110的功能分布在計算集群209a、209b和209c的計算設備200a、200b和200c上的方式類似,這些組件的各種活動部分和/或備份部分可分布在集群存儲陣列210a、210b和210c上。例如,一些集群存儲陣列可被配置為存儲服務器設備108的數據,而其他集群存儲陣列可存儲服務器設備110的數據。此外,一些集群存儲陣列可被配置為存儲其他集群存儲陣列中存儲的數據的備份版本。
[0075]計算集群209a、209b和209c中的集群路由器211a、211b和211c可包括被配置為為計算集群提供內部和外部通信的聯網設備。例如,計算集群209a中的集群路由器211a可包括一個或多個互聯網交換和路由設備,這些設備被配置為提供:(i)計算設備200a與集群存儲陣列210a之間經由本地集群網絡212a的局域網通信,以及(ii)計算集群209a與計算集群209b和209c之間經由到網絡106的廣域網連接213a的廣域網通信。集群路由器211b和211c可包括與集群路由器211a類似的網絡設備,并且集群路由器211b和211c可為計算集群20%和209c執(zhí)行與集群路由器211a為計算集群209a執(zhí)行的類似的聯網功倉泛。
[0076]在一些實施例中,集群路由器211a、211b和211c的配置可至少部分基于計算設備和集群存儲陣列的數據通信要求、集群路由器211a、211b和211c中的網絡設備的數據通信能力、本地網絡212a、212b、212c的延遲和吞吐量、廣域網鏈接213a、213b和213c的延遲、吞吐量和成本、和/或可對適當系統體系結構的成本、速度、容錯、彈性、效率和/或其他設計目標作出貢獻的其他因素。
[0077]示例布局
[0078]圖3根據一實施例描繪了關于示例用戶界面310的場景300。定義可利用諸如計算設備200之類的計算設備顯示的用戶界面310的示例布局在以下表I中示出。
[0079]
【權利要求】
1.一種方法,包括: 在計算設備處接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件,其中每個矩形組件具有至少一個維度上的至少一個大?。? 所述計算設備從所述布局確定多條網格線,其中所述一組矩形組件中的每個矩形組件與所述多條網格線中的至少兩條網格線相關聯,所述至少兩條網格線是基于該矩形組件的至少一個大小的; 所述計算設備生成約束的系統,其中所述約束的系統的每個約束與所述多條網格線中的至少兩條網格線相關; 所述計算設備解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置;以及 所述計算設備基于網格線的位置來生成所述一組矩形組件中的至少一些矩形組件的顯示。
2.如權利要求1所述的方法,還包括: 所述計算設備顯示所述一組矩形組件中的至少一些矩形組件的顯示。
3.如權利要求1所述的方法,其中,所述布局被配置為指定至少一個空間組件以作為所述一組矩形組件中的組件。
4.如權利要求1所述的方法,其中,所述布局被配置為指定所述一組矩形組件中的至少一個矩形組件的靈活性。
5.如權利要求1所述的方法,解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置包括: 利用標注來標注所述多條網格線中的每條網格線; 基于標注來對所述多條網格線排序;以及 基于所述多條網格線的排序利用網格線的正常排序。
6.如權利要求5所述的方法,其中,該組組件包括不可見組件,并且其中解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置包括: 確定與所述不可見組件相關聯的兩條或更多條網格線;以及 至少對于與所述不可見組件相關聯的兩條或更多條網格線,放松網格線的正常排序。
7.如權利要求1所述的方法,其中,解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置包括: 生成包括多個節(jié)點和多個邊緣的圖,其中所述多個節(jié)點對應于所述多條網格線,并且其中所述多個邊緣對應于所述約束的系統;以及 對于所述圖解決單源路徑長度問題以確定所述多條網格線的位置。
8.如權利要求7所述的方法,其中,對于所述圖解決單源路徑長度問題以確定網格線的位置包括:利用貝爾曼-福特算法的變體解決所述單源路徑長度問題。
9.如權利要求7所述的方法, 其中,所述圖是有向圖, 其中,所述多個邊緣中的至少第一邊緣和第二邊緣分別與所述約束的系統中的第一約束和第二約束相關聯, 其中,所述第一約束和第二約束兩者與所述一組矩形組件中的單個矩形組件相關聯,其中,所述第一約束包括對于所述單個矩形組件的關于最小值的約束, 其中,所述第二約束包括對于所述單個矩形組件的關于最大值的約束,并且 其中,所述第一邊緣的方向不同于所述第二邊緣的方向。
10.如權利要求9所述的方法,還包括: 將所述多個邊緣分成至少第一部分邊緣和第二部分邊緣,其中所述第一邊緣在第一部分中,所述第二邊緣在第二部分中,所述第一部分中的每個邊緣的方向是所述第一邊緣的方向,并且所述第二部分中的每個邊緣的方向是所述第二邊緣的方向; 對所述第一部分邊緣進行拓撲排序; 與所述第一部分邊緣分開地,對所述多個邊緣的第二部分進行拓撲排序;以及利用在經拓撲排序的第一部分邊緣和經拓撲排序的第二部分邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題。
11.如權利要求10所述的方法,其中,利用在經拓撲排序的第一部分邊緣和經拓撲排序的第二部分邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題包括: 生成所述多個邊緣的排序,其中所述經拓撲排序的第一部分邊緣中的每個邊緣先于所述經拓撲排序的第二部分邊緣中的每個邊緣; 基于所述多個邊緣的排序生成至少包括所述經拓撲排序的第一部分邊緣和所述經拓撲排序的第二部分邊緣的有序的多個邊緣;以及 利用在所述有序的多個邊緣上操作的貝爾曼-福特算法的變體來解決所述單源路徑長度問題。
12.如權利要求11所述的方法,其中,利用在所述有序的多個邊緣上操作的貝爾曼-福特算法的變體來解決所述單源路徑長度問題包括: 在使用所述貝爾曼-福特算法的變體之后,確定在所述約束的系統中有一個或多個不一致約束; 識別所述有序的多個邊緣中的與所述一個或多個不一致約束相對應的一個或多個元兇邊緣;以及 將所述一個或多個元兇邊緣中排序最高的元兇邊緣從所述有序的多個邊緣中去除。
13.一種計算設備,包括: 處理器;以及 數據存儲裝置,被配置為存儲至少一個計算機可讀程序指令,其中,所述指令被配置為在被所述處理器執(zhí)行時導致所述計算設備執(zhí)行功能,所述功能包括: 接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件,其中每個矩形組件具有至少一個維度上的至少一個大小, 從所述布局確定多條網格線,其中所述一組矩形組件中的每個矩形組件與所述多條網格線中的至少兩條網格線相關聯,所述至少兩條網格線是基于該矩形組件的至少一個大小的, 生成約束的系統,其中所述約束的系統的每個約束與所述多條網格線中的至少兩條網格線相關, 解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置,以及 基于網格線的位置生成所述一組矩形組件中的至少一些矩形組件的顯示。
14.如權利要求13所述的計算設備,其中所述功能還包括: 顯示所述一組矩形組件中的至少一些矩形組件的顯示。
15.如權利要求13所述的計算設備,其中,解決所述約束的系統包括: 利用標注來標注所述多條網格線中的每條網格線; 基于標注來對所述多條網格線排序;以及 基于所述多條網格線的排序利用網格線的正常排序;以及 對于圖解決單源路徑長度問題以確定所述多條網格線的位置。
16.如權利要求15所述的計算設備,其中,解決單源路徑長度問題包括利用貝爾曼-福特算法的變體解決單源路徑長度問題。
17.如權利要求16所述的計算設備,其中,利用貝爾曼-福特算法的變體解決單源路徑長度問題包括: 將所述多個邊緣分成至少第一部分邊緣和第二部分邊緣,其中所述第一邊緣在第一部分中,所述第二邊緣在第二部分中,所述第一部分中的每個邊緣的方向是所述第一邊緣的方向,并且所述第二部分中的每個邊緣的方向是所述第二邊緣的方向; 對所述第一部分邊緣進行拓撲排序; 與所述第一部分邊緣分開地,對所述多個邊緣的第二部分進行拓撲排序;以及利用在經拓撲排序的第一部分邊緣和經拓撲排序的第二部分邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題。
18.一種制品,其包括其上存儲有指令的非暫態(tài)計算機可讀存儲介質,所述指令響應于被計算設備執(zhí)行,導致該計算設備執(zhí)行功能,所述功能包括: 接收布局,該布局被配置為指定容器矩形內的至少一組矩形組件,其中每個矩形組件具有至少一個維度上的至少一個大小, 從所述布局確定多條網格線,其中所述一組矩形組件中的每個矩形組件與所述多條網格線中的至少兩條網格線相關聯,所述至少兩條網格線是基于該矩形組件的至少一個大小的, 生成約束的系統,其中所述約束的系統的每個約束與所述多條網格線中的至少兩條網格線相關, 解決所述約束的系統以為所述多條網格線中的每條網格線確定該網格線的位置,以及 基于網格線的位置生成所述一組矩形組件中的至少一些矩形組件的顯示。
19.如權利要求18所述的制品,其中,所述功能還包括: 顯示所述一組矩形組件中的至少一些矩形組件。
20.如權利要求18所述的制品,其中,所述一組矩形組件包括空間組件。
21.如權利要求18所述的制品,其中,所述用戶界面布局被配置為指定所述一組矩形組件中的至少一個矩形組件的靈活性。
22.如權利要求18所述的制品,其中,解決所述約束的系統包括: 利用標注來標注所述多條網格線中的每條網格線; 基于相應的標注來對所述多條網格線排序。
23.如權利要求22所述的制品,其中,解決所述約束的系統包括:基于所述多條網格線的排序利用網格線的正常排序。
24.如權利要求23所述的制品,其中,該組組件包括不可見組件,并且其中解決所述約束的系統包括: 確定所述多條網格線中的與所述不可見組件相關聯的兩條或更多條網格線;以及 至少放松與所述不可見組件相關聯的兩條或更多條網格線的正常排序。
25.如權利要求18所述的制品,其中,解決所述約束的系統包括: 生成包括多個節(jié)點和多個邊緣的圖,其中所述多個節(jié)點對應于所述多條網格線,并且其中所述多個邊緣對應于所述約束的系統;以及 對于所述圖解決單源路徑長度問題以確定所述多條網格線的位置。
26.如權利要求25所述的制品,其中,解決單源路徑長度問題包括:利用貝爾曼-福特算法的變體解決所述單源路徑長度問題。
27.如權利要求25所述的制品, 其中,所述圖是有向圖, 其中,所述多個邊緣中的至少第一邊緣和第二邊緣分別與所述約束的系統中的第一約束和第二約束相關聯, 其中,所述第一約束和第二約束兩者與所述一組矩形組件中的單個矩形組件相關聯, 其中,所述第一約束包括對于所述單個矩形組件的關于最小值的約束, 其中,所述第二約束包括對于所述單個矩形組件的關于最大值的約束,并且其中,所述第一邊緣具有第一方向,并且所述第二邊緣具有不同于所述第一方向的第二方向。
28.如權利要求27所述的制品,其中,所述功能還包括: 將所述多個邊緣分成至少第一組邊緣和第二組邊緣,使得所述第一邊緣在所述第一組邊緣中,并且所述第二邊緣在所述第二組邊緣中,其中所述第一組邊緣中的每個邊緣具有所述第一方向,并且其中所述第二組邊緣中的每個邊緣具有所述第二方向; 對所述第一組進行拓撲排序; 與所述第一組邊緣分開地,對所述第二組邊緣進行拓撲排序;以及利用在經拓撲排序的第一組邊緣和經拓撲排序的第二組邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題。
29.如權利要求28所述的制品,其中,利用在經拓撲排序的第一組邊緣和經拓撲排序的第二組邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題包括: 生成所述多個邊緣的排序,其中所述經拓撲排序的第一組邊緣中的每個邊緣先于所述經拓撲排序的第二組邊緣中的每個邊緣; 基于所述多個邊緣的排序生成至少包括所述經拓撲排序的第一組邊緣和所述經拓撲排序的第二組邊緣的有序的多個邊緣;以及 利用在所述有序的多個邊緣上操作的貝爾曼-福特算法的變體來解決所述單源路徑長度問題。
30.如權利要求29所述的制品,其中,利用在經拓撲排序的第一組邊緣和經拓撲排序的第二組邊緣上操作的貝爾曼-福特算法的變體解決所述單源路徑長度問題包括: 在使用所述貝爾曼-福特算法的變體之后,確定在所述約束的系統中有一個或多個不一致約束;識別所述有序的多個邊緣中的與所述一個或多個不一致約束相對應的一個或多個元兇邊緣;以及 將所述一個或多個元兇邊緣中排序最高的元兇邊緣從所述有序的多個邊緣中去除。
【文檔編號】G06F9/44GK103959244SQ201280048317
【公開日】2014年7月30日 申請日期:2012年9月28日 優(yōu)先權日:2011年9月30日
【發(fā)明者】P.米爾恩, S.R.加諾夫 申請人:谷歌公司