(57)【要約】      （修正有）【課題】ドローイングアプリケーションプログラム内でグラフィックを作成し、レイアウトする方法、装置、およびコンピュータ読取可能媒体を提供する。【解決手段】グラフィックで表されるデータおよびデータ関係のセットを定義したデータモデルを受信することと、データモデルからのデータのアルゴリズム、アルゴリズムパラメータ、制約、制約ルール、および形状プロパティのセットへのマッピングを記述したグラフィック定義を受信し、グラフィック定義を使用してレイアウトノードの形状サイズおよび位置を決定することと、サイズおよび位置を含む、グラフィックの形状および形状プロパティのリストを作成することが含まれる。さらに、制約値のセットに基づいて、グラフィックが特定の領域内の所与のレイアウトにおさまるかどうかを判定し、おさまらない場合に、制約ルールを使用して制約値のセットを変更する。【選択図】  図５
2006107465.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラム内でグラフィックを作成し、レイアウトする方法であって、
前記グラフィックで表されるデータおよびデータ関係のセットを定義するデータモデルを受信することと、
前記データモデルからのデータの、レイアウトノード、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティへのマッピングを記述するグラフィック定義を受信することと、
前記レイアウトノードに関連する前記アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを使用して、前記グラフィック内の形状の形状サイズおよび位置を決定することと
を備えることを特徴とする方法。
【請求項２】
前記グラフィック定義は、前記データモデル内の要素の、前記レイアウトノードと、前記レイアウトノードに関連するアルゴリズム、パラメータ、制約、および制約ルールのセットへのマッピングに関する反復子（ｉｔｅｒａｔｏｒ）を指定することを特徴とする請求項１に記載の方法。
【請求項３】
複数の外部グラフィック定義を指定することをさらに備え、複数の外部グラフィック定義のそれぞれは、特定のグラフィックを生成するのに必要な情報を指定し、前記情報は、追加のマッピング条件、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを含むことを特徴とする請求項１に記載の方法。
【請求項４】
複数の外部アルゴリズムを指定することをさらに備え、前記複数の外部アルゴリズムのそれぞれは、特定のグラフィック構造を達成するための前記形状の前記レイアウトを指定し、前記外部アルゴリズムのそれぞれは、グラフィック定義によって参照されることを特徴とする請求項１に記載の方法。
【請求項５】
前記グラフィック内の前記形状の前記形状サイズおよび位置は、対応するレイアウトノード内の前記制約および制約ルールを使用して、アルゴリズムのセット内のアルゴリズムによって定義されることを特徴とする請求項１に記載の方法。
【請求項６】
前記制約は、前記アルゴリズムによって使用される値を指定する数値制約を備え、前記数値制約は、特定の値を備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記数値制約は、他の制約値への参照によって導出されることを特徴とする請求項６に記載の方法。
【請求項８】
前記制約値は、前記レイアウトノードのサイズおよび位置を決定するために制約ルールのセットに従って変更されることを特徴とする請求項１に記載の方法。
【請求項９】
前記制約は、形状にまたがる値の同等性および不等性を指定するブール制約を備え、数値制約の値は、ブール制約によって指定される形状に伝搬されることを特徴とする請求項１に記載の方法。
【請求項１０】
複数のレイアウトノードは、前記制約を使用する前記レイアウトノードのサイズおよび位置の決定を可能にするために互いに制約値を通信することを特徴とする請求項１に記載の方法。
【請求項１１】
前記グラフィック定義は、マークアップ言語で記述されることを特徴とする請求項１に記載の方法。
【請求項１２】
前記マークアップ言語は、拡張マークアップ言語（ＸＭＬ）であることを特徴とする請求項９に記載の方法。
【請求項１３】
ドローイングアプリケーションプログラム内でグラフィックを作成し、レイアウトするシステムであって、
データモデルを受信するプログラムコードを実行するように動作するクライアントコンピュータであって、前記データモデルは、前記グラフィックで表されるデータおよびデータ関係のセットを定義するクライアントコンピュータを備え、前記プログラムコードは、
前記データモデルからのデータの、レイアウトノード、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティへのマッピングを記述する前記グラフィック定義を受信することと、
前記レイアウトノードに関連する前記アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを使用して、前記グラフィック内の形状の形状サイズおよび位置を決定することと
を備えることを特徴とするシステム。
【請求項１４】
前記グラフィック定義は、前記データモデル内の要素の、前記レイアウトノードと、前記レイアウトノードに関連するアルゴリズム、パラメータ、制約、および制約ルールのセットとへのマッピングに関する反復子（ｉｔｅｒａｔｏｒ）を指定することを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記プログラムコードは、さらに、複数の外部グラフィック定義を指定するように動作し、複数の外部グラフィック定義のそれぞれは、特定のグラフィックを生成するのに必要な情報を指定し、前記情報は、追加のマッピング条件、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを含むことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記プログラムコードは、さらに、複数の外部アルゴリズムを指定するように動作し、前記複数の外部アルゴリズムのそれぞれは、特定のグラフィック構造を達成するための前記形状の前記レイアウトを指定し、前記外部アルゴリズムのそれぞれは、グラフィック定義によって参照されることを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記グラフィック内の前記形状の前記形状サイズおよび位置は、対応するレイアウトノード内の前記制約および制約ルールを使用して、アルゴリズムのセット内のアルゴリズムによって定義されることを特徴とする請求項１３に記載のシステム。
【請求項１８】
前記制約は、前記アルゴリズムによって使用される値を指定する数値制約を備え、前記数値制約は、特定の値を備えることを特徴とする請求項１３に記載のシステム。
【請求項１９】
前記数値制約は、他の制約値への参照によって導出されることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記制約値は、前記レイアウトノードのサイズおよび位置を決定するために前記制約ルールに従って変更されることを特徴とする請求項１３に記載のシステム。
【請求項２１】
前記制約は、形状にまたがる値の同等性および不等性を指定するブール制約を備え、数値制約の値は、ブール制約によって指定される形状に伝搬されることを特徴とする請求項１３に記載のシステム。
【請求項２２】
複数のレイアウトノードは、前記制約を使用する前記レイアウトノードのサイズおよび位置の決定を可能にするために互いに制約値を通信することを特徴とする請求項１３に記載のシステム。
【請求項２３】
前記グラフィック定義は、マークアップ言語で記述されることを特徴とする請求項１３に記載のシステム。
【請求項２４】
前記マークアップ言語は、拡張マークアップ言語（ＸＭＬ）であることを特徴とする請求項２３に記載のシステム。
【請求項２５】
コンピュータによって実行された時に、アプリケーションプログラム内でグラフィックを作成し、レイアウトする方法を前記コンピュータに実行させるコンピュータ実行可能命令をストアされたコンピュータ読取可能媒体であって、前記方法は、
データモデルを受信することであって、前記グラフィックで表されるデータおよびデータ関係のセットを定義する前記データモデルを受信することと、
グラフィック定義を受信することであって、前記データモデルからのデータの、レイアウトノード、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティへのマッピングを記述する前記グラフィック定義を受信することと、
前記レイアウトノードに関連する前記アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを使用して、前記グラフィック内の形状の形状サイズおよび位置を決定することと
を備えることを特徴とするコンピュータ読取可能媒体。
【請求項２６】
前記グラフィック定義は、前記データモデル内の要素の、前記レイアウトノードと、前記レイアウトノードに関連するアルゴリズム、パラメータ、制約、および制約ルールのセットとへのマッピングに関する反復子（ｉｔｅｒａｔｏｒ）を指定することを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項２７】
複数の外部グラフィック定義を指定することをさらに備え、複数の外部グラフィック定義のそれぞれは、特定のグラフィックを生成するのに必要な情報を指定し、前記情報は、追加のマッピング条件、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを含むことを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項２８】
複数の外部アルゴリズムを指定することをさらに備え、前記複数の外部アルゴリズムのそれぞれは、特定のグラフィック構造を達成するための前記形状の前記レイアウトを指定し、前記外部アルゴリズムのそれぞれは、グラフィック定義によって参照されることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項２９】
前記グラフィック内の前記形状の前記形状サイズおよび位置は、対応するレイアウトノード内の前記制約および制約ルールを使用して、アルゴリズムのセット内のアルゴリズムによって定義されることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３０】
前記制約は、前記アルゴリズムによって使用される値を指定する数値制約を備え、前記数値制約は、特定の値を備えることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３１】
前記数値制約は、他の制約値への参照によって導出されることを特徴とする請求項３０に記載のコンピュータ読取可能媒体。
【請求項３２】
前記制約値は、前記レイアウトノードのサイズおよび位置を決定するために制約ルールのセットに従って変更されることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３３】
前記制約は、形状にまたがる値の同等性および不等性を指定するブール制約を備え、数値制約の値は、ブール制約によって指定される形状に伝搬されることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３４】
複数のレイアウトノードは、前記制約を使用する前記レイアウトノードのサイズおよび位置の決定を可能にするために互いに制約値を通信することを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３５】
前記グラフィック定義は、マークアップ言語で記述されることを特徴とする請求項２５に記載のコンピュータ読取可能媒体。
【請求項３６】
前記マークアップ言語は、拡張マークアップ言語（ＸＭＬ）であることを特徴とする請求項３５に記載のコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラム内でグラフィックを作成し、レイアウトする方法、システム、およびコンピュータ読取可能媒体に関係する。
【背景技術】
【０００２】
ワードプロセッサおよび専用ドローイングアプリケーションプログラムを含む現代のソフトウェアアプリケーションは、ユーザが、単純なグラフィックスと複雑なグラフィックスの両方を作成できるようにする。これらのドローイングプログラムは、ユーザが、テキストを用いて注釈を付けることができるさまざまな形状を使用してグラフィックスを作成できるようにする。これらのアプリケーションによって作成されたグラフィックスは、スタンドアローンの文書とするか、テキスト文書に組み込むことができる。しかし、現代のドローイングプログラムによって提供される利益にかかわらず、これらのプログラムは、通常のユーザによるグラフィックスの作成およびレイアウトを妨げる深刻な短所に悩んでいる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
現代のドローイングプログラムの短所の１つは、これらがグラフィックスを作成するツールを提供する場合があるが、多くのユーザが、これらの既存ツールを知らないか、それを効率的に使用する方法を知らないことである。その結果、ユーザは、彼ら自身のグラフィックスを作成するか、グラフィックスツールを不正確に使用するのいずれかであり、位置ずれした形状および同一フォントサイズであるべきなのにそうでないテキストを有するグラフィックスがもたらされる。現代のドローイングプログラムのもう１つの短所は、テキストが形状に完全に囲まれたままになるように、テキストを含む形状が、追加されたテキストまたは拡大されたテキストに関してフォントのサイズ変更またはその寸法の拡張を自動的に行われないことである。現代のドローイングプログラムのもう１つの短所は、硬直したレイアウトを提供するか、レイアウトを全く提供しないことである。レイアウトがないプログラムは、ユーザがすべての形状のサイズおよび位置を手動で指定することを要求し、硬直したレイアウトを有するプログラムは、ユーザが、形状のサイズまたは位置に対する変更またはカスタマイズを行うことを許容しない。
【０００４】
本発明のさまざまな実施形態が作られたのは、これらの考慮事項などに関してである。
【課題を解決するための手段】
【０００５】
本発明によれば、上記および他の問題は、データおよび関係を特定のグラフィックレイアウトに変換する制約のセットに基づいてドローイングアプリケーションプログラム内でグラフィックを作成し、レイアウトする方法、装置、およびコンピュータ読取可能媒体によって解決される。この方法には、グラフィックで表されるデータおよびそのデータの間の関係を定義するデータモデルを受信することと、作成されるグラフィックを定義するグラフィック定義を受信することと、データモデルからのデータをグラフィック定義内の情報にマッピングすることによってレイアウトツリーを生成することと、グラフィック定義で指定された制約値および制約ルールに従ってグラフィック形状のサイズおよび位置を決定すすることと、レイアウトツリーからの情報を使用してグラフィックスの形状リストを作成することとが含まれる。次に、これらの形状を、任意のレンダリングアプリケーションによってレンダリングして、最終的なグラフィックを達成することができる。
【０００６】
データモデルからのデータをグラフィック定義の情報にマッピングするために、この方法は、データモデルを経由して反復し、グラフィック定義で指定された判断基準を適用して、グラフィックを構成するのに必要な形状ごとにアルゴリズム、制約、制約ルール、および形状プロパティを決定する。データのこれらのセットが、レイアウトツリーに追加され、このレイアウトツリーは、グラフィック構造の階層表現である。
【０００７】
グラフィック形状のサイズおよび位置を決定するために、この方法は、グラフィック定義内のアルゴリズム、制約、および制約ルールにアクセスする。このアルゴリズムは、環状パスに形状をレイアウトする、または直線パスに形状をレイアウトするなど、特定のグラフィックレイアウトを達成するために形状のサイズおよび位置を決定する方法を知っている潜在的なアルゴリズムの制限されないセットからなる。このアルゴリズムは、制約または開始値を、制約ルールまたは範囲内でこれらの開始値を変更する命令と共に使用して、形状の個数、各形状内のテキストの量、および形状がレイアウトされる領域の寸法に基づいて、形状のサイズおよび位置を決定する。
【０００８】
本発明を、コンピュータプロセス、コンピューティングシステム、あるいはコンピュータプログラム製品またはコンピュータ読取可能媒体などの製造品として実施することができる。コンピュータプログラム製品は、コンピュータシステムによって読取可能の、コンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードしたコンピュータ記憶媒体とすることができる。コンピュータプログラム製品を、コンピューティングシステムによって読取可能の、コンピュータプロセスを実行する命令のコンピュータプログラムをエンコードした担体上の伝搬される信号とすることもできる。
【０００９】
本発明の特徴を表すこれらおよびさまざまな他の特徴および利益は、次の詳細な説明を読み、関連する図面を再検討することから明白になる。
【発明を実施するための最良の形態】
【００１０】
図では、同一の符号が同一の要素を表しているが、これらの図を参照して、本発明のさまざまな態様を説明する。具体的に言うと、図１および対応する議論は、本発明の実施形態を実施するのに適するコンピューティング環境の簡単に全般的な説明を提供することを意図されたものである。本発明を、パーソナルコンピュータのオペレーティングシステムの下で動作するプログラムモジュールと共に実行されるプログラムモジュールの全般的な文脈で説明するが、当業者は、本発明を、他のタイプのコンピュータシステムおよびプログラムモジュールの組合せで実施できることを認識するであろう。
【００１１】
一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造が含まれる。さらに、本発明を、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルなコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む他のコンピュータシステム構成と共に実践できることを、当業者は認識するであろう。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートの両方のメモリストレージデバイスに置くことができる。
【００１２】
図１を参照し、本発明のさまざまな実施形態で使用されるコンピュータ２の例示的なコンピュータアーキテクチャを説明する。図１に示されたコンピュータアーキテクチャには、中央処理装置５（「ＣＰＵ」）と、ランダムアクセスメモリ９（「ＲＡＭ」）および読取専用メモリ（「ＲＯＭ」）１１を含むシステムメモリ７と、メモリをＣＰＵ５に結合するシステムバス１２を含む、普通のデスクトップコンピュータまたはラップトップコンピュータが示されている。スタートアップ中などにコンピュータ内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本的な入力／出力システム（ＢＩＯＳ）が、ＲＯＭ１１に保存されている。コンピュータ２に、さらに、オペレーティングシステム１６、アプリケーションプログラム、および他のプログラムモジュール（以下で詳細に説明する）を保存するマスストレージデバイス１４が含まれる。
【００１３】
マスストレージデバイス１４は、バス１２に接続されたマスストレージコントローラ（図示せず）を介してＣＰＵ５に接続される。マスストレージデバイス１４およびそれに関連するコンピュータ読取可能媒体は、コンピュータ２に不揮発性ストレージを提供する。本明細書に含まれるコンピュータ読取可能媒体の説明では、ハードディスクまたはＣＤ−ＲＯＭドライブなどのマスストレージデバイスに言及するが、当業者は、コンピュータ読取可能媒体をコンピュータ２によってアクセスできるすべての使用可能な媒体とすることができることを認識するであろう。
【００１４】
制限ではなく例として、コンピュータ読取可能媒体は、コンピュータ記憶媒体および通信媒体を備える。コンピュータ記憶媒体に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージの任意の方法またはテクノロジで実施された、揮発性および不揮発性、リムーバブルおよびノンリムーバブルの媒体が含まれる。コンピュータ記憶媒体に、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のソリッドステートメモリテクノロジ、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（「ＤＶＤ」）、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは、所望の情報をストアするのに使用でき、コンピュータ２によってアクセスできるすべての他の媒体が含まれるが、これらに制限はされない。
【００１５】
本発明のさまざまな実施形態によれば、コンピュータ２は、インターネットなどのネットワーク１８を介するリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。コンピュータ２を、バス１２に接続されたネットワークインターフェースユニット２０を介してネットワーク１８に接続することができる。ネットワークインターフェースユニット２０を使用して、他のタイプのネットワークおよびリモートコンピュータシステムに接続することもできることを認識されたい。コンピュータ２に、キーボード、マウス、または電子スタイラス（図１には図示せず）を含む多数の他のデバイスから入力を受け取り、処理する入力／出力コントローラ２２も含めることができる。同様に、入力／出力コントローラ２２は、ディスプレイスクリーン、プリンタ、または他のタイプの出力デバイスに出力を供給することができる。
【００１６】
上で短く述べたように、米国ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社のＷＩＮＤＯＷＳ（登録商標）  ＸＰオペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適するオペレーティングシステム１６を含む複数のプログラムモジュールおよびデータファイルを、コンピュータ２のマスストレージデバイス１４およびＲＡＭ９に保存することができる。マスストレージデバイス１４およびＲＡＭ９に、１つまたは複数のプログラムモジュールを保存することもできる。具体的に言うと、マスストレージデバイス１４およびＲＡＭ９に、ドローイングアプリケーションプログラム１０を保存することができる。ドローイングアプリケーションプログラム１０は、グラフィック２４などのグラフィックの作成およびレイアウトの機能性を提供するように動作する。本発明の一実施形態によれば、ドローイングアプリケーションプログラム１０は、ＷＯＲＤ、ＥＸＣＥＬ、およびＰＯＷＥＲＰＯＩＮＴというアプリケーションプログラムを含む、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮのアプリケーションプログラムのＯＦＦＩＣＥスイートを備えている。図２を参照すると、本発明のさまざまな実施形態に準じて、ドローイングアプリケーションプログラム１０内でのグラフィックスの作成およびレイアウトに使用されるさまざまなコンポーネントのブロック図が示されている。さまざまなコンポーネントに、データモデル３０、グラフィック定義４０、レイアウトツリー５０、アルゴリズム６０、および形状リスト７０が含まれる。本発明のさまざまな実施形態で、ドローイングアプリケーションプログラム１０は、グラフィックスの作成およびレイアウトに関する命令に関するグラフィック定義４０を読み込む。本発明の一実施形態で、データモデル３０およびグラフィック定義ファイル４０を、ドローイングアプリケーションプログラム１０によってアクセスされる、コンピュータシステム２内の個々のファイルとして保存できることを認識されたい。
【００１７】
データモデル３０に、グラフィック２４を構成する内容を含む、ノード、関係、テキスト、およびプロパティの集合が含まれる。グラフィック定義４０は、特定のグラフィックレイアウトを作成する方法を記述したデータの集合である。本発明のさまざまな実施形態で、グラフィック定義４０を、拡張マークアップ言語（「ＸＭＬ」）に従ってフォーマットすることができる。当業者が理解するように、ＸＭＬは、データを通信するための標準フォーマットである。ＸＭＬデータフォーマットでは、通信できるデータの型および構造を左右する文法ルールおよびデータ型ルールのセットをＸＭＬデータに提供するのにスキーマが使用される。ＸＭＬデータフォーマットは、当業者に周知であり、したがって、本明細書ではこれ以上詳細に議論しない。グラフィック定義４０によって記述されるグラフィックの態様に、各レイアウトノードに使用されるレイアウトアルゴリズムの名前、アルゴリズムパラメータ、制約、レイアウトツリーを構成する制約ルール、形状ジオメトリプロパティおよびスタイルプロパティのデフォルト、グラフィック分類データ、およびサンプルデータモデルが含まれる。
【００１８】
制約は、グラフィックを作成するためにレイアウトアルゴリズムによって使用される条件である。制約の例が、形状の幅に使用される値である。制約に、数値またはブール値を含めることができることを認識されたい。数値制約は、特定の数値（たとえば、幅（ｗｉｄｔｈ）＝１インチ（２５．４ｍｍ））を指定することができる。数値制約は、参照を使用して他の制約値を参照することによって値を計算することもできる（たとえば、高さ（ｈｅｉｇｈｔ）＝幅（ｗｉｄｔｈ）＊０．７５）。ブール制約に、あるセットのすべてのノードが別の制約に関して同一の値を有することを強制する同等性制約を含めることができ、ある制約値が別の制約値に基づいて制限される（たとえば、形状の幅が別の形状の高さより小さいまたはこれより大きいことが必要）不等性制約を含めることができる。制約をレイアウトノードの間で伝搬させて、ドローイング要素の間の同等性（たとえば、すべての通常ノードが同一のフォントサイズを有する）または不等性（たとえば、推移ノードの幅が通常ノードの幅以下でなければならない）を強制することができる。制約は、その状態を他のレイアウトノードに伝搬させる制約に共有プロパゲータ（ｓｈａｒｅｄ  ｐｒｏｐａｇａｔｏｒ）を取り付けることによって伝搬させることができる。制約および制約ルールの両方を、伝搬する制約から、他のノードで更新できることを認識されたい。制約ルールは、制約のセットをレイアウトアルゴリズムによって満足できない場合に、その制約のセットを変更する方法の記述である。たとえば、制約で、フォントサイズを１４ポイントにしなければならないことを指定することができるが、制約ルールで、フォントサイズを最小８ポイントまで減らせることを指定することができる。グラフィック定義４０は、以下で図４に関して詳細に説明する。
【００１９】
レイアウトツリー５０は、プレゼンテーション要素またはレイアウトノードの集合である。レイアウトノードは、グラフィック２４の要素を形成する１つの形状または形状のグループを表す、レイアウトツリー内のノードである。レイアウトノードを、オプションとして、データモデル３０のノードにリンクすることができる。レイアウトツリー５０は、グラフィックを構成する形状に関するデータを保存し、このデータは、形状のめいめいのジオメトリ、プロパティ、テキストフィッティング、および配置を含む。
【００２０】
ドローイングアプリケーションプログラム１０は、データモデルからのデータをグラフィック定義内のグラフィックレイアウト情報にマッピングしてレイアウトノードを構成し、アルゴリズム、制約、および制約ルールをこれらのレイアウトノードに関連付けることによって、レイアウトツリーを構成する。ドローイングアプリケーションプログラム１０は、次に、ドローイングキャンバスにグラフィック２４をレンダリングするのに使用される形状リスト７０を構成する前に、アルゴリズム、制約、および制約ルールを使用して、形状寸法、テキストフィッティング、および形状配置を決定する。レイアウトノードは、以下で詳細に説明する。レイアウトツリー５０は、以下で図３に関して詳細に説明する。
【００２１】
図３を参照すると、本発明のさまざまな実施形態に準じた、レイアウトツリーの１つのインスタンス３４のブロック図が示されている。図３に示されたレイアウトツリー３４が、例示的であることと、レイアウトツリーを、グラフィックのデータの量およびグラフィックレイアウトが定義される形に依存してより大きくまたはより小さくすることができることを理解されたい。レイアウトツリー３４に、グラフィック２４をレイアウトする際に使用されるレイアウトノードの階層配置が含まれる。この例では、レイアウトノードが、グラフィックすなわちページノード６２を含む全体的なページ領域を表す。ページノード６２の子（または第２レベルノード）に、グラフィックノード６４、タイトルノード６６、およびコールアウトノード６７が含まれる。グラフィックノード６４の子に、第１レベルノード６８、第２レベルノード７１、および第３レベルノード７２が含まれ、これら、図を構成する形状を表し、データモデル要素にマッピングされる。第３レベルノードも、子ノード７４（点Ａ）および７６（点Ｂ）を有し、これらは、可視の形状を表し、データモデル要素にマッピングされる。
【００２２】
図４を参照すると、本発明のさまざまな実施形態による、グラフィック定義４０の一部のブロック図が示されている。図４からわかるように、グラフィック定義のこの実施例は、グラフィック２４のレイアウトを定義する、ＸＭＬスキーマに基づく。このＸＭＬスキーマに、レイアウトノードによってグラフィックをレイアウトするのに使用されるアルゴリズムのタイプ（すなわち、ピラミッド（ｐｙｒａｍｉｄ））を定義するＡｌｇｏｒｉｔｈｍタグを含むサブタグを有するＬａｙｏｕｔＮｏｄｅタグ４７、レイアウトノードによってグラフィック内で使用できる形状（たとえば、台形（ｔｒａｐｅｚｏｉｄ））を定義するＳｈａｐｅｓタグ４８、および制約を定義するＣｏｎｓｔｒａｉｎｔｓタグ４９が含まれる。
【００２３】
図５を参照して、グラフィックを作成し、レイアウトするためにドローイングアプリケーションプログラム１０によって実行されるプロセスを示す例示的なルーチン５００を説明する。本明細書で提示されるルーチンの説明を読む時に、本発明のさまざまな実施形態の論理動作が、（１）コンピューティングシステムで動作するコンピュータ実施される動作のシーケンスまたはプログラムモジュールとして、および／または（２）コンピューティングシステム内の相互接続された機械論理回路または回路モジュールとして、実施されることを認識されたい。実施例は、本発明を実施するコンピューティングシステムの性能要件に依存する選択の問題である。したがって、図５に示され、本発明の実施形態を構成する論理動作は、動作、構造デバイス、作用、またはモジュールとさまざまに呼ばれる。これらの動作、構造デバイス、作用、およびモジュールを、ソフトウェアで、ファームウェアで、特殊目的ディジタルロジックで、およびこれらの任意の組合せで、請求項に記載の本発明の趣旨および範囲から逸脱せずに実施できることを、当業者は認識するであろう。
【００２４】
図５を参照すると、ルーチン５００は、動作５１０で開始され、ドローイングアプリケーションプログラム１０が、作成されるグラフィックで表されるデータおよびデータ関係を定義するデータモデルを受信する。このデータおよびデータ関係が、グラフィック定義で指定されるパターンに従い、レイアウトフレームワークによって生成されるレイアウトツリー３４内の各レイアウトノードのタイプおよび個数を決定することを認識されたい。
【００２５】
ルーチン５００は、動作５１０から動作５２０に継続され、ドローイングアプリケーションプログラム１０が、データモデルからのデータの、アルゴリズム、パラメータ、制約、制約ルール、および形状プロパティを指定するレイアウトノードへのマッピングの１つの可能性を記述するグラフィック定義を受信する。グラフィック定義４０を、コンピュータシステム２に保存された、ＸＭＬファイルなどの別々のファイルとして取り出せることを認識されたい。この形で、ユーザが追加できる新しいグラフィック定義の開発のサポートが提供され、その結果、これらをドローイングアプリケーションプログラム１０によって読み取れるようになる。新しいグラフィック定義を、レイアウトフレームワークに対する変更なしで作成でき、取り出すことができ、ドローイングアプリケーションがレイアウトできるグラフィックの拡張セットの準備が可能になる。
【００２６】
グラフィック定義は、アルゴリズム、パラメータ、制約、および制約ルールを適用するパターンを提供する。本明細書での定義では、アルゴリズムは、形状およびテキストを位置決めし、サイズを決定するレイアウトルーチンである。たとえば、あるアルゴリズムが、直線パス上に形状をレイアウトすることができ、もう１つのアルゴリズムが、環状パス上に形状をレイアウトすることができる。アルゴリズムが、さまざまな配置オプションを決定するためにパラメータをとることができることを認識されたい。たとえば、直線アルゴリズムは、ドローイングアプリケーションプログラム１０内のさまざまなドローイングツールコマンドを介して制御できる向きおよび方位のパラメータを有する。たとえば、ドローイングアプリケーションプログラム１０内で、グラフィックの方位を変更する（たとえば、左から右対右から左）またはグラフィックを回転するためにレイアウトアルゴリズムのパラメータの１つを変更するツールを提供することができる。アルゴリズムは、レイアウトフレームワークの外部でもあり、レイアウトフレームワークを変更せずに、作成できるグラフィックスの範囲を拡張するために追加することができる。
【００２７】
ルーチン５００は、動作５２０から動作５３０に継続され、ドローイングアプリケーションプログラム１０が、受信したデータモデルおよび受信したグラフィック定義からレイアウトツリーを生成する。具体的に言うと、ドローイングアプリケーションプログラム１０は、データモデル３０内のノードを「ざっと読み込み（ｗａｌｋ  ｔｈｒｏｕｇｈ）」し、データモデルからのノードおよび関係を、グラフィック定義（やはりＸＭＬスキーマによって定義することができる）に従って形状およびデフォルトスタイルプロパティ（たとえば、フォーマッティングおよびテキストプロパティ）にマッピングする。上で図２に関して述べたように、レイアウトツリー３４は、グラフィックを構成する形状に関するデータを含み、このデータ、は形状のジオメトリ、プロパティ、テキストフィッティング、および配置を含む。レイアウトツリーが、データモデル３０を経由して反復し、グラフィック定義で定義されたパターンに基づいてレイアウトノードを作成することによって作成されることを認識されたい。反復子（ｉｔｅｒａｔｏｒ）は、ノードパターンをレイアウトするためにデータモデル内の要素をどのように読み取り、マッチングするかを示すことによって、レイアウトツリーの構成に関する命令を提供する。
【００２８】
ルーチン５００は、動作５３０から動作５４０に継続され、ドローイングアプリケーションプログラム１０が、グラフィック定義からのアルゴリズム、パラメータ、制約、および制約ルールを使用して、レイアウトツリー内のレイアウトノードの形状サイズおよび位置を決定する。ルーチン５００は、動作５４０から動作５５０に継続され、ドローイングアプリケーションプログラム１０が、制約値に基づいて、レンダリングされるグラフィックがドローイングキャンバス上のレイアウトスペースにおさまるかどうかを判定する。
【００２９】
動作５５０で、レンダリングされるグラフィックが、ドローイングキャンバス上のレイアウトスペースにおさまらない場合に、ルーチン５００は、動作５６０に継続され、ドローイングアプリケーションプログラム１０が、制約ルールを使用することによって制約値を変更して、グラフィックがレイアウトスペースにおさまるようにする。具体的に言うと、レイアウトツリー３４内のレイアウトノードが、グラフィックをレイアウトスペース内で成功裡にレイアウトすることを試みにおいて制約値を変更するためにドローイングアプリケーションプログラム１０が使用できる制約ルールの順序付きセットを含む場合がある。本発明のさまざまな実施形態によれば、ドローイングアプリケーションプログラム１０は、各ルールを連続して試行し、現在のルールがグラフィックをレイアウトスペースに収めることができない場合に限って次のルールに移動する。アプリケーションプログラム１０は、ルールリストを通過し終えたならば、自動的にフォールバックルールリストにアクセスし、これによって、形状およびフォントサイズを非常に小さいサイズに縮小し、テキストを切り捨て、または形状をレイアウト空間に置かないことによって、ドローイング要素をドローイングキャンバス上のレイアウトスペースに強制的に収めることを認識されたい。
【００３０】
前述のグラフィック要素に、形状ならびに形状の内部におさまるテキストが含まれることを理解されたい。したがって、ドローイングアプリケーションプログラム１０は、動作５５０で、テキストのいずれかがドローイングキャンバス上のレイアウトスペース内の形状におさまらないかどうかも判定することができる。テキスト制約ルールならびに他のルールも、レイアウトノードの制約ルールリストに含めて、テキストを収めるためにさまざまな技法が適用される順序を決定できることを認識されたい。これらの技法に、形状のサイズを大きくすること、またはテキストフィット制約を変更すること（たとえば、マージンおよびフォントサイズを調整すること）を含めることができる。テキストアルゴリズムは、データがデータモデル内で存在する、レイアウトツリーのレイアウトノードに関連する。他のルールに、２つのグラフィック要素の間のスペースの量を決定するアルゴリズムを含めることができる。他のルールで、２つのグラフィック要素の間のスペースの量を決定するアルゴリズム、グラフィック要素の相対位置などを使用できることを、さらに認識されたい。
【００３１】
動作５５０で、レンダリングされるグラフィックが、ドローイングキャンバス上のレイアウトスペースにおさまる場合に、ルーチン５００は、動作５７０に分岐し、ドローイングアプリケーションプログラム１０が、動作５４０で決定されたレイアウトツリーデータに基づいて、作成されるグラフィックの形状リストを作成する。データモデル３０からのノードおよび特定の形状に対する関係または形状プロパティがマッピングされたならば、形状リストをドローイングキャンバスでレンダリングすることができる。その後、ルーチン５００が終了する。
【００３２】
前述に基づいて、本発明のさまざまな実施形態に、電子文書内の特定のタイプの内容を管理する方法、装置、およびコンピュータ読取可能媒体が含まれることを認識されたい。上の仕様、例、およびデータは、本発明の成分の製造および使用の完全な説明を提供する。本発明の多数の実施形態を、本発明の趣旨および範囲から逸脱せずに作ることができるので、本発明は、請求項に存する。
【図面の簡単な説明】
【００３３】
【図１】本発明のさまざまな実施形態で使用され、これによって提供されるコンピュータシステムを示すコンピュータシステムアーキテクチャグラフィックである。
【図２】本発明のさまざまな実施形態に準じた、図１のコンピュータシステムでドローイングアプリケーションプログラム内でのグラフィックスの作成およびレイアウトに使用されるさまざまなコンポーネントのブロック図である。
【図３】本発明のさまざまな実施形態に準じた、例示的なレイアウトツリーのブロック図である。
【図４】本発明のさまざまな実施形態に準じた、レイアウトツリーを生成する例示的なグラフィック定義の一部のブロック図である。
【図５】本発明の実施形態に準じた、グラフィックを作成し、レイアウトする、図１のコンピュータシステム内のドローイングアプリケーションプログラムによって実行される例示的なルーチンを示す図である。
【符号の説明】
【００３４】
２  コンピュータ
５  中央処理装置
７  システムメモリ
９  ランダムアクセスメモリ
１０  ドローイングアプリケーションプログラム
１１  読取専用メモリ
１２  バス
１４  マスストレージデバイス
１６  オペレーティングシステム
１８  ネットワーク
２０  ネットワークインターフェースユニット
２２  入出力コントローラ
２４  グラフィック
２６  永続ファイル
３０  データモデル
３４  レイアウトツリー
４０  グラフィック定義
４７  ＬａｙｏｕｔＮｏｄｅタグ
４８  Ｓｈａｐｅｓタグ
４９  Ｃｏｎｓｔｒａｉｎｔｓタグ
６２  ページ
６４  グラフィック
６６  タイトル
６７  コールアウト
６８  第１レベル
７１  第２レベル
７２  第３レベル
７４  点Ａ
７６  点Ｂ
【図１】
2006107465.tif 000003
【図２】
2006107465.tif 000004
【図３】
2006107465.tif 000005
【図４】
2006107465.tif 000006
【図５】
2006107465.tif 000007