JP4277002B2 - グラフィカルレイアウト/プレゼンテーションオブジェクトのホスティングを行うシステム - Google Patents

グラフィカルレイアウト/プレゼンテーションオブジェクトのホスティングを行うシステム Download PDF

Info

Publication number
JP4277002B2
JP4277002B2 JP2004566468A JP2004566468A JP4277002B2 JP 4277002 B2 JP4277002 B2 JP 4277002B2 JP 2004566468 A JP2004566468 A JP 2004566468A JP 2004566468 A JP2004566468 A JP 2004566468A JP 4277002 B2 JP4277002 B2 JP 4277002B2
Authority
JP
Japan
Prior art keywords
presenter
graphical
layout
view
graphical element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2004566468A
Other languages
English (en)
Other versions
JP2006526179A (ja
Inventor
エス.パリーク スジャル
ティトフ ドミトリー
オヴェトティキーネ オレグ
レット グレゴリー
ジークムント グレゴルズ
エイ.ニューマン デビー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006526179A publication Critical patent/JP2006526179A/ja
Application granted granted Critical
Publication of JP4277002B2 publication Critical patent/JP4277002B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/30Control of display attribute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)

Description

本発明は、一般的にコンピューティングデバイスに関する。具体的には、本発明は、グラフィカルドキュメント/ユーザインターフェースを介して表示されるグラフィカル要素を配置するコンピューティングコンポーネントに関する。
コンピューティングシステムで実行されるアプリケーションのグラフィカル出力の表示および/またはレンダリングには、多数のタスクが含まれる。そのようなタスクの1つが、レイアウト/プレゼンテーション管理である。レイアウト/プレゼンテーション管理は、割り当てられたディスプレイスペース(たとえば長方形)でのディスプレイ要素の組の配置および装飾に関係する。「レイアウト」および「プレゼンテーション」は、他の文脈では区別可能である場合があるが、本明細書で使用されるプレゼンテーションおよびレイアウトは、交換可能であり、同等の用語として扱われなければならない。レイアウト/プレゼンテーションシステムによって処理されるディスプレイ要素によって、グラフィカル出力システムのレンダリングコンポーネントおよびグラフィカルディスプレイドライバにグラフィカル出力が供給される。そのようなレンダリングコンポーネントによって、モニタおよびプリンタなどのグラフィカルディスプレイハードウェアが駆動される。
コンピューティングシステムによって実行されるレイアウト/プレゼンテーションオペレーションに、グラフィカルディスプレイ要素に対して実行されるさまざまな機能が含まれる。そのようなオペレーションの例が、エディタアプリケーションのグラフィカルディスプレイユーザインターフェースの割り当てられた次元内でテキストを配置することである。レイアウトオペレーションによって、テキストの行のコンテンツおよび指定された長方形区域内での配置が決定される。もう1つの例が、標準化された境界を有する要素(たとえば、ダイアログボックス、ツールバー、コントロールバーなど)のフレーム作成である。これらのオペレーションを、本明細書では「フィーチャ」とも称する。コンピュータシステムのレンダリングコンポーネントによって、ディスプレイ要素の状態に基づいてグラフィカル出力データが作られるが、このディスプレイ要素の状態は、潜在的に、前に実行されたレイアウト/プレゼンテーションオペレーション、すなわちフィーチャによって修正される。
さまざまなプレゼンテーションエンジンが既知である。たとえば、MICROSOFT WINDOWS(登録商標)の「ユーザモジュール」によって、グラフィカルユーザインターフェースのトップレベルウィンドウに関するレイアウトオペレーションが実行される。MICROSOFT WINDOWS(登録商標)のダイアログボックスマネージャによって、オブジェクトは、予め定められた位置に配置され、オブジェクトのグループ化が可能になる。オブジェクトの位置決めは、論理的な形で行われ、物理デバイスと独立している。JAVA(登録商標)SWINGによって、オブジェクトに関して指定されたプロパティに基づく、ビュー内のオブジェクトに関する基本的な配置オペレーションが可能になる。
レイアウト/プレゼンテーションオペレーションは、多数の形で実行されてきた。アプリケーション自体によって、そのディスプレイ要素のレイアウトオペレーションを完全に実行することができる。このレイアウト(または「プレゼンテーション」)オペレーションは、アプリケーション内でカプセル化される。アプリケーションの現在の状態に関連する1つまたは複数のビューに関して、アプリケーションによりディスプレイ要素が装飾/配置される。アプリケーションに割り当てられたディスプレイ領域内で要素がアプリケーションにより配置される。その後、配置されたディスプレイ要素に対応するディスプレイ出力が、グラフィックスシステム/ドライバに対してアプリケーションによりレンダリングが行われる。
MICROSOFT WINDOWS(登録商標)XPオペレーティングシステムに組み込まれたもう1つのレイアウト処理の配置では、アプリケーションによって呼出し可能な、予め定められたレイアウトフィーチャの組がサポートされている。このレイアウトフィーチャの組には、アプリケーションのユーザインターフェースグラフィカルディスプレイ要素の特殊化されたレイアウト/プレゼンテーションオペレーションが含まれる。たとえば、供給される長方形の境界ジェネレータなどの予め定められたレイアウト/プレゼンテーションフィーチャの組によって、グラフィカルディスプレイの要素の編成およびプレゼンテーションの特定の諸態様に関するアプリケーション開発者に対するプログラミング負荷が減る。予め定められたフィーチャの組によって、前述の境界など、ある種の基本的なディスプレイフィーチャ/機能の実行に関する一貫性(consistency)も実現される。アプリケーションによって、予め定められたレイアウト機能性に、アプリケーション自体に組み込まれた追加のレイアウトオペレーションが補足される。
アプリケーションによって呼出し可能な予め定められたレイアウトフィーチャを含む既知のレイアウト処理アーキテクチャによって、コンピュータシステムのレンダリングコンポーネントへのグラフィカルデータおよびコマンドのレンダリングの前にビューを配置する途中でアプリケーションが出会うプログラミングレイアウトタスクが単純になる。しかし、既知のレイアウト処理アーキテクチャでは、アプリケーションによって呼出し可能な予め定められたレイアウトフィーチャの組に関する機能強化または修正がすぐにはサポートされない。したがって、たとえば、新しいレイアウトフィーチャは、プレゼンテーション/レイアウトアーキテクチャによって供給される事前定義のレイアウトフィーチャにフィーチャを置くのではなく、アプリケーションコードに直接に置かれる。その後、実行中に、アプリケーションによって、予め定められたレイアウト機能性および内部で実行されるレイアウト/プレゼンテーションオペレーションの組合せを使用して、レイアウトが計算される。
本発明には、グラフィカル出力レイアウト管理システム内に組み込まれるプレゼンタ(presenter)システムが含まれる。そのようなレイアウト管理は、ディスプレイスペースでオブジェクトを配置し、サイズを変更し、置くといった形を目標とする。そのようなシステムによって、プログラムの表示可能なコンテンツを表すデータを含むグラフィカル要素(たとえば、表示されるか印刷されるページに配置される必要があるテキストのブロック)を提供するプログラムの代わりに、レイアウトが処理される。プレゼンタによって、グラフィカル要素のコンテンツを提示するディスプレイ状態を定義することによって、グラフィカル要素に対する相補的な役割(データを指定する)が実行される。したがって、プレゼンタによって、対応するグラフィカル要素のレイアウト記述が保持される。
本発明によれば、プレゼンタシステムによって、ビュー内のグラフィカル要素に関連するプレゼンタのホスティングが行われ、配置される。プレゼンタシステムには、多数のタイプのプレゼンタの派生物をサポートするという役割において、プレゼンタクラスがそこから派生されるプレゼンタ基底クラスが含まれる。その後、プレゼンタが、派生されたプレゼンタクラスからインスタンス化される。
プレゼンタシステムには、プレゼンタホストインターフェースも含まれる。ホストインターフェースには、グラフィカル要素に関連するプレゼンタに従ってビュー内のグラフィカル要素をレイアウトするメソッドが含まれる。したがって、ビュー内のグラフィカル要素のレイアウトは、関連するプレゼンタによって指定される。
請求項に、本発明の特徴を詳細に示すが、本発明およびその特徴は、添付図面と共に考慮される下記の詳細な説明から最もよく理解される。
ユーザインターフェースおよびドキュメントのレイアウト/プレゼンテーションアーキテクチャを本明細書で開示する。開示されるレイアウト/プレゼンテーションアーキテクチャには、ドキュメント/ユーザインターフェースの関連する基礎のデータ(グラフィカル要素)のビュー表示を実行するグラフィカルレイアウト処理/レンダリングコンポーネント(プレゼンタ)が含まれる。プレゼンタシステムによって、プレゼンタのホスティングが行われる。ホストとして実行されるにあたり、対応するグラフィカル要素に対する変更に応答して、プレゼンタの組を含むビューの更新がプレゼンタシステムにより組織化され、調整される。したがって、プレゼンタシステムによって、対応するプレゼンタオブジェクトにより更新され、キャッシングされ、およびレンダリングが行われるビュー状態に、グラフィカル要素の状況(たとえばデータ状態)をリンクする機構が提供される。
本発明を実施するプレゼンタシステムベースのレイアウト/プレゼンテーションアーキテクチャの特質の1つは、それによってホスティングが行われるプレゼンタの型に関する高い拡張性である。プレゼンタシステムによって提供されるプレゼンタ基底クラスによって、対応するグラフィカル要素により提供される情報のレイアウトおよびレンダリングに使用可能なプレゼンタ型(オブジェクトクラス)の組の拡張が実現される。プレゼンタ基底クラスから派生されるさまざまなプレゼンタ型によって、基底プレゼンタクラスにより指定されるデフォルトメソッドに対しオーバーライドを行うという形で特定のレイアウト/レンダリングメソッドが組み込まれる。プレゼンタオブジェクトクラスの組からインスタンス化されるプレゼンタオブジェクトによって、対応するグラフィカル要素のデータ状態によるレイアウト/プレゼンテーションフィーチャが実施される。
プレゼンタシステムによって、プレゼンタオブジェクトクラスの組からインスタンス化されたプレゼンタオブジェクトのホスティングが行われる。プレゼンタシステムによって、プレゼンタオブジェクトのライフタイム管理(すなわち、作成、削除など)が実行される。プレゼンタシステムによって、変更されたプレゼンタだけの選択的な更新のためにダーティ追跡(dirty tracking)が行われる。プレゼンタシステムによって、プレゼンタのチェーン化が提供されメインのプレゼンタへの装飾が可能となる。プレゼンタシステムによって、プレゼンタの更新およびレンダリングも調整される。
本発明の一実施形態では、潜在的にビュー状態に影響するグラフィカル要素に対する変更の通知が通知ハンドラによって実現される。通知ハンドラによって、プレゼンタにより実行される変更処理から変更通知処理を分離することが可能になる。各プレゼンタ要素型は、通知ハンドラ型に関連する。各通知ハンドラプロセスによって、対応するグラフィカル要素が変更される。更新が必要な場合には、通知ハンドラによって、関連するプレゼンタオブジェクトのダーティネス(dirtiness)プロパティの設定が始められる。ダーティネスプロパティの設定によって、対応するグラフィカル要素の変更に応答するプレゼンタオブジェクトの再計算が行われる。
例として本明細書で説明されるユーザインターフェースレイアウト/プレゼンテーションアーキテクチャは、グラフィカルユーザ/ドキュメントインターフェースを有するアプリケーションのホスティングを行うオペレーティングシステムに組み込まれる。アプリケーション、プレゼンタ、ならびにオペレーティングシステムおよびデバイス用ドライバのデバイス用レンダリングコンポーネントによって、ディスプレイデバイスハードウェア(たとえば、モニタ、プリンタなど)へのインターフェース/ドキュメントグラフィカル出力デバイス制御コマンド/データのレンダリングが行われる。レンダリングが行われる出力のレイアウトフィーチャは、少なくとも部分的に、プレゼンタシステムによりホスティングが行われるプレゼンタによって実行されるレイアウト/プレゼンテーション処理およびレンダリングに基づいている。
このプレゼンテーションアーキテクチャによって、表示される要素のデータ状態をそのビュー状態から分離することが可能になる。そのような分離によって、基礎になるグラフィカル要素の新しい豊かなディスプレイパーソナリティを作成するための、拡張性のある非常にカスタマイズが容易なプラットフォームがもたらされる。本発明の一実施形態では、ディスプレイ要素は、グラフィカル要素オブジェクト(要素のデータ状態を表す)および特定のビューで要素をレイアウトする、少なくとも1つの関連するプレゼンタオブジェクト(ビュー状態を表す)によって表される。プレゼンタによって、関連する要素のレイアウトのカスタマイズされた更新処理が実行される。また、プレゼンタによって、レイアウト更新後に要素のビューのレンダリングが行われる。
プレゼンタオブジェクトを使用することによって、表示される要素のデータ状態とビューでの表示が分離される。その結果、各グラフィカル要素(表示データソース)が、潜在的に、グラフィカル要素の別個のビュー(たとえば、写真要素のフルスケールビューおよびサムネイルビュー)を提供する複数のプレゼンタを有することができる。複数のプレゼンタを単一のグラフィカル要素に関連付ける能力によって、単一の要素を、フィールド内の複数の位置に関連付けることも可能になる(たとえば、単一のグラフィカル要素を複数の列の間で分割するなど)。また、プレゼンタシステムによって、単一の要素への異なるタイプの複数の別個のプレゼンタのチェーニングがサポートされ、これによって、要素の基本的なビューにさまざまなカスタマイズされた装飾を付加することがサポートされる。例示的なディスプレイレイアウト/レンダリングアーキテクチャの上記ならびに他の態様を、以下で図面を参照して説明する。
図1に、本発明を実施するプレゼンタシステムベースのディスプレイレイアウト/レンダリングアーキテクチャを実行する適切なオペレーティング環境100の例を示す。オペレーティング環境100は、適切なオペレーティングシステムの1つの例にすぎず、本発明の使用または機能性の範囲に関して限定を示唆することを意図されたものではない。本発明と共に使用するのに適する他の周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成に、パーソナルコンピュータ、サーバコンピュータ、ラップトップ/ポータブルコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに限定されない。プレゼンタシステムを含む開示されるレイアウト管理アーキテクチャは、図1に示されたものなど、コンピューティングシステムのディスプレイ機能性に関する拡張性、統合、および均一性を含む多数の種々の関心を想起させる。
本発明を、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令によって実行されるステップおよびプロセスの組の全般的な文脈で説明する。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。例示的な実施形態を、単一のコンピュータシステムでローカルに実行されるプロセスに関して説明するが、本発明は、潜在的に、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で動作するネットワークノードに組み込まれる。分散コンピューティング環境では、一般に、プログラムモジュールを、メモリストレージデバイスを含むローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
図1を続けて参照すると、本発明を実施する例示的なシステムには、コンピュータ110の形の汎用コンピューティングデバイスが含まれる。コンピュータ110のコンポーネントには、処理ユニット120、システムメモリ130、およびシステムメモリを含むさまざまなシステムコンポーネントを処理ユニット120に結合するシステムバス121を含めることができる。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。例としてこれに限定されないが、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびメザニンバスとも称されるPeripheral Component Interconnect(PCI)バスが含まれる。
コンピュータ110には、通常は、さまざまなコンピュータ読取可能な媒体が含まれる。コンピュータ読取可能な媒体は、コンピュータ110によってアクセスできるすべての使用可能な媒体とすることができ、コンピュータ読取可能な媒体には、揮発性および不揮発性の媒体、取外し可能および固定の媒体の両方が含まれる。例としてこれに限定されないが、コンピュータ読取可能な媒体には、揮発性および不揮発性、取外し可能および固定の両方の媒体が含まれるコンピュータ記憶媒体および通信媒体が含まれる。コンピュータ記憶媒体には、揮発性および不揮発性、取外し可能および固定の両方の媒体が含まれるが、これはコンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報の保管のためのあらゆる方法または技術で実装される。コンピュータ読取可能な媒体には、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリテクノロジ、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは所望の情報を保管するのに使用でき、コンピュータ110によってアクセスできる任意の他の媒体が含まれるが、これに限定されない。通信媒体によって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内でコンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータが実装され、通信媒体には、すべての情報配信媒体が含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形で1つまたは複数の特性を設定または変更された信号を意味する。例としてこれに限定されないが、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、コンピュータ読取可能な媒体の範囲に含まれなければならない。
システムメモリ130には、読取専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体が含まれる。起動中などにコンピュータ110内の要素の間での情報の転送を助ける基本ルーチンを含む基本入出力システム133(BIOS)が、ROM131に保管されることもある。RAM132には、通常、処理ユニット120によって即座にアクセス可能および/またはこれによって現在操作されつつあるデータおよび/またはプログラムモジュールが含まれる。例としてこれに限定されないが、図1に、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110に、他の取外し可能/固定の揮発性/不揮発性コンピュータ記憶媒体を含めることもできる。単に例として、図1に、固定不揮発性磁気媒体から読み取るかこれに書き込むハードディスクドライブ141、取外し可能不揮発性磁気ディスク152から読み取るかこれに書き込む磁気ディスクドライブ151、CD ROMまたは他の光学媒体などの取外し可能不揮発性光ディスク156から読み取るかこれに書き込む光ディスクドライブ155を示す。例示的なオペレーティング環境で使用できる他の取外し可能/固定、揮発性/不揮発性コンピュータ記憶媒体に、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、および類似物が含まれるが、これに限定されない。ハードディスクドライブ141は、通常は、インターフェース140などの固定メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取外し可能メモリインターフェースによってシステムバス121に接続される。
上述の図1に示したドライブおよびそれに関連するコンピュータ記憶媒体によって、コンピュータ110のコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータのストレージが提供される。図1では、たとえば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を保管するものとして図示されている。これらのコンポーネントを、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同一または異なるもののいずれかとすることができることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は、最低でも異なるコピーであることを示すために、異なる符号が与えられている。ユーザは、キーボード162、および一般的にマウス、トラックボール、またはタッチパッドと称するポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、または類似物を含めることができる。上記および他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース160を介して処理ユニット120に結合されるが、パラレルポート、ゲームポート、またはuniversal serial bus(USB)など、他のインターフェースおよびバス構造によって接続することもできる。モニタ191または他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続することができる。モニタのほかに、スピーカ197およびプリンタ196など、出力周辺インターフェース195を介してコンピュータ110に接続することができる他の周辺出力デバイスも含めることができる。
コンピュータ110は、潜在的に、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作する。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、リモートコンピュータ180には、通常、コンピュータ110に関して上記で説明した要素の多数またはすべてが含まれるが、図1には、メモリストレージデバイス181のみを示す。図1に示された論理接続には、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173が含まれるが、他のネットワークも含めることができる。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットではありふれたものである。
LANネットワーキング環境で使用される時に、コンピュータ110は、ネットワークインターフェースまたはネットワークアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される時に、コンピュータ110に、通常は、インターネットなどのWAN173を介する通信を確立する、モデム172または他の手段が含まれる。モデム172は、内蔵または外付けとすることができるが、ユーザ入力インターフェース160または他の適当な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保管することができる。例としてこれに限定されないが、図1に、メモリストレージデバイス181に常駐するリモートアプリケーションプログラム185を示す。図示されたネットワーク接続が、例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることが理解されるであろう。
図2は、本発明を実施するレイアウト/プレゼンテーション管理システムアーキテクチャの、ソフトウェアモジュールおよびプログラムならびにインスタンス化されたオブジェクトおよびデータコンポーネントを識別する高水準概略図である。図2に示された例示的なレイアウト/プレゼンテーション管理システムアーキテクチャには、プレゼンタシステム200が含まれ、このプレゼンタシステム200によって、オペレーティングシステム205で実行されるアプリケーション204の要求時にビューオブジェクトクラス(以下で説明する図8を参照されたい)から作成されるビュー202に関連する階層式に配置されたプレゼンタオブジェクトの組に基づく表示可能オブジェクトのレイアウト/プレゼンテーションがサポートされる。
本発明の一実施形態で、各ビュー(たとえば、ビュー202)は、ビュー内の表示可能オブジェクトを保持する責任を負う対応するプレゼンタシステム(たとえば、プレゼンタシステム200)を有する。本発明の実施形態では、ビュー202は、プレゼンタシステム200によって作成されるすべてのビジュアルのルートである。ビュー202内に表示されるコンテンツは、バッキングストア208内のグラフィカル要素206に基づく。アプリケーション204は、バッキングストア208内のグラフィカル要素206のソースである。アプリケーションに関連するビュー、プレゼンタシステム、ビューに関するプレゼンタツリー、およびグラフィカル要素ツリーの間の関係を示す例を、以下で説明する図3に示す。
図2に示されたレイアウト/プレゼンテーション管理システムアーキテクチャは、機能コンポーネントの組に分割される。図示のコンポーネントの間の線は、コンポーネントの間の相互作用パスを表す。本発明は、図2に示された例示的な実施形態のコンポーネントの特定の配置およびその図示された例示的な相互作用に限定されない。むしろ、本明細書に記載の機能コンポーネントは、本発明の代替の実施形態により異なる形でグループ化される。
本発明の一実施形態では、アプリケーション204によって、ビューオブジェクトクラスアプリケーションプログラムインターフェース(以下で説明する図8のビュークラス構造を参照されたい)のコンストラクタメソッドが呼び出されて、ビュー202オブジェクトインスタンスのルートオブジェクトが作成される。ビュー202を作成するメソッド呼出しによって、バッキングストア208に含まれるグラフィカル要素206のルートグラフィカル要素への参照が引き渡される。ビュー202を作成した後で、ビュー202のDoLayoutメソッドへの呼出しによって、ビュー202のプレゼンタツリーが作成され、ルートプレゼンタオブジェクトは、ビュー202を作成したコンストラクタメソッドに当初に渡されたルートグラフィカル要素に対応する。ビュー202のプレゼンタツリー(図2には図示せず)には、ビュー202のビジュアル出力を編成し、レンダリングする責任を負うプレゼンタの組が含まれる。
本発明の一実施形態では、各ビュー(たとえば、ビュー202)によって、プレゼンタシステム(たとえば、プレゼンタシステム200)が所有される。したがって、DoLayoutメソッドに応答して、ビュー202によって、新しいプレゼンタツリーの作成が開始され、そのツリーが呼出し側(たとえば、アプリケーション204)に返される。当初は、ビュー202によって、プレゼンテーションエンジンオブジェクトクラスのコンストラクタメソッドが呼び出され、プレゼンタホストアプリケーションプログラムインターフェース(プレゼンタホストAPI)を含むプレゼンテーションエンジン212インスタンスが作成される。プレゼンテーションエンジン212には、グラフィカル出力をサポートするコンピューティングシステム内のレイアウト/プレゼンテーションオペレーションを実行する際に、調整および組織化して実行する実行コードが含まれる。プレゼンテーションエンジン212によって実行/調整される機能には、プレゼンタオブジェクト(ルートバージョンと子バージョンの両方)の作成、プレゼンタの表示状態の再計算の調整、レンダリング、プレゼンタのライフタイム管理、ダーティ追跡、複数のプレゼンタの単一要素へのチェーニング、および増分レイアウトの実行が含まれる。プレゼンテーションエンジン212のプレゼンタホストAPIの呼出し可能メソッドの例を、以下で図12を参照して説明する。これらのメソッドは、ビュー202のプレゼンタオブジェクトツリーを作成し、保持する高水準要求である。プレゼンテーションエンジン212によって実行される識別されたタスクは例示的であり、当業者は、本発明の代替実施形態で、プレゼンテーションエンジン212によって追加/代替のタスクを実行できることを理解するであろう。
プレゼンテーションエンジン212によって、プレゼンタシステム200が構築され、ビュー202に関連するプレゼンタオブジェクトが処理される。本発明の一実施形態では、プレゼンタシステム200にプレゼンタ基底クラス216が含まれる。プレゼンタ基底クラス216は、本明細書に記載のシステムのレイアウト管理機能性を掘り下げることができるプレゼンタサブクラスおよびプレゼンタオブジェクトを作成する、機能満載の基底クラスである。プレゼンタ基底クラス216には、仮想(オーバーライド可能)プログラムコードおよびデータ構造体を含むテンプレートが含まれ、このテンプレートからプレゼンタクラス214の組が派生する。プレゼンタクラス214は、特定のディスプレイプロパティ/挙動を有する、グラフィカル要素であって、ビューに対応する特殊化されたプレゼンタ型の組を備える。プレゼンタ基底クラス216から派生されたカスタマイズされたプレゼンタクラス214によって、たとえば、コンテンツがレイアウトされ、子オブジェクトが配置され、添付された要素のビジュアルが作成され、活字印刷ドキュメントのためコンテンツにページが振られ、グラフィカル要素206を含むビジュアルが増分式に更新される。プレゼンタ基底クラス216によって定義される仮想メソッドをオーバーライドし、補足することによって、プレゼンタクラス214の組の各プレゼンタクラスの特殊化された機能が確立する。プレゼンタクラス214の組からインスタンス化されるプレゼンタオブジェクトによって、グラフィカル要素206のディスプレイ態様が表され処理される。
本発明の一実施形態では、プレゼンタオブジェクトクラス214の組は事前定義のプレゼンタクラス218および外部プレゼンタクラス220の両方を含み、拡張可能でもある。事前定義のプレゼンタクラス218の組は、プレゼンタシステム200と共に提供される。外部プレゼンタオブジェクトクラス220は、一般に、プレゼンタシステム200と独立にインストールされる。しかし、外部プレゼンタオブジェクトクラス220のプレゼンタシステム200との正しい統合が、プレゼンタ基底クラス216のパブリッシング(publish)が行われたインターフェース仕様(以下で図4aおよび4bを参照して説明する)によって実現される。外部プレゼンタクラス220の開発者は、プレゼンタ基底クラス216のカスタマイズ可能なレイアウト/レンダリングメソッドに関連するプログラムコードおよびデータ構造体をオーバーライド/修正して、カスタムサイズ変更、子オブジェクトの位置決め、およびレンダリング機能を達成する。その後、外部プレゼンタクラス220の組の中に、たとえば新しいオブジェクトクラスを含むファイルをコンピュータのファイルシステム内の指定されたディレクトリにインストールすることによって、新しいプレゼンタクラスはインストールされる。
本発明の一実施形態では、プレゼンタクラス214に、たとえばコンテンツレイアウト、子オブジェクトの配置、ビジュアルの作成、ドキュメントコンテンツのページ割り振り、およびビジュアルの増分的更新(たとえば、複数のディスプレイスクリーンにまたがるHTMLページ)を含む、レイアウトフィーチャを実行するためのプレゼンタクラスが含まれる。特定のプレゼンタ型の例には、さまざまな形でフォーマットされたテキスト(たとえば太字、斜体など)を測定し、表示するテキストプレゼンタ、指定されたイメージを測定し、表示するイメージプレゼンタ、複数の子プレゼンタの間でスペースを区分するドックプレゼンタが含まれる。
プレゼンタシステム200およびプレゼンタクラス214を作成した後に、ビュー202およびプレゼンタシステム200に関連するプレゼンタオブジェクトの組が、ビューについて、ルートプレゼンタオブジェクトから始めてインスタンス化される。プレゼンテーションエンジン212を作成するための、プレゼンテーションエンジンオブジェクトクラスへのコンストラクタメソッド呼出しによって、ビュー202のルートグラフィカル要素が識別されることに留意されたい。インスタンス化の後に、プレゼンテーションエンジン212によって、グラフィカル要素206が呼び出されて、ビュー202のルートグラフィカル要素に関連するプレゼンタオブジェクト型が判定される。グラフィカル要素のプレゼンタ型を判定した後に、プレゼンテーションエンジン212によって、グラフィカル要素206により識別されるプレゼンタオブジェクト型に対応するプレゼンタクラス214のうちの1つのクラス上でメソッドが呼び出されて、ビュー202のルートプレゼンタオブジェクトがインスタンス化される。
プレゼンタクラス214とバッキングストア208との間のパスによって示されるように、ルートプレゼンタを含むプレゼンタオブジェクトによって、バッキングストア208のグラフィカル要素206がアクセスされ、特定のグラフィカル要素のプロパティが判定される。たとえば、特定のグラフィカル要素のプレゼンタオブジェクトによって、特定のグラフィカル要素の子グラフィカル要素と各子グラフィカル要素のプレゼンタ型とを識別することができる。その後、プレゼンタオブジェクトによって、識別された子グラフィカル要素ごとに、それ自体のメソッド(たとえば、GetChildProxyForElement486)が呼び出されて、プレゼンタシステム200の子プロキシクラス222から子プロキシオブジェクトがインスタンス化される。子プロキシオブジェクトは、親プレゼンタオブジェクトに割り当てられるディスプレイスペース内で入れ子にされるプレゼンタオブジェクトのラッパーオブジェクト(プレゼンタオブジェクトクラス214からインスタンス化される)である。子プロキシクラス222によって、カプセル化およびセキュリティの必要が満たされる(たとえば、子プレゼンタオブジェクトによって、親プレゼンタオブジェクトまたはアプリケーション204によるアクセスを、子プレゼンタ内に含まれるプレゼンタの内容に制限する)。代替案では、子プロキシオブジェクトによって提供されるカプセル化レイヤがバイパスされ、親プレゼンタが、その子プレゼンタに直接アクセスする。
本発明の一実施形態で、要素の子プロキシオブジェクトを作成するプレゼンタオブジェクトのメソッドによって、子プロキシクラス222のコンストラクタメソッドが呼び出され、子グラフィカル要素の識別が渡され、子グラフィカル要素の新しい子プロキシオブジェクトおよびプレゼンタオブジェクトがインスタンス化される。インスタンス化されると、新しい子プロキシオブジェクトによって、識別された子グラフィカル要素に関して指定されるプレゼンタ型に対応するプレゼンタコンストラクタを介し、子グラフィカル要素のプレゼンタオブジェクトが作成される。子プロキシオブジェクトによって、親プレゼンタオブジェクトへのそれ自体の参照が返される。親プレゼンタオブジェクトによって、子プロキシオブジェクトへの参照のアレイ配列内で、返された子プロキシオブジェクト参照が保持される。したがって、プレゼンタオブジェクトの子プロキシオブジェクト配列項目は、親プレゼンタが関連する親グラフィカル要素の子グラフィカル要素に対応する。
図2に示されたグラフィカル要素配置/プレゼンテーションアーキテクチャのもう1つの態様が変更通知である。本発明の実施形態では、通知ハンドラクラス224の組が、プレゼンタクラス214からインスタンス化されるプレゼンタオブジェクトのために提供される。通知ハンドラクラス224は、通知ハンドラ基底クラス225に従って定義される。通知ハンドラ基底クラス225は、通知ハンドラクラス224のインターフェースを定義する抽象クラスである。通知ハンドラ基底クラス225によって、2つの仮想メソッドのインターフェース定義(図6参照)が提供され、対応するプレゼンタクラス214に従って通知ハンドラクラス224で実装される。通知ハンドラクラス224によって、増分的レイアウト更新すなわち、対応するグラフィカル要素の組に対する変更によって影響を受けるプレゼンタオブジェクトだけの再計算が支援される。本発明の一実施形態では、通知ハンドラが、グラフィカル要素およびビューの組合せについて指定される。複数のプレゼンタが、単一のグラフィカル要素/ビュー組合せについて作成される場合には、単一の通知ハンドラが、ビュー内の要素の複数のプレゼンタを更新するための、要素に対する変更を追跡する単一のソースとして動作する。各プレゼンタ型によって、特定の対応する通知ハンドラ型が指定される。通知ハンドラを必要とする、ある要素のプレゼンタオブジェクトがインスタンス化される時、プレゼンタシステムによって、指定された型の対応する通知ハンドラが作成され、通知ハンドラがプレゼンタオブジェクトにリンクされる。
通知ハンドラクラス224のインスタンスによって、プレゼンタオブジェクトのどの部分がダーティであり、したがって更新を必要とするかが判定される。当初、通知関係は、ビュー(たとえばアプリケーション204のビュー202)内のプレゼンタについて作成されるグラフィカル要素と通知ハンドラの間で確立される。通知ハンドラは、プレゼンタシステム200のプレゼンテーションエンジン212を介してバッキングストア208内のグラフィカル要素に関連する変更通知を受け取る。通知ハンドラによって、プレゼンタの、要素に対する変更によって影響を受けた部分がある場合、その部分が判定される。通知ハンドラによって、影響された部分の情報がプレゼンタシステム200に返される。プレゼンタは、プレゼンテーションエンジン212によって「ダーティ」としてマークされる。プレゼンタシステム200によって、ビュー(たとえばビュー202)に関して保持されるデータ構造体内のすべてのプレゼンタに関して「ダーティ」プレゼンタ情報が蓄積される。後に、ビューのレイアウトを再計算する呼出しに応答して、プレゼンタシステム200のプレゼンテーションエンジン212によって、ダーティプレゼンタに対してのみ更新メソッド/オペレーションが呼び出される。したがって、通知ハンドラクラス224によって、プレゼンタクラス214から作成されたプレゼンタオブジェクトのうちの影響されたものだけへのレイアウト更新の制限が可能になる。
本発明を使用するレイアウト管理システムアーキテクチャは、レイアウトされた要素が定義されたビューに従って最終的にその上で表示される特定の出力ハードウェアデバイスと独立に動作する。図2に示されたレイアウト/プレゼンテーション管理システムアーキテクチャによって、グラフィカルディスプレイ出力に関する前処理ステップが実行される。本発明の一実施形態では、レイアウト/プレゼンテーション管理システムアーキテクチャに関連する配置された出力が、デバイス独立である。その後、レンダリングステージの間に、プレゼンタオブジェクトによって、コンピューティングシステムのグラフィカル出力コンポーネントに対して再計算されたビューのレンダリングが行われる。しかし、本発明の他の実施形態では、レイアウト/プレゼンテーションシステムの出力が、プレゼンタオブジェクト214またはプレゼンタシステム200のいずれかによって呼出し元のアプリケーション204に返され、アプリケーション204によって、レンダリングタスクが実行される。本発明の実施形態では、プレゼンタクラス214から派生したプレゼンタオブジェクト、ビュー202、またはアプリケーション204のどれによって発行されるものであっても、レンダリングコマンドが、ユーザのコンピュータのグラフィックサブシステムおよびグラフィックデバイスドライバ234に渡される。グラフィックサブシステムおよびグラフィックデバイスドライバ234によって、モニタ236またはプリンタ238などの特定の選択された出力デバイスへのレンダリング命令およびデータが変換される。
上記で説明したレイアウト/プレゼンテーション管理システムアーキテクチャを要約すると、プレゼンタシステム200によって、アプリケーション204などのアプリケーションのためのデバイス独立のレイアウト処理プラットフォームが提供される。レイアウト処理は、プレゼンタシステム200によってホスティングが行われるプレゼンタクラス214の組からインスタンス化されたプレゼンタオブジェクトによって実行される。プレゼンタシステム200は、ビュー202によって所有される。プレゼンタオブジェクトは、グラフィカル要素206の特定のビュー状態/レンダリングに対応する。ビュー状態(プレゼンタオブジェクト)を要素状態(グラフィカル要素206)から分離することによって、単一の要素状態について複数のビュー状態/プレゼンタを独立して指定できるようになる。レイアウトは、ビュー202などのビューに分離され、各ビューは、アプリケーション204に割り当てられた出力スクリーン上の特定の長方形またはグラフィカルプリンタ出力のドキュメントページなどのディスプレイ領域に対応する。データ状態とビュー状態とを分離することによって、単一の要素によってグラフィカル要素の複数のビューを駆動でき、したがって、さまざまなビュー/形で単一のグラフィカル要素を表示できるようになる。
開示されるレイアウト管理システムアーキテクチャのもう1つの特徴が高い拡張性である。プレゼンタクラス214の組の拡張は、プレゼンタシステム200およびプレゼンテーションエンジン212のプレゼンタホストAPIによって提供されるプレゼンタ基底クラス216によって実現される。
上述のレイアウト管理システムアーキテクチャによって、グラフィカル出力をグラフィカルユーザインターフェースおよびプリンタにレンダリングするアプリケーションのための様々な高度なレイアウト処理フィーチャがサポートされる。単一の要素(グラフィカル要素)を複数のビュー状態(プレゼンタ)に分離する能力によって、プリンタ出力またはディスプレイスクリーン上のドキュメントのプリンタ出力ビューをレンダリングする時のアプリケーションでのページ割り振りおよび複数の列への要素の分割(ページ割り振りの1形態)が支援される。そのようなアプリケーションには、ウェブブラウザおよびワードプロセッシングプログラムが含まれる。
複数のプレゼンタのもう1つの利点は、所与のディスプレイスペース内にコンテンツを収めることを複数試みることをアプリケーションが実行できる点である。アプリケーションは、単一の要素について、複数の入力パラメータを用いて異なるプレゼンタオブジェクトに対する複数の試行をインスタンス化することができ、その後、ユーザにグラフィカル要素の表示されたビューのうちで最良のビューを選択させることができる。
上記で説明したレイアウト管理アーキテクチャから生じるもう1つの利点は、1組の対応する要素に関する1組のプレゼンタを含むビューに対して増分的更新を実行できることである。変更は、バッキングストア(たとえば、図3のバッキングストア208を参照されたい)で要素ごとに実施される。通知ハンドラおよびプレゼンタシステム200によって、バッキングストア内の対応する要素への変更によって影響を受けたプレゼンタに対応するビューの更新を限定するための基盤が提供される。
例示的なレイアウト管理アーキテクチャのもう1つの利点は、以前に作成されたプレゼンタで実施される要素のビュー状態を装飾できる点である。これは、特定の要素型について指定される型のプレゼンタに追加のプレゼンタをチェーニングすることによって達成される。チェーニングによって、開発者が、要素の特定のプレゼンタ型により指定されるビュー状態に境界、背景などを追加してユーザインターフェースおよびドキュメント出力の機能強化が可能になる。
本発明を使用するレイアウト管理システムの全般的なアーキテクチャを説明したので、図3に移るが、この図には、特定の例示的なビューに関するビュー、プレゼンテーションエンジン、ビュー内のプレゼンタオブジェクト、グラフィカル要素、および通知ハンドラの間の関係が示されている。
概念的には、ビューによって、指定されたプレゼンタに従いバッキングストア208内に表されるグラフィカル要素の組をレイアウトする特定の形が定義される。本発明の一実施形態では、ビューは出力フィールド(たとえば、ディスプレイスクリーン)内の長方形によって定義される。長方形およびその位置のほかに、ビューによって、ビューに含まれるグラフィカル要素および関連するプレゼンタも指定される。さらに、本発明の一実施形態では、各ビューは、それ自体のプレゼンタシステムインスタンス(たとえば、ビュー202aのプレゼンタシステム200aおよびビュー202bのプレゼンタシステム200b)に関連することに留意されたい。
図3を続けて参照すると、バッキングストア208に、ビュー202aおよび202bに関連するグラフィカル要素(Ex)の編成された(organized)集合が含まれる。グラフィカル要素(Ex)は、編成されたユーザコンテンツのエンティティである。要素の例としては、グラフィカルユーザインターフェース(GUI)ボタンまたはテキストパネル、テキストエディタウィンドウ、ビットマップなどがある。本発明の一実施形態では、バッキングストア208内のグラフィカル要素(Ex)がツリーの形で配置される。バッキングストア208内で保持されるグラフィカル要素206の組の各要素(Ex)は、プロパティ/プレースホルダ(明示的または他の明示的なプロパティ/プレースホルダから暗黙のいずれかとすることができる)の組に関連する。グラフィカル要素の1つまたは複数のそのようなプロパティ/プレースホルダによって、コンピュータシステムの他のコンポーネントと共同するグラフィカル要素のコンテンツがレイアウトされ、レンダリングが行われる。本発明の一実施形態では、チェーニングされるプレゼンタは、明示的に定義されるか、またはこれに替えて、ある要素について指定される他のプロパティから示唆される(たとえば、2ピクセルの「境界」プロパティによって、境界チェーニングが行われたプレゼンタが示唆される)。グラフィカル要素について指定されるプロパティ型は、特定のグラフィカル要素に依存し、これには、色、フォント名、高さ、幅などが含まれる。
バッキングストア208は、潜在的に複数のビュー(たとえば、ビュー202aおよび202b)に関連する。潜在的に複数のビューのそれぞれによって、バッキングストア208内のグラフィカル要素の組に対応するプレゼンタオブジェクトインスタンスの組が排他的に所有される。したがって、複数のビューで提示されるグラフィカル要素の場合に、プレゼンタオブジェクトは、各ビュー内の要素について作成される(たとえば、要素E2のプレゼンタP2およびプレゼンタP2’)。プレゼンタが関連するグラフィカル要素は、要素オーナーフィールドで指定され、プレゼンタから対応するグラフィカル要素への破線に対応する。これは、図2および3に示された、単一のグラフィカル要素によって提供される情報を操作する複数のプレゼンタをサポートするプレゼンテーションアーキテクチャの一例にすぎない。
複数のビュー(およびプレゼンタ)をバッキングストア208内のグラフィカル要素の同一の集合に添付する上記で説明した能力を実装するプレゼンテーションアーキテクチャの結果として、グラフィカルユーザインターフェースによって、グラフィカル要素によって提供される情報の同一の組の複数のビューを表示することができる。たとえば、MICROSOFT社のPOWERPOINTなどのアプリケーションで、同一のスライドグラフィカル要素に関して、1つのスライドに同時に2つのビュー、すなわちメインビューおよびプレビュー(またはサムネイル)ビューがサポートされる。
単一のグラフィカル要素の複数のプレゼンタオブジェクトインスタンスを作成する能力によって、複数のページ/列にまたがる単一のグラフィカル要素(たとえば、ドキュメントテキスト)のページ割り振りも実装される(すなわち、1つのグラフィカル要素が2つのページにまたがって分割される場合、そのページごとに1つの要素について2つのプレゼンタオブジェクトが作成される)。図3を参照すると、親プレゼンタオブジェクト(たとえば、P5)によって、グラフィカル要素(たとえば、E5)から、その要素内のコンテンツ(たとえば、テキスト要素E8)が2つの列にまたがって提示可能であることを示すプロパティが渡されて受け取られる。ドキュメントの2つの別々に離れた列/ページの長方形に対応する2つの子プレゼンタオブジェクトP8aおよびP8bは、グラフィカル要素E8によって提供されるテキストを表示するためにプレゼンタP5の下でインスタンス化される。
単一のグラフィカル要素に関する複数のプレゼンタのインスタンス化のもう1つのケースは、装飾(たとえば、境界、背景、フレームなど)がグラフィカル要素に割り当てられる場合に生じる。チェーニングが行われたプレゼンタの例は、要素E4のチェーニングが行われたプレゼンタQ4によって提供されるが、これはプレゼンタP4によって定義された長方形の周囲に境界を設け、要素E4内のデータフィールドが供給するテキストを保持する。その要素オーナーフィールドでグラフィカル要素E4を指定することによって、プレゼンタQ4およびプレゼンタP4の両方がグラフィカル要素E4にリンクされ/関連付けられる。本発明の一実施形態で、親プレゼンタは、その子の1つに対応する要素から、チェーニングが行われたプレゼンタが必要である(たとえば、2ピクセルの境界が、要素で指定される)ことを検出する。チェーニングが行われたプレゼンタQ4の場合、プレゼンタP1によって、それ自体のメソッドが呼び出され、子要素E4の子(プロキシ)プレゼンタが作成されると、E4のプロパティより、チェーニングが行われたプレゼンタ(Q4)が必要であることが認識される。まず、子プロキシ/プレゼンタQ4が、作成され、プレゼンタP1の子プレゼンタとして識別される。Q4によって、子プロキシ/プレゼンタP4が作成される。したがって、P4は、プレゼンタQ4の子プレゼンタである。チェーン内の次のプレゼンタ(P4)を識別する情報が、チェーニングが行われたプレゼンタQ4の子プロキシ内に保管される。
同一のグラフィカル要素にリンクされ、バッキングストア208内のグラフィカル要素の組について複数のビュー(およびプレゼンタシステム)を作成する複数のプレゼンタを伴う特定の例示的なケースを説明したので、図3に表示されるエンティティの間の関係を次に説明する。上述のように、ビュー202aおよび202bは、それぞれプレゼンタシステム200aおよび200bを所有する。プレゼンタシステム200aは、プレゼンタクラスがそれに対して記述されるAPIを含むコードおよび基底クラスを介して作成され、ビュー202aのプレゼンタの組302をサポートする。プレゼンタシステム200bは、ビュー202bについて作成され、プレゼンタの組303をサポートする。
バッキングストア208内のプレゼンタ(Px)とグラフィカル要素(Ex)との間の線によって示されるように、プレゼンタ(Px)は、対応するグラフィカル要素(Ex)に関連する。プレゼンタ(Px)によって、対応するグラフィカル要素(Ex)のビュー状態が表される。バッキングストア208内のグラフィカル要素(Ex)は、たとえば、多数の可能な方法の1つではあるが、アプリケーションによって構築されるツリー構造内で保持される。そのような方法の例には、パーサを介してテキストマークアップファイルを実行すること、グラフィカル要素をインスタンス化するコードを使用することなどが含まれる。プレゼンタの組302のツリー構造は、プレゼンタシステム200aによって、そのプレゼンテーションエンジンにより提供されるインターフェースの特定のメソッド(たとえば、DoLayout)の呼出しに応答して構築される。上記で図2を参照して説明したように、プレゼンタオブジェクトツリーのノードは、特定のビューに関連するグラフィカル要素ツリーのノードによって決定される。ビュー内のグラフィカル要素は、ビュー、その子、孫などについて指定されるルートグラフィカル要素によって決定される。
ビュー1のプレゼンタの組302は、階層的に配置される。ルートプレゼンタP1は、2つの子プレゼンタP2およびP4を有する(Q4は、プレゼンタP4に対する装飾プレゼンタである)。プレゼンタP2は、子を有しない。しかし、プレゼンタP4は、2つの子プレゼンタP5およびP7を有する。プレゼンタP5は、子プレセンタP8aおよびP8bを有し、これらは、単一のグラフィカル要素E8に関連する。2つのプレゼンタオブジェクトの間での単一のグラフィカルプレゼンタのそのような共有/分割は、たとえば、テキストグラフィカル要素E8が、親テキストグラフィカル要素E5の2つの列の間で分割される時に生じ、グラフィカル要素E5は、型TextPresenterのプレゼンタ(P5)を有する。E5のコンテンツ(E8)を2つの列にまたがって分割することを要求するE5のプロパティにプレゼンタP5が留意する時、プレゼンタP5によって、列分割処理が開始される。プレセンタP8aおよびP8bは、2つの列のグラフィカル要素E8のグラフィカルな部分(existence of parts)に対応する。
単一のグラフィカル要素が、複数の関連するプレゼンタオブジェクトを有することができることを以前に注記した。例示的な3つのケースに分けられた。複数のビュー202aおよび202b並びに対応する図3のプレゼンタシステム200aおよび200bによって示される第1のシナリオでは、単一のグラフィカル要素(たとえば、E2)は、それぞれビュー202aおよび202bに関連する対応するプレゼンタP2およびP2’を有する。そのようなビューは、たとえば、写真イメージ処理アプリケーションによって生成されるユーザインターフェースの異なる領域に表示される写真イメージ(E2)のサムネイルビューおよびフルサイズビューに対応する。この場合に、プレゼンタP2およびP2’は、要素を含む各ビュー202aおよび202bで要素E2について作成される。単一の要素(たとえば、テキスト要素E8)に関する複数のプレゼンタを含む第2のシナリオでは、プレゼンタ要素P8aおよびP8bが、単一のプレゼンタ要素P5によって定義される長方形の中の2つの列に対応する。これに替えて、ビュー内の複数のプレゼンタが同一のグラフィカル要素を参照するケースは、たとえば、親が、ビューのレイアウトの複数の試みを実行し、その試行を保存する時に生じる。第3のシナリオでは、グラフィカル要素(たとえば、E4)のデータ状態ではなく、別のプレゼンタ(たとえば、P4)に依存するプレゼンタ(たとえば、Q4)が、他のプレゼンタにチェーニングされ、これによって最初のプレゼンタによって供給されるディスプレイフィーチャが豊かになる。プレゼンタチェーニングの例が、主プレゼンタに境界装飾を提供する境界プレゼンタである。
上記で、図2を参照して、子プロキシクラス222からインスタンス化される子プロキシオブジェクトが、親プレゼンタオブジェクトの各子プレゼンタオブジェクトのラッパーであることを注記した。ビュー202aのプレゼンタツリー構造のグラフィカル描写では、子プロキシオブジェクトが、親プレゼンタをその子プレゼンタオブジェクトに接続する線の矢印の先によって表される。子プロキシオブジェクトによって、その親プレゼンタオブジェクトによるアクセスが子プレゼンタオブジェクトに制限される。
通知ハンドラ(Nx)は、グラフィカル要素(Ex)に対するデータ状態の変更について、対応するプレゼンタ(Px)に通知する責任を負う。通知ハンドラNxは、プレゼンテーション/レイアウト管理システムのオペレーションに必須ではない。むしろ、通知ハンドラによって、ビュー内の要素の変更が行われる時、すべてのプレゼンタに対してではなく、増分的更新が実現される。
図4aおよび4bを参照すると、プレゼンタ基底クラスには、メソッド、プロパティ、およびフィールドの組が含まれる。本発明の一実施形態では、プロパティは、特定の参照されるプレゼンタオブジェクトについて、そのオブジェクトのゲット/セットオペレーションを呼び出すことによってアクセスされる。backgroundプロパティ400によって、プレゼンタ背景のペイント値が指定される。background opacityプロパティ402によって、背景の不透明度を指定する値が保管される。borderプロパティ404によって、プレゼンタのレイアウトスペースの縁に沿って描かれる境界の太さを指定する値が保管される。borderプロパティ404によって、たとえば、プレゼンタに割り当てられた長方形の上辺、下辺、右辺、および左辺の境界幅を示す4つの値が保管される。border colorプロパティ406によって、プレゼンタの回りの境界の色を指定する値が指定される。border styleプロパティ408によって、境界ディスプレイスタイルの組の1つを示す値が保管される。境界スタイルの例に、solid、groove、ridge、inset、およびoutsetが含まれる。
bounding boxプロパティ410によって、プレゼンタグラフィックス(または子)が描かれる領域(たとえば、長方形)が指定される。bounding boxプロパティ410のデフォルトサイズは、layout sizeフィールド460によって指定されるサイズと同一である。しかし、境界ボックスサイズは、レイアウトサイズを超えるようにすることができ、これによって、プレゼンタがレイアウトサイズの外に描画することが可能になる。
その一方で、clipプロパティ414に真がセットされる場合、プレゼンタ(およびその子プレゼンタ)は、layout sizeフィールド460によって指定される長方形の外部に描画することができない。clipプロパティ414に真がセットされる場合、bounding boxプロパティ410は、レイアウトサイズより大きくならない。これによって、描画されるプレゼンタが、それに割り当てられたレイアウトサイズの外でグラフィックスをレンダリングしないことが保証される。
childrenプロパティ412は、親プレゼンタ内で入れ子にされた子プレゼンタへの参照(たとえば、直接/間接のハンドル、ポインタなど)および親プレゼンタのレイアウトスペース内での変換された位置が保管される、配列または他の適切な多要素データ構造である。childrenプロパティ412は、プレゼンタのOnUpdateメソッド呼出し(以下で説明する)のコンテキストでの最初の使用時に移植される。「最初の使用時」とは、親プレゼンタが子集合を逐次要求し、子集合は、バッキングストア(たとえばバッキングストア208)内のグラフィカル要素のツリーから、親プレゼンタに対応するグラフィカル要素の子グラフィカル要素に対応するプレゼンタを移植される時を指している。childrenプロパティ412によって、ビュー内のプレゼンタに関する入れ子にされた関係を反映する階層の確立/保持が実現される。本発明の一実施形態では、配列項目によって、子プロキシオブジェクトが参照される。子プロキシオブジェクトは、親プレゼンタオブジェクトに割り当てられたディスプレイスペース内で入れ子にされる子プレゼンタオブジェクトのラッパーオブジェクトである。子プロキシオブジェクトラッパーによって、必要なカプセル化およびセキュリティが満足される(たとえば、子プレゼンタによって、親プレゼンタによるアクセスがその子プレゼンタのコンテンツに制限される)。
上記で説明したように、clipプロパティ414は、プレゼンタのコンテンツが、クリッピングすることによって、layout sizeフィールド460により指定されるプレゼンタのレイアウトサイズに閉じこめられるかどうかを制御する。
プロパティの組によって、プレゼンタのスペース内でコンテンツに割り当てられるスペースが指定される。borderプロパティ404の他に、paddingプロパティ416によって、コンテンツによって占められずに残される境界の内側のスペースの量が指定される。content heightプロパティ418によって、プレゼンタ内のコンテンツの高さすなわち、プレゼンタのうちでborderプロパティ404およびpaddingプロパティ416で指定される値を考慮に入れた後に残されるプレゼンタの部分の高さを示す値が指定される。content widthプロパティ420によって、borderプロパティ404およびpaddingプロパティ416の寸法を考慮に入れた後にプレゼンタ内でコンテンツに割り当てられる幅を示す値が指定される。content heightプロパティ418およびcontent widthプロパティ420の組合せによって、プレゼンタ内でコンテンツが潜在的に占めるプレゼンタの領域が指定される。
heightプロパティ422およびwidthプロパティ424によって、プレゼンタの実際の高さおよび幅が指定され、この2つの値には、コンテンツ、パディング、および境界の寸法が含まれる。default heightプロパティ426およびdefault widthプロパティ428によって、特定のプレゼンタオブジェクトについてheightプロパティ422およびwidthプロパティ424が供給されない時にプレゼンタに割り当てることができるデフォルト値が指定される。maximum widthプロパティ430およびminimum widthプロパティ432によって、widthプロパティ424に割り当てられる値の範囲が指定される。
プレゼンタのもう1つの寸法プロパティが、marginプロパティ434である。marginプロパティ434によって、プレゼンタの境界の外のバッファスペースが指定される。marginプロパティ434は、子プレゼンタによって指定され、入れ子にされたプレゼンタの階層を含むレイアウトを配置する時に親プレゼンタによってアクセスされる。
visibilityプロパティ436によって、プレゼンタの可視性状態が指定される。visibilityプロパティ436は、プレゼンタおよびその子に対応するグラフィカルイメージをレンダリングする方法(またはするかどうか)を判定するために参照される。本発明の一実施形態では、潜在的な可視性状態にvisible、collapsed、およびhiddenが含まれる。
複数のプレゼンタプロパティが、プレゼンタをレイアウト/プレゼンテーション管理システム内の他のエンティティにリンクするのに使用される。presenterプロパティ438によって、グラフィカル要素をレイアウトし、レンダリングするのに使用されるプレゼンタ型が指定される。プレゼンタ型は、当初は、グラフィカル要素でセットされ、プレゼンタシステム200によって、presenterプロパティ438がグラフィカル要素から読み取られ、presenterプロパティ438によって識別されるプレゼンタ型に対応するプレゼンタオブジェクトがインスタンス化される。presenterプロパティ438は、インスタンシエータ(instantiator)に渡され、このインスタンシエータによって、識別されたプレゼンタ型のインスタンスが作成される。IsMainPresenterプロパティ440によって、プレゼンタが唯一のプレゼンタであるか、グラフィカル要素オブジェクトに関連するチェーニングが行われたプレゼンタの組の(たとえば最後の)主プレゼンタであるかが指定される。図3を参照すると、プレゼンタP4は、B4およびP4を含むチェーンの主プレゼンタである。本発明の一実施形態では、IsMainPresenterプロパティ440が、Boolean型のプロパティである。
element ownerプロパティ442によって、プレゼンタがインスタンス化される原因となったグラフィカル要素が識別される。図3を参照すると、プレゼンタ(Px)を対応するグラフィカル要素(Ex)に接続する破線によって、element ownerプロパティ442のコンテンツによって指定される関連が表されている。layout contextプロパティ444によって、レイアウト処理中のプレゼンタ間メッセージングを実現するグローバルコンテキストが指定される。layout contextプロパティ444に保管される値によって、プレゼンタは、プレゼンタシステム200と独立にメッセージを渡せるようになる。notification handlerプロパティ446によって、プレゼンタに関する通知ハンドラへの参照が指定される。notification handler typeプロパティ448によって、notification handlerプロパティ446によって参照される通知ハンドラの型が指定される。
dirtinessプロパティ450によって、特定のプレゼンタが変更され、したがって更新処理を必要とするかどうかが指定される。プレゼンタシステム200およびレイアウト管理アーキテクチャの関連するコンポーネントによって、レイアウトの増分処理がサポートされる。各プレゼンタによって保持されるdirtinessプロパティ450によって、プレゼンタごとに、プレゼンタが更新を必要とするかどうかが示される。
図4aを続けて参照すると、プレゼンタ基底クラスのフィールドの例示的な組が要約されている。本発明の一実施形態では、これらのフィールドは、(C++クラスの周知のメンバ変数に類似の)共通言語ランタイム(CLR)フィールドである。本発明の一実施形態では、上記で説明したこのプロパティは、フィールドに類似している。しかし、グラフィカル要素(たとえば、グラフィカル要素206)のプロパティは、バッキングストア(たとえば、バッキングストア208)によって所有され、管理される。プロパティが変更されると、バッキングストアによって、その変更がプレゼンテーションエンジンに通知される。プレゼンテーションエンジン(たとえば、プレゼンタシステム200のプレゼンテーションエンジン212)によって、適当な通知ハンドラ224に通知される。したがって、プロパティの場合、変更通知は前述の通知ハンドラの1つを介して受け取られる。その一方で、フィールドは、バッキングストア208によって管理されない(その代わり、たとえばCLRによって管理される)。したがって、フィールドが変更される時、プレゼンテーションエンジンに対して変更通知が行われない。
layout sizeフィールド460によって、プレゼンタの割り当てられたレイアウトスペースの寸法が保持される。layout sizeフィールド460は、隣接するプレゼンタをページ/ユーザインターフェースレイアウトに配置するのに使用される。affects layoutフィールド462は、変更された時にプレゼンタのレイアウトに影響するプレゼンタのプロパティ(たとえば、border、paddingなど)の集合である。affects parent layoutフィールド464は、要素(たとえば要素A)について変更される時に、指定されたプレゼンタを有する要素(要素A)の最初の親のレイアウトをダーティにする(すなわち、潜在的に影響する)プレゼンタのプロパティ(たとえば、margin、visibilityなど)の集合である。effects renderフィールド466は、プレゼンタの無効化および再レンダリングをトリガする通知機構である。
図4bにリストされたプレゼンタ基底クラス216のメソッドを参照すると、OnUpdateメソッド470によって、要素に関するプレゼンタの測定タスクおよび位置決めタスクが実行される。プレゼンタ作成者は、OnUpdateメソッド470の基底クラスバージョンを上書きして、要素の対応するビューのカスタマイズされたレイアウトサイズ変更/位置決め挙動を作成/提供する。
OnUpdateメソッド470の第1のデフォルトオペレーションは、プレゼンタのサイズ変更である。OnUpdateメソッド470によって、渡されるBoxSizeInfoパラメータでプレゼンタサイズ寸法が受け取られる。OnUpdateメソッド470によって、指定されたBoxSizeInfoならびdefault widthプロパティ428値およびdefault heightプロパティ426値に従って、layout sizeフィールド460で指定された寸法がセットされる。プレゼンタのサイズ変更/位置決め情報の追加のソースが、開示されたプレゼンタベースのレイアウト/プレゼンテーション処理アーキテクチャに組み込まれ、そのようなソースが本発明の代替の実施形態で使用される。
OnUpdateメソッド470の第2のデフォルトタスクは、プレゼンタのローカル寸法スペース内での子プレゼンタの位置決めである。OnUpdateメソッド470の基底クラスバージョンによって、childrenプロパティ412で識別される子プレゼンタのOnUpdateメソッド470が反復的に呼び出されて、その寸法および子が発見される。子プレゼンタを発見し、測定する時に、その子は、個々の子の変換メソッド(以下で説明する)を呼び出すことによって、親プレゼンタ内で位置決めされる。子プレゼンタのOnUpdateメソッド470への反復的な呼出しは、プレゼンタでそれ以上子が指定されなくなった時に終了する。layout sizeフィールド460にサイズを登録し、子プレゼンタを反復的に呼び出す/位置決めするほかに、OnUpdateメソッド470メソッドによって、OnUpdateメソッド470への呼出しを考慮して再レンダリングが望ましいかどうかを示す値が、呼出し側に返される。
register atomメソッド471によって、layout context444に関するプレゼンタのストリング名ならびにプレゼンタへの拡張によって保持されるものを含むプレゼンタの他の適当なリストが登録される。register atomメソッド471は、たとえば、標準的でない方法(たとえば、プレゼンタアプリケーションプログラムインターフェースによって現在サポートされていない方法)で別のプレゼンタオブジェクトと通信するために呼び出される。プレゼンタによって、アトムが登録され、その後、そのアトムを使用して通信することが望まれるオブジェクトが設定される。たとえば、子プレゼンタは、親プレゼンタにテキスト系統(descent)を通信することを望む。子プレゼンタは、「系統」というラベル/タグを付けられたアトムを登録し、そのアトムの識別を受け取る。子は、系統を計算して識別を使用してアトムに値を設定する。親プレゼンタは、(「系統」の登録によって受け取られる)識別法を使用して、保管された情報を検索する。
OnUpdateBoundingBoxメソッド472によって、プレゼンタの更新されたbounding boxプロパティ410が作られる。OnUpdateBoundingBoxメソッド472は、再レンダリングを必要とすることを示す値(たとえば「true」)がOnUpdateメソッド470によって返される場合に呼び出される。プレゼンタ基底クラスで提供されるOnUpdateBoundingBoxメソッド472のデフォルト実装では、プレゼンタのchildrenプロパティ412で識別される子プレゼンタをスキャンし、変換された子のBounding Boxプロパティを、layout sizeフィールド460に保管されたプレゼンタの寸法と組み合わせる(すなわち、長方形の数学的和集合を実行する)。OnUpdateBoundingBoxメソッド472の基底クラスの実装では、clipプロパティ414にもアクセスが行われ、それが「true」である場合、子の境界ボックスを無視する。その代わりに、子プレゼンタを親プレゼンタのlayout sizeフィールド460寸法までにクリッピングする。layout sizeフィールド460の外側で描画するプレゼンタでは、このメソッドを上書きする。そのようなカスタマイズされたプレゼンタクラスによって、基底プレゼンタクラスが呼び出され、上書きコードで追加の「インク領域」が追加される。本発明の一実施形態では、プレゼンタが、実際に必要なものより大きく「インク領域」を見積もることが許容される。bounding boxプロパティ410領域が、プレゼンタの描画に必要な領域より小さい場合には、その描画はプレゼンタについて指定されたbounding boxプロパティ410寸法に基づいてクリッピングされる。
OnRenderメソッド474は、再レンダリングを要求する/必要とするプレゼンタに関して呼び出される。OnRenderメソッド474は、プレゼンタおよびその子プレゼンタのすべてを再レンダリングするための、プレゼンタに対する主要な呼出しである。OnRenderメソッド474は、OnUpdateメソッド470がレイアウト(たとえば、シーン)内の「ダーティ」プレゼンタのすべてに対して呼び出された後に呼び出されることが好ましい。本発明の一実施形態では、OnRenderメソッド474は、プレゼンタオブジェクトに対するOnUpdateメソッド470呼出しによって、プレゼンタが再レンダリングされることが必要であるとの表示が返されるかどうかに基づいて、プレゼンタオブジェクトに対して呼び出される。本発明の一実施形態では、基底クラスのOnRenderメソッド474によって、プレゼンタに対するデバイス独立のプレゼンテーション/レイアウト配置オペレーションが実行される。グラフィックサブシステムおよびグラフィックデバイスドライバ234を含む他のコンポーネントによって、デバイスに固有フォーマットでプレゼンタのビューのレンダリングが行われる。OnRenderメソッド474のカスタマイズにより派生したものには、グラフィカルドキュメント/ユーザインターフェース出力をレンダリングするためのコンピュータシステムのグラフィックス生成コンポーネントへの呼出しが含まれる。
本発明の一実施形態で、OnRenderメソッド474の基底クラスバージョンによって、すべての子を含むプレゼンタのコンテンツが、3つのレイアウト処理ステージでレンダリングが行われる。OnRenderBeforeChildrenステージ中に、プレゼンタオブジェクトによって、そのすべての子プレゼンタの処理の前の処理について指定されたオペレーションが呼び出される。本発明の一実施形態では、OnRenderメソッド474の基底クラス実装によって、カスタマイゼーションのフックが提供され、OnRenderBeforeChildrenステージ中の前処理オペレーションは指定されない。しかし、このデフォルト挙動をカスタマイズした結果例示のように置換えられ、プレゼンタのディスプレイ領域のカスタム背景が確立/描画される。
OnRenderメソッド474の基底クラスバージョンによって、子レンダリングステージ中に、childrenプロパティ412で識別されるプレゼンタの子プレゼンタがアクセスされる。OnRenderメソッド474が、子プレゼンタのそれぞれに対して呼び出される(OnUpdateメソッド470が実行される時に子によって要求される範囲で)。したがって、OnRenderメソッド474へのトップレベル呼出しは、ツリーのボトムに達する(すなわち、プレゼンタが子を有しなくなる)まで、子プレゼンタおよびその子に順次段階的に行われる。トップレベル呼出しが完了すると、再レンダリングを要求したツリー内のすべての子プレゼンタが再レンダリングされている。
OnRenderAfterChildrenステージ中に、プレゼンタオブジェクトによって、childrenプロパティ412で識別された子プレゼンタに対するOnRenderメソッド474の呼出しの後で実行されるオペレーションが呼び出される。OnRenderメソッド474の基底クラスバージョンによって、カスタマイゼーションのフックが提供され、OnRenderAfterChildrenステージ中の後処理オペレーションは指定されない。しかし、カスタマイゼーションの例には、注釈、装飾などが含まれる。
プレゼンタによりその子以外に何も再レンダリングされない場合、OnRenderメソッド474の基底クラスバージョンを上書きする必要はない。しかし、プレゼンタ自体によって何かを描画する必要がある場合、OnRenderメソッド474の基底クラスを上書きして、プレゼンタに割り当てられたスペース内でグラフィカルデータをレンダリングする。置換コードには、たとえば、アプリケーション204ならびに/またはグラフィックサブシステムおよびグラフィックスデバイスドライバへの呼出しが含まれる。チェーニングが行われたプレゼンタは、特定のビューのプレゼンタのツリー内にある。子プレゼンタが再レンダリングを必要とする場合、そのOnRenderメソッドは、メインのプレゼンタのOnRenderに似た方法でプレゼンタシステムによって呼び出される。
この応用例の文脈でいうと、「ヒットテスト」とは、どのプレゼンタがグラフィカルユーザインターフェースグリッドスペースの特定のグリッドポイントの下にあるかを識別する処理を指している。たとえば、ヒットテストは、ユーザがマウスボタンの1つを選択する時、マウスポインタがどこにあるか(たとえば、どのプレゼンタの上にあるか)を突き止めるのに使用される。OnHitTestDetailメソッド476によって、プレゼンタのHitTestDetail構造体に保管されたデータが返される。カスタマイズされたプレゼンタクラスでは、OnHitTestDetailメソッド476の基底クラス実装を上書きして、ヒットされた要素およびプレゼンタ以外のデータをプレゼンタが返せるようにするためにHitTestDetail構造体に書き込み、これによって、たとえば、プレゼンタの実際にヒットされた部分(たとえば、テキストの文字位置)などのプレゼンタに関するより詳細な情報を提供する。
OnCreateViewResultメソッド478によって、ビュー結果オブジェクト内のプレゼンタの計算された状態を記述するパラメータが公開される。ユーザは、指定されたビューのコンテキスト内の要素に関してビュー結果オブジェクトを要求する。OnCreateViewResultメソッド478の基底クラスバージョンによって、ビュー結果オブジェクトを介して、プレゼンタの高さ、幅、および左上角位置が提供される。プレゼンタに含まれるテキストの行数など、プレゼンタの状態に関する追加/代替の情報が望まれる場合、OnCreateViewResultメソッド478の基底クラスバージョンをオーバーライドして、ビュー結果オブジェクトを介して所望の情報を提供する。
hit testメソッド480によって、指定されたプレゼンタをルートとするサブツリーに対するヒットテストが開始される。点の座標(プレゼンタのローカル座標での)が、hit testメソッド480に渡され、その座標に関してヒットテストが実行される。hit testメソッド480によって、指定された点およびプレゼンタに関するヒットテストの結果を含むヒットテストデータが返される。この結果には、その点でヒットしたすべてのビジュアルが含まれる。ビジュアルは、プレゼンタがそれからディスプレイイメージを派生させる基底オブジェクト(たとえば行)である。ビジュアルは、グラフィカルディスプレイ出力上に実際にイメージを描画する能力を有するグラフィカルオブジェクトである。プレゼンタのOnRender呼出しでは、複数の呼出しが、たとえばテキスト、イメージ、ビデオなどをレンダリングするために、ビジュアルのAPIに対して発行される。
OnGetBypassListメソッド482によって、識別されたプレゼンタについて前に計算された子プレゼンタのリストが供給される。子プレゼンタのリストによって、レイアウト計算中の子プレゼンタのバイパスが実現される(たとえば、リストに一致するものがある場合、新しい子レイアウトを前に計算された子レイアウトプレゼンタと比較し、前に計算されたプレゼンタを再利用する)。プレゼンタによって、childrenプロパティ412集合を参照することによりその子が発見される場合、そのプレゼンタは、このメソッドをオーバーライドする必要がない。しかし、プレゼンタによって、GetChildProxyForElementメソッド486(以下で説明する)が使用される場合、一般にOnGetBypassListメソッド482がオーバーライドされる。
本発明を実施するレイアウトシステムの応用例で、GetChildProxyForElementメソッド486が呼び出される場合、OnGetBypassListメソッド482は、OnUpdateメソッド470の前に呼び出され、プレゼンタオブジェクトによって、以前のレイアウト計算からキャッシングされた子プロキシオブジェクトを有する配列リスト(図5を参照して以下で説明する)が作成され移植される。プレゼンタオブジェクトが、再計算された子プロキシオブジェクトを保管するキャッシュを有しない場合、そのプレゼンタオブジェクトのすべての子プレゼンタが、そのプレゼンタのOnUpdateメソッド470のすべての呼出しで再計算される。
calculate boundsメソッド484によって、識別されたビジュアルをルートとするサブグラフの境界が計算され返される。
子プロキシオブジェクトは、上記で説明したように、特定のグラフィカル要素の、親プレゼンタと子プレゼンタとの間の仲介として働くラッパーオブジェクトである。特定のプレゼンタオブジェクトの子プレゼンタの子プロキシオブジェクトは、プレゼンタオブジェクトのchildrenプロパティ412内の集合として参照される。GetChildProxyForElementメソッド486は、指定された要素の子プロキシオブジェクトおよびプレゼンタオブジェクトを作成する親プレゼンタオブジェクトのメソッドである。このメソッドは、指定された要素がプレゼンタを有しない場合に「null」を返す。
OnBeforeBypassメソッド488は、プレゼンタシステム200が特定のプレゼンタを「バイパス」する(すなわち、プレゼンタのOnUpdateメソッド470の呼出しをスキップする)ことを望む時に呼び出される。そのようなバイパスは、たとえば、プレゼンタがダーティではなく、OnUpdateメソッド470呼出しの入力プレゼンタ寸法パラメータ(BoxSizeInfo)が、そのプレゼンタへの最後のOnUpdateメソッド470呼出しから変更されていない時に発生する。OnBeforeBypassメソッド488は、子プロキシオブジェクトのそれ自体のカスタム集合(GetChildProxyForElementメソッド486を使用する)を有するプレゼンタが、更新がレイアウトに対して実行される時(たとえば、レイアウトの小さい部分だけが変更によって影響される時)、その子の子プロキシオブジェクトを再利用できるようにするという性能強化機構である。
OnDisconnectChildrenメソッド490によって、指定されたプレゼンタのchildrenプロパティ412内で参照される子プレゼンタの組からすべての子プレゼンタオブジェクトが除去される。デフォルトのchildrenプロパティ412が、プレゼンタ基底クラス216から派生したプレゼンタクラスについてオーバーライドされる場合に、OnDisconnectChildrenメソッド490も、子プレゼンタの正しく破棄されることを保証するためにオーバーライドされる。
Min/Maxパスは、コンテンツに合わせて子のサイズを変更する時、区分するプレゼンタ(たとえば、DockPresenter)によって使用される特殊なサイズ変更パスである。子の最小幅および最大幅を知ることによって、親が、特定の幅寸法を共有する複数の子の間でスペースを聡明に分配できるようになる。MinMaxPass関数によって提供される最小値/最大値情報がないと、区分するプレゼンタは、コンテンツに合わせて聡明にサイズを変更するため複数のパスを必要とする。OnMinWidthメソッド492は、Min/Maxパスの後で呼び出される。OnMinWidthメソッド492によって、MaxWidth計算の副産物であるMinWidth値が収集される。OnMinWidthメソッド492の基底クラスバージョンによって、「アイドントケア」メッセージが発行され、これによって、ProposedSize=(0、無限大)および両方向で「NotFixed」を用いて計算パスが呼び出される。
presenterメソッド494は、プレゼンタインスタンスのコンストラクタメソッドである。presenterメソッド494は、パラメータを有しない。presenterメソッド494は、プレゼンタがプレゼンタシステム200によってインスタンス化される時に呼び出される。presenterメソッド494によって、プレセンタインスタンスがセットアップされて、プレゼンタの他のメソッド(たとえば、OnUpdate)を呼び出せるようになる。
QueueLayoutTaskメソッド496によって、プレゼンタオブジェクトに関して実行される指定されたレイアウトタスクが、プレゼンタシステム200によって実行されるレイアウトタスクのキューに追加される。指定されたレイアウトタスクが、キューの前面に達する時に、プレゼンタシステム200によって、そのプレゼンタの通知ハンドラのOnLayoutTaskメソッド602(以下で説明する)が呼び出される。
OnQueryValueメソッド498によって、プレゼンタについて指定された計算値に対応する値が返される。
プレゼンタ基底クラス216を説明したので、図5に移ると、図5には、子プロキシクラス222の例示的実施形態のプロパティおよびメソッドの要約が示されている。以前説明したように、本発明の一実施形態では、子プロキシオブジェクトが、親プレゼンタオブジェクトの子であるプレゼンタオブジェクトのラッパーであり、親によるアクセスを子プレゼンタオブジェクトのリソースに制限することを支援する。親プレゼンタオブジェクトと子プレゼンタオブジェクトの間のすべての通信(要求/応答)のルーティングが、子プレゼンタの子プロキシを介して行われる。子プロキシオブジェクトによって、子プレゼンタへの参照が保持され、親プレゼンタによる呼出し/要求のルーティングが子プレゼンタに対し行われる。
プレゼンタシステム200の一実施形態では、子プロキシクラス222にelement ownerプロパティ500が含まれ、このプロパティによって、子プロキシの参照されるプレゼンタが関連するグラフィカル要素206内の要素が指定される。
transformプロパティ502によって、子プレゼンタオブジェクト(およびそれに関連するビジュアル)が、親プレゼンタオブジェクト内で位置決めされる。変換は、ビジュアルオブジェクト基底クラスの標準的なグラフィックス3×3変換行列である。変換行列がセットアップされる時、プレゼンタのグラフィカル要素に関連するビジュアルオブジェクトによって、変換行列によって指定されるオフセットにその子が配置される。
bounding boxプロパティ504によって、子プレゼンタのレンダリング境界が指定される。したがって、子プレゼンタのレンダリング境界を子プレゼンタのレイアウトサイズと異なるものとすることができる。
dirtinessプロパティ506によって、子プロキシのプレゼンタのダーティネス状態が指定される。プレゼンタシステム200の一実施形態では、ダーティ状態が、clean、dirty bystander、またはdirtyのいずれかである。clean状態は、ビューの最後の更新以降に、子プレゼンタに対する変更がないことを示す。dirty状態は、ビューの最後の更新以降に、子プレゼンタに対する変更が行われたことを示す。dirty bystander状態は、子プレゼンタ自体の子の少なくとも1つがダーティであるが、子プレゼンタ自体はダーティでないことを示す。このような状態により、親プレゼンタは、更新オペレーションを最適化できるようになる。
QueryDefaultSizeInfoメソッド510によって、子プレゼンタの寸法が、子プレゼンタの親プレゼンタによって供給されるデフォルト値に初期化される。
Updateメソッド520によって、子プロキシに、子プレゼンタオブジェクトのOnUpdateメソッド470を呼び出すように要求する。親プレゼンタは、子プレゼンタのレイアウトの計算を要求する時に、子プロキシのUpdateメソッド520を呼び出す。Updateメソッド520呼出しには、2つの渡されるパラメータが含まれる。ボックスサイズ情報によって、子がその中でのレイアウトを計算しなければならないボックスの寸法が指定され、ページ割り振りがアクティブ化されている場合、親プレゼンタは、ページ記述子パラメータ(以下で説明する図10を参照されたい)でページ情報を渡す。したがって、Updateメソッド520によって、呼出し側と子プレゼンタオブジェクトの間の、子プレゼンタオブジェクトへの要求のスクリーニング/フィルタリングを可能にするレイヤがもたらされる。Updateメソッド520によって、通常は子プレゼンタのOnUpdateメソッドにルーティングが行われる呼出しをバイパスする方法が提供される。たとえば、子プレゼンタが変更されておらず、入力パラメータ(ボックスサイズ情報およびページ記述)が変更されない時に、Updateメソッド520呼出しを呼び出すことができる。
親プレゼンタによって子プロキシに発行されるattachメソッド530によって、子プロキシに関連する子プレゼンタのOnRenderコマンドが呼び出される。
query valueメソッド540によって、メソッド呼出しで識別される計算された値型(プロパティ)に対応するプレゼンタ値が提供される。query valueメソッド540呼出しは、子プレゼンタオブジェクトの対応するOnQueryValueメソッド498に委譲される。
query layout sizeメソッド550によって、計算されたlayout sizeパラメータが提供される。query layout sizeメソッド550呼出しは、子プレゼンタオブジェクトの対応するOnQueryValueメソッド496に委譲される。compute MinMaxメソッド560によって、子プレゼンタの最小幅および最大幅が提供される。
図6を参照すると、プレゼンタシステム200に関連する基底クラスの組に、通知ハンドラ基底クラスが含まれる。上記で説明したように、通知ハンドラオブジェクトによって、特定のビューに関連するプレゼンタに潜在的に影響する変更に関するすべての通知が受け取られ、ダーティネス情報が蓄積され、関連するプレゼンタオブジェクトが更新を必要とするかどうかの判定が行われる。通知ハンドラ基底クラスの両方のメソッドが、パラメータとして、通知ハンドラに関連するグラフィカル要素(たとえばグラフィカル要素206)の要素からの関連情報を提供するメソッドを含むオブジェクトを受け取る。
通知ハンドラ基底クラスには、特定の関連するプレゼンタオブジェクトのダーティネスの通知を提供するOnNotifyメソッド600が含まれる。OnNotifyメソッド600には、通知の受け取りに応答して実行される追加のカスタマイズされた派生通知タスク(dirtinessプロパティ値を提供するデフォルトアクションをオーバーライドすることによる)が潜在的に含まれる。OnNotifyメソッド600は、入力パラメータとして、通知をもたらす変更に関する情報を受け取る。OnNotifyメソッドは、通知ハンドラがそれ自体で変更を処理できるか否か(または、ビューのプレゼンタツリー内の上位プレゼンタの通知ハンドラに通知する必要があるかどうか)を示すブール値を返す。このメソッドは、プレゼンタが「clean」、「dirty」、または「dirty bystander」のどれであるかを示すダーティネス値も返す。
OnLayOutTaskメソッド602によって、QueueLayoutTask496を介して関連するプレゼンタによって以前キューに入れられたすべてのタスクが実行される。
図7を参照すると、プレゼンタシステム200に関連する基底クラスの組に、さらに、通知ハンドラサイトクラスが含まれる。通知ハンドラサイトクラスは、通知ハンドラオブジェクトに渡されるサイトオブジェクトであり、この通知ハンドラオブジェクトによりプレゼンタシステム200によってサポートされる通知サービスの呼び出しが可能となる。
通知ハンドラサイトクラスには、通知ハンドラサイトオブジェクトに関連するグラフィカル要素オブジェクトを指定するelement ownerプロパティ700が含まれる。
register atomメソッド702によって、通知ハンドラのlayout context444内で提供されるストリング名が登録される。register atomメソッド702の機能性は、プレゼンタ基底クラスに関して上記で説明したregister atomメソッド471に類似する。したがって、register atomメソッド702は、通知ハンドラによる要求を他のオブジェクト(たとえば、プレゼンタオブジェクト)に通信する手段となる。
create notificationメソッド704によって、新しいプレゼンタ通知オブジェクトが作成され、渡されたパラメータに基づいてその諸フィールドが初期化される。渡されるパラメータには、アトム型の識別(プレゼンタ通知オブジェクト型を示す)および通知データが含まれる。
notify descendentsメソッド706によって、通知ハンドラサイトに関連するプレゼンタの下位オブジェクトに関連する通知ハンドラのOnNotifyメソッド600が呼び出されて、指定されたプレゼンタ通知が渡される。notify descendentsメソッド706によって、親プレゼンタに対するすべての変更(たとえば、サイズ変更)に関する下位プレゼンタへの通知の機能が実行される。同様に、notify ancestorsメソッド708によって、通知ハンドラサイトに関連するプレゼンタの上位オブジェクトに関連する通知ハンドラのOnNotifyメソッド600が呼び出されて、指定されたプレゼンタ通知が渡される。上位オブジェクトは、バッキングストア208内のグラフィカル要素ツリー(図3を参照されたい)を横切ること(traversing)によって判定される。バッキングストア内で表されるグラフィカル要素に、グラフィカル要素の親(直接の上位オブジェクト)を指定するプロパティが含まれる。notify allメソッド710によって、ビューによって所有されるプレゼンタツリー内のすべてのプレゼンタの通知ハンドラオブジェクトのOnNotifyメソッド600が呼び出されて、指定された通知が渡される。最後に、notify selfメソッド712によって、プレゼンタがそれ自体をダーティとしてマークするためにOnNotifyメソッド600を呼び出す手段が提供される。
図8に移ると、例示的なビューオブジェクトクラスが示されているが、ビュー202はこれからインスタンス化される。ビューオブジェクトは、プレゼンタシステムのインスタンス(たとえば、プレゼンタシステム200)を所有し、作成されるプレゼンタシステムインスタンス内で作成されるすべてのビジュアルのビジュアルルートである。ビューオブジェクトによって、ビュー内のプレゼンタに対するすべての計算が初期設定される。viewメソッド800は、新しいビューオブジェクトの作成に使用されるコンストラクタメソッドである。ビューは、渡されるパラメータとして、ビューのルートグラフィカル要素である要素への参照を受け取る。RootElementプロパティ802によって、ビューのルートグラフィカル要素(上記で述べたviewメソッド800を介して確立される)への参照が返される。
DoLayoutメソッド804によって、ビューの新しいプレゼンタツリーが作成され、新しいツリーへの参照が返される。DoLayoutメソッド804は、入力パラメータとして、ビュー長方形の提案される高さおよび幅、および提案された寸法をDoLayoutメソッド804実行中に変更できるかどうかを確立する2つのブール値(fixedwidthおよびfixedheight)を受け取る。
ViewSizeプロパティ806によって、ビューの寸法がセットされる。ViewSizeプロパティ806は、書き込み専用プロパティであるが、ビューオブジェクトがウィンドウ内でホスティングが行われる時に使用され、ViewSizeプロパティ806によって、レイアウトオペレーションがそこから実行される初期のサイズが示される。
GetViewResultメソッド808は、入力としてグラフィカル要素参照を受け取り、GetViewResultメソッド808は、グラフィカル要素の結果のビューを返す。nullの値は、グラフィカル要素が、ビューのグラフィカル要素の組の中で見つからない場合に返される。
HitTestメソッド810によって、ビューの座標系内での渡された点のヒットテストが実行される。HitTestメソッド810は、最初の非透明ヒットテストターゲットを返す。グラフィカル要素にヒットしない場合、このメソッドは「false」を返す。
CreatePageメソッド812は、入力としてパラメータBoxSizeInfo(以下で説明する図9を参照されたい)およびPageDescriptor(以下で説明する図10を参照されたい)を受け取る。CreatePageメソッド812は、入力パラメータに基づいて新しいページを作成し、そのページのルートグラフィカル要素に対応する子プロキシオブジェクトを返す。
図9に移ると、例示的なBoxSizeInfo構造体が示されている。BoxSizeInfo構造体によって、ビュー内のプレゼンタおよびその子プレゼンタの寸法の組ならびに受け取る側がこれらの寸法をどのように使うかが指定される。proposed sizeプロパティ900によって、ビュー内の子プレゼンタの提案されるサイズが示される。当初、proposed sizeプロパティ900の値が、バッキングストア内の子グラフィカル要素のプロパティから与えられる。この値は、子に渡す前に、親プレゼンタによって修正することができる。parent sizeプロパティ902は、親プレゼンタの推奨されるサイズである。parent sizeプロパティ902は、たとえば、親の値のパーセント値から子プレゼンタの寸法を計算するのに使用される。BoxSizeInfo構造体には、2つのブール値プロパティ、FixedWidth904およびFixedHeight906も含まれ、これによって、受取り側のプレゼンタに、供給される寸法が負荷された(固定された)値であるか否か、または寸法値が単に推奨された高さまたは幅であるかどうかが指示される。
図10に移ると、例示的なpage descriptor構造体が示されている。page descriptorには、PageSizeプロパティ1000が含まれる。PageSizeプロパティ1000は、ページのサイズを指定する読取専用のプロパティである。これは、page descriptor構造体が作成される時に初期化される。break recordプロパティ1002は、次のページにある現在のプレゼンタの最初の文字(ページ割り振りされつつあるビューのルートであるグラフィカル要素に関する)を識別する文字開始位置(character position start)、前のページを無効化することができる文字数(number of characters)(character position startから後ろに数える)、およびブレークレコード(ページ割り振りされるグラフィカル要素内の特定の文字範囲を含む)が、バッキングストアに対する変更によって無効化されるかどうかを示すIsDirty ブール値を含む構造体である。
page descriptor構造体には、AvailableSizeプロパティ1004も含まれる。プレゼンタのOnUpdateメソッドを開始する時、ページ全体がプレゼンタから使用可能ではない場合がある。AvailableSizeプロパティ1004によって、プレゼンタに関するページの残りのスペースが示される。AvailableSizeプロパティ1004は、ページサイズの値に初期化される。
図11に移ると、ビュー202(図2を参照されたい)によって作成されるプレゼンタシステム200のプレゼンテーションエンジン212によって実行されるメソッドの組が識別されている。プレゼンテーションエンジン212のconstructorメソッド1100によって、(グラフィカル要素206ツリーによって提供される)ビューのルートグラフィカル要素への参照を含むビュー202がアクセスされる。DoLayoutメソッド1102は、渡されるパラメータとしてビュー202の寸法を表すwidthおよびheightを受け取り、これに応答して、グラフィカル要素206のコンテンツに関するレイアウト処理の実行を開始する。UpdateLayoutメソッド1104は、DoLayoutを実行した後に少なくとも1回実行されるが、これによって、ビュー202の以前に計算されたレイアウトに対する増分的変更の適用が開始される。CreatePageメソッド1106は、入力パラメータとして、レイアウトされるページの寸法を含むボックスサイズ情報(BoxSizeInfo)と、特定のページを開始する方法に関する情報を含むpage descriptorを受け取る。ビュー202のグラフィカル要素206のルートの下のすべてのコンテンツをレイアウトするのではなく、CreatePageメソッド1106では、関心のある1つのページだけがレイアウトされる。
例示的なレイアウト処理アーキテクチャを図1から11を参照して説明した。例示的なアーキテクチャには、要素データ状態(グラフィカル要素オブジェクト)にリンクされた別々のビュー状態(プレゼンタオブジェクト)が含まれる。例示的なアーキテクチャにはプレゼンタシステム200が含まれ、これにより新しいレイアウト/プレゼンテーション機能性を実施する新しいプレゼンタオブジェクトクラスがそこから派生されるプレゼンタ基底クラス216を介してビューレイアウト/プレゼンテーション機能性の拡張が実現される。本明細書で開示されるシステムおよびアーキテクチャには、要素をそれに対応するプレゼンタオブジェクトにリンクして、変更に応答しビューの再計算部分を選択的に呼び出す通知機構も含まれる。この例のオブジェクト基底クラスは、本発明を実施する拡張可能なアーキテクチャを実行する多数の潜在的な代替の形を示すものであって、本発明の範囲を制限するものとみなしてはならない。
本発明を実施する例示的なプレゼンテーション/レイアウト処理アーキテクチャを構成するコンポーネントの組を説明したので、図12に移ると、図12には、グラフィカルに表示される要素に対する変更の処理の全般的な流れが示されている。まず、1200で、バッキングストア208を変更する。たとえば、アプリケーション204によって、そのアプリケーションのグラフィカルユーザインターフェースの表示されるコンポーネントの1つまたは複数の状況および/またはコンテンツの変更をもたらすオペレーションが実行される。それに応答して、ステップ1202で、バッキングストア内のグラフィカル要素の変更から生じる変更通知が、プレゼンタシステム200のプレゼンテーションエンジン212によって受け取られる。
背景として、ステップ1204を参照すると、プレゼンタシステム200によって、要素とプレゼンタとの間の関連が、要素−プレゼンタ情報(EPI)内で保持される。プレゼンタが、グラフィカル要素について作成される時、必ずそのプレゼンタへの参照が要素側で作成され、プレゼンタシステムにより保持されるEPIに保管される。グラフィカル要素が、複数のプレゼンタを有する場合、グラフィカル要素のEPI内に複数(プレゼンタごとに1つ)の参照がある。グラフィカル要素のプロパティが変更される時、下記のステップが行われる。
(a)バッキングストア208によって、グラフィカル要素に関する変更が通知される。
(b)バッキングストア208によって、プロパティの1つに対する変更を経験したグラフィカル要素への参照と共に、変更がプレゼンテーションエンジン212に通知される。
(c)プレゼンテーションエンジン212によって、変更されたグラフィカル要素のEPIが調査(walk)され、そのグラフィカル要素のために作成されたプレゼンタが判定される。
(d)プレゼンタが判定されると、プレゼンテーションエンジン212によって、プレゼンタの対応する通知ハンドラへの参照が(プレゼンタのnotification handlerプロパティ446を介して)入手される。
したがって、上記を考慮して、ステップ1204で、プレゼンタシステム200のプレゼンテーションエンジン212によって、変更通知が適用されるプレゼンタの同一性が判定される。上記で説明したように、プレゼンタシステムによって、EPI内の要素についてインスタンス化されたプレゼンタのリストが保持される。変更通知が適用されるプレゼンタを判定した後に(この例では、要素に関して単一のプレゼンタだけが存在すると仮定する)、プレゼンタシステムのプレゼンテーションエンジン212によって、識別されたプレゼンタのnotification handlerプロパティ446を介して、プレゼンタの通知ハンドラへの参照が入手される。
その後、ステップ1206中に、プレゼンタシステム200のプレゼンテーションエンジン212によって、ステップ1204で入手した参照を使用し、通知ハンドラに変更通知が転送される。本発明の一実施形態では、ステップ1206は、特定の通知ハンドラオブジェクトのOnNotifyメソッド600を呼び出すことによって実行される。
プレゼンタシステムから変更通知を受け取った後に、ステップ1208中に(たとえば、OnNotifyメソッド600の実行中に)、通知ハンドラによって、バッキングストア208内のグラフィカル要素に対するステップ1200中の変更に応答してプレゼンタによって要求されたアクションがある場合、そのアクションが判定される。本発明の一実施形態では、通知ハンドラによって、受け取られた変更通知を考慮して、対応するプレゼンタのどの部分が(存在する場合に)更新を必要とするかが判定される。そのような部分には、たとえば、プレゼンタの子およびプレゼンタ自体が含まれる。
その後、ステップ1210中に、通知ハンドラ(たとえば、OnNotifyメソッド600)によって、結果が返され、この結果によって、対応するプレゼンタが、ステップ1202中に、プレゼンタシステム200によって受け取られた変更通知を考慮してアクションを判定し、実行できるようになる。本発明の一実施形態では、返される結果の形が、通知ハンドラ/プレゼンタ固有である。いくつかの場合に、返される結果によって、プレゼンタが単に「ダーティ」としてラベルを付けられ、これによって、対応するプレゼンタの完全な再計算が呼び出される。他の場合に、プレゼンタのビュー再計算機能の一部だけを選択的に呼び出す情報が提供される。
本発明の一実施形態では、プレゼンタシステム200のプレゼンテーションエンジン212によって、ステップ1210中にプレゼンタに通知ハンドラから返された結果が受け取られる。その後、ステップ1212で、バッキングストアに対する変更があったが、プレゼンタの再計算が必要ではなかった場合、制御は判断ブロック1216に進む。しかし、ステップ1212で、返された結果から、プレゼンタが再計算が必要であると示される場合、制御はステップ1214に移り、ここで、プレゼンタシステム200によって、再計算を必要とする「ダーティ」プレゼンタの組にプレゼンタが追加される。本発明の例示的な実施形態では、プレゼンタシステムによって、対応するプレゼンタのdirtinessプロパティ450が設定され(再計算が必要なプレゼンタであることを示す)、再計算が必要なプレゼンタの組にプレゼンタが追加される。プレゼンタによって、dirtinessプロパティ450の設定に至った変更の範囲を記述する情報も指定される。その後、制御はステップ1216に移る。
ステップ1216で、現在問題の通知ハンドラに関連するプレゼンタについて親プレゼンタが存在しない場合、制御は終了1218に移る。親プレゼンタが実際に存在する場合、制御はステップ1216からステップ1220に移り、ステップ1280に戻る破線によって示されるように、親プレゼンタの通知ハンドラに関する(に渡される)通知が作成される(親の通知ハンドラによる通知の処理をもたらす)。
したがって、図12に示されたステップの組によって、プレゼンタシステム200が、ドキュメント/ユーザインターフェースのレイアウトが最後に計算されてから後の、バッキングストア208への変更の結果として「ダーティ」にされたプレゼンタのリストを蓄積できるようになる。
図13に移ると、フローチャートによって、特定のビューのプレゼンタに対する変更に従うドキュメント/ユーザインターフェースの再計算/再レンダリングの例示的な処理が示される(上記で説明した図12を参照されたい)。本発明の一実施形態では、アプリケーション204によって、ビュー202に対する更新が制御され、期間の満了、ドキュメント印刷要求、またはグラフィカルユーザインターフェースの状況の変更などのイベントに応答して、図13に要約されたものなどのビュー更新手順が呼び出される。
まず、ステップ1300中に、プレゼンタシステム200、具体的にはプレゼンテーションエンジン212によって、DoLayoutメソッド1102(上記でプレゼンテーションエンジン212API記述に関して説明した)への呼出しが受け取られる。アプリケーション204によるDoLayoutメソッド1102呼出しの受け取りに応答して、プレゼンタシステム200により、ビュー202に含まれるプレゼンタオブジェクトが再計算されて、最後のDoLayoutメソッド1102呼出し以降のバッキングストア208内の要素に対する変更に対応する。
ビューのプレゼンタが階層的に配置される(図3を参照されたい)本発明の一実施形態では、プレゼンタシステム200によって、当初、ステップ1302で、ビューのルートプレゼンタが判定される。本発明の一実施形態では、ルートプレゼンタが、ビュー(たとえばビュー202a)、したがってプレゼンタシステム(たとえばプレゼンタシステム200a)に委ねられるルート要素に関するpresenterプロパティによって識別される。ルートプレゼンタを判定した後に、制御はステップ1304に移り、プレゼンタシステム200によって、ビューのプレゼンタのツリーが横切られ、各ダーティプレゼンタが再計算される。
ステップ1304中に、プレゼンタシステム200によって、ビュー内の各ダーティプレゼンタのOnUpdateメソッド470が呼び出される。呼び出されるOnUpdateメソッド470は、プレゼンタがその中でレイアウトを再計算する長方形の高さおよび幅を渡される。レイアウトを再計算した後に、プレゼンタは、その結果をキャッシングする。したがって、ステップ1304の完了時に、前にダーティであったプレゼンタが、再計算され、その結果を後続の再レンダリング中に容易にアクセスするためキャッシングされる。ダーティビットが、呼び出されたプレゼンタのそれぞれでクリアされる。例示的なOnUpdateメソッド470呼出し中に実行されるステップの組を、以下で図14を参照して詳細に説明する。
ステップ1304中にダーティプレゼンタをクリーンにする複数の方法がある。しかし、本発明の一実施形態では、プレゼンタシステム200、具体的にはプレゼンテーションエンジン212のUpdateLayoutメソッド1104によって、ステップ1304を完了する際の役割を単純にするために、ビュー内のプレゼンタの間の階層関係が活用される。具体的に言うと、OnUpdateメソッド470の実行中に、呼び出されるプレゼンタのそれぞれによって、呼び出されるプレゼンタのすべての子のOnUpdateメソッド470が反復して呼び出される(または、その代わりに、呼び出すようにプレゼンタシステム200に要求する)。したがって、プレゼンタシステム200によって、ルートプレゼンタ(たとえば図3のプレゼンタP1)のOnUpdateメソッド470でプレゼンタツリーを横切ることが開始され、OnUpdateメソッド470の呼出しがダーティプレゼンタの再計算のために階層プレゼンタツリーの枝をトラバースする際の、子プレゼンタへの後続の呼出しがサポートされる。子プレゼンタのOnUpdateメソッド470への反復的呼出しによって、ビュー内のすべてのプレゼンタが横切られ、プレゼンタがダーティである場合に再計算されることが保証される。
完了時に、ステップ1304中に呼び出される各OnUpdateメソッド470によって、dirtinessプロパティ450がリセットされ、再計算されたまたは「クリーンにされた」ことが示される。各OnUpdateメソッド470によって、プレゼンタが再レンダリング(すなわち再描画)を必要とするかどうかを示す値も、呼出し側に返される。本発明の一実施形態では、返される値はブール値である。「true」の場合、再レンダリングが必要である。「false」が返される場合には、再レンダリングは不要である。ステップ1304中のビューのダーティプレゼンタのそれぞれの処理の後に、制御はレンダリングステップ1306に移り、再レンダリングが必要なプレゼンタのリストで識別されるプレゼンタが処理される。
ステップ1306中に、プレゼンタシステム200によって、再レンダリングが必要なプレゼンタのリストで識別される各プレゼンタのOnRenderメソッド474が呼び出される。OnRenderメソッド474の例示的な実施形態のオペレーションを図14を参照して説明する。OnRenderメソッド474の基底クラスの実装では、プレゼンタは何も描画せず、その代わりに、その子および/またはチェーニングが行われたプレゼンタのOnRenderメソッド474を反復して呼び出し、割り当てられたスペース(たとえば長方形)を塗り潰す。OnRenderメソッド474のカスタマイズされたバージョンでは、アプリケーション204および/またはグラフィックサブシステムおよびグラフィックデバイスドライバ234のAPIへの呼出しによってビットマップをレンダリングする。ステップ1306中に再レンダリングを要求したすべてのプレゼンタの処理の後に、制御は終了1308に移り、特定のビューのプレゼンテーションエンジンのDoLayoutメソッド1102の呼出し側に戻る。
図14に移ると、ビューのプレゼンタを再計算するために実行されるOnUpdateメソッド470のステップがフローチャートに要約されている。OnUpdateメソッド470によって、すべての子プレゼンタを含むプレゼンタの新しいレイアウトが計算され、再レンダリングステージ中のアクセスのために結果がキャッシングされる。以下で示す例では、各プレゼンタへのOnUpdateメソッド470呼出しによって、制限を指定する寸法の組が、プレゼンタのレイアウトによって占めることができるビュースペース(たとえば、長方形に)渡される。寸法の組によって、たとえば、高さおよび幅ならびにこれらの値をOnUpdateメソッド470呼出しの実行中に修正できるかどうかが指定される。しかし、本発明では、ビュースペース寸法を含むレイアウトに影響するさまざまな渡されるパラメータのいずれか1つまたは複数に基づくプレゼンタの再計算が企図されている。
ステップ1400中に、プレゼンタによって、更新を実行するために子プレゼンタを呼び出す(子プロキシオブジェクトを介して)前に、渡されたパラメータから生じるすべての必要なサイズ変更オペレーションが実行される。そのような作業の内容は、特定のプレゼンタ型の設計に依存する。その後、プレゼンタによって、プレゼンタシステム200を呼び出して、現在のプレゼンタのすべての子プレゼンタを突き止め、更新する。前処理ステージ中に、プレゼンタによって、潜在的に、新しいページ/列を作成する必要があるか否かが検出され、ビューの新しいページ/列を処理する新しい子プロキシ/プレゼンタが作成される。
次に、ステップ1402中に、現在の親プレゼンタのOnUpdateメソッド470によって、レイアウトを更新するために次に呼び出される子プレゼンタが判定される。このステップは、少なくとも最初のインスタンスで、親プレゼンタが子要素の存在を判定し、対応する子プロキシ/プレゼンタを作成することが必要であることに留意されたい。後の反復では、親プレゼンタが、childrenフィールド412で識別されるキャッシングされた子プロキシを使用して、次の残りの(未処理の)子プロキシ/プレゼンタ、すなわち現在の親プレゼンタのOnUpdateメソッドの現在の反復中にまだ呼び出されていない子プレゼンタを識別することができる。
親プレゼンタによって、バッキングストアからの応答が受け取られるか、childrenプロパティ412から、処理すべき子プレゼンタが残っているかどうかが親プレゼンタ自体によって判定され、ステップ1404で、更新すべき未処理の子が残っていない場合、制御はステップ1420(以下で説明する)に移る。これと異なり、プレゼンタが、まだ更新されていないchildrenプロパティ412内に未処理の子プレゼンタを有する場合、制御はステップ1406に移る。
ステップ1406で、プレゼンタによって、親プレゼンタと現在問題の子プレゼンタとの間にはさまれた返された子プロキシのUpdateメソッド520が呼び出されて、子プロキシが関連する子プレゼンタの高さおよび幅が入手される。この子プレゼンタは、特定のグラフィカル要素(そのelement ownerフィールド442で指定される)に関連する。
ステップ1410で、子プロキシによって、その子プロキシが関連する子プレゼンタのOnUpdateメソッド470が呼び出される。OnUpdateメソッド470によって、子プレゼンタの更新された高さおよび幅(したがって再レンダリングが必要であるかどうか)が計算される。ステップ1410中に、呼び出される子プレゼンタが、ステップ1402で子を有しないと判定し、その呼出し元の親プレゼンタに(その子プロキシを介して)返されるまで、OnUpdateメソッド470が子プレゼンタによって再帰的に呼び出されることに留意されたい。子プレゼンタのOnUpdateメソッド470を呼び出した後に、制御はステップ1414に移る。
したがって、ステップ1414で、呼出し側の親プレゼンタ(ステップ1406から)によって、識別された子プロキシへのUpdateメソッド520呼出しに対する応答が受け取られる。応答には、返されるパラメータとして、子プレゼンタの高さおよび幅が含まれる。応答には、呼び出された子プレゼンタが再レンダリングを必要とするかどうかも含まれる。次に、ステップ1416で、親プレゼンタによって、配置アルゴリズム/ポリシに基づいて、親プレゼンタの割り当てられたレイアウトスペース内で、呼び出された子プレゼンタが位置決めされる。本発明の一実施形態では、ステップ1416中に、親プレゼンタによって、ステップ1414中にプレゼンタにより受け取られた子プレゼンタのheightパラメータおよびwidthパラメータに基づきレイアウト内で子プレゼンタが位置決めされる。
制御は、ステップ1402に戻り、親プレゼンタのOnUpdateメソッド470が継続されて、残りの子プレゼンタが更新される(子プロキシラッパーオブジェクトを介して)。
ステップ1404で、処理/更新すべき子(要素またはプロキシ/プレゼンタ)が残っていない場合、制御はステップ1420に移る。ステップ1420では、呼び出されたプレゼンタのOnUpdateメソッド470によって、プレゼンタのレイアウトを調整するための子プレゼンタのOnUpdateメソッド470への潜在的なさらなる呼出しを含むカスタマイズされたレイアウト機能が実行される。
ステップ1422で、または潜在的に、新しい情報がOnUpdateメソッド470によって導出されるすべての点で、レイアウト処理の結果が、グラフィカルビュー処理の再レンダリングステージ中の後の使用のためにキャッシングされる。
更新処理が、呼び出されるプレゼンタのすべての子を含むプレゼンタについて完了した後に、ステップ1424で、プレゼンタによって、その呼出し側(プレゼンタシステム200)に、寸法およびプレゼンタが再レンダリングを必要とするかどうかを示す値が返される。
当業者は、新しい例示的なプラットフォームおよび例示的な方法が、グラフィカルユーザインターフェースディスプレイまたはプリンタなどのグラフィカル出力デバイスを含むコンピューティング環境内でのグラフィカルドキュメント/ユーザインターフェース出力のレイアウト/プレゼンテーション処理の管理に関して説明されたことを理解するであろう。本発明を適用できる多数の可能な環境およびソフトウェアユーティリティの設計および実行の柔軟性に鑑みて、本明細書に記載の実施形態が、例示であることを意図され、本発明の範囲を制限するものと解釈してはならないことを認識されたい。本発明が適用される技術の技量を有する者は、本発明の趣旨から逸脱せずに、示された実施形態を配置および詳細において修正できることを諒解するであろう。したがって、本明細書に記載の発明では、そのような実施形態のすべてが、請求項およびその等価の範囲に含まれるものとして企図されている。
本発明の実施形態を実行する例示的なコンピュータシステムを示すブロック図である。 本発明のコンピュータシステム実施形態でグラフィカルレイアウト保持を実行するプレゼンタシステムを含むレイアウト管理アーキテクチャの主要なコンポーネントを示す高水準概略図である。 本発明を実施するシステムでグラフィカルドキュメント/ユーザインターフェースを定義するグラフィカル要素とプレゼンタの間の関係を示す概略図である。 本発明を使用するシステムでの、カスタマイズされたプレゼンタオブジェクトクラスが特定のレイアウト/レンダリングタスクを実行するためにそこから派生されるプレゼンタ基底クラスの構造を要約した図である。 本発明を使用するシステムでの、カスタマイズされたプレゼンタオブジェクトクラスが特定のレイアウト/レンダリングタスクを実行するためにそこから派生されるプレゼンタ基底クラスの構造を要約した図である。 子プロキシクラスの構造を要約した図である。 通知ハンドラクラスインターフェースの構造を要約した図である。 通知ハンドラサイトクラスの構造を要約した図である。 ビュークラスの構造を要約した図である。 BoxSizeInfo構造体の諸部分を要約した図である。 page discriptor構造体の諸部分を要約した図である。 プレゼンテーションエンジンクラスの構造を要約した図である。 グラフィカル要素に対する変更の通知ハンドラベースの処理の例示的なステップを要約したフローチャートである。 本発明の実施形態による、プレゼンタの組を含むビューの再計算およびレンダリングの例示的なステップを要約したフローチャートである。 関係するグラフィカル要素に対する変更に応答する、プレゼンタ(および関連する影響される子)に対する更新を実行するステップを例示的に示すフローチャートである。

Claims (50)

  1. コンピューティングシステムで実行されるプログラムにより出力されるグラフィカル表示を配置および保持するグラフィカル出力レイアウト管理システムであって、
    プログラムの表示可能なコンテンツを表すデータを含むグラフィカル要素の表示状態を定義するプレゼンタであって、該プレゼンタの特定の型のプレゼンタは、対応するグラフィカル要素のレイアウト記述を保持するプレゼンタと、
    ビューに含まれるグラフィカル要素に関連するプレゼンタの組に従って前記ビューのレイアウトを準備するメソッドを有するプレゼンタホストインターフェースを含むプレゼンタシステムと
    前記グラフィカル要素を保持し、潜在的な複数のビューに関連付けられるバッキングストアと
    を備え
    前記プレゼンタシステムは、更新が要求され、前記バッキングストアに保持されたグラフィカル要素に関する変更通知を受信すると、前記プレゼンタのオブジェクトのいずれの部分がダーティであるかを判定することを特徴とするグラフィカル出力レイアウト管理システム。
  2. 前記プレゼンタシステムは、プレゼンタ基底クラスをさらに含み、前記プレゼンタの組は、前記プレゼンタ基底クラスから派生されるプレゼンタクラスからインスタンス化されることを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  3. 前記プレゼンタは、前記プレゼンタのレイアウトプロパティを計算する更新メソッドを含むことを特徴とする請求項2に記載のグラフィカル出力レイアウト管理システム。
  4. 前記プレゼンタは、前記コンピュータシステムのグラフィカル出力サブシステムに発行される命令を生成するレンダメソッドを含むことを特徴とする請求項3に記載のグラフィカル出力レイアウト管理システム。
  5. 前記プレゼンタクラスは、事前定義のプレゼンタクラスおよび外部プレゼンタクラスを含むことを特徴とする請求項2に記載のグラフィカル出力レイアウト管理システム。
  6. 前記プレゼンタの各々は、前記プレゼンタ上で指定されるレイアウトパラメータ値に基づいて対応するグラフィカル要素のレイアウト状態を計算することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  7. 通知ハンドラの組であって、各通知ハンドラは、前記ビュー内のプレゼンタの組の特定の1つに関連する通知ハンドラの組をさらに備え、前記通知ハンドラは、グラフィカル要素に対する変更を処理して対応するプレゼンタを更新するか否かを判定することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  8. 前記プレゼンタの各々は、関連するグラフィカル要素に関する前記特定のプレゼンタに変更通知を提供する通知ハンドラの型を指定することを特徴とする請求項7に記載のグラフィカル出力レイアウト管理システム。
  9. 前記プレゼンタシステムは、対応するグラフィカル要素に対する変更に基づき更新を必要とするプレゼンタを前記通知ハンドラを介して登録することを特徴とする請求項7に記載のグラフィカル出力レイアウト管理システム。
  10. 前記グラフィカル要素のグラフィカル要素インスタンスは、複数のプレゼンタに関連付けられることを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  11. 前記グラフィカル要素インスタンスが関連付けられる前記複数のプレゼンタは、同一の型を有することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  12. 前記複数のプレゼンタは、同一ビュー内の別個の列に対応することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  13. 前記複数のプレゼンタは、単一のグラフィカル要素のドキュメントビュー内の別個のページに対応することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  14. 前記グラフィカル要素インスタンスが関連付けられる前記複数のプレゼンタの第1プレゼンタおよび第2プレゼンタは、第1および第2の別個のビューにそれぞれ関連付けられることを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  15. 前記第1および第2の別個のビューは、第1および第2のプレゼンタシステムによってそれぞれホスティングが行われることを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  16. 前記ビューは、グラフィカルディスプレイスペース内の長方形領域に対応することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  17. 前記グラフィカル要素インスタンスが関連付けられる前記複数のプレゼンタは、異なる型を有することを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  18. 前記複数のプレゼンタの1つは、主プレゼンタに対する装飾プレゼンタを含むことを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  19. ビュー内のプレゼンタは、階層的に配置されて、子プレゼンタが対応する親プレゼンタによって指定される領域内に含まれるようにすることを特徴とする請求項1に記載のグラフィカル出力レイアウト管理システム。
  20. グラフィカル要素の表示状態を定義するプレゼンタを介して、プログラムの表示可能なコンテンツを表すデータを含むグラフィカル要素を提供する前記プログラムに代わって、レイアウトを処理するグラフィカル出力レイアウト管理システム内に組み込まれるプレゼンタシステムであって、前記プレゼンタ対応するグラフィカル要素のレイアウト記述を保持し、前記プレゼンタシステムビュー内のグラフィカル要素に関連付けられる前記プレゼンタのホスティングおよび配置を行い、
    前記プレゼンタをインスタンス化するプレゼンタクラスを派生するプレゼンタ基底クラスと
    前記ビュー内のグラフィカル要素に関連付けられるプレゼンタの組において実行されるレイアウトを準備するメソッドを、少なくとも1つ含むメソッドの組を含むプレゼンタホストインターフェースと
    を備え
    更新が要求され、および前記グラフィカル要素を保持し、潜在的な複数のビューに関連付けられるバッキングストアに保持されたグラフィカル要素に関する変更通知を受信すると、前記プレゼンタのオブジェクトのいずれの部分がダーティであるかを判定することを特徴とするプレゼンタシステム。
  21. 前記プレゼンタ基底クラスは、プレゼンタのレイアウトプロパティを計算する派生されたプレゼンタクラスによってオーバーライドされるカスタマイズ可能な更新メソッドを指定することを特徴とする請求項2に記載のプレゼンタシステム。
  22. 前記プレゼンタ基底クラスは、前記コンピュータシステムのグラフィカル出力サブシステムに発行される命令を生成する派生されたプレゼンタクラスによってオーバーライドされるカスタマイズ可能なレンダメソッドを指定することを特徴とする請求項2に記載のプレゼンタシステム。
  23. 前記プレゼンタシステムは、事前定義のプレゼンタクラスおよび外部プレゼンタクラスを含むプレゼンタクラスの組をサポートすることを特徴とする請求項2に記載のプレゼンタシステム。
  24. 前記プレゼンタ基底クラスは、関連するプレゼンタ上で指定されるレイアウトパラメータ値に基づいてグラフィカル要素のレイアウト状態を計算するメソッドを指定することを特徴とする請求項2に記載のプレゼンタシステム。
  25. 通知ハンドラクラスを派生する通知ハンドラ基底クラスをさらに備え、各通知ハンドラはビュー内の特定のプレゼンタに関連付けられる通知ハンドラクラスからインスタンス化され、前記通知ハンドラはグラフィカル要素に対する変更を処理して、対応するプレゼンタを更新するか否かを判定することを特徴とする請求項2に記載のプレゼンタシステム。
  26. 前記基底プレゼンタクラスは、関連付けられるグラフィカル要素に関する前記特定のプレゼンタに変更通知を提供する通知ハンドラの型を指定するプレゼンタのプレースホルダを含むことを特徴とする請求項2に記載のプレゼンタシステム。
  27. 前記プレゼンタシステムは、対応するグラフィカル要素に対する変更に基づいて更新の必要なプレゼンタを通知ハンドラを介して登録することを特徴とする請求項2に記載のプレゼンタシステム。
  28. 前記プレゼンタシステムは、ルートグラフィカル要素により特徴付けられるビュー、および前記ルートグラフィカル要素とその子グラフィカル要素とが内部に表示される割り当てられた領域に関連付けられることを特徴とする請求項2に記載のプレゼンタシステム。
  29. 前記ビューは、グラフィカル表示スペース内の長方形領域に対応することを特徴とする請求項2に記載のプレゼンタシステム。
  30. 前記プレゼンタホストインターフェースは、グラフィカル要素の組を含むビューのディスプレイをレイアウトするために前記プレゼンタシステムを初期化するコンストラクタを含むことを特徴とする請求項2に記載のプレゼンタシステム。
  31. 前記ビューは、少なくとも部分的に、前記コンストラクタに渡されるルートグラフィカル要素によって指定されることを特徴とする請求項3に記載のプレゼンタシステム。
  32. 前記プレゼンタシステムは、複数のプレゼンタのチェーニングをサポートして、第1プレゼンタがグラフィカル要素に関連付けられる第2プレゼンタの装飾を提供するようにすることを特徴とする請求項2に記載のプレゼンタシステム。
  33. 前記プレゼンタ基底クラスは、子プレゼンタを指定するプレースホルダであって、ビュー内のプレゼンタの階層ツリー構造の作成をサポートして、子プレゼンタが対応する親プレゼンタによって指定される領域内に含まれるようにするプレースホルダを含むことを特徴とする請求項2に記載のプレゼンタシステム。
  34. グラフィカル要素の表示状態を定義するプレゼンタを介して、プログラムの表示可能なコンテンツを表すデータを含むグラフィカル要素を提供する前記プログラムに代わってレイアウトを処理する方法であって、前記プレゼンタは対応するグラフィカル要素のレイアウト記述を保持し、プレゼンタシステムはビュー内のグラフィカル要素に関連付けられる前記プレゼンタのホスティングおよび配置を行い、
    プレゼンタ基底クラス、およびビュー内のグラフィカル要素に関連付けられるプレゼンタの組で実行されるレイアウトを作成するメソッドを有するプレゼンタホストインターフェースを含む前記プレゼンタシステムを提供するステップと、
    前記プレゼンタホストインターフェースによって、ビュー内のグラフィカル要素の組のレイアウトを生成するために要求を受け取るステップと、
    前記グラフィカル要素の組について、前記プレゼンタ基底クラスから派生されたプレゼンタクラスの組から対応するプレゼンタをインスタンス化し、各インスタンス化されたプレゼンタのメソッドを呼び出して前記プレゼンタに対応するグラフィカル要素のレイアウト状態を計算するステップと
    更新が要求され、および前記グラフィカル要素を保持し、潜在的な複数のビューに関連付けられるバッキングストアに保持されたグラフィカル要素に関する変更通知を受信すると、前記プレゼンタのオブジェクトのいずれの部分がダーティであるかを判定するステップと
    を備えたことを特徴とする方法。
  35. 対応するグラフィカル要素に対する変更に基づいてレイアウトに対する増分的更新を実行する通知ハンドラの組のインターフェースを指定する通知ハンドラ基底クラスを提供するステップ
    をさらに備えたことを特徴とする請求項3に記載の方法。
  36. 階層ツリーの形でビューの前記プレゼンタを編成するステップをさらに含むことを特徴とする請求項3に記載の方法。
  37. 前記プレゼンタシステムのインスタンスは、ビューのレイアウトを作成する呼び出しに応答して作成され、ビューごとに、別個のプレゼンタシステムおよび対応するプレゼンタが作成されることを特徴とする請求項3に記載の方法。
  38. 前記プレゼンタ基底クラスは、特定のグラフィカル要素に関連するプレゼンタインスタンスのレイアウトプロパティを計算する更新メソッドを指定することを特徴とする請求項3に記載の方法。
  39. 前記プレゼンタ基底クラスは、グラフィカル出力サブシステムに発行される命令を生成するレンダメソッドを指定することを特徴とする請求項3に記載の方法。
  40. 前記プレゼンタシステムは、事前定義のプレゼンタクラスおよび外部プレゼンタクラスの派生をサポートすることを特徴とする請求項3に記載の方法。
  41. 前記プレゼンタクラスは、グラフィカル要素コンテンツの異なるタイプをレイアウトする異なる型のプレゼンタに対応することを特徴とする請求項3に記載の方法。
  42. 前記ビュー内のプレゼンタは、階層的に配置されて、子プレゼンタが対応する親プレゼンタによって指定される領域内に含まれるようにすることを特徴とする請求項3に記載の方法。
  43. グラフィカル要素の表示状態を定義するプレゼンタであって、対応するグラフィカル要素のレイアウト記述を保持し、プレゼンタシステムは、ビュー内のグラフィカル要素に関連する前記プレゼンタのホスティングおよび配置を行うプレゼンタを介して、プログラムの表示可能なコンテンツを表すデータを含む前記グラフィカル要素を提供する前記プログラムに代わって、レイアウトの処理を実行するコンピュータ実行可能命令を含むコンピュータ読取可能な媒体であって、前記コンピュータ実行可能命令は、
    プレゼンタ基底クラスと、ビュー内のグラフィカル要素に関連付けられるプレゼンタの組で実行されるレイアウトを作成するメソッドを含むプレゼンタホストインターフェースとを含む前記プレゼンタシステムを提供するステップと、
    前記プレゼンタホストインターフェースによって、ビュー内のグラフィカル要素の組のレイアウトを生成する要求を受け取るステップと、
    前記グラフィカル要素の組について、前記プレゼンタ基底クラスから派生されたプレゼンタクラスの組から対応するプレゼンタをインスタンス化し、各インスタンス化されたプレゼンタのメソッドを呼び出して前記プレゼンタに対応するグラフィカル要素のレイアウト状態を計算するステップと
    更新が要求され、および前記グラフィカル要素を保持し、潜在的な複数のビューに関連付けられるバッキングストアに保持されたグラフィカル要素に関する変更通知を受信すると、前記プレゼンタのオブジェクトのいずれの部分がダーティであるかを判定するステップと
    を備えた方法の実行を促進することを特徴とするコンピュータ読取可能な媒体。
  44. 階層ツリーの形で前記ビューのプレゼンタを編成するコンピュータ実行可能命令をさらに備えたことを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  45. 前記コンピュータ実行可能命令は、ビューのレイアウトを作成する呼出しに応答して前記プレゼンタシステムのインスタンスを作成し、ビューごとに別個のプレゼンタシステムおよび対応するプレゼンタを作成するステップを実行することを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  46. 前記プレゼンタ基底クラスは、特定のグラフィカル要素に関連付けられるプレゼンタインスタンスのレイアウトプロパティを計算する更新メソッドを指定することを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  47. 前記プレゼンタ基底クラスは、グラフィカル出力サブシステムに発行される命令を生成するレンダメソッドを指定することを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  48. 前記プレゼンタシステムは、事前定義のプレゼンタクラスおよび外部プレゼンタクラスの派生をサポートすることを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  49. 前記プレゼンタクラスは、異なる種類のグラフィカル要素コンテンツをレイアウトする異なる型のプレゼンタに対応することを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
  50. 前記プレゼンタ基底クラスは、子プレゼンタのプレースホルダを指定して子プレゼンタが対応する親プレゼンタによって指定される領域内に含まれるようにし、ビュー内のプレゼンタの階層的レイアウトを実現することを特徴とする請求項4に記載のコンピュータ読取可能な媒体。
JP2004566468A 2003-05-09 2003-05-15 グラフィカルレイアウト/プレゼンテーションオブジェクトのホスティングを行うシステム Expired - Lifetime JP4277002B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/434,850 US20040225960A1 (en) 2003-05-09 2003-05-09 System for hosting graphical layout/presentation objects
PCT/US2003/015379 WO2004107308A1 (en) 2003-05-09 2003-05-15 System for hosting graphical layout/presentation objects

Publications (2)

Publication Number Publication Date
JP2006526179A JP2006526179A (ja) 2006-11-16
JP4277002B2 true JP4277002B2 (ja) 2009-06-10

Family

ID=33416813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004566468A Expired - Lifetime JP4277002B2 (ja) 2003-05-09 2003-05-15 グラフィカルレイアウト/プレゼンテーションオブジェクトのホスティングを行うシステム

Country Status (14)

Country Link
US (1) US20040225960A1 (ja)
EP (1) EP1627376A4 (ja)
JP (1) JP4277002B2 (ja)
KR (1) KR100969720B1 (ja)
CN (1) CN100442265C (ja)
AU (1) AU2003237867B8 (ja)
BR (1) BR0306159A (ja)
CA (1) CA2462172A1 (ja)
IL (1) IL161285A (ja)
MX (1) MXPA04004405A (ja)
NO (1) NO20041880L (ja)
RU (1) RU2305860C2 (ja)
WO (1) WO2004107308A1 (ja)
ZA (1) ZA200403495B (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4411922B2 (ja) * 2003-10-06 2010-02-10 セイコーエプソン株式会社 構造化文書表示処理装置、構造化文書表示処理方法、構造化文書表示処理プログラム
JP4413629B2 (ja) * 2004-01-09 2010-02-10 パイオニア株式会社 情報表示方法、情報表示装置および情報配信表示システム
US7359902B2 (en) 2004-04-30 2008-04-15 Microsoft Corporation Method and apparatus for maintaining relationships between parts in a package
US8661332B2 (en) 2004-04-30 2014-02-25 Microsoft Corporation Method and apparatus for document processing
US7383500B2 (en) 2004-04-30 2008-06-03 Microsoft Corporation Methods and systems for building packages that contain pre-paginated documents
US7519899B2 (en) * 2004-05-03 2009-04-14 Microsoft Corporation Planar mapping of graphical elements
US7755786B2 (en) 2004-05-03 2010-07-13 Microsoft Corporation Systems and methods for support of various processing capabilities
US8363232B2 (en) 2004-05-03 2013-01-29 Microsoft Corporation Strategies for simultaneous peripheral operations on-line using hierarchically structured job information
US8243317B2 (en) 2004-05-03 2012-08-14 Microsoft Corporation Hierarchical arrangement for spooling job data
US7580948B2 (en) 2004-05-03 2009-08-25 Microsoft Corporation Spooling strategies using structured job information
US7565619B2 (en) * 2004-08-26 2009-07-21 Microsoft Corporation System and method for automatic item relocating in a user interface layout
US20070006095A1 (en) * 2005-07-01 2007-01-04 Liangkui Feng Auto layout of user interface elements in a window
CN100395751C (zh) * 2005-10-14 2008-06-18 华为技术有限公司 实现页面灵活布局的装置和方法
US20070113189A1 (en) * 2005-11-15 2007-05-17 Microsoft Corporation Specifying per theme styles for custom graphical elements
US7941749B2 (en) * 2007-05-15 2011-05-10 Microsoft Corporation Composition of electronic document layout
US20080295019A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Document with Sidebars
US8095865B2 (en) * 2007-11-21 2012-01-10 Microsoft Corporation Layout manager
US8010886B2 (en) * 2008-01-04 2011-08-30 Microsoft Corporation Intelligently representing files in a view
US8004541B2 (en) * 2008-01-28 2011-08-23 Hewlett-Packard Development Company, L.P. Structured display system with system defined transitions
US20090193067A1 (en) * 2008-01-30 2009-07-30 Microsoft Corporation Server-based recalculation of vector graphics
US20100073160A1 (en) * 2008-09-25 2010-03-25 Microsoft Corporation Alerting users using a multiple state status icon
KR101711863B1 (ko) 2008-11-26 2017-03-13 캘거리 싸이언티픽 인코포레이티드 애플리케이션 프로그램의 상태에 대한 원격 액세스를 제공하기 위한 방법 및 시스템
US8091016B2 (en) * 2008-12-18 2012-01-03 Microsoft Corporation Visually manipulating instance collections
US8230357B2 (en) * 2008-12-18 2012-07-24 Microsoft Corporation Visually processing instance data
SG173483A1 (en) * 2009-02-03 2011-09-29 Calgary Scient Inc Method and system for enabling interaction with a plurality of applications using a single user interface
US10055105B2 (en) 2009-02-03 2018-08-21 Calgary Scientific Inc. Method and system for enabling interaction with a plurality of applications using a single user interface
US8402379B2 (en) * 2009-09-30 2013-03-19 SAP Portals Israel Limited Dynamic content layout for a user interface display
KR101452713B1 (ko) 2009-10-30 2014-10-21 삼성전자주식회사 픽처 경계의 부호화 단위를 부호화, 복호화 하는 방법 및 장치
US20110271184A1 (en) * 2010-04-28 2011-11-03 Microsoft Corporation Client application and web page integration
US9741084B2 (en) 2011-01-04 2017-08-22 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
CA2734860A1 (en) 2011-03-21 2012-09-21 Calgary Scientific Inc. Method and system for providing a state model of an application program
WO2013024342A1 (en) 2011-08-15 2013-02-21 Calgary Scientific Inc. Method for flow control and for reliable communication in a collaborative environment
KR20140080483A (ko) 2011-08-15 2014-06-30 캘거리 싸이언티픽 인코포레이티드 애플리케이션 프로그램에 대한 비-침투적 원격 액세스
EP2761808A4 (en) 2011-09-30 2015-05-20 Calgary Scient Inc DECOUPLED APPLICATION WITH EXTENSIONS INTERACTIVE DIGITAL SURFACE LAYER FOR COLLABORATIVE REMOTE COMMON USE OF APPLICATIONS AND ANNOTATION
AU2012342170B2 (en) 2011-11-23 2017-03-09 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US8959431B2 (en) * 2012-01-16 2015-02-17 Microsoft Corporation Low resolution placeholder content for document navigation
US9602581B2 (en) 2012-03-02 2017-03-21 Calgary Scientific Inc. Remote control of an application using dynamic-linked library (DLL) injection
US9293008B2 (en) * 2012-03-16 2016-03-22 Bally Gaming, Inc. Layout elements as rendering placeholders for native wagering game applications
US9729673B2 (en) 2012-06-21 2017-08-08 Calgary Scientific Inc. Method and system for providing synchronized views of multiple applications for display on a remote computing device
US20140026039A1 (en) * 2012-07-19 2014-01-23 Jostens, Inc. Foundational tool for template creation
US20140258003A1 (en) * 2013-03-07 2014-09-11 Microsoft Corporation Online advertising with integrated interfaces
US20150113507A1 (en) * 2013-10-18 2015-04-23 Distech Controls Inc. Method for automatic grouping of interlinked graphical configuration elements and computer program product
CA2931762C (en) 2013-11-29 2020-09-22 Calgary Scientific Inc. Method for providing a connection of a client to an unmanaged service in a client-server remote access system
CN107431630B (zh) 2015-01-30 2021-06-25 卡尔加里科学公司 高度可扩展、容错的远程访问架构和与之连接的方法
US10015264B2 (en) 2015-01-30 2018-07-03 Calgary Scientific Inc. Generalized proxy architecture to provide remote access to an application framework
US10445391B2 (en) 2015-03-27 2019-10-15 Jostens, Inc. Yearbook publishing system
CN107239268A (zh) 2016-03-29 2017-10-10 阿里巴巴集团控股有限公司 一种业务处理方法、装置和智能终端
DE102017000569A1 (de) * 2017-01-23 2018-07-26 e.solutions GmbH Verfahren, Computerprogrammprodukt und Vorrichtung zum Ermitteln von Eingabebereichen an einer grafischen Benutzeroberfläche
US11327471B2 (en) * 2017-10-26 2022-05-10 Siemens Aktiengesellschaft Building and tracking of an automation engineering environment
CN108388462B (zh) * 2018-02-28 2021-04-27 武汉斗鱼网络科技有限公司 元素变更通知方法、装置及终端设备
CN112463272B (zh) * 2020-11-13 2024-06-18 广州市百果园网络科技有限公司 一种界面布局加载显示方法、系统、电子设备及存储介质
CN112764729B (zh) * 2021-01-08 2024-02-06 深圳依时货拉拉科技有限公司 应用软件开发方法、装置、计算机设备及可读存储介质
CN114090172B (zh) * 2021-11-10 2024-06-18 北京字节跳动网络技术有限公司 跨系统的小部件复用方法及装置
US20230169138A1 (en) * 2021-12-01 2023-06-01 Salesforce.Com, Inc. Rendering primitive child elements corresponding to child components of a user interface without instantiating the child components

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259446B1 (en) 1992-12-23 2001-07-10 Object Technology Licensing Corporation Menu state system
US6243102B1 (en) * 1994-05-16 2001-06-05 Apple Computer, Inc. Data-driven layout engine
US5838317A (en) * 1995-06-30 1998-11-17 Microsoft Corporation Method and apparatus for arranging displayed graphical representations on a computer interface
US5873106A (en) * 1995-09-18 1999-02-16 Oracle Corporation Geometry management for displaying objects on a computer
US5815415A (en) * 1996-01-19 1998-09-29 Bentley Systems, Incorporated Computer system for portable persistent modeling
US6141007A (en) 1997-04-04 2000-10-31 Avid Technology, Inc. Newsroom user interface including multiple panel workspaces
US6038573A (en) 1997-04-04 2000-03-14 Avid Technology, Inc. News story markup language and system and process for editing and processing documents
US6496202B1 (en) 1997-06-30 2002-12-17 Sun Microsystems, Inc. Method and apparatus for generating a graphical user interface
US5886694A (en) * 1997-07-14 1999-03-23 Microsoft Corporation Method for automatically laying out controls in a dialog window
US6769124B1 (en) * 1998-07-22 2004-07-27 Cisco Technology, Inc. Persistent storage of information objects
CA2256931A1 (en) * 1998-12-23 2000-06-23 Robert Weisz Source editing in a graphical hierarchical environment
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6721950B1 (en) * 2000-04-06 2004-04-13 Microsoft Corporation Input redirection
US7051276B1 (en) * 2000-09-27 2006-05-23 Microsoft Corporation View templates for HTML source documents
AUPR464601A0 (en) * 2001-04-30 2001-05-24 Commonwealth Of Australia, The Shapes vector
US20040006765A1 (en) * 2002-04-16 2004-01-08 Goldman Kenneth J. Live software construction with dynamic classes
US7299409B2 (en) * 2003-03-07 2007-11-20 International Business Machines Corporation Dynamically updating rendered content

Also Published As

Publication number Publication date
CN1615507A (zh) 2005-05-11
BR0306159A (pt) 2005-02-09
RU2004114219A (ru) 2005-09-20
US20040225960A1 (en) 2004-11-11
EP1627376A4 (en) 2010-05-12
AU2003237867B8 (en) 2009-10-15
KR100969720B1 (ko) 2010-07-12
CA2462172A1 (en) 2004-11-09
CN100442265C (zh) 2008-12-10
KR20060006989A (ko) 2006-01-23
AU2003237867A1 (en) 2005-01-21
AU2003237867B2 (en) 2009-09-17
NO20041880D0 (no) 2004-05-07
RU2305860C2 (ru) 2007-09-10
EP1627376A1 (en) 2006-02-22
JP2006526179A (ja) 2006-11-16
WO2004107308A1 (en) 2004-12-09
IL161285A (en) 2009-02-11
ZA200403495B (en) 2006-05-31
MXPA04004405A (es) 2005-02-17
NO20041880L (no) 2004-06-28

Similar Documents

Publication Publication Date Title
JP4277002B2 (ja) グラフィカルレイアウト/プレゼンテーションオブジェクトのホスティングを行うシステム
US6795089B2 (en) Dynamic, live surface and model elements for visualization and modeling
AU2005202722B2 (en) Common charting using shapes
KR100996738B1 (ko) 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델
JP3544666B2 (ja) オブジェクト指向ディスプレイ・システム
US8890890B2 (en) Pluggable web-based visualizations for applications
JP4166376B2 (ja) ディジタル・ビデオ信号処理装置及び方法
KR20040086043A (ko) 비주얼 및 장면 그래프 인터페이스
KR20000012137A (ko) 디지털 이미지 처리 장치
US20050289450A1 (en) User interface virtualization
KR20120022831A (ko) 플랫폼 확장성 프레임워크
US20030177286A1 (en) Data processing
US7409642B2 (en) Method and system for applying user interface elements to data
US6791552B2 (en) Digital video processing
US6556205B1 (en) Animation of video special effects
US20080082924A1 (en) System for controlling objects in a recursive browser system
US11789747B2 (en) Simulated visual hierarchy while facilitating cross-extension communication
US6801225B1 (en) Data storage in ole systems
NZ532169A (en) System for hosting graphical layout/presentation objects on behalf of applications
Bray MapGuide open source

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090206

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090309

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120313

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120313

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130313

Year of fee payment: 4