(57)【要約】【課題】  簡易で知的にサイズを変更することができるレイアウトを提供すること。【解決手段】  オブジェクトまたは要素は、別々に定義される行および列の罫線の仮想グリッドに取り付けられる。オブジェクトとグリッドとの間の関係は、双方向であり、その結果、一方（罫線またはオブジェクト）の移動が、他方（オブジェクトまたは罫線）に影響する。つまり、オブジェクトの拡大／縮小によって、罫線が押され、罫線の移動によって、オブジェクトが拡大／縮小される。オブジェクトの前後に仮想グリッドを作成することが可能であり、仮想グリッドは一層の柔軟性を有する。子オブジェクトは、それ自体の仮想グリッドを有することができ、これにより必要に応じて細かい制御が可能である。【選択図】  図３
2005293552.tif 000002
【特許請求の範囲】
【請求項１】
グリッドを定義するステップと、
前記グリッド上にオブジェクトを定義するステップと、
前記グリッド上に複数の行および列を定義するステップと、
前記グリッド上に前記オブジェクトを配置するステップと
を備えたことを特徴とするグリッドキャンバスを生成する方法。
【請求項２】
前記グリッドを定義するステップは、行の罫線および列の罫線の仮想グリッドを指定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記オブジェクトを定義するステップは、前記オブジェクトの属性またはプロパティの少なくとも１つを定義するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記オブジェクトを定義するステップは、前記グリッド上に配置される複数のオブジェクトについて繰り返されることを特徴とする請求項１に記載の方法。
【請求項５】
前記グリッド上に前記オブジェクトを配置するステップは、罫線境界ボックス内に前記オブジェクトを配置するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記罫線境界ボックスは、前記オブジェクトを含む複数の行および列を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記グリッドを定義するステップは、複数の仮想セルを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記グリッド上に前記オブジェクトを配置するステップは、前記オブジェクトが複数の仮想セルに架かるように前記オブジェクトを配置するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記グリッドに第２のオブジェクトを配置するステップをさらに備え、前記グリッドは、複数の仮想セルを含み、前記オブジェクトおよび前記第２のオブジェクトは、前記複数の仮想セルの内の同一のセルの少なくとも１つを占めることを特徴とする請求項１に記載の方法。
【請求項１０】
ディスプレイ上にオブジェクトを配置するステップと、
前記オブジェクトに対して罫線境界ボックスを決定するステップと、
前記オブジェクトに対して複数の属性を実行するステップと
を備えたことを特徴とするグリッドキャンバスレイアウトを作成する方法。
【請求項１１】
前記複数の属性を実行するステップは、前記オブジェクトの余白、高さ、および幅を設定するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数の属性を実行する前に、前記複数の属性を決定するステップをさらに備えたことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記複数の属性を決定するステップは、前記オブジェクトの余白、高さ、および幅を決定するために、前記罫線境界ボックスの範囲を所望の位置と比較するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
オブジェクトを描くことができるキャンバスを含むグリッドキャンバスレイアウトであって、前記キャンバスは、サイズを変更できる行および列を含み、前記行および列は、前記オブジェクトを含む仮想セルを定義することを特徴とするグリッドキャンバスレイアウト。
【請求項１５】
座標系として働く仮想罫線をさらに備えたことを特徴とする請求項１４に記載のグリッドキャンバスレイアウト。
【請求項１６】
前記オブジェクトのグリッド境界ボックスをさらに備えたことを特徴とする請求項１４に記載のグリッドキャンバスレイアウト。
【請求項１７】
前記オブジェクトへの所望のオフセットを提供する前記グリッド境界ボックス内の余白設定をさらに備えたことを特徴とする請求項１６に記載のグリッドキャンバスレイアウト。
【請求項１８】
ディスプレイ装置上に、オブジェクトを描くことができるキャンバスを含むグリッドキャンバスレイアウトをレンダリングされ、前記キャンバスは、サイズを変更できる行および列を含み、前記行および列は、前記オブジェクトを含む仮想セルを定義することを特徴とするディスプレイ装置。
【請求項１９】
前記グリッドキャンバスレイアウトは、座標系として働く仮想罫線をさらに含むことを特徴とする請求項１８に記載のディスプレイ装置。
【請求項２０】
前記グリッドキャンバスレイアウトは、前記オブジェクトのグリッド境界ボックスをさらに含むことを特徴とする請求項１８に記載のディスプレイ装置。
【請求項２１】
前記グリッドキャンバスレイアウトは、前記オブジェクトに対する所望のオフセットを提供する前記グリッド境界ボックス内の余白設定をさらに含むことを特徴とする請求項２０に記載のディスプレイ装置。
【請求項２２】
第２のオブジェクトは、前記グリッドキャンバスレイアウト上に描くことができ、前記オブジェクトおよび前記第２のオブジェクトは、前記同一の仮想セルの少なくとも１つを占めることを特徴とする請求項１８に記載のディスプレイ装置。
【請求項２３】
グラフィカルユーザインターフェースおよびディスプレイを有するコンピュータシステムにおいて、
グリッドを定義するステップと、
前記グリッドに関するオブジェクト定義信号を受け取るステップと、
前記グリッド上に複数の行および列を定義するステップと、
前記グリッド上に前記オブジェクトを表示するステップと
を備えたことを特徴とするグリッドキャンバスを生成する方法。
【請求項２４】
前記オブジェクトを表示するステップは、前記オブジェクトの属性またはプロパティの少なくとも１つに従って前記オブジェクトを表示するステップを含むことを特徴とする請求項２３に記載の方法。
【請求項２５】
オブジェクトを表示する前記ステップは、前記グリッド上で表示される複数のオブジェクトに対して繰り返されることを特徴とする請求項２３に記載の方法。
【請求項２６】
前記グリッド上に前記オブジェクトを表示するステップは、罫線境界ボックス内に前記オブジェクトを配置するステップを含むことを特徴とする請求項２３に記載の方法。
【請求項２７】
前記グリッド上で前記オブジェクトを表示するステップは、前記オブジェクトが複数の仮想セルに架かるように前記オブジェクトを表示するステップを含むことを特徴とする請求項２３に記載の方法。
【請求項２８】
前記グリッド上に第２のオブジェクトを表示するステップをさらに備え、前記グリッドは、複数の仮想セルを含み、前記オブジェクトおよび前記第２のオブジェクトは、前記複数の仮想セルの前記同一のセルの少なくとも１つを占めることを特徴とする請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータグラフィックスの分野に関し、より詳細には、本発明は、ディスプレイ上でのオブジェクトのレイアウトに関する。
【背景技術】
【０００２】
ユーザインターフェース要素（ウィンドウ領域、コントロールなど）のレイアウトを設計する時に、多くの場合デザイナーキャンバスが使用され、要素（本明細書ではオブジェクトとも称する）がキャンバス上に置かれる。しかし、アプリケーションが構築され、キャンバスによって覆われた領域のサイズが変更される時に、インテリジェントな形で全ての要素のサイズを変更させることが困難になる。従来の手法は、設計者にとって不完全であり、複雑であり、または分かり難い傾向にある。
【０００３】
設計者がサイズ変更を行うコードを記述せずにサイズを変更するよう、レイアウトを設計することが望ましい。従来、知的にサイズを変更するアプリケーションレイアウトは、不完全な機構、過度に複雑な機構、または設計者がアクセスできないコードによって作成されていた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の機構は、キャンバススタイルのレイアウトである。この種のレイアウトは、掲示板への書き込みのと同様に、新たな要素を仮付けできる領域を提供する。掲示板と同様に、オブジェクトは、プログラマが明示的に動かさない限り、配置後は静止している。
【０００５】
別の従来の機構は、プロポーショナル−リサイズレイアウトである。このレイアウトは、掲示板全体が後に、比例して引き延ばされることができる単一の画像であると見なされることを除いて、キャンバス−スタイルレイアウトと同一である。このタイプのレイアウトは、画面サイズの拡大に伴って大きくなるよう設計された固定機能のユーザインターフェース（例えば単純なゲーム）については許容されるが、より高い情報密度で表示すために画面をより高度な利用が可能な場合には好ましくない（例えばワードプロセッシングディスプレイ）。
【０００６】
テーブルスタイルのレイアウトもまた、別の従来のレイアウト機構である。このレイアウトは、ＨＴＭＬに見られるレイアウトに類似する。使用可能なスペースは、個別のセルに切り分けられ、各セルが、そのコンテンツのコンテナである。しばしば、所望のレイアウトを作成するために、より大きい要素（例えば画像）をセルの間で分割しなければならない。
【０００７】
別種のレイアウト機構には、アタッチメント−ベースのレイアウトがある。このレイアウトでは、各オブジェクトが、キャンバス側全体にそれ自体を「取り付ける」ことを許可され、例えば左および右に取り付ける場合、その幅は、アプリケーションのサイズが変更される時に固定された余白を保ちながら変更される。
【０００８】
Ｊａｖａ（登録商標）のＧｒｉｄＢａｇなどの「アドバンスト」レイアウトも周知である。ＧｒｉｄＢａｇでは、（スパニング情報および余白を含む）各子（ｃｈｉｌｄ）への位置決め情報および全ての子データに対する推論を割り当て、レイアウトする。ＧｒｉｄＢａｇコンテナ自体は、情報を有しない。このレイアウトは、前述のレイアウトより機能し得るが、細かな設定が極端に難しい（すなわち、明瞭で単純なユーザインターフェースで示すのが難しい）。
【０００９】
「スプリングアンドストラット（ｓｐｒｉｎｇｓ  ａｎｄ  ｓｔｒｕｔｓ）」は、従来のレイアウトであり、他の座標からの式として各オブジェクト座標を効果的に定義することができる。例えば、「スプリングアンドストラット」環境では、２つの要素が必ず１０画素離れているように構成することができる。当初は表現力があるが、この機構は、特にランタイムが最終的にタスクとして不適当になる極端に入り組んだ再計算要件を有するので、すぐに行き詰る。
【００１０】
前述の課題を考慮すると、従来技術の制限および短所を克服するシステムおよび方法の必要性がある。
【課題を解決するための手段】
【００１１】
本発明は、簡易で知的にサイズを変更するレイアウトを対象とする。要素（すなわちオブジェクト）が、別々に定義される行および列の罫線（ｇｒｉｄｌｉｎｅ）の仮想グリッドに取り付けられる。オブジェクトとグリッドとの間の関係は、双方向であり、その結果、一方（罫線またはオブジェクト）の移動が、他方（オブジェクトまたはグリッド）に影響するようになっている。つまり、オブジェクトの拡大／縮小によって、罫線が押され、罫線の移動によって、オブジェクトが拡大／縮小される。仮想グリッドは、さらなる柔軟性を有し、オブジェクトの前後に作成することができる。子オブジェクトは、それ自体の仮想グリッドを有することができ、これによって、所望のきめの細かい制御が可能になる。
【００１２】
本発明の追加の特徴および利点は、添付の図面を参照して行う以下の例示的な実施形態の詳細な説明から明らかになる。
【００１３】
前述の概要ならびに以下の好ましい実施形態の詳細な説明は、添付の図面と共に読まれる時に最もよく理解される。本発明の例示のために、図面に、本発明の例示的な構成を示すが、本発明は、開示される特定の方法および手段に制限されない。
【発明を実施するための最良の形態】
【００１４】
本発明は、オブジェクトが、別々に定義される行および列の罫線の仮想グリッドに取り付けられるレイアウトを対象とする。オブジェクトとグリッドの間の関係は、双方向であり、その結果、オブジェクトの拡大／縮小によって、罫線が押され、罫線の移動によって、オブジェクトが拡大／縮小される。そのようなレイアウト機構を、本明細書では「グリッドキャンバス」レイアウト機構と呼ぶ。
【００１５】
例示的なグリッドキャンバスを、図１に示す。グリッドキャンバスレイアウト機構は、親と子の間の協力である。親１０は、事実上キャンバスであり、その上にオブジェクト３０および４０を任意の位置に描くことができ、オブジェクトは、配置された位置に留まる。いつでも、グリッドキャンバス１０を望みの個数の行Ｒおよび列Ｃに分割することができる。グリッドキャンバスの各子は、グリッド境界ボックスをそのボックスに対する余白と共に維持する。例えば、オブジェクト３０のグリッド境界ボックスは、行Ｒ１の全て（すなわち、Ｒ１Ｃ１：Ｒ１Ｃ２）である。余白設定によって、ボックスの境界からの適当なオフセットを使用する、グリッド境界ボックス内の「アタッチメント」の複数の種類が可能になる。行Ｒおよび列Ｃ自体は、グリッドキャンバス親１０によって保持され、従来の方法でサイズを指定することができる（例えば、固定サイズ、パーセントサイズ、自動サイズ、加重サイズ）。
【００１６】
本発明では、絵は、位置だけを表す仮想セルに分割される。したがって、例えば、オブジェクト３０は、各々を個別に移動することを必要とする複数のセルに分割される必要はない。そうではなく、オブジェクト３０は、基礎になるグリッドキャンバス１０上の複数の仮想セルにまたがる。さらに、オブジェクトは、重複することができる。罫線は、仮想的であり、座標系として働き、仮想セルは、単に、座標系の現れである。本発明では、罫線に関して配置されなければならない場所の子セルの依存性を分割する。
【００１７】
本発明は、行および列で子セルを計算し、配置することができるユーザインターフェースパネルで実施することができる。子は、パネルまたはコントロールなど、任意のオブジェクトとすることができる。行および列の罫線の交差が、スロットのグリッドを形成する。子またはオブジェクトは、複数の隣接するグリッドスロットを占めることができる（例えば、オブジェクトｑ３０は、行Ｒ１、列Ｃ１と、行Ｒ１、列Ｃ２とによって定義されるスロットまたはセルを占める）。オブジェクトのレイアウト挙動は、それがまたがる行および列の設定によって決定される。例えば、対応する列の画素幅の値および対応する行の画素高さの値を指定することによって、グリッドスロットに固定サイズを割り当てることができる。列幅は、それにまたがる子の所望の幅に関して計算することができる。行に、残りの使用可能なスペースの比率を割り当てることができる。オブジェクトは、重複することができる。というのは、複数の子が、レイアウトスロットの同一のサブセットを占めることができるからである（例えば、図５のオブジェクト２０および３０を参照されたい）。
【００１８】
子オブジェクトは、４つのグリッド座標（グリッドセルの境界ボックス）、境界ボックスの４つの余白、ならびにオブジェクトの幅および高さを含むがこれに制限されないプロパティを有することができる。余白、高さ、および幅は、「自動」と指定することができ、その結果、これらが、例えば使用可能であり、適当な比率および位置を維持する最大限のスペースを占めるようになる。より詳細には、幅および高さに関して、所望の様々なタイプの指定すなわち、絶対値（例えば１００画素、２インチ（５０．８ｍｍ）など）、割合（ｐｅｒｃｅｎｔａｇｅ）（例えば１０％）、自動（すなわち自然なサイズ）、およびアスタリスク（「＊」）（例えば、＊、２５＊など）がある。アスタリスクは、残りのスペースを使用することの指定である。２つの列が、「＊」としてマークされている場合に、この２つのオブジェクトのスペースは、その星の値に比例して分割される。これは、所望の加重に基づく分配である。
【００１９】
図２は、グリッドキャンバスを生成する例示的な方法を示す上位流れ図である。ステップ１００で、行および列の罫線の仮想グリッドを指定することによって、基礎になるグリッドまたは親を作成する。次に、ステップ１１０で、オブジェクトが有することのできる様々な比率および属性を用いて、１つまたは複数のオブジェクトを定義する。行および列も、この時に定義することができる。定義が完了するまで繰り返される。次に、ステップ１２０で、グリッドを測定して、オブジェクトを配置する。オブジェクトがグリッド内に配置される前にグリッドが宣言されるが、オブジェクトがグリッド内に配置される前後の任意の時にグリッドを構成できる。例えば、まずページ上でオブジェクトをレイアウトし、その後グリッドを構成することができる。
【００２０】
レイアウトコンテナは、望ましくは、１行１列のグリッドとして開始される。グリッドは、固定数の行および列を有するが、セルを有しない。行および列は、固定または柔軟なものとすることができる。オブジェクトが描かれる時、オブジェクトは、２種類の属性すなわち、罫線の境界ボックスを指定するｒｏｗ（行）、ｒｏｗｓｐａｎ（行幅）、ｃｏｌ（列）、およびｃｏｌｓｐａｎ（列幅）と、ｌｅｆｔ（左）、ｒｉｇｈｔ（右）、ｔｏｐ（上）、ｂｏｔｔｏｍ（下）、ｗｉｄｔｈ（幅）、およびｈｅｉｇｈｔ（高さ）とを有することが好ましい。オブジェクトは、罫線境界ボックス内に配置される。
【００２１】
したがって、例示的なグリッドキャンバスによって、豊富なダイアログおよびコンポーネントのレイアウトの作成が可能である。設定される特徴には、行および列単位のレイアウト；重複；絶対値、割合、列および行の「内容に対する（ｔｏ−ｃｏｎｔｅｎｔ）」および加重比例によるサイズ指定；子の位置に関する完全な制御；およびサイズ指定挙動が含まれることが好ましい。
【００２２】
望ましくは、オブジェクトは、罫線に従って行および列に配置される。行および列は、例えば、ロックすることができ、かつ／または最小サイズを与えることができる。オブジェクトは、オブジェクトが架かる行および列の設定に従って伸びるようにグリッド内に配置することができる。各オブジェクトがセルの異なる領域を使用する複数のオブジェクトは、重複することができる。そのような例を、以下で説明する図５に示す。グリッドはデータ連結可能であり、行および列の数が未知であることが好ましい。
【００２３】
本発明によるシステムには、最適化されたアルゴリズムを実施し、オブジェクトのサイズおよび位置と、グリッド自体の列および行のサイズおよび位置とを処理するレイアウトエンジンが含まれる。図３に示すように、上位概念であって、例示的なレイアウトエンジン２００は、コンピュータ内にあるいはマイクロプロセッサまたはコントローラとともに常駐し、ユーザインターフェース２１０およびディスプレイ２２０と通信する。レイアウトエンジンには、オブジェクトのサイズ指定および位置決めのルーチン２０３と、キャンバスのサイズ指定および位置決め用のルーチン２０６が含まれる。
【００２４】
レイアウト判定は、２つのモードで（両方の次元（水平（幅）および垂直（高さ））で独立に）行われることが好ましい。第１の例示的なモードは、（例えば、サイズが、レイアウト作成者によって明示的に設定される場合の）予め定められたサイズに対する計算である。この場合、サイズは、オブジェクトの自然なサイズを考慮に入れて、列（行）の間で分配される。第２の例示的なモードは、（例えば、明示的なサイズが定義されない場合の）自然なサイズに対する計算である。その場合、オブジェクトの自然なサイズおよび列（行）のサイズ指定を考慮に入れ、ならびに割合によるサイズ指定および加重比例によるサイズ指定の場合に列（行）サイズ比率を保存して、グリッドの自然なサイズを決定する。
【００２５】
（ランタイム）
グリッドキャンバスは、ランタイムシステムで使用できる要素である。グリッドキャンバス１０は、図４に示されたものなど、行Ｒおよび列Ｃに分割される。図４には、２つの行Ｒ１、Ｒ２と２つの列Ｃ１、Ｃ２が示されているが、グリッドキャンバスを任意の数の行および列に分割できる。各行および列は、それ自体にサイズ指定情報（例えば、固定、割合、自動、または加重）を有することが望ましい。
【００２６】
親グリッドキャンバスの任意の位置に子オブジェクトを配置することができる。図５に、４つのオブジェクト２０、３０、４０、および５０として例示的な子を示す。オブジェクト２０および３０は、複数の（１行１列が１セルを形成すると言われる）セルに架かる。オブジェクト２０は、行Ｒ１およびＲ２、列Ｃ１およびＣ２にあり、オブジェクト３０は、行Ｒ１、列Ｃ１およびＣ２に配置されている。オブジェクト４０は、行Ｒ２および列Ｃ１によって形成されるセルに完全に納まり、オブジェクト５０は、行Ｒ２および列Ｃ２によって形成されるセルに完全に納まっている。
【００２７】
ここで、図５のレイアウトの下の行Ｒ２が、絶対的な高さを有し、上の行Ｒ１が、残りの全てのスペースを消費することが望まれると仮定する。図６に、このレイアウトが、より高いサイズに変更される時の所望の結果を示す。行Ｒ２およびそれに含まれるオブジェクトまたはオブジェクトのうちで行Ｒ２に含まれる部分が、元の固定された高さのままであることに留意されたい。その一方で、行Ｒ１およびそれに含まれるオブジェクトまたはオブジェクトのうちで行Ｒ１に含まれる部分は、縦方向にサイズを変更されており、その方向の追加の空間を覆っている。オブジェクトとセルとの相対的な比率は、Ｒ１内では、サイズ変更前の元の行Ｒ１内と同一のままである。
【００２８】
そのようなレイアウトは、行／列を適当に構成して（例えば、下の行の高さ＝「１５０画素」、上の行の高さ＝「＊」、ここで、「＊」は、固定された行／列以外の使用可能なスペースの比率をとることを意味し、他に「＊」値を有する行がない場合には、「＊」によって残りのスペース全体が使用される）、余白を含むグリッドに対するオブジェクトの関係を構成することによって達成される。Ｃ１、Ｒ１によって定義されるセルが（０，０）、Ｃ２、Ｒ１によって定義されるセルが（１，０）、Ｃ１、Ｒ２によって定義されるセルが（０，１）、およびＣ２、Ｒ２によって定義されるセルが（１，１）である座標系が使用される。オブジェクトの縁とセルの対応する縁の間の距離が、「余白」であると仮定すると、余白は、画素単位でまたは自動と定義され、例えば、オブジェクトの関係を、オブジェクト２０、３０、４０、および５０について下記のように定義することができる。
オブジェクト２０：グリッド位置＝（０，０）−（１，１）（これは、オブジェクトが、図に示すようにセル（０，０）からセル（１，１）に架かることを意味する）；余白＝（１０，１０，１０，１０）（これは、各方向で縁からそれに対応するグリッドセルの縁までの距離が１０画素であることを意味する）（図が、原寸通りでないことに留意されたい）；幅＝自動；高さ＝自動。
オブジェクト３０：グリッド位置＝（０，０）−（１，０）；余白＝（２０，２０，２０，１０）；幅＝自動；高さ＝自動。
オブジェクト４０：グリッド位置＝（０，１）−（０，１）；余白＝（２０，１０，自動，２０）；幅＝固定（例えば１００）；高さ＝自動。
オブジェクト５０：グリッド位置＝（１，１）−（１，１）；余白＝（１０，１０，１０，自動）；幅＝自動；高さ＝固定（例えば４０）。
【００２９】
望ましくは、明示的な値が、明示的な測定値を表し、自動値が、残りの使用可能なスペースを消費する。様々な実施形態で、余白を全ての辺について指定でき、追加のアタッチメントフラグを追加できる。さらに、子が親の達成できない値を要求する場合があり、この場合、グリッドキャンバスは、例えばエラーメッセージを返すか、または有効になるように値を修正することによって、既定の範囲内に納めることができる。
【００３０】
ランタイムは、子オブジェクトを測定し、子オブジェクトが動作する任意の制約に従って行の幅および列の高さを割り当てた後、使用可能な空間の量に基づいて子オブジェクトの位置決めを行うように機能する。
【００３１】
（デザインタイム）
デザインタイムプロセスは、最小限の量のユーザ指定を使用してグリッドキャンバスレイアウトを自動的に作成する動作である。レイアウト作成者またはレイアウト設計者は、レイアウト形状およびレイアウトの動的挙動を定義することができるようになる。
【００３２】
図７に、本発明によるグリッドキャンバスレイアウトを作成する例示的な方法を示す。ステップ７００で、設計者がディスプレイの特定の位置（例えば、ディスプレイ上のユーザインターフェース内）にオブジェクトを置く。ステップ７１０で、その罫線境界ボックスを判定する。これは、上述のグリッド位置プロパティにマッピングされる。その後、ステップ７２０で、この罫線境界ボックスの範囲を所望の位置と比較することにより、例えばデフォルト方式に従って適当な余白および幅／高さを決めることができる。例示的なデフォルト方式は、（１）指定された位置が罫線ボックス範囲の左半分に完全におさまる場合には、明示的な左余白および幅を設定し、右余白に自動を設定し、（２）指定された位置が、罫線ボックス範囲の右半分に完全に納まる場合には、明示的な右余白および幅を設定し、左余白に自動を設定し、（３）指定された位置が罫線ボックス範囲の中央線に架かる場合には、明示的な左右の余白を設定し、幅に自動を設定し、（４）高さおよび上下余白を類似する方法で処理するというものである。
【００３３】
図８に、特にオブジェクト５０の行Ｒ２列Ｃ２に関して、上記の設定を説明するのに都合のよい例示的なグリッドキャンバスを示す。固定値を、実線として示し、自動値を、破線として示す。図に示す６つの位置決めインジケータ（高さ、幅、および余白）のいずれかを切り替えることにより、ユーザは位置決め方式を変更することができ、自動値のいずれかを現在有効な固定値に置き換えることができる。ユーザは必要に応じて、４つの外部アンカを所望の他の罫線に移動することにより罫線境界ボックスを調整することもできる。オブジェクトが移動され、またはサイズを変更される際、ユーザが明示した要望を除き、その新しい位置は再評価され、新たな値が計算される。行または列が追加され、または除去されるとき、ユーザが明示した要望を除き、近くのオブジェクトが再計算される。
【００３４】
例示的な設計方法に、オブジェクトの罫線境界ボックスを判定するステップが含まれる。上辺が中線の上にある場合、上の余白が固定される。下辺も中線の上にある場合、その高さが固定され、下辺は動的になるように設定される。しかし、下辺が中線の下にある場合、下辺が固定され、高さが、動的になるように設定される。割り当ては、新しい罫線が描かれる時に自動的に更新される。
【００３５】
例として、シーンに描くことができる罫線があり、オブジェクトを普通に描き、修正することができると仮定する（例えば、オブジェクトに、意のままに罫線を架けることができる）。そのような環境では、図９（オブジェクトの例示的な色として「ｒｅｄ（赤）」が提供される）に示された複数の重複する水平オブジェクト７７０および垂直オブジェクト７８０の絵に関して、下記の例示的な解決が提供される。
【００３６】
【表１】
2005293552.tif 000003
【００３７】
列および行の情報が最初にあり、子の順序が、描画順序であることに留意されたい。さらに、各オブジェクトは、そのオブジェクトがその中に納まるグリッド長方形を記述する付加プロパティ（ａｔｔａｃｈｅｄ  ｐｒｏｐｅｒｔｉｅｓ）を有する。余白は、指定されたグリッド長方形に対して値を決められる。サイズ変更中の挙動を制御する追加ｓｎａｐｔｏ情報を付け足すことができる。この罫線値にアクセスできるシステムは、グリッド境界ボックス、望ましくはグリッド境界およびオフセットとの関係から長方形と解釈する。
【００３８】
（例示的なコンピューティング環境）
図１０に、本発明を実施できる適切なコンピューティングシステム環境８００の例を示す。コンピューティングシステム環境８００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能性の範囲に関する制限を示唆することを意図されたものではない。コンピューティング環境８００は、例示的なオペレーティング環境８００に示された任意の構成要素、またはその組合せに関する依存性もしくは要件を有するものと解釈されるべきでない。
【００３９】
本発明は、多数の他の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成と協働する。本発明の用途に適する周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例に、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置、ラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、プログム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれるが、これに限定されない。
【００４０】
本発明を、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能な命令の一般的な文脈で説明することができる。一般にプログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、通信ネットワークまたは他のデータ伝送媒体を介して接続されたリモート処理装置によってタスクが実行される、分散コンピューティング環境で実行することもできる。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリ記憶装置を含むリモートおよびローカルの両方のコンピュータ記憶媒体に配置することができる。
【００４１】
図１０を参照すると、本発明を実施する例示的なシステムに、コンピュータ８１０型の汎用コンピューティング装置が含まれる。コンピュータ８１０のコンポーネントに、処理装置８２０、システムメモリ８３０、およびシステムメモリを含む様々なシステムコンポーネントを処理装置８２０に結合するシステムバス８２１が含まれる。システムバス８２１は、メモリバス、メモリコントローラ、周辺バス、および任意の様々なバスアーキテクチャを使用するローカルバスを含む任意の数種のバス構造とすることができる。限定ではなく例として、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、および（メザニンバスとも称する）ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００４２】
コンピュータ８１０に、通常は、様々なコンピュータ読取り可能な媒体が含まれる。コンピュータ読取り可能な媒体は、コンピュータ８１０によってアクセスでき、揮発性および不揮発性、取外し可能なおよび固定の両方を含む任意使用可能な媒体とすることができる。限定ではなく例として、コンピュータ読取り可能な媒体に、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体に、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を保管する任意の方法または技術で実施された、揮発性および不揮発性、取外し可能なおよび固定の両方の媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリテクノロジ、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報の保管に使用でき、コンピュータ８１０によってアクセスすることができる他の全ての媒体が含まれるが、これに限定されない。通信媒体によって、通常は、搬送波または他の転送機構などの変調されたデータ信号内のコンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータが実施され、通信媒体には、全ての情報配信媒体が含まれる。用語「変調されたデータ信号」は、信号において情報を符号化する方法によってその特性の１つまたは複数を設定または変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の任意の組合せも、コンピュータ読取り可能な媒体の範囲に含まれるべきである。
【００４３】
システムメモリ８３０には、ＲＯＭ  ８３１およびＲＡＭ  ８３２などの揮発性メモリおよび／または不揮発性メモリ型のコンピュータ記憶媒体が含まれる。起動中などにコンピュータ８１０内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム８３３（ＢＩＯＳ）が、通常はＲＯＭ  ８３１に保管される。ＲＡＭ  ８３２には、通常は、処理装置８２０から即座にアクセス可能な、かつ／または処理装置８２０によって現在操作中のデータおよび／またはプログラムモジュールが含まれる。限定ではなく例として、図１０に、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６、およびプログラムデータ８３７を示す。
【００４４】
コンピュータ８１０に、他の取外し可能な／固定の、揮発性／不揮発性のコンピュータ記憶媒体も含めることができる。単に一例として、図１０に、固定の不揮発性磁気媒体から読み取り、または書き込むハードディスクドライブ８４１、取外し可能な不揮発性磁気ディスク８５２から読み取り、または書き込む磁気ディスクドライブ８５１、ＣＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性光ディスク８５６から読み取り、または書き込む光ディスクドライブ８５５を示す。例示的なオペレーティング環境で使用できる他の取外し可能な／固定の、揮発性／不揮発性のコンピュータ記憶媒体に、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これに限定されない。ハードディスクドライブ８４１は、通常、インターフェース８４０などの固定のメモリインターフェースを介してシステムバス８２１に接続され、磁気ディスクドライブ８５１および光ディスクドライブ８５５は、通常、インターフェース８５０などの取外し可能なメモリインターフェースによってシステムバス８２１に接続される。
【００４５】
ドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ８１０のコンピュータ読取り可能な命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図１０に、一例として、ハードディスクドライブ８４１を、オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６、およびプログラムデータ８４７を保管するものとして示す。これらのコンポーネントを、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６、およびプログラムデータ８３７と同一のまたは異なるもののいずれかとすることができることに留意されたい。オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６、およびプログラムデータ８４７は、最低限でも異なるコピーであることを示すために、異なる符号を与えられている。ユーザは、キーボード８６２および、一般にマウス、トラックボール、またはタッチパッドと称するポインティングデバイス８６１などの入力装置を介してコンピュータ８１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含めることができる。上記および他の入力装置は、しばしば、システムバスに結合されたユーザ入力インターフェース８６０を介して処理装置８２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインターフェースおよびバス構造によって接続することができる。モニタ８９１または他のタイプのディスプレイ装置も、ビデオインターフェース８９０などのインターフェースを介してシステムバス８２１に接続される。モニタのほかに、コンピュータに、スピーカ８９７およびプリンタ８９６など、出力周辺インターフェース８９５を介して接続できる他の周辺出力装置も含めることができる。
【００４６】
コンピュータ８１０は、リモートコンピュータ８８０などの１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ８８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般的なネットワークノードとすることができる。リモートコンピュータ８８０は、通常、上述のコンピュータ８１０に関する要素の多くまたは全てを含むが、図１０には、メモリ記憶装置８８１のみを示した。図に示す論理接続には、ＬＡＮ  ８７１およびＷＡＮ  ８７３が含まれるが、他のネットワークも含めることができる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００４７】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ８１０は、ネットワークインターフェースまたはネットワークアダプタ８７０を介してＬＡＮ  ８７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ８１０は、通常は、インターネットなどのＷＡＮ  ８７３を介して通信を確立するモデム８７２または他の手段を含む。モデム８７２は、内蔵または外付けとすることができるが、ユーザ入力インターフェース８６０または他の適当な機構を介してシステムバス８２１に接続することができる。ネットワーク化された環境では、コンピュータ８１０に関する図示されたプログラムモジュールまたはその一部を、リモートメモリ記憶装置に保管することができる。限定ではなく例として、図１０に、メモリ装置８８１に常駐するリモートアプリケーションプログラム８８５を示す。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることを理解されたい。
【００４８】
上述のように、本発明の例示的な実施形態を、様々なコンピューティング装置について説明したが、基礎になる概念は、全てのコンピューティング装置またはコンピューティングシステムに適用することができる。
【００４９】
本明細書に記載の様々な技法は、ハードウェアまたはソフトウェアに関して、あるいは、適当な場合にこの両方の組合せに関して実施することができる。したがって、本発明の方法および装置、あるいはその態様または部分は、フロッピ（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の機械読取り可能な記憶媒体などの有形の媒体で実施されるプログラムコード（すなわち命令）の形をとることができ、このプログラムコードが、コンピュータなどの機械に読み込まれ、これによって実行される時に、その機械が、本発明を実行する装置になる。プログム可能なコンピュータで実行されるプログラムコードの場合に、コンピューティング装置には、一般に、プロセッサ、プロセッサによって読取り可能な記憶媒体（揮発性および不揮発性のメモリおよび／または記憶要素を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置が含まれる。プログラムを、必要に応じて、アセンブリ言語または機械語で実施することができる。どの場合でも、言語は、コンパイル済みまたは解釈済み言語とすることができ、ハードウェア実施形態と組み合わせることができる。
【００５０】
本発明の方法および装置は、電気配線またはケーブリング、光ファイバ、または他の形の伝送を介するなど、何らかの伝送媒体を介して伝送されるプログラムコードの形で実施される通信を介して実行することもでき、このプログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログム可能な論理装置（ＰＬＤ）、クライアントコンピュータなどの機械によって受信され、読み込まれ、実行される場合、その機械は本発明を実行する装置になる。汎用プロセッサで実施される場合、プログラムコードがプロセッサと組み合わされ、本発明の機能性を呼び出すように動作する独自の装置を提供する。さらに、本発明に関して使用されるストレージ技法を、常にハードウェアとソフトウェアの組合せとすることができる。
【００５１】
本発明を、様々な図面の好ましい実施形態に関して説明したが、他の類似する実施形態を用いることができ、あるいは、本発明から逸脱せずに、本発明の同一の機能を実行するために記載の実施形態に対する修正および追加を行えることを理解されたい。したがって、本発明は、単一の実施形態に限定されるのではなく、特許請求の範囲による範囲で解釈されなければならない。
【図面の簡単な説明】
【００５２】
【図１】本発明による例示的なグリッドキャンバスをオブジェクトと共に示す図である。
【図２】本発明によるグリッドキャンバスを生成する例示的な方法を示す上位準流れ図である。
【図３】本発明による例示的システムを示す高水準ブロック図である。
【図４】本発明によるもう１つの例示的なグリッドキャンバスを示す図である。
【図５】本発明によるもう１つの例示的なグリッドキャンバスを示す図である。
【図６】本発明によるもう１つの例示的なグリッドキャンバスを示す図である。
【図７】本発明によるグリッドキャンバスレイアウトを作成する例示的方法を示す図である。
【図８】本発明によるもう１つの例示的なグリッドキャンバスを示す図である。
【図９】本発明による複数の重複するオブジェクトを示す例示的な図である。
【図１０】本発明の態様を実施できる例示的コンピューティング環境を示すブロック図である。
【符号の説明】
【００５３】
１０  グリッドキャンバス
２０〜５０  オブジェクト
Ｒ１、Ｒ２  行
Ｃ１、Ｃ２  列
７７０  水平オブジェクト
７８０  垂直オブジェクト
８４１  ハードディスクドライブ
８５１  磁気ディスクドライブ
８５２  取外し可能な不揮発性磁気ディスク
８５５  光ディスクドライブ
８５６  取外し可能な不揮発性光ディスク
８８１  メモリ記憶装置
【図１】
2005293552.tif 000004
【図２】
2005293552.tif 000005
【図３】
2005293552.tif 000006
【図４】
2005293552.tif 000007
【図５】
2005293552.tif 000008
【図６】
2005293552.tif 000009
【図７】
2005293552.tif 000010
【図８】
2005293552.tif 000011
【図９】
2005293552.tif 000012
【図１０】
2005293552.tif 000013