JP2005135384A - コンピュータプラットフォームのためのプログラミングインターフェース - Google Patents

コンピュータプラットフォームのためのプログラミングインターフェース Download PDF

Info

Publication number
JP2005135384A
JP2005135384A JP2004264628A JP2004264628A JP2005135384A JP 2005135384 A JP2005135384 A JP 2005135384A JP 2004264628 A JP2004264628 A JP 2004264628A JP 2004264628 A JP2004264628 A JP 2004264628A JP 2005135384 A JP2005135384 A JP 2005135384A
Authority
JP
Japan
Prior art keywords
class
group
data
functions
graphical
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.)
Pending
Application number
JP2004264628A
Other languages
English (en)
Inventor
Jeffrey L Bogdan
エル.ボグダン ジェフリー
Robert A Relyea
エー.レリア ロバート
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 JP2005135384A publication Critical patent/JP2005135384A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Digital Computer Display Output (AREA)

Abstract

【課題】.NET(商標)Frameworkの効率および/または性能を高める方法を可能にするAPI関数の独自のセットを提供し、開発者が、オペレーティングシステム、オブジェクトモデルサービス、あるいは他のシステムまたはサービスからサービスを得られるようにする。
【解決手段】グラフィカルコンポーネントの再生に関連するサービスの第1群と、クラスのプロパティをデータソースにバインディングすることに関連するサービスの第2群と、コンテンツのフォーマットに関連するサービスの第3群とをプログラミングインターフェースに備える。
【選択図】 図2

Description

本発明は、ソフトウェアおよびそのようなソフトウェアの開発に関する。より詳細には、アプリケーションプログラムおよびコンピュータハードウェアによる、ソフトウェアプラットフォームの使用を容易にするプログラミングインターフェースに関する。
非常に早くから、コンピュータソフトウェアは、「オペレーティングシステム」ソフトウェアまたは「アプリケーション」ソフトウェアとして分類されるようになった。おおまかにいって、アプリケーションは、数学の方程式を解くか、またはワードプロセッシングをサポートするなど、コンピュータユーザのために特定のタスクを実行することを意図されたソフトウェアである。オペレーティングシステムは、コンピュータハードウェアを管理し、制御するソフトウェアである。オペレーティングシステムの目標は、コンピュータリソースをアプリケーションプログラマが使用可能にすると同時に、ハードウェアを実際に制御するのに必要な複雑さを隠蔽することである。
オペレーティングシステムは、アプリケーションプログラムインターフェースまたはAPIとして周知の機能または関数を介してリソースを使用可能にする。用語APIは、これらの機能のうちの単一の関数を指すのにも使用される。関数は、多くの場合、アプリケーションプログラマに提供するリソースまたはサービスに関してグループ化される。アプリケーションソフトウェアは、個々のAPI関数を呼び出すことによってリソースを要求する。API関数は、オペレーティングシステムによって提供されるメッセージおよび情報をアプリケーションソフトウェアに中継する手段としても働く。
米国特許出願第09/598,105号明細書 米国特許出願第09/613,289号明細書 [online]、ECMA、〈URL:www.ecma.ch〉
ハードウェアの変更のほかに、オペレーティングシステムソフトウェアの進化を駆り立てるもう1つの要因が、アプリケーションソフトウェア開発を単純化し、加速する要望である。アプリケーションソフトウェア開発は、困難な作業になる場合があり、時折、数百万行のコードによって高度化されたプログラムを作成するために数年の開発者の時間を必要とする。Microsoft Windows(登録商標)オペレーティングシステムのさまざまなバージョンなどの広く使用されているオペレーティングシステムに関して、アプリケーションソフトウェア開発者は、そのオペレーティングシステムを利用する数千本の異なるアプリケーションを毎年記述している。そのように多くの異なるアプリケーション開発者をサポートするために、一貫性のある(coherent)、利便性の高いオペレーティングシステムベースが必要である。
多くの場合、オペレーティングシステムをより複雑にすることによって、アプリケーションソフトウェアの開発を単純にすることができる。すなわち、ある機能が、複数の異なるアプリケーションプログラムに有用であり得る場合に、その機能をオペレーティングシステムに含めるために一度記述することが、数十人のソフトウェア開発者が数十本の異なるアプリケーションに含めるために数十回記述することを要求するよりよい場合がある。このように、オペレーティングシステムが、複数のアプリケーションによって要求される広範囲の共通の機能性をサポートする場合、アプリケーションソフトウェア開発のコストおよび時間においてかなりの節約を達成することができる。
オペレーティングシステムとアプリケーションソフトウェアの間のどこに線が引かれるかに関係なく、有用なオペレーティングシステムについて、オペレーティングシステムおよびコンピュータハードウェアとアプリケーションソフトウェアとの間のAPIは、オペレーティングシステム自体の効率的な内部動作と同様に重要であることは明白である。
過去数年間に、インターネットおよびネットワーク技術全般の万国での採用によって、コンピュータソフトウェア開発者の情景が変化した。従来、ソフトウェア開発者は、独立型デスクトップコンピュータまたはローカルエリアネットワーク(LAN)を介して、限られた数の他のコンピュータに接続されたLANベースコンピュータの単一サイトソフトウェアアプリケーションに焦点を合わせていた。ソフトウェアが、シュリンクラップパッケージでマーケティングされ、販売されたので、そのようなソフトウェアアプリケーションを、通常は、「シュリンクラップ」製品と称する。これらのアプリケーションは、明確に定義されたAPIを使用して、コンピュータの基礎になるオペレーティングシステムにアクセスした。
インターネットが進化し、広く受け入れられたので、産業界は、ワールドワイドウェブ(または単に「ウェブ」)のさまざまなサイトでのアプリケーションのホスティングの威力を理解し始めた。ネットワーク化された世界では、あらゆる場所のクライアントが、個別の位置でホスティングされるサーバベースのアプリケーションに要求をサブミットし、数分の1秒で応答を受信することができる。しかし、これらのウェブアプリケーションは、通常は、元々は独立型コンピューティングマシンまたはローカルにネットワーク化されたコンピュータのために開発されたものと同一のオペレーティングシステムプラットフォームを使用して開発された。残念ながら、いくつかの場合に、これらのアプリケーションは、分散コンピューティング管理様式に適切に移行されていない。基礎になるプラットフォームは、単純に、無制限の数の相互接続されたコンピュータをサポートするという観念を用いて構成されていなかった。
インターネットによって導入された分散コンピューティング環境へのシフトに対処するために、Microsoft Corporationは、「.NET」Framework(「ドットネット」と読む)またはMicrosoft(登録商標).NETと称するネットワークソフトウェアプラットフォームを開発した。Microsoft(登録商標).NETは、人、情報、システム、および装置を接続するソフトウェアである。このプラットフォームを用いると、開発者が、インターネットを介して実行されるウェブサービス(Web service)を作成できるようになる。この動的なシフトは、Microsoftの.NET(商標)FrameworkのAPI関数のセットによって達成された。
.NET(商標)Frameworkの使用がますます一般的になるにつれて、このプラットフォームの効率および/または性能を高める方法が特定された。本発明人は、そのような高められた効率および/または性能を可能にするAPI関数の独自のセットを開発した。
プログラミングインターフェースが、アプリケーション、文書、媒体プレゼンテーション、および他の内容を生成する機能を提供する。これらの機能は、開発者が、オペレーティングシステム、オブジェクトモデルサービス、あるいは他のシステムまたはサービスからサービスを得られるようにする。一実施形態では、これらの機能は、開発者が、グラフィカルユーザインターフェースを生成できるようにする。
同一の符号は、複数の図面を通じて同一の特徴を指すのに使用される。
この開示は、開発者がウェブアプリケーションおよびウェブサービスを構築できるネットワークプラットフォームのためのアプリケーションプログラムインターフェース(API)を扱う。より詳細には、Microsoft Corporationによって作成された.NET(商標)Frameworkなどのネットワークプラットフォームを利用するオペレーティングシステムの例示的APIを説明する。.NET(商標)Frameworkは、分散コンピューティング環境で実施されるウェブサービスおよびウェブアプリケーションのソフトウェアプラットフォームである。.NET(商標)Frameworkは、特定のタスクを実行するために協力している疎結合ウェブサービスの間の通信にオープン通信標準規格を使用する、次世代のインターネットコンピューティングを表す。
説明する実施形態では、ネットワークプラットフォームは、XML(extensible markup language)すなわちデータを記述するオープン標準規格を使用する。XMLは、World Wide Web Consortium(W3C)によって管理される。XMLは、ウェブページおよび企業間文書のデータ要素を定義するのに使用される。XMLでは、HTMLに類似するタグ構造が使用されるが、HTMLは、要素をどのように表示するかを定義し、XMLは、それらの要素に何が含まれるかを定義する。HTMLでは、事前に定義されたタグを使用するが、XMLでは、ページの開発者がタグを定義することができる。したがって、事実上任意のデータアイテムを識別することができ、ウェブページが、データベースレコードのように機能することができる。XMLおよびSOAP(Simple Object Access Protocol)などの他のオープンプロトコルの使用を介して、ネットワークプラットフォームが、ユーザの必要に合わせて調整できる広範囲のサービスの統合を可能にする。本明細書に記載の実施形態を、XMLおよび他のオープン標準規格とともに説明するが、これは、請求される発明の動作に必須ではない。
本明細書で使用される句、フレーズアプリケーションプログラムインターフェースまたはAPIには、メソッド呼出しまたは関数呼出しを使用する従来のインターフェースならびに、リモート呼出し(たとえばプロキシ、スタブ関係)およびSOAP/XML呼出しが含まれる。
(例示的ネットワーク環境)
図1に、.NET(商標)Frameworkなどのネットワークプラットフォームを実装できるネットワーク環境100を示す。ネットワーク環境100には、ネットワーク104(たとえばインターネット)上でアクセスできるサービスを提供する、代表的なウェブサーバ102(1)、…、102(N)が含まれる。一般に符号102として参照されるウェブサービスは、リモートプロシージャコール(RPC)またはオブジェクトブローカ型技術などの、ネットワークを介してウェブサービスと相互作用する他の手段も使用することができるが、通常は、XML、SOAP、WAP(wireless application protocol)、HTTP(ハイパーテキスト転送プロトコル)、およびSMTP(シンプルメール転送プロトコル)などの産業界標準ウェブプロトコルを介してネットワーク104上でプログラム的に相互作用する、再利用可能なプログラマブルアプリケーションコンポーネントである。ウェブサービスは、自己記述的とすることができ、しばしば、メッセージのフォーマットおよび順序に関して定義される。
ウェブサービス102は、他のサービス(通信リンク106によって表されるように)、またはウェブアプリケーション110などのソフトウェアアプリケーション(通信リンク112および114によって表されるように)によって直接にアクセス可能である。各ウェブサービス102は、特定のサービスに関する要求を処理するソフトウェアを実行する1つまたは複数のサーバを含むものとして示されている。そのようなサービスは、しばしば、要求元にサービスされる情報を保管するデータベースを維持する。ウェブサービスを構成して、さまざまな異なるサービスの任意の1つを実行することができる。ウェブサービスの例に、ログイン検証、通知、データベース保管、株式市況、ディレクトリの突き止め、地図作成、音楽、電子ウォレット、カレンダ/スケジューラ、電話リスティング、ニュースおよび情報、ゲーム、発券業務などが含まれる。ウェブサービスを、互いにおよび他のアプリケーションと組み合わせて、インテリジェント対話経験を構築することができる。
ネットワーク環境100には、ウェブサービス102(通信リンク122によって表される)および/またはウェブアプリケーション110(通信リンク124、126、および128によって表される)を使用する代表的なクライアント装置120(1)、120(2)、120(3)、120(4)、…、120(M)も含まれる。クライアントは、クライアント120(3)と120(4)の間の例示的なXMLリンク129によって表されるように、標準プロトコルを使用して互いに通信することもできる。
全般的に符号120として参照されるクライアント装置は、多数の異なる形で実施することができる。可能なクライアント実施形態の例に、制限なしに、ポータブルコンピュータ、ステーショナリコンピュータ、タブレットPC、テレビジョン/セットトップボックス、無線通信装置、携帯情報端末、ゲーム機、プリンタ、コピー機、および他のスマート装置が含まれる。
ウェブアプリケーション110は、ネットワークプラットフォームで動作するように設計されたアプリケーションであり、クライアント120からの要求を処理し、サービスするときに、ウェブサービス102を使用することができる。ウェブアプリケーション110は、プログラミングフレームワーク132上で稼動する1つまたは複数のソフトウェアアプリケーション130からなり、ソフトウェアアプリケーション130は、1つまたは複数のサーバ134または他のコンピュータシステムで実行されている。ウェブアプリケーション110の一部が、実際には1つまたは複数のクライアント120に常駐する場合があることに留意されたい。その代わりに、ウェブアプリケーション110が、実際にタスクを達成するクライアント120上の他のソフトウェアを調整することができる。
プログラミングフレームワーク132は、アプリケーション開発者によって開発されるアプリケーションおよびサービスをサポートする構造である。プログラミングフレームワーク132は、複数の言語をサポートすることによって、マルチ言語開発およびシームレス統合を可能にする。プログラミングフレームワーク132は、SOAPなどのオープンプロトコルをサポートし、基礎になるオペレーティングシステムサービスおよびオブジェクトモデルサービスをカプセル化する。このフレームワークは、複数のプログラミング言語の堅牢で保護された実行環境を提供し、保護され、統合されたクラスライブラリを提供する。
フレームワーク132は、アプリケーションプログラムインターフェース(API)レイヤ142、共通言語ランタイム(CLR)レイヤ144、およびオペレーティングシステム/サービスレイヤ146を含むマルチティアアーキテクチャである。この階層アーキテクチャを用いると、フレームワークの他の部分に影響せずに、さまざまなレイヤに対する更新および修正が可能になる。共通言語仕様(CLS)140を用いると、さまざまな言語の設計者が、基礎になるライブラリ機能性にアクセスできるコードを記述できるようになる。共通言語仕様140は、言語設計者とライブラリ設計者の間の、言語インターオペラビリティを促進するのに使用できるコントラクトとして機能する。CLSを厳守することによって、ある言語で記述されたライブラリは、別の言語で記述されたコードモジュールから直接にアクセスでき、ある言語で記述されたコードモジュールと別の言語で記述されたコードモジュールの間のシームレスな統合を達成することができる。CLSの1つの例示的な詳細な実施形態が、ECMA TC39/TG3の参加者によって作成されたECMA標準規格である。非特許文献1を参照されたい。
APIレイヤ142は、アプリケーション130が、レイヤ146によって提供されるリソースおよびサービスにアクセスするために呼び出す関数のグループを提供する。ネットワークプラットフォームに対するAPI関数を公開することによって、アプリケーション開発者は、ネットワークリソースが実際にどのように動作するかまたは使用可能にされるかの複雑な相互作用を理解する必要なしに、ネットワークリソースおよび他のウェブサービスを完全に利用する分散コンピューティングシステム用のウェブアプリケーションを作成することができる。さらに、ウェブアプリケーションを、任意の数のプログラミング言語で記述でき、共通言語ランタイムレイヤ144によってサポートされ、共通言語仕様140の一部として含まれる中間言語に変換することができる。この形で、APIレイヤ142が、広範囲のさまざまなアプリケーションにメソッドを提供することができる。
さらに、フレームワーク132を、フレームワークをホスティングするサーバ134からリモートに実行されるリモートアプリケーションによって設定される、API呼出しをサポートするように構成することができる。それぞれクライアント120(3)および120(M)に常駐する代表的なアプリケーション148(1)および148(2)は、直接的にまたは間接的に、ネットワーク104上でAPIレイヤ142への呼出しを行うことによって、API関数を使用することができる。
このフレームワークを、クライアントで実施することもできる。クライアント120(3)は、フレームワーク150がクライアントで実施される情況を表す。このフレームワークは、サーバベースのフレームワーク132と同一とするか、クライアント用に修正することができる。その代わりに、クライアントが、携帯電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信/コンピューティング装置などの制限付きまたは専用機能の装置である場合に、クライアントベースフレームワークを圧縮することができる。
(開発者のプログラミングフレームワーク)
図2に、プログラミングフレームワーク132を詳細に示す。共通言語仕様(CLS)レイヤ140は、さまざまな言語130(1)、130(2)、130(3)、130(4)、…、130(K)で記述されたアプリケーションをサポートする。そのようなアプリケーション言語に、Visual Basic、C++、C#、COBOL、Jscript、Perl、Eiffel、Pythonなどが含まれる。共通言語仕様140は、それに従う場合にさまざまな言語が通信できるようなる特徴のまたは特徴に関するルールのサブセットを指定する。たとえば、いくつかの言語は、共通言語ランタイム144によってサポートされる可能性がある所与の型(たとえば、「int*」型)をサポートしない。この場合に、共通言語仕様140に、その型が含まれない。その一方で、すべてまたはほとんどの言語によってサポートされる型(たとえば、「int[]」型)は、共通言語仕様140に含まれ、したがって、ライブラリ開発者は、それを使用することができ、言語がそれを処理できることが保証される。この通信の能力は、ある言語で記述されたコードモジュールと別の言語で記述されたコードモジュールの間のシームレスな統合をもたらす。異なる言語が、特定のタスクに特によく適するので、言語の間のシームレスな統合によって、開発者が、特定のコードモジュールに対し特定の言語を選択でき、そのコードモジュールを異なる言語で記述されたモジュールと共に使用する能力が与えられる。共通言語ランタイム144を用いると、クロス言語継承と共にシームレスなマルチ言語開発が可能になり、複数プログラミング言語の堅牢で保護された実行環境が提供される。共通言語仕様140および共通言語ランタイム144に関するさらなる情報については、特許文献1、表題「Method and System for Compiling Multiple Languages」および特許文献2、表題「Unified Data Type System and Method」を参照されたい。
フレームワーク132によって、オペレーティングシステム146(1)(たとえば、Windows(登録商標)ブランドのオペレーティングシステム)およびオブジェクトモデルサービス146(2)(たとえば、コンポーネントオブジェクトモデル(COM)または分散COM)がカプセル化される。オペレーティングシステム146(1)は、ファイル管理、通知、イベント処理、ユーザインターフェース(たとえば、ウィンドウイング(windowing)、メニュー、ダイアログなど)、セキュリティ、認証、検証、プロセスおよびスレッド、メモリ管理などの従来の機能を提供する。オブジェクトモデルサービス146(2)は、さまざまなタスクを実行するために、他のオブジェクトとのインターフェースを提供する。APIレイヤ142に対して行われる呼出しは、オペレーティングシステム146(1)および/またはオブジェクトモデルサービス146(2)によるローカル実行のために共通言語ランタイムレイヤ144に渡される。
API142は、API関数を複数の名前空間にグループ化する。名前空間によって、本質的に、セットとして「型」と呼ばれる、関連する機能性の特定のセットを提供する、クラス、インターフェース、委任(delegate)、列挙、および構造体のセットが定義される。クラスは、参照割り当てセマンティックス(semantics)を有する、管理されるヒープから割り当てられるデータを表す。委任は、オブジェクト指向関数ポインタである。列挙は、名前付き定数を表す特殊な種類の値型である。構造体は、値割り当てセマンティックスを有する、静的に割り当てられたデータを表す。インターフェースは、他の型を実施できるコントラクトを定義する。
名前空間を使用することによって、設計者が、型のセットを階層名前空間に編成することができる。設計者は、型のセットから複数のグループを作成することができ、各グループに、論理的に関連する機能性を公開する少なくとも1つの型が含まれる。例示的な実施形態では、API142が、3つのルート名前空間を含むように編成される。図2には3つのルート名前空間だけが示されているが、追加のルート名前空間をAPI142に含めることもできることに留意されたい。API142に示された3つのルート名前空間は、プレゼンテーションサブシステムの第1名前空間200(ユーザインターフェースシェルの名前空間202を含む)、ウェブサービスの第2名前空間204、およびファイルシステムの第3名前空間206である。各グループに名前を割り当てることができる。たとえば、プレゼンテーションサブシステム名前空間200に、名前「Windows(登録商標)」を割り当てることができ、ファイルシステム名前空間206の型に、名前「Storage」を割り当てることができる。名前付きグループを、System名前空間全体などのシステムレベルAPIの単一の「グローバルルート」名前空間の下で編成することができる。トップレベル識別子を選択し、プレフィックシングすることによって、各グループの型を、型を含むグループの名前の前に置かれた選択されたトップレベル識別子を含む階層名によって簡単に参照することができる。たとえば、ファイルシステム名前空間206の型を、階層名「System.Storage」を使用して参照することができる。このようにして、個々の名前空間200、204、および206が、System名前空間からの主要な分岐になり、および個々の名前空間が「System.」プレフィックスなどの指示子(designator)を前に付けられる指定を伝える。
プレゼンテーションサブシステム名前空間200は、プログラミングおよびコンテンツ開発に関する。この名前空間は、アプリケーション、文書、媒体プレゼンテーション、および他のコンテンツの生成を可能にする型を供給する。たとえば、プレゼンテーションサブシステム名前空間200は、開発者がオペレーティングシステム146(1)および/またはオブジェクトモデルサービス146(2)からサービスを得られるようにするプログラミングモデルを提供する。
シェル名前空間202は、ユーザインターフェース機能性に関する。この名前空間は、開発者が自分のアプリケーションにユーザインターフェース機能性を埋め込めるようにし、さらに、開発者がユーザインターフェース機能性を拡張できるようにする型を供給する。
ウェブサービス名前空間204は、たとえば、イントラネット上の2つのピアの間で動作するチャットアプリケーションのように単純なアプリケーションおよび/または数百万のユーザに関するスケーラブルウェブサービスなどの複雑なアプリケーションなど、さまざまなウェブアプリケーションの作成を可能にするインフラストラクチャに関する。本明細書で説明するインフラストラクチャは、有利なことに、特定のソリューションの複雑さに適当なパーツだけを使用する必要があるという点で、非常に可変である。このインフラストラクチャは、さまざまなスケールおよび複雑さのメッセージベースアプリケーションを構築する基礎を提供する。このインフラストラクチャまたはフレームワークは、基本的メッセージング、セキュアメッセージング、信頼されるメッセージング、およびトランザクション処理されるメッセージングのAPIを提供する。下で説明する実施形態では、関連するAPIが、有用性、使い易さ、拡張性、およびバージョナビリティ(versionability)のバランスをとるように注意深く作成された形で名前空間の階層に分解される。
ファイルシステム名前空間206は、ストレージに関する。この名前空間は、情報の保管および検索を可能にする型を供給する。
フレームワーク132のほかに、プログラミングツール220が、開発者がウェブサービスおよび/またはアプリケーションを構築するのを支援するために設けられている。プログラミングツール220の1つの例が、Microsoft社によって提供されるプログラミングツールのマルチ言語スイートであるVisual Studio(商標)である。
(ルートAPI名前空間)
図3に、プレゼンテーションサブシステム200の一部を詳細に示す。一実施形態では、名前空間は、名前のストリングがピリオドによって連結される階層命名規約に従って識別される。たとえば、プレゼンテーションサブシステム200は、ルート名「System.Windows」によって識別される。「System.Windows」名前空間内に、「System.Windows.Controls」として識別される、さまざまなコントロールのもう1つの名前空間があり、この名前空間は、さらに、「System.Windows.Controls.Primitives」と称する、プリミティブ(図示せず)のもう1つの名前空間を識別する。この命名規約を念頭において、以下では、API142の選択された名前空間の一般的な概要を示すが、他の命名規約を使用して同等の効果を得ることができる。
図3からわかるように、プレゼンテーションサブシステム200に、複数の名前空間が含まれる。図3に示された名前空間は、プレゼンテーションサブシステム200の特定の実施形態を表す。プレゼンテーションサブシステム200の他の実施形態に、1つまたは複数の追加の名前空間を含めることができ、あるいは、図3に示された名前空間の1つまたは複数を省略することができる。
プレゼンテーションサブシステム200は、API142のプレゼンテーション機能性の多くのルート名前空間である。Controls名前空間310に、ユーザインターフェースなどの情報のディスプレイを構築するのに使用されるコントロールと、ユーザがアプリケーションと対話できるようにするクラスが含まれる。コントロール例に、ディスプレイ上のボタンを作成する「Button」、ディスプレイ上のラジオスタイルのボタンを生成する「RadioButton」、ディスプレイ上のメニューを作成する「Menu」、ディスプレイ上のツールバーを作成する「ToolBar」、ディスプレイ上のイメージを作成する「Image」、および情報の階層ビューを作成する「TreeView」が含まれる。
ある種のコントロールは、複数の要素をネストし、配置することによって作成される。これらのコントロールは、コントロールの作成に使用される要素を隠蔽する論理モデルを有し、これによって、プログラミングモデルが単純になる。コントロールは、開発者またはユーザが(たとえば、ユーザインターフェースボタンの外見および挙動をカスタマイズすることによって)スタイルおよびテーマを与えることができる。一部のコントロールは、個人が個々のコントロールのスタイルを調整できるようにするアドレス可能コンポーネントを有する。さらに、コントロールを、アプリケーション設計者およびコンポーネント開発者がサブクラス化し、拡張することができる。コントロールは、ベクトルグラフィックスを使用してレンダリングされ、特定のインターフェースまたは他のディスプレイの要件に合うようにサイズを変更することができる。コントロールは、たとえばユーザインターフェースの対話フィールを強化し、アクションおよびリアクションを示すためにアニメーションを使用することができる。
(Controls名前空間)
Controls名前空間310に、1つまたは複数のパネルが含まれ、このパネルは、その子(たとえばネストされた要素)を測定し、配置するコントロールである。たとえば、「DockPanel」パネルでは、各子をディスプレイの上辺、左辺、下辺、または右辺にドッキングすることによって子を配置し、残りのスペースに他のデータを充てんする。たとえば、特定のパネルが、ディスプレイ最上部のメニューおよびツールバー、ディスプレイ最下部のステータスバー、ディスプレイの左辺のフォルダリストにドッキングし、残りのスペースにメッセージのリストを充てんすることができる。
上で述べたように、System.Windows.Controls.Primitivesは、通常はSystem.Windows.Controls名前空間内のコントロールの開発者および彼ら自身のコントロールを作成する開発者によって使用されるコンポーネントである複数のコントロールを含む名前空間である。このコントロールの例に、「ThumbおよびRepeatButton」が含まれる。もう1つのコンポーネントである「ScrollBar」は、4つのリピートボタン(「行上」の1つ、「行下」の1つ、「ページ上」の1つ、および「ページ下」の1つ)および現在のビューを文書内の別のロケーションにドラッグする「Thumb」を使用して作成される。もう1つの例で、「ScrollViewer」は、スクロール可能領域を提供するために2つの「ScrollBars」および1つの「ScrollArea」を使用して作成されるコントロールである。
下記のリストに、System.Windows.Controls名前空間によって公開されるクラス例が含まれる。これらのクラスを用いると、ユーザが、たとえばさまざまな入出力機能ならびに追加のディスプレイ機能を介してアプリケーションと対話できるようになる。
・AccessKey − AccessKeyは、文字をラップし、その文字をキーボードニーモニック(keybooard mnemonic)として表すキーボードキュー装飾を受け取ることを示す、FrameworkElement要素である。デフォルトで、キーボードキュー装飾は、下線である。
・Audio − Audio要素。
・Border − ボーダー、バックグラウンド、またはその両方を、別の要素の回りに描く。
・Button − Clickイベントに固有に反応する標準ボタンコンポーネントを表す。
・Canvas − Canvas領域に対する相対的な座標によってユーザが子要素を明示的に位置決めできる領域を定義する。
・CheckBox − ユーザに、真/偽などのオプションを与えるにはCheckBoxを使用する。CheckBoxを用いると、ユーザが、オプションのリストから選択できるようになる。CheckBoxコントロールによって、ユーザが、オプションの組合せを選択できるようになる。
・CheckedChangedEventArgs − CheckedChangedEventArgsクラスには、CheckedChangedEventイベントに関する追加情報が含まれる。
・CheckStateChangedEventArgs − CheckStateChangedEventArgsクラスには、 CheckStateChangedEventイベントに関する追加情報が含まれる。
・ClickEventArgs − Clickイベントに関する情報を含む。
・ColumnStyle − 変更可能なColumnStyleオブジェクトを表す。
・ColumnStyles − Changeable要素のコレクションである変更可能なパターンのIListオブジェクト。
・ComboBox − ComboBoxコントロール。
・ComboBoxItem − ComboBox内部で選択可能なアイテムを実装するコントロール。
・ContactPickerDialog − ユーザが1つまたは複数の連絡先を選択できるようにする。
・ContactPropertyRequest − アプリケーションが、ContactPickerDialogを介して連絡先プロパティに関する情報を要求できるようにする。このクラスを継承することはできない。
・ContactPropertyRequestCollection - ContactPropertyRequestオブジェクトのコレクションを表す。
・ContactSelection − Microsoft(登録商標)Windows(登録商標)File System、コードネーム「WinFS」またはMicrosoft Active Directory(登録商標)からの、選択された連絡先に関する情報。
・ContactSelectionCollection − ContactSelectionオブジェクトのコレクションを表す。
・ContactTextBox − 連絡先または連絡先のプロパティの選択をサポートするエディットコントロール。
・ContactTextBoxSelectionChangedEventArgs − ContactTextBoxSelectionChangedイベントの引数。
・ContactTextBoxTextChangedEventArgs − ContactTextBoxTextChangedイベントの引数。
・ContactTextBoxTextResolvedEventArgs − TextResolvedToContactイベントの引数。
・ContentChangedEventArgs − ContentChangedEventのイベント引数。
・ContentControl − 単一の内容を有するすべてのコントロールの基本クラス。
・ContentPresenter − ContentPresenterは、コンテンツコントロールのスタイルで、コンテンツが追加されるコントロールのビジュアルツリー(chromeテンプレート)内の位置を表すのに使用される。
・ContextMenu − ユーザが呼び出す選択肢のメニューを定義するコントロール。
・ContextMenuEventArgs − ContextMenuEventに送られるデータ。
・Control −すべてのユーザ対話要素の基本クラスを表す。このクラスは、そのサブクラスのプロパティの基本セットを提供する。
・Decorator − Borderなど、単一の子要素の上または周囲にエフェクトを適用する要素の基本クラス。
・DockPanel − 互いに関して水平にまたは垂直にのいずれかで子要素を配置できる領域を定義する。
・DragDeltaEventArgs − DragDeltaEventArgsクラスには、DragDeltaEventイベントに関する追加情報が含まれる。
・FixedPanel − FixedPanelは、自動ページ付け(pagination)用の固定されたページを含む固定フォーマット文書で使用されるルート要素である。FixedPanelは、一時に1ページまたはページのスクロールが可能なスタックとして、自動ページ付けされるコンテンツを表示する。
・FlowPanel − FlowPanelは、単一行の長さを超えるコンテンツを、改行、ラップ、および位置合せするのに使用される。FlowPanelは、コンテナのコンテンツ、たとえばTextのフローが単一行の長さを超える可能性が高いときに使用できる、改行プロパティおよび位置合せプロパティを提供する。
・Frame − 別のマークアップツリーのコンテンツをロードできる領域。
・Generator − Generatorは、ItemsControlの代わりにUIを生成し、GeneratorFactoryの監督下で働くオブジェクトである。
・GeneratorFactory − GeneratorFactoryは、ItemsControlの代わりにUIを生成する責任を負う。GeneratorFactoryは、コントロールのItemsCollection(フラット化されたビュー)のアイテムとそれに対応するUIElementの間の関連付けを維持する。コントロールのアイテムコンテナは、ファクトリにGeneratorを要求することができ、ファクトリは、実際のUIの生成を行う。
・GridPanel − 行および列からなるグリッド領域を定義する。
・HeaderItemsControl − 複数のアイテムを含み、ヘッダを有するすべてのコントロールの基本クラス。
・HorizontalScrollBar − 水平スクロールバークラス。
・HorizontalSlider −水平スライダクラス。
・HyperLink − HyperLinkクラスでは、ナビゲーションコントロールが実装される。デフォルトプレゼンタは、TextPresenterである。
・Image − 文書またはアプリケーションにイメージを含める簡単な手段を提供する。
・IncludeContactEventArgs − ContactPickerDialog.IncludeContactイベントのハンドラに渡される引数。
・ItemCollection − コントロール内の個別のアイテムのコレクションを維持する。コレクションコンテンツの変更およびコンテンツに関するデータの入手を可能にするメソッドおよびプロパティを提供する。
・ItemsChangedEventArgs − ItemsChangedイベントは、アイテムコレクションが変更したレイアウトを知らせるためにGeneratorFactoryによって引き起こされる。
・ItemsControl − 複数の子を有するすべてのコントロールの基本クラス。
・ItemsView − ItemsViewはItemCollectionのフラット化されたビューを提供する。
・KeyboardNavigation − KeyboardNavigationクラスは、フォーカス可能なコントロールの間の、論理(タブ)ナビゲーションおよび方向付き(矢印)ナビゲーションのメソッドを提供する。
・ListBox − 選択可能なアイテムのリストを実装するコントロール。
・ListItem − ListBox内部の選択可能なアイテムを実装するコントロール。
・Menu − ユーザが呼び出す選択肢のメニューを定義するコントロール。
・MenuItem − メニューの子アイテム。MenuItemを選択することによって、コマンドを呼び出すことができる。MenuItemは、セパレータとすることができる。MenuItemは、サブメニューのヘッダとすることができる。MenuItemは、チェック付きまたはチェックなしにすることができる。
・PageViewer − 自動ページ繰りコントロール、ツールバー、およびページバーコントロールを含む文書表示コンポジットコントロールを表す。
・PaginationCompleteEventArgs − PaginationCompleteEventのイベント引数。
・PaginationProgressEventArgs − PaginationProgressEventのイベント引数。
・Pane − 新しいウインドウを起動せずにマークアップ言語(たとえば「XAML」)でウインドウプロパティを定義する手段を提供する。
・Panel − すべてのPanel要素の基本クラスを提供する。Panel要素をインスタンス化するためには、派生具象クラスを使用する。
・RadioButton − RadioButtonは、2つの状態すなわち真または偽を有するオプションボタンを実装する。
・RadioButtonList − このコントロールは、RadioButtonのグループ化コントロールとして働き、RadioButtonを相互排他的に処理する部分である。RadioButtonListは、Selectorから継承する。RadioButtonListは、本質的に単一のSelectionModeセレクタであり、選択(Selectorから)という概念は、これがグループ化するRadioButtonのCheckedプロパティをキーオフとする。
・RowStyle − 変更可能なパターンChangeable要素。
・RowStyles − Changeable要素のコレクションである変更可能なパターンのIListオブジェクト。
・ScrollChangeEventArgs − ScrollChangeEventsArgsは、スクロール状態の変更を記述する。
・ScrollViewer −
・SelectedItemsCollection − Selector内の選択されたアイテムのコンテナ。
・SelectionChangedEventArgs − 選択変更イベントハンドラへの入力。
・SimpleText − SimpleTextは、ユーザインターフェース(UI)シナリオでの使用を想定された軽量複数行単一フォーマットテキスト要素である。SimpleTextは、複数の同一のフォーマッティングプロパティをTextとして公開し、しばしば、ある多用途性を犠牲にして性能を高めるのに使用することができる。
・StyleSelector − StyleSelectorを用いると、アプリケーション作成者がカスタムスタイル選択ロジックを提供できるようになる。たとえば、ContentとしてクラスBugを用いて、Pri1バッグに特定のスタイル、Pri2バッグに異なるスタイルを使用する。アプリケーション作成者は、派生セレクタクラスでSelectStyleメソッドをオーバーライドし、このクラスのインスタンスをContentPresenterクラスのStyleSelectorプロパティに割り当てることができる。
・Text − Textの複数のフォーマットをレンダリングできるTextコントロールを表す。Textは、アプリケーションUI内で最もよく使用される。より高度なテキストシナリオは、TextPanelの追加の機能セットから利益を得る。比較的単純なテキストサポートが必要であるほとんどの場合において、Textは、その軽いという性質および特徴の範囲のゆえに、好ましい要素である。
・TextBox − テキスト入力を受け入れる編集可能な領域を提供するコントロールを表す。
・TextChangedEventArgs − TextChangedEventArgsクラスは、TextRange.SetText()によって引き起こされたイベントに関連するタイプのRoutedEventArgsを表す。
・TextPanel − テキストをフォーマットし、サイズを変更し、描画する。TextPanelは、複数の行のテキストおよび複数のテキストフォーマットをサポートする。
・ToolTip − ユーザがコントロールの上でホバリングするときに情報を表示するコントロール。
・ToolTipEventArgs − ToolTipEventに送られるデータ。
・TransformDecorator − TransformDecoratorは、子を含み、指定された変換をその子に適用する。TransformDecoratorは、変換後に子がデコレータの空間にぴたりとおさまり、最大限の領域を使用するように、そのローカル(変換前)座標で子を測定し、配置するロジックを実装する。したがって、子は、それに適用される変換の知識を有する必要がない。
・UIElementCollection − UIElementCollectionは、UIElementの順序付きコレクションである。
・ValueChangedEventArgs − このValueChangedEventArgsクラスには、ValueChangedEventイベントに関する追加情報が含まれる。
・VerticalScrollBar − 垂直スクロールバークラス。
・VerticalSlider − 垂直スライダクラス。
・Video − 現在のユーザ座標系内の指定された長方形においてストリーミングビデオファイルまたはストリーミングオーディオファイルを再生する。
・VisibleChangedEventArgs − VisibleChangedEventArgsクラスは、VisibleChangedEventイベントに関する追加情報を含む。
System.Windows.Controls名前空間には、さまざまな列挙も含まれる。下記のリストに、System.Windows.Controls名前空間に関連する列挙例が含まれる。
・CharacterCase − テキストがタイプされるときにTextBoxコントロール内の文字の大文字小文字を指定する。
・CheckState − チェックボックスなど、チェック付き、チェックなし、または中間状態とすることができるコントロールの状態を指定する。
・ClickMode − Clickイベントを発生させなければならないときを指定する。
・ContactControlPropertyPosition − 連絡先のプロパティの位置およびディスプレイを制御する。
・ContactPickerDialogLayout − ContactPickerDialogが選択されたプロパティをどのように表示するかを指定する。
・ContactPropertyCategory − プロパティが、ユーザが選択できる複数の値を有する場合に、どの値をデフォルトとして扱うかを指定する。たとえば、ContactPickerDialogから電話番号プロパティを要求するときに「Work」が好ましいカテゴリとして指定され、ユーザが、仕事場と家庭の両方の電話番号を有する連絡先を選択する場合に、仕事場の電話番号がデフォルト選択として示される。ユーザは、UIを使用して、その代わりに家庭の電話番号を選択することができる。
・ContactPropertyType − ContactPickerDialogがユーザに尋ねることができる連絡先のプロパティを指定する。
・ContactType − どの連絡先タイプをContactPickerDialogに表示するかを指定する。
・Direction − この列挙は、ジェネレータがUIを作る方向を指定するためにGeneratorFactoryおよびGeneratorによって使用される。
・Dock − DockPanel内の子要素のDock位置を指定する。
・GeneratorStatus − この列挙は、GeneratorFactoryによって、その状況を示すのに使用される。
・KeyNavigationMode − TabNavigationプロパティの型によって、Tabナビゲーションが行われるときにコンテナがフォーカスを移動する方法が指定される。
・MenuItemBehavior − MenuItemが有することができる異なる挙動を定義する。
・MenuItemType − MenuItemsの異なる配置タイプを定義する。
・Orientation − スライダオリエンテーションタイプ。
・PageViewerFit − ページをPageViewerのクライアント領域にどのようにおさめるかを選択する。
・PageViewerMode − モードドロップダウンに反映される現在のPageViewerモードを選択する。
・ScrollerVisibility − ScrollerVisibiltyは、スクロールバーの可視性挙動を定義する。
・SelectionMode − ListBoxの選択挙動を指定する。
「Position」が、System.Windows.Controls名前空間に関連する構造体例である。Generatorのユーザは、この構造体を使用して位置を記述する。たとえば、アイテムリストの先頭から前への生成を開始するには、位置(−1、0)および方向Forwardを指定する。リストの末尾から後ろへの生成を開始するには、位置(−1、0)および方向Backwardを指定する。インデックスkの要素の後のアイテムを生成するには、位置(k、0)および方向Forwardを指定する。
下記のリストに、System.Windows.Controls名前空間に関連する委任例が含まれる。
・CheckedChangedEventHandler − この委任は、CheckedChangedEventイベントのハンドラによって使用される。
・CheckStateChangedEventHandler − この委任は、CheckStateChangedEventイベントのハンドラによって使用される。
・ClickEventHandler − Clickイベントを処理するメソッドを表す。
・ContactTextBoxSelectionChangedEventHandler − ContactTextBoxSelectionChangedイベントの委任ハンドラ。
・ContactTextBoxTextChangedEventHandler − ContactTextBoxTextChangedイベントの委任ハンドラ。
・ContactTextBoxTextResolvedEventHandler − TextResolvedToContactイベントの委任ハンドラ。
・ContentChangedDelegate − ContentChangedEventに関する委任。
・ContextMenuEventHandler − ContextMenuEventを処理するコールバック型。
・DragDeltaEventHandler − この委任は、DragDeltaEventイベントのハンドラによって使用される。
・IncludeContactEventHandler − ContactPickerDialog.IncludeContactイベントのハンドラ。
・ItemsChangedEventHandler − ItemsChangedEventArgsを受け取るハンドラに使用される委任。
・OpenedEventHandler − ContactPickerDialog.Openedイベントのハンドラ。
・PaginationCompleteDelegate − PaginationCompleteEventに関する委任。
・PaginationProgressDelegate − PaginationProgressEventに関する委任。
・ScrollChangeEventHandler − この委任は、ScrollChangeEventイベントのハンドラによって使用される。
・SelectionChangedEventHandler − 選択変更イベントの処理に関する委任型。
・TextChangedEventHandler − TextChangedEventArgsを受け取るハンドラに使用される委任。
・ToolTipEventHandler − ToolTipEventの処理に関するコールバック型。
・ValueChangedEventHandler − この委任は、ValueChangedEventイベントのハンドラによって使用される。
・VisibleChangedEventHandler − この委任は、VisibleChangedEventイベントのハンドラによって使用される。
もう1つの名前空間、System.Windows.Controls.Atomsは、System.Windows.Controls名前空間のサブ名前空間である。System.Windows.Controls.Atomsには、関連するコントロール、イベント引数、およびイベントハンドラが含まれる。下のリストに、System.Windows.Controls.Atoms名前空間に関連するクラス例が含まれる。
・PageBar − スクロール可能な自動ページ繰りコントロールを表す。
・PageElement − 自動ページ繰りされるコンテンツの特定のページをレンダリングする。レンダリングされるページは、PageSourceプロパティによって指定される。
・PageHoveredEventArgs − PageHoveredEventArgsは、マウスポインタがホバリングしている場所に関する情報を提供する。
・PageScrolledEventArgs − PageScrolledEventArgsには、PageScrolledイベントに関する情報が含まれる。
・PageSelectedEventArgs − PageSelectedEventは、新しい行/列範囲選択が行われるときに発せられる。
・PageSelector − PageSelector:ページのうちで表示される行/列の範囲をユーザが選択できるようにする。
・PageSource − 自動ページ繰りされるコンテンツのソースを識別する。自動ページ繰りされるコンテンツをフォーマットするプロパティおよびメソッドも提供する。
下記のリストに、System.Windows.Controls.Atoms名前空間に関連する委任例が含まれる。
・PageHoveredEventHandler − この委任は、PageHoveredEventイベントのハンドラによって使用される。
・PageScrolledEventHandler − この委任は、PageHoveredイベントのハンドラによって使用される。
・PageSelectedEventHandler − この委任は、PageSelectedEventイベントのハンドラによって使用される。
System.Windows.Controls.Primitives名前空間は、System.Windows.Controls名前空間のもう1つのサブ名前空間である。上で述べたように、Primitivesサブ名前空間には、他のより複雑なコントロールによってプリミティブとして使用されることを意図されたコントロールが含まれる。下記のリストに、System.Windows.Controls.Primitives名前空間に関連するクラス例が含まれる。
・ButtonBase − 派生クラスでオーバーライドされるときに、関連するイベントおよびプロパティを定義し、関連する入力イベントのハンドラを提供する。
・Popup − コンテンツを含むフライアウトウインドウを作成するコントロール。
・RangeBase − 指定された範囲を有する要素の基本クラスを表す。そのような要素の例が、スクロールバーおよびプログレスバーである。このクラスは、関連するイベントおよびプロパティを定義し、そのイベントのハンドラを提供する。
・RepeatButton − RepeatButtonコントロールは、Clickイベントが発生するときの反復セマンティックスを追加する。
・ScrollArea − ScrollAreaは、スクロールに関する有効な要素である。これは、これがクリッピングするコンテンツを含み、そのコンテンツのオフセットおよび範囲を公開するプロパティを提供する。プログラムによって、あるいはキーボードまたはマウスホイールを介してスクロールを駆動できるように、デフォルト入力処理も提供する。
・ScrollBar − スクロールバークラス。
・Selector − 子の間からアイテムを選択するコントロールの基本クラス。
・Slider − スライダクラス。
・Thumb − サムコントロールは、スクロールバーの基本的なドラッグ移動機能性およびウィジェットのウインドウサイズ変更を可能にする。
「IEnsureVisible」は、System.Windows.Controls.Primitives名前空間に関連するインターフェース例である。IEnsureVisibleは、子ビジュアルをスクロール/ビューに移動するためにビジュアルに対して実施される。
下記のリストに、System.Windows.Controls.Primitives名前空間に関連する列挙例が含まれる。
・ArrowButtonStates −
・CloseModeType − さまざまなマウスイベントに対してポップアップがどのように振る舞うかを記述する。
・Part − Part列挙は、スクロールバーを構成するコントロールのセマンティック使用を示すのに使用される。
・PartStates − スクロールバー部品状態。
・PlacementType − ポップアップがスクリーンに置かれる場所を記述する。
・SizeBoxStates −
(Documents名前空間)
Documents名前空間312は、リッチフォーマットであり意味論的に豊富な文書の作成に使用されるセマンティック要素およびフォーマッティング要素のコレクションである。一実施形態では、「要素」は、主に要素の階層(「ツリー」と称する)と共に使用されるクラスである。これらの要素は、対話型(たとえば、キーボード、マウス、または他の入力デバイスを介するユーザ入力を受け取る)とすることができ、イメージまたはオブジェクトをレンダリングすることができ、他の要素の配置を支援することができる。要素例に、汎用ブロックを実装する「Block」要素、テーブルのボディを含むコンテンツを表す「Body」要素、テーブル内の表データを含む「Cell」要素、テーブルのヘッダに含まれるコンテンツを表す「Header」要素、およびコンテンツを複数のページにまたがって分割するのに使用される「PageBreak」要素が含まれる。
下記のリストに、System.Windows.Documents名前空間によって公開されるクラス例が含まれる。
・AdaptiveMetricsContext − AdaptiveMetricsContextは、適応フローフォーマット(adaptive-flow-format)文書のルート要素を提供する。子パネルが、AdaptiveMetricsContext要素でカプセル化されたならば、親パネルのコンテンツが、RME(Reading Metrics Engine)によって処理される。子パネルのサイズが、列の数およびサイズならびに最適のフォントサイズおよび行高さを計算するのに使用される。
・Block − デフォルトレンダリング挙動を誘導しない汎用ブロック要素を実装する。
・BlockElement − すべてのBlock要素の基本クラスを実装する。
・Body − Table要素のボディを含むコンテンツを表す。
・Bold − Inlineから導出されるBold要素を実装する。
・BreakRecord − 改ページにまたがって自動ページ繰りされるコンテンツのフォーマッティングを継続するのに必要な情報を保管する。自動ページ繰りサポートを提供するためにこのクラスを継承する。これは、抽象クラスである。
・Cell − Cellには、あるTable内の表データが含まれる。Cell要素は、Rowに含まれる。
・CellCollection − テーブルセルの順序付きコレクション。
・Column − Column要素は、GridPanelまたはTableのコンテンツを配分するのに使用される。
・ColumnCollection − ColumnCollectionは、Columnの順序付きコレクションである。
・ColumnResult − 列のビュー関連情報を表す。
・ContainerParagraphResult − 他のParagraphオブジェクトだけを含むParagraphオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・ContentPosition − 段落内のコンテンツの位置を表す。関連するコンテンツの位置を記述するには、このクラスから継承する。これは、抽象クラスである。
・Document − Documentクラスの目的は、文書のコンテンツを、それを囲むUI「chrome」から分離することである。「分離」は、そのUIについて考慮せずに(コミットもせずに)文書を作成できることを意味する。Documentクラスは、文書コンテンツ、通常はTextPanelまたはFixedPanelと、その子を保持する。ビジュアルツリー(デフォルトでPageViewer)が、WPPコントロールスタイリング機構を介してこの要素に関連付けられる。
・DocumentPage − 自動ページ付けの対象である文書のページに関連するコントロールのレイアウト情報を表す。これらのコントロールのレイアウト情報を記述するには、このクラスから継承する。これは、抽象クラスである。
・DocumentPageParagraphResult − 自動ページ付けによって影響を受けるオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・FindEngine − 検索アルゴリズムの基本クラス。
・FindEngineFactory − 検索アルゴリズムファクトリ。
・FixedPage − 固定フォーマットレイアウト文書内のコンテンツの単一ページへのアクセスを提供する。
・Footer − Table要素のフッタを含むコンテンツを表す。
・Header − Table要素のヘッダを含むコンテンツを表す。
・Heading − ヘディングとしてテキストをレンダリングするブロックレベル要素を実装する。
・HyphenationDictionary − HyphenationDictionaryは、アプリケーション内のハイフネーションサポートを提供するための辞書を表す。これには、インライン辞書と外部辞書への参照との両方を含めることができる。インライン辞書は、より高い優先順位を有し、外部辞書のエントリの前に適用される。
・Hyphenator − Hyphenatorオブジェクトは、HyphenationDictionary内のハイフネーションデータへの参照を維持し、ハイフネーションも実行する。
・Inline − デフォルトレンダリング挙動を全く誘導しない汎用Inline要素を実装する。
・InlineElement − すべてのインライン要素の基本クラスとして、汎用インライン要素を実装する。
・Italic − Inlineから導出されるItalic要素を実装する。
・LineBreak − 改行を課すマークアップ要素を表す。
・LineResult − テキストの行の計算された情報へのアクセスを提供する。
・List − List要素を実装する。Listは、中黒または番号付けなどのマーカーを用いてフォーマットされるように設計されたブロックレベル要素である。
・ListElementItem − 中黒または番号付けなどのマーカーをサポートする、ListElementItemを実装する。
・Note − HTMLのnote要素に類似する、Note要素を実装する。
・PageBreak − さまざまなページにまたがってコンテンツを分割するのに使用されるマークアップ要素を表す。
・PageDescriptor − 自動ページ付けされるレイアウトを作成するのに必要な情報を保管する、PageDescriptorを実装する。
・Paragraph − 段落のテキストをレンダリングするのに使用されるブロックレベル要素を実装する。レンダリング挙動は、HTMLのparagraph要素のレンダリング挙動に類似する。
・ParagraphResult − Paragraphオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・Row − GridPanel要素またはTable要素内の行を定義する。
・RowCollection − RowCollectionは、Rowの順序付きコレクションを表す。
・RowGroup − TableまたはGridPanel内の行のグループのプロパティデフォルトを指定する。
・Section − 汎用コンテナ要素を実装する。レンダリング挙動は、HTMLのdiv要素に類似する。
・SmallCaps − インラインSmallCaps要素を実装する。SmallCapsは、タイトルなどで、強調のために文字の小さい大文字版としてレンダリングされる、印刷形態である。
・Subscript − インラインSubscript要素を表す。Subscript文字は、他の文字の真下、左下、または右下に書き込まれる。
・Superscript − インラインSuperscript要素を表す。Superscript文字は、通常は文字または数字であり、他の文字の真上、左上、または右上にレンダリングされる。
・Table − Tableは、マークアップ言語(たとえば「XAML」)を使用して表形式で複雑なデータを表示するのに使用される。
・TextArray − テキストのアクセスおよび操作に関する基本API。
・TextChangedEventArgs − TextChangedEventArgsは、TextArrayが変更されるときに送られるイベント引数を定義する。
・TextElement − TextElementは、TextTreeのTextRange機能を提供する。これは、固定されたエンドポイントを有する不変の、連続的TextRangeである。これは、ContentElement、Input、Focus、およびEventingのサポートを提供する。DependencyObjectプロパティのサポートも提供する。
・TextNavigator − これによって、テキストコンテンツを列挙することができる。移動可能なTextPositionを実装する。テキストランによって移動するか、テキスト内の既知のロケーションで位置決めすることができる。
・TextParagraphResult − フローテッドオブジェクトおよび図を含む、テキストに関する計算されたレイアウトパラメータへのアクセスを提供する。
・TextPosition − これは、TextArray内のある位置を表すオブジェクトである。テキスト内の位置を表すコンパクトなオブジェクトによって、テキストが変更されるときに位置が自動的に維持される。比較動作は、同一のTextArray(同一のContext)内の位置だけに適用可能である。TextPositionは、静的または移動可能とすることができる。IsChangeableプロパティによって、位置の種類がわかる。
・TextRange − TextRangeは、プロパティへの0または1以上のサブレンジの一般的関連付けを提供する抽象クラスである。サブレンジ操作は、派生クラスで定義される。
・TextRangeMovable − TextRangeMovableは、移動可能なTextRangeの抽象クラスである。このクラスでは、TextUnitsに基づく始点および終点への移動するための能力が追加される。
・TextTreeChangedEventArgs − TextChangedEventArgsでは、TextArrayが変更されるときに送られるイベント引数が定義される。
・TextTreeDumper − TreeDumperは、パッケージング問題のために公であるツリーテストクラスである。
・TextTreeNavigator − これは、TextTree内のある移動可能位置を表すオブジェクトである。これは、TextTree内のみでの使用されるTextNavigatorの特定の実装である。
・TextTreePosition − これは、TextTree内のある不変の位置を表すオブジェクトである。これは、TextTree内でのみ使用されるTextPositionの特定の実装である。
・TextTreeRange − TextTreeのTextRange機能を提供する。これは、移動可能なエンドポイントを有する、不変の、連続的なTextRangeである。
・TextTreeRangeContentEnumerator − TextTreeRangeの真下のオブジェクトの子に対する列挙子。
・TextUnit − テキストナビゲーションの拡張可能な単位。
・TextUnits − TextPositionおよびTextRangeに一般に使用されるテキスト単位。
・Typography − OpenTypeタイポグラフィプロパティの豊富なセットへのアクセスを提供する。
・UIElementParagraphResult − 完全にUIElementから構成される段落のParagraphResult。Floaters、Figures、および組み込みブロックレベルUIElementsに使用される。
・Underline − InlineElementから派生したUnderline要素を実装する。
下記のリストに、System.Windows.Documents名前空間に関連するインターフェース例が含まれる。
・IDocumentContentHost − コンテンツホストの子が、コンテンツが変更されるときにホストに通知するようにするために、コンテンツホストでこのインターフェースを実装する。
・IDocumentFormatter − 自動ページ繰りなどの文書機能のサポートを提供する要素上でこのインターフェースを実装する。
・ITextDocumentResult − 文書の列情報を維持するためにこのインターフェースを実装する。
・ITextParagraphResult − テキスト段落に関するテキスト情報および位置情報を提供するために、このインターフェースを実装する。
下記のリストに、System.Windows.Documents名前空間に関連する列挙例が含まれる。
・ElementEdge − これは、TextPositionが配置されるオブジェクトのエッジを識別する。
・FindAdvancedOptions − FindAlgorithm(検索初期化)クラスおよびTextRangeMovable/TextSelection(単純化された検索実行)クラスによって使用される高度な検索オプション。
・FindOptions − TextBox.Findメソッドによって使用される単純化された検索オプション。
・LogicalDirection − LogicalDirectionは、テキスト内の移動の論理方向を定義する。これは、コンテンツがTextPositionに挿入されるときにTextPositionを移動する先を決定するのに使用される。
・TextArrayRunType − これは、LogicalDiretionを考慮に入れて、TextPositionが配置される実行(run)を識別する。
・TextChangeOptions − CanChangeTextの可能なテキスト変更。
・TextMoveOptions − ナビゲーションを停止する条件を指定することによって、TextNavigatorの移動を制御する。
下記のリストに、System.Windows.Documents名前空間に関連する委任例が含まれる。
・ObjectCloneDelegate − TextArrayの一部がコピーまたは移動されるときにDependencyObjectのクローンまたはコピーを提供するコールバックメソッド。
・TextChangedEventHandler − TextChangedEventHandler委任は、コンテンツがTextTreeに追加されるか除去されるたびに、TextChangedEventArgsを用いて呼び出される。
(Shapes名前空間)
Shapes名前空間314は、イメージおよびオブジェクトの作成に使用されるベクトルグラフィックス要素のコレクションである。ベクトルグラフィックス要素の使用によって、要素のサイズを簡単に変更して、特定のインターフェースまたはディスプレイ装置の要件に合わせることができるようになる。要素例に、楕円を描画する「Ellipse」要素、2つの点の間に直線を描く「Line」要素、長方形を描く「Rectangle」要素、および閉じた形状を形成する接続された一連の直線として多角形を描く「Polygon」要素が含まれる。
下記のリストに、System.Windows.Shapes名前空間によって公開されるクラス例が含まれる。
・Ellipse − 楕円を描く。
・Glyphs − 「XAML」などのマークアップ言語のグリフ形状を表す。グリフは、フォントを表すのに使用される。
・Line − 2つの点の間に直線を描く。
・Path − 一連の接続された直線および曲線を描く。
・Polygon − 多角形(閉じた形状を形成する接続された一連の線)を描く。
・Polyline − 一連の接続された直線を描く。
・Rectangle − 長方形を描く。
・Shape − 楕円、多角形、および長方形などの形状要素の基本的機能性を提供する抽象クラス。
(Data名前空間)
Data名前空間316には、要素のプロパティをデータソース、データソースクラス、ならびにデータコレクションおよびビューのデータ固有実施形態にバインドするのに使用されるクラスおよびインターフェースが含まれる。これらのクラスおよびインターフェースは、データ入力の例外を処理するのにも使用され、さまざまなデータソース内の情報に基づいてユーザインターフェースのランタイム作成を可能にする。データは、テキスト形式で表示することができ、あるいは、金額がマイナスである場合にその金額を赤で表示するなど、ディスプレイのフォーマッティングを変更するのに使用することができる。クラス例に、ダイナミックプロパティユーザインターフェースとソースデータの間のバインディングを管理するバインディング宣言オブジェクトを表す「Bind」クラスと、XMLコンテンツノードへのデータバインディングのデータソースとして働く「XmlDataSource」クラスが含まれる。
オブジェクト指向アプリケーションは、通常、クラスによってデータを表し、そのクラスは、1つのデータの値およびそのデータに対して実行できる動作の両方を定義する。用語「データアイテム」は、1つのそのようなオブジェクトを指す。アプリケーションは、個々のデータアイテムまたはデータアイテムのコレクションを扱うことができる。アプリケーションは、3つの手段すなわち(a)ファイルシステム、リモートサーバ、データベースなどの外部ソースからのデータを対応するインメモリデータアイテムに変換し、修正されたデータアイテムをこれらのソースによって期待される形に変換する手段と、(b)データ中心ロジックおよびアプリケーション中心ロジックの組合せを使用してデータアイテムに作用する手段と、(c)データアイテムによって実施されるデータをユーザインターフェースを介してユーザに提示する手段とにおいてデータアイテムを使用することができる。Data名前空間316は、この第1および第3のタスクに関するサポートを提供する。
第1のタスクすなわち外部ソースからのデータの入手は、「データソース」オブジェクトによってサポートされる。データソースオブジェクトは、通常は、ページ規模またはアプリケーション規模のリソースとして定義され、データに対するゲートウェイとして働く。データソースによって、IDataSourceインターフェースが実装され、このインターフェースでは、Data名前空間内のクラスがデータを利用できる標準的な機構が定義される。特定のデータソースオブジェクトは、特定のソースに適当な機構を使用することによって、実際のデータを検索するロジックを実装する。一実施形態では、Data名前空間に、下記の4つのデータソースクラスが含まれる。
1.XMLとして表されるデータを検索するXmlDataSource
2.Microsoft(登録商標) SQLServerなどのSQLデータベースからデータを検索するSqlDataSource
3.WinFS(登録商標)サービスからデータを検索するWinFSDataSource
4.アプリケーションによって定義される任意のオブジェクトからデータを検索するObjectDataSource
アプリケーションは、専用ソースに合わせて調整されたそれ自体のデータソースクラスも定義することができる。
データソースクラスは、外部ソースからデータを検索し、バインディングクラスによる使用に適する1つまたは複数のデータアイテムに変換する責任を負う。データアイテムのコレクションが必要な場合には、アプリケーションは、Array、ArrayList、Hashtableなど.Net Frameworkからの標準コレクションクラスのいずれか、DatasetなどSystem.Data名前空間からのデータ中心コレクションクラスのいずれか、またはArrayListDataCollectionなどData名前空間からのデータ中心コレクションクラスを使用することができる。後者のクラスは、変更通知をサポートする、すなわち、アプリケーションが、アイテムを追加すること、アイテムを除去すること、コレクションをソートすることなどによってコレクションを変更するときに、そのコレクションが、通知を送る。バインディングクラスは、これらの通知をlistenし、ユーザインターフェースを自動的に更新して、変更を反映する。
データが、インメモリデータアイテムに変換されたならば、アプリケーションは、そのアイテムを使用して計算を実行することができ、計算の結果としてアイテムを修正することができる。これらのアクションは、データ中心動作(データアイテムクラスによって定義される)と、アプリケーション中心動作(アプリケーション自体によって定義される)との組合せを使用して実行される。アクションを、アプリケーションによって自動的にまたはユーザのアクションに応答して開始することができる。Data名前空間からの特殊サポートまたは協力は不要であり、これによって、アプリケーション内の論理とプレゼンテーションの明確な分離がもたらされる。
第3のデータ関連タスクであるユーザインターフェースを介するデータの提示は、Data名前空間の「バインディング」クラスによってサポートされる。これらのクラスによって、アプリケーションが、データアイテムプロパティ(ソース)とユーザインターフェースプロパティ(ターゲット)の間の対応(バインディング)を記述できるようになる。用語データバインディング(または単にバインディング)は、そのような対応の確立を指す。たとえば、アプリケーションは、TextboxコントロールのTextプロパティをデータアイテムのCustomerNameプロパティにデータバインドすることを選択することができる。それを行ったならば、コントロールが、カスタマの名前を自動的に表示し、アプリケーションがそのデータアイテムを変更するときに必ずディスプレイを更新し、ユーザがコントロールに新しい名前をタイプするときに必ずデータアイテムを更新する。
この種類の対応は、Bindクラスを使用して記述され、Bindingクラスを使用して実装される。任意の数のUIプロパティが、同一の記述(Bind)を共有することができるが、各プロパティは、その特定のインスタンスの状態を保持するそれ自体の独自のBindingを有する。この記述には、所望の対応に関する下記の情報が含まれる。
・Path − バインディングのソースとして使用されるデータアイテムプロパティの名前。これは、単純なプロパティ名、または「ShippingAddress.Line[2]」などのサブオブジェクトおよびインデクサを伴うより複雑な式(たとえば、ソースプロパティが複合型の値を有するとき)とすることができる。データソースがXMLであるときには、パスは、XPath式になる。
・BindType − 対応が、一方向、二方向、または1回であるかどうか。一方向バインディングでは、データアイテムに対する変更が、ユーザインターフェースプロパティの更新を引き起こし、データは、一方向すなわちソースからターゲットに流れる。二方向バインディングでは、データが両方向に流れ、一方向の挙動に加えて、ユーザインターフェースプロパティに対する変更が、データアイテムプロパティの更新を引き起こす。1度のバインディングでは、データアイテムプロパティが、ユーザインターフェースプロパティの初期化に使用されるが、変更は、どの方向にも伝搬されない。
・Source − ソースデータアイテムをどこで入手するかの記述。これは、データソースオブジェクトから、ある他のユーザインターフェース要素から、またはターゲット要素のDataContextプロパティの値からとすることができる。
・UpdateType − 二方向バインディングでいつソースプロパティを更新するか:Immediate、OnLostFocus、またはExplicitのいずれか。Immediate更新は、ユーザインターフェースプロパティが変更されるや否や行われる。OnLostFocus更新は、ターゲット要素がキーボードフォーカスを失うまで遅延され、これは、すべてのキーストロークの後の更新という出費を避けるために、TextBoxコントロールに適当である。Explicit更新は、アプリケーションがこれを明示的に呼び出すときに行われる。
・Transformer − IDataTransformerインターフェースを実装するオブジェクト。これは、アプリケーションに、ユーザインターフェースで使用する前にデータアイテムの値を修正する手段を与える。修正は、単純な型変換(たとえば、BackgroundプロパティのBalanceOwedデータプロパティに対するバインディングで、アプリケーションが、マイナスの残高を赤の背景に、プラスの残高を緑の背景に変換することができる)、またはアプリケーション固有の変換(たとえば、TextプロパティのNetWorthデータプロパティに対するバインディングにおいて、アプリケーションが、NetWorthが100万ドルを超える場合に「Rich」、NetWorthが10万ドルと100万ドルの間の場合に「Bourgeois」、NetWorthが10万ドル未満の場合に「Poor」を表示することができる)とすることができる。Transformerは、データからの個別のプレゼンテーションを助ける、単純だが強力なツールである。
1度だけのバインディングを除く、すべてのバインディングは、対応する変更をユーザインターフェースに対して行えるようにするために、データプロパティが変化するときに通知されることに頼る。バインディングクラスは、要求された通知を実装する1つの手段として、IPropertyChangeインターフェース(System.ComponentModel名前空間から)を認識する。
以下に、System.Windows.Data名前空間によって公開されるメンバを示す。
<クラス>
ArrayListCollectionView − ArrayListDataCollectionコレクションクラスのコレクションビューサポートをカプセル化する。このクラスを継承することはできない。
ArrayListDataCollection − 基礎になるコレクション−ビューインターフェースを有するアレイリストデータコレクションの組込み実装を提供する。アイテムが追加されるとき、アイテムが除去されるとき、またはコレクション全体がリフレッシュされるときに通知を提供するICollectionChangeも実装する。
Bind − ダイナミックプロパティユーザインターフェース(UI)とソースデータの間のバインディングを管理するのに使用される、バインド宣言オブジェクトを表す。
Binding − バインディングの単一のランタイムインスタンスへのアクセスを提供する。このクラスを継承することはできない。
BindingListCollectionView − Microsoft(登録商標)ActiveX(登録商標)Data Objects(ADO)データビューに使用されるコレクションビュークラス。
CollectionContainer − このクラスのオブジェクトは、既存のコレクション構造体、たとえばArrayListDataCollectionまたは他のDataSetをItemCollection内に保持する。
ContextAffinityCollectionView − コンテキストアフィニティに関する検査を含むコレクションビューを実装する。
DataContextObjectRef − バインディング用のデータコンテキストとして使用されるオブジェクトに対するオブジェクト参照をサポートする。このクラスを継承することはできない。
DataSourceObjectRef − データソースに対するオブジェクト参照をサポートする。このクラスを継承することはできない。
DataTransferEventArgs − データ転送イベントの引数をカプセル化する。イベントは、特に、DataTransferEventHandler委任に基づいて指定されたハンドラによって処理されるルーティングされるイベントである。
ElementObjectRef − 要素に対するオブジェクト参照を表し、このオブジェクトは、その要素IDによって指定される。このクラスを継承することはできない。
ExplicitObjectRef − 要素に対する明示的なオブジェクト参照を表す。このクラスを継承することはできない。
ListCollectionView − IListに基づくコレクションのコレクションビューを実装する。
ObjectDataSource − データバインディング用のデータソースとして働く。バインド可能なデータアイテムを、共通言語ランタイム型として指定することができる。
ObjectRef − ElementObjectRef、ExplicitObjectRef、およびTypeObjectRefの親クラスとして使用される抽象クラス。
ParameterCollection − このクラスのオブジェクトは、SqlDataSourceに対する名前付きパラメータのコレクション(それに対応する値を伴う)を保持する。
QueryCommand − このクラスは、データベースにサブミットされる単一のselectステートメントを表す。
RefreshCompletedEventArgs − ObjectDataSourceのRefreshCompletedイベントまたはXmlDataSourceのRefreshCompletedイベントのいずれかで渡される引数をカプセル化する。
SqlCommandList − SQLコマンドと、書込に使用されなければならない表の名前のリスト。
SqlDataSource − SqlDataSourceは、データバインディングに使用されるMicrosoft(登録商標) SQL Serverからデータを得る。
TransformerSource − 現在のアプリケーションの分離コード(code-behind)として定義されるトランスフォーマクラスへのリソース参照を可能にする。
TypeObjectRef − 型によるオブジェクト参照をサポートする。このクラスを継承することはできない。
WinFSDataSource − WinFSDataSourceは、WinFS(登録商標)に保管されるデータのAvalon(登録商標)アプリケーションへのデータバインディングを容易にする。
XmlDataNamespaceManager − XPath照会をバインドするXMLデータにおいて使用される名前空間を宣言するのに使用されるXmlDataNamespaceManagerクラス。
XmlDataSource − 拡張マークアップ言語(XML)コンテンツノードへのデータバインディングのデータソースとして働く。
XmlNamespace − XMLデータソース内の個々の名前空間を宣言する。
<インターフェース>
IContains − コレクションビューのフィルタリング基準を宣言するクラスを作成するのに使用される。
IDataSource − データソースオブジェクトの作成をサポートする。データソースオブジェクトは、データバインディング用のデータの共通の表現に使用される。
IDataTransformer − 束縛データのクライアント側変換を可能にするメソッドを提供する。
<列挙>
BindFlags − バインディングの特殊プロパティを記述する。「Longhorn」マークアップ言語(コードネーム「XAML」)使用法のUsing Bind Declarationsを参照されたい。バインディングタイプ(一方向、二方向など)の指定に使用される列挙については、BindTypeを参照されたい。
BindStatus − バインディングの状況。
BindType − データ値の変化が、バインディングのソースプロパティおよびターゲットプロパティの間でどのように転送されるかを記述する。
SqlDataSourceMode − SqlDataSourceが有することができる可能なモードの列挙。このモードによって、アプリケーションがDataプロパティから値を検索するときに返されるデータの種類が決定される。
UpdateType − データソースに対する更新(ターゲットからソースへのデータ転送)がバインディングにおいて行わなければならないときを指定する。この値を設定することは、バインディングのBindTypeにTwoWayが設定されている(またはデフォルトのままにされている)場合に限って適切である。
<委任>
DataChangedEventHandler − IDataSourceを実装するデータソースによって引き起こされるDataChangedイベントを処理するメソッドを表す。
DataTransferEventHandler − Bindingによって引き起こされるデータ転送イベントを処理するメソッドを表す。
RefreshCompletedEventHandler − ObjectDataSource.RefreshCompletedイベントおよびXmlDataSource.RefreshCompletedイベントを処理するメソッドを表す。
(Media名前空間)
Media名前空間318は、さまざまな媒体クラスを提供する。アプリケーション設計者ならびにコンポーネント開発者は、このクラスを使用して、さまざまなプレゼンテーション機能性を開発することができる。Media名前空間318のクラス例に、あるイメージングエフェクト(たとえば、ブラーおよびグレイスケール)を可能にする「ImageEffect」クラス、および単色、グラディエント、イメージ、ビデオ、および類似物を使用する領域の塗潰しの機構を提供する「Brush」クラスが含まれる。
Media名前空間318には、開発者がプロパティをアニメーションにし、アニメーションのセットをタイムラインのセットと調整することを可能にするサービスを含むサブ名前空間System.Windows.Media.Animationが含まれる。アニメーションは、期間にわたって値を変更するオブジェクトである。アニメーションエフェクトに、ディスプレイ上のオブジェクトの移動、およびオブジェクトのサイズ、形状、または色の変更が含まれる。複数のアニメーションクラスが、さまざまなアニメーションエフェクトを実装するために提供される。エフェクトは、アニメーションを要素のプロパティ値に関連付けることによって達成される。たとえば、ビューにフェードインし、フェードアウトする長方形を作成するために、1つまたは複数のアニメーションが、長方形の不透明度プロパティに関連付けられる。
Media名前空間318には、さまざまなテキストサービスを提供するサブ名前空間System.Windows.Media.TextFormattingも含まれる。たとえば、「TextFormatter」テキストエンジンは、テキスト行を改行し、ディスプレイに提示されるテキストをフォーマットするサービスを提供する。「TextFormatter」は、異なるテキスト文字フォーマットおよび段落スタイルを処理でき、国際テキストレイアウトを処理することができる。
以下に、System.Windows.Media名前空間によって公開されるメンバ例をリストする。
<クラス>
ArcSegment − 2つの点の間の楕円の弧を表す。
AudioData − 時間ノードの状態に従ってオーディオファイルを再生できるようにする。
AudioDataConverter − AudioDataConverter。
BezierSegment − 2つの点の間に描かれる3次ベジエ曲線を表す。
Brush − 単色(SolidColorBrush)、グラディエント(LinearGradientBrush、RadialGradientBrush)、イメージ(ImageBrush)、ビデオなどを使用して領域を塗り潰す一般的な手段を提供する。
BrushConverter − Brushオブジェクトと別のオブジェクト型の間の変換に使用される。
Brushes − 事前定義の単色のセットを実装する。
CloseSegment − PathFigureオブジェクトの最後の点をその開始点に接続する線を表す。
CodecFilter − コーデックを列挙するフィルタ。プロパティに一致するコーデックだけを列挙する。
CodecInfo − 特定のコーデックおよびそのコーデックを作成するファクトリに関する情報。これは、コーデック列挙子から返される。
ColorCollection −
ColorCollectionConverter − ColorCollectionConverter − ColorCollectionインスタンスに対する、およびColorCollectionインスタンスからのインスタンス変換のコンバータクラス。
ColorContext −
ColorConverter − Colorオブジェクトへの変換と、別のオブジェクト型からの変換とに使用される。
Colors − 事前に定義された色のセットを実装する。
ContainerVisual − Visualオブジェクトのコレクションを管理する。
DashArrays − DashArrays − DashArraysクラスは、静的であり、周知のダッシュスタイルのためのプロパティが含まれる。
DoubleCollection −
DoubleCollectionConverter − DoubleCollectionConverter − DoubleCollectionインスタンスに対する、およびDoubleCollectionインスタンスからのインスタンス変換のコンバータクラス。
Drawing − Drawingは、2次元ドローイングプリミティブのリストである。
DrawingBrush − DrawingBrush − このTileBrushは、その内容をDrawingとして定義する。
DrawingContext − ドローイングコンテキスト。
DrawingVisual − 描画されるグラフィカルコンテンツを含むビジュアル。
EllipseGeometry − 円または楕円の幾何形状を表す。
FontFamily − フォントファミリ。
FormattedText − FormattedTextクラスは、Avalon(登録商標) MILイージーテキストAPIの一部であり、ある単純なテキストをMILビジュアルに追加することを必要とするプログラマをターゲットとする。
Geometry − EllipseGeometry、RectangleGeometry、およびPathGeometryなどのすべてのGeometryクラスの基本的な機能性を提供する抽象クラス。オブジェクトのGeometryクラスは、2次元グラフィックデータのクリッピング、ヒットテスト、およびレンダリングに使用することができる。
GeometryCollection − Geometryオブジェクトのコレクションを表す。
GetPageEventArgs − GetPageEventArgsクラス。
GlyphRun − グリフランクラス。
GlyphTypeface − 物理フォントフェースは、ディスク上のフォントファイルに対応する。
GradientBrush − グラディエント塗潰しを記述する抽象クラス。GradientBrushから派生したクラスは、グラディエントストップを解釈する異なる手段を記述する。
GradientStop − グラディエントの推移ポイントのロケーションおよび色を記述する。
GradientStopCollection − GradientStopグラディエントストップのコレクションを表す。
HitTestParameters − これは、ヒットテストパスのパラメータを共にパックする基本クラスである。
HitTestResult − この基本クラスは、ヒットテストパス中にヒットしたビジュアルを返す。
HwndInterop − HwndInterop。
HwndVisual −
HyphenationCandidate − 1つのHyphenation候補を記述する。
ICCProfile −
ImageBrush − イメージによって領域を塗り潰す。このクラスは、他のオブジェクトの塗潰し、または背景としてイメージを指定するのに使用することができる。
ImageCodecCollection − システムのコーデック(実際にはCodecInfos)のコレクション。
ImageCodecEnumerator − イメージフレームの列挙子。
ImageColorTransform − ImageColorTransformは、イメージングパイプラインでのカラー管理を実行する。
ImageData − イメージおよび関連データを含む。
ImageDataBuilder − このオブジェクトは、ImageDataオブジェクトの構築に使用される。
ImageDecoder − ImageDecoderは、イメージフレームのコンテナである。各イメージフレームは、ImageSourceである。ImageSourceと異なって、ImageDecoderは、不変オブジェクトでは「なく」、異なるイメージストリームに再初期化することができる。しかし、ImageDecoderが返すImageSources(フレーム)は、不変でなければならない。
ImageDecoderBmp − 組込みMicrosoft(登録商標) Bmp(Bitmap)デコーダ。
ImageDecoderGif − 組込みMicrosoft(登録商標) GIFデコーダ。
ImageDecoderIcon − 組込みMicrosoft(登録商標)アイコンデコーダ。
ImageDecoderInternal − 内部使用専用。
ImageDecoderJpeg − 組込みMicrosoft(登録商標) Jpegデコーダ。
ImageDecoderPng − 組込みMicrosoft(登録商標) PNGデコーダ。
ImageDecoderTiff − 組込みMicrosoft(登録商標) Tiffデコーダ。
ImageEffect − ImageEffectクラスは、すべてのイメージングエフェクト(ブラー、グレイスケールなど)の基本クラスである。エフェクトが入力を有しないことが可能であるが、エフェクトは、少なくとも1つの出力を有しなければならない。デフォルト実装の状況は、これを前提とする。派生エフェクトが、出力だけで動作する場合には、必ず少なくとも1つの出力があるようにすること。
ImageEffectBlur − ガウシアンブラーエフェクト。これは、単一入力単一出力のエフェクトである。警告:このエフェクトがスケーリングされ(すなわち、Input.ScaleXまたはInput.ScaleYが1でない)、Expandが真である場合に、出力寸法が、PixelWidthおよびPixelHeightより大きいか小さくなる可能性がある。問題を避けるために、コピーに供給されるピクセルバッファを調整すること。
ImageEffectFlipRotate − このエフェクトは、XまたはYでイメージを反転し、90°の倍数だけ回転することができる。
ImageEffectGammaCorrect − このエフェクトは、イメージのガンマを変更する。
ImageEffectGlow − グローエフェクトを実行する。これは、単一入力単一出力のエフェクトである。
ImageEffectGrayscale − イメージをグレイスケールに変換する。これは、単一入力単一出力のエフェクトである。
ImageEffectNegate − イメージをネゲートする。これは、単一入力単一出力のエフェクトである。
ImageEffectSharpen − アンシャープマスク。これは、単一入力単一出力のエフェクトである。
ImageEffectSource − ImageEffectSourceクラス実装。
ImageEffectSourceCollection − イメージエフェクト出力のコレクション。
ImageEffectTint − 明度コンストラクタ。これは、単一入力単一出力のエフェクトである。
ImageEncoder − ImageEncoderは、関連するサムネイルおよびメタデータと共にフレーム(ImageSourceの)のセットを集め、これらを指定されたストリームに保管する。コーデックがサポートする場合、フレーム固有のサムネイルおよびメタデータのほかに、イメージ全体の(グローバル)サムネイルおよびメタデータを設けることができる。
ImageEncoderBmp − Bmpファイル用の組込みエンコーダ。
ImageEncoderGif − Gifファイル用の組込みエンコーダ。
ImageEncoderInternal − ImageEncoderInternalは、関連するサムネイルおよびメタデータと共にフレーム(ImageSourceの)のセットを集め、これらを指定されたストリームに保管する。コーデックがサポートする場合、フレーム固有のサムネイルおよびメタデータのほかに、イメージ全体の(グローバル)サムネイルおよびメタデータを設けることができる。
ImageEncoderJpeg − Jpegファイル用の組込みエンコーダ。
ImageEncoderPng − Pngファイル用の組込みエンコーダ。
ImageEncoderTiff − Tiffファイル用の組込みエンコーダ。
ImageExchangeMetaData − ImageExchangeMetaData。このクラスは、Exifスタイルメタデータを有するImageFilesのメタデータのアクセスおよび設定に使用される。MetaDataは、Key/Value対として保管され、Keysは、必ずしも一意でない。このクラスは、イメージ内のすべてのメタデータへの一般的アクセスを提供し、ある周知のプロパティのCLRプロパティを公開する。
ImageExchangeProperty − ImageExchangeProperty − ImageExchangeIDとそのプロパティの値であるオブジェクトとのタプル。
ImageMetaData − ImageMetaData。このクラスは、Imageのメタデータのアクセスおよび設定に使用される。このクラスは、CodecMetaDataプロパティも公開し、CodecMetaDataプロパティは、このイメージのメタデータにアクセスするコーデック固有の手段を公開する。
ImagePalette − ImagePaletteクラス。
ImageSizeOptions − イメージのサイズ設定オプション。結果のイメージは、これらのオプションに基づいてスケーリングされる。
ImageSource − デコーダおよびエフェクトを含む、イメージングパイプラインのメソッド、プロパティ、およびイベントを定義する。
ImageSourceCollection − システムのコーデック(実際にはImageSourceの)のコレクション。
ImageSourceConverter − ImageSourceConverter。
IntegerCollection −
IntegerCollectionConverter − IntegerCollectionConverter − IntegerCollectionインスタンスに対する、およびIntegerCollectionインスタンスからの他の型のインスタンス変換のコンバータクラス。
LinearGradientBrush − 領域の塗潰しに使用されるリニアグラディエントを定義する。
LineGeometry − 線のジオメトリを表す。
LineSegment − 2つの点の間の線を表す。LineGeometryオブジェクトと異なって、LineSegmentは、PathFigureに含まれなければならない。
MatrixTransform − 2次元平面内のオブジェクトまたは座標系を操作するのに使用される任意のアフィン行列変換を作成する。
MediaData − MediaData。オーディオ/ビデオコンテンツの再生に使用される。
MediaSystem − MediaSystemクラスは、媒体プレイヤを制御する。
NineGridBrush − 領域全体をイメージで塗り潰す。イメージの諸部分を、定義されたマージン内におさまるように引き延ばす。
PathFigure − ジオメトリのサブセクションすなわち、単一の接続された一連の2次元ジオメトリセグメントを表す。
PathFigureCollection −
PathFigureConverter − PathFigureConverter。
PathGeometry − 円弧、曲線、楕円、直線、および長方形からなるものとすることができる複雑な形状を表す。
PathGeometryConverter − PathGeometryConverter。
PathSegment − PathFigureオブジェクトのセグメントを表す抽象クラス。ArcSegment、BezierSegment、およびLineSegmentなどのPathSegmentから派生するクラスは、特定の型のジオメトリセグメントを表す。
PathSegmentCollection − PathSegmentオブジェクトのリストを表す。
PathSegmentConverter − PathSegmentConverter。
Pen − 形状の輪郭を描く方法を記述する。
PixelFormats − PixelFormats − サポートされるピクセルフォーマットのコレクション。
PointCollection −
PointCollectionConverter − PointCollectionConverter − PointCollectionインスタンスに対する、およびPointCollectionインスタンスからの他の型のインスタンス変換のコンバータクラス。
PointHitTestParameters − これは、点とのヒットテストのパラメータを指定するクラスである。
PointHitTestResult − このクラスは、点と、ヒットテストパス中のビジュアルヒントを返す。
PolyBezierSegment − PolyBezierSegment。
PolyLineSegment − PolyLineSegment。
PolyQuadraticBezierSegment − PolyQuadraticBezierSegment。
PrintContext − PrintContextは、プリンタ相互作用の状態およびコンテキストを保持する。
QuadraticBezierSegment − QuadraticBezierSegment。
RadialGradientBrush − オブジェクトを塗り潰すのに使用されるラジアルグラディエントを定義する。焦点が、グラディエントの開始を定義し、円が、グラディエントのエンドポイントを定義する。
RectangleGeometry − 長方形のジオメトリを表す。
RetainedVisual − RetainedVisual。
RotateTransform − 2次元x−y平面内の指定された点の回りでオブジェクトを回転するのに使用される。
ScaleTransform − 定義された中心点から始めて、2次元x−y平面内でオブジェクトをスケーリングする。スケールファクタは、この中心点からx方向およびy方向で定義される。
SkewTransform − 2次元スキューを表す。
SolidColorBrush − 単色の均一な塗潰しを表す。
StartSegment − StartSegment。
SubLineCollection − サブラインのコレクション。サブラインは、型GlyphRun、LineOver、Inlineオブジェクトのうちの1つのオブジェクトとすることができる。
TileBrush − 1つまたは複数の「タイル」で領域を塗り潰す方法を記述する抽象クラス。派生クラスでは、使用できる異なる型のタイルが定義される。たとえば、ImageBrushでは、領域をイメージで塗り潰すことができる。
Transform − 回転(RotateTransform)、スケーリング(ScaleTransform)、スキュー(SkewTransform)、および並進(TranslateTransform)を含む、2次元平面内のすべての型の変換の親クラスとして使用される抽象クラス。これがクラスであり、アニメーションセマンティックスおよび列挙セマンティックスの両方をサポートするので、このクラス階層は、Matrix構造体とは異なる。
TransformCollection − Transformオブジェクトのリストを作成し、操作するのに使用される。
TransformConverter − 別のオブジェクト型への、および別のオブジェクト型からのTransformオブジェクトの変換に使用される。
TranslateTransform − オブジェクトを2次元x−y平面内で並進させる。
Typeface − Typefaceは、ファミリ、ウェイト、スタイル、およびストレッチの組合せである。
VectorCollection −
VectorCollectionConverter − VectorCollectionConverter − VectorCollectionインスタンスに対する、およびVectorCollectionインスタンスからの他の型のインスタンス変換のコンバータクラス。
VideoData − 時間ノードの状態に従ってビデオファイルを再生できるようにする。
VideoDataConverter − VideoDataConverter。
Visual − すべてのVisual型の基本クラス。ヒットテスト、座標変換、および境界ボックス計算を含むすべてのVisualに共通するサービスおよびプロパティを提供する。
VisualCollection − Visualオブジェクトの順序付きコレクション。
VisualManager − ビジュアルオブジェクトのツリーを、レンダリングターゲット(通常はウインドウ)にレンダリングする。
<インターフェース>
IHyphenate − IHyphenateは、ハイフネーションサービスプロバイダのインターフェースである。
IRetainedRender − このインターフェースが、RetainedVisualから派生したクラスにおいて実装される場合には、RetainedVisualが、検証モードで動作する、すなわち、グラフィックスサブシステムが、レイジーな仕方でOnRenderを呼び出す(たとえば、Visualがスクリーンに初めて表示される場合)。システムがいつでもOnRenderを呼び出せることに留意されたい。
IVisual − このインターフェースでは、Visualオブジェクトから使用可能な共通のメソッドおよびサービスが定義される。
<列挙>
BrushMappingMode − BrushMappingMode − ある値を絶対値ローカル座標と考えなければならないか、境界ボックスのサイズの倍数と考えなければならないかを記述する列挙。
ChannelDescription − ピクセルデータの各チャネルの順序を記述する。
ColorInterpolationMode − ColorInterpolationMode − グラディエント内の色を保管する方法を決定する。
CombineMode − 2つの幾何学的領域を組み合わせるために使用されるメソッドを指定する。
FillRule −
GradientSpreadMethod − 指定されたグラディエントベクトルまたは空間の外でグラディエントを描画する方法を指定する。
HitTestFilterBehavior − ヒットテスト中のビジュアルのフィルタリングの挙動。
HitTestResultBehavior − 列挙が、肯定のヒットがヒットテスト中に発生するときの挙動を制御する。
HorizontalAlignment − HorizontalAlignment列挙型は、コンテナ内でコンテンツを水平に位置決めする方法を記述するのに使用される。
HyphenationRule − サポートされるハイフネーションルール。
ImagePaletteType − 事前定義のパレット型。
MediaState − 媒体の現在の状態を保持する。
PenDashCap − PenDashCap − 破線の線の終端の描画を記述する列挙。
PenLineCap − 線またはセグメントの終端の形状を記述する。
PenLineJoin − PenLineJoin − 線の角の描画を記述する列挙。
Rotation − 適用される回転。90°の倍数だけがサポートされる。
StandardColorSpace −
Stretch − Stretch − 宛先長方形におさまるようにソース長方形を引き延ばす方法を記述する列挙。
StyleSimulations − フォントスタイルシミュレーション。
TiffCompressOptions − TIFFイメージの保存に関する圧縮オプション。
TileMode − TileMode − 線の終端の描画を記述する列挙。
VerticalAlignment − VerticalAlignment列挙は、コンテナ内でコンテンツを垂直に位置決めする方法を記述するのに使用される。
<構造体>
CharacterIndexer − このクラスは、文字の名前付きインデックスを実装するヘルパである。
Color − アルファ、赤、緑、および青のチャネルに関して色を表す。
GlyphIndexer − このクラスは、グリフメトリックスの名前付きインデックスを実装するヘルパである。
ImageExchangeID − ImageExchangeID − このクラスは、ImageMetaDataインスタンス内のプロパティのキーとして使用できる型である。これは、整数またはストリングのいずれかとすることができる。
ImageExchangeMetaDataEnumerator − ImageExchangeMetaDataEnumerator。ImageExchangeMetaDataの列挙子。IEnumeratorインターフェースならびにAPIの強く型付けされたバージョンを含む。
ImageFrameEnumerator − イメージフレームの列挙子。
ImageMetaDataRational − ImageMetaDataRationalクラスは、符号付き分子および符号付き分母として表される。有理数の有効な値は、分子/分母である。
ImageMetaDataUnsignedRational − 有理数クラスは、符号なしの分子および符号なしの分母として表される。有理数の有効な値は、分子/分母である。
ImagePaletteColor − ImagePaletteColor構造体。
IntegerRect − 整数値から構成される長方形。通常は、イメージから、関心を持たれているソース長方形(ピクセル単位)を指定するのに使用される。
Matrix − 2次元空間内の変換に使用される3×3行列を表す。「Avalon」は、アフィン変換だけを許容するので、Matrix構造体は、9つではなく6つのエントリを有する。
NamedStringIndexer − このクラスは、複数の文化でローカライズされるストリングの名前付きインデックスを実装するヘルパである。
PixelFormat − イメージおよびピクセルベースの表面のピクセルフォーマット定義。
<委任>
GetPageEventHandler − GetPageEventHandlerを委任する。
HitTestFilterDelegate − ビジュアルの子に対してテストするかどうかを制御するための、ヒットテスタに関する委任。
HitTestResultDelegate − ビジュアルに関するヒット情報の戻りを制御するための、ヒットテスタに関する委任。
以下に、System.Windows.Media.Animation名前空間によって公開されるメンバ例をリストする。
<クラス>
Animatable − DependencyObjectから派生したのではないが、アニメーションにすることができるプロパティを有するクラスのすべては、このクラスから派生されなければならない。
AnimationCollection − この抽象クラスは、ColorAnimationCollection、DoubleAnimationCollection、およびSizeAnimationCollectionなどのアニメーションコレクションの基礎の機能性を提供する。
AnimationEffect − レンダリング時に複数の要素のアニメーションをインスタンス化するためにレンダリングプロセスに参加することができる要素レベルアニメーションを実装するには、このクラスをオーバーライドする。
AnimationEffectCollection − AnimationEffectsのコレクションを保持する。
BoolAnimationCollection − BoolModifierアニメーションのコレクションを表す。
BoolModifier −
BoolTimedModifier −
ByteAnimationCollection − BoolModifierアニメーションのコレクションを表す。
ByteModifier −
ByteTimedModifier −
CharAnimationCollection − CharModifierアニメーションのコレクションを表す。
CharModifier −
CharTimedModifier −
ColorAnimation − プロパティのカラー値をアニメーション表示にする。
ColorAnimationCollection − ColorModifierアニメーションのコレクションを表す。
ColorKeyFrameCollection −
ColorModifier −
ColorTimedModifier −
DecimalAnimationCollection − DecimalModifierアニメーションのコレクションを表す。
DecimalModifier −
DecimalTimedModifier −
DoubleAnimation − Double値を受け入れるプロパティのアニメーション表示に使用される。
DoubleAnimationCollection − DoubleModifierアニメーションのコレクションを表す。
DoubleKeyFrameCollection −
DoubleModifier −
DoubleTimedModifier −
FloatAnimation − Single値を受け入れるプロパティのアニメーション表示に使用される。
FloatAnimationCollection − FloatModifierアニメーションのコレクションを表す。
FloatKeyFrameCollection −
FloatModifier −
FloatTimedModifier −
IntAnimationCollection − IntModifierアニメーションのコレクションを表す。
IntModifier −
IntTimedModifier −
LengthAnimation − Length値を受け入れるプロパティのアニメーション表示に使用される。
LengthAnimationCollection − LengthModifierアニメーションのコレクションを表す。
LengthKeyFrameCollection −
LengthModifier −
LengthTimedModifier −
LongAnimationCollection − LongModifierアニメーションのコレクションを表す。
LongModifier −
LongTimedModifier −
MatrixAnimationCollection − MatrixModifierアニメーションのコレクションを表す。
MatrixModifier −
MatrixTimedModifier −
Modifier −
ObjectAnimationCollection − ObjectModifierアニメーションのコレクションを表す。
ObjectModifier −
ObjectTimedModifier −
PathAnimation − このアニメーションは、パスに沿ってビジュアルオブジェクトを移動するために、MatrixAnimationCollectionの内部で使用することができる。
PointAnimation − Point値を受け入れるプロパティのアニメーション表示に使用される。
PointAnimationCollection − PointModifierアニメーションのコレクションを表す。
PointKeyFrameCollection −
PointModifier −
PointTimedModifier −
RectAnimation − Rect値を受け入れるプロパティのアニメーション表示に使用される。
RectAnimationCollection − RectModifierアニメーションのコレクションを表す。
RectKeyFrameCollection −
RectModifier −
RectTimedModifier −
ShortAnimationCollection − ShortModifierアニメーションのコレクションを表す。
ShortModifier −
ShortTimedModifier −
SizeAnimation − オブジェクトのSizeに基づくアニメーションを定義する。Size情報を提供することによって、オブジェクトを、ある期間にわたって縮小または拡大されて見えるようにすることができる。
SizeAnimationCollection − SizeModifierアニメーションのコレクションを表す。
SizeKeyFrameCollection −
SizeModifier −
SizeTimedModifier −
StringAnimationCollection − StringModifierアニメーションのコレクションを表す。
StringModifier −
StringTimedModifier −
Timeline − タイムド(timed)オブジェクトのランタイムタイミング状態を維持する。
TimelineBuilder − Timelineオブジェクトを作成するのに使用されるオブジェクト。
TimeManager − タイミングツリー全体を制御するオブジェクト。
TimeSyncValueTypeConverter − TimeSyncValue値を伴う型変換を実行するオブジェクト。
TimeTypeConverter − Time値を伴う型変換を実行するオブジェクト。
VectorAnimation − Vector値を受け入れるプロパティのアニメーション表示に使用される。
VectorAnimationCollection − VectorModifierアニメーションのコレクションを表す。
VectorKeyFrameCollection −
VectorModifier −
VectorTimedModifier −
<インターフェース>
IClock − 線形時間値を提供できるオブジェクトを表す。
IModifier − モディファイヤオブジェクトの基本的な挙動を定義する。モディファイヤは、ベース値と呼ばれる、ある型のオブジェクトをとり、出力として、同一の型の別のオブジェクトを返すオブジェクトである。
ITimingControl − タイムラインオブジェクトおよびタイムドオブジェクトの挙動を定義する。
ITimingControlBuilder − タイムラインテンプレートを作成できるオブジェクトを表す。
<列挙>
AnimationType − アニメーションの挙動を記述する。
CloneType − CloneCoreが要求できるクローンの型。
InterpolationMethod − アニメーションがその出力値を計算する方法を記述する。
KeyTimeType − KeyTimesの異なる型。
TimeEndSync − コンテナが子の持続時間に基づいてその単純持続時間を計算する方法を指定する、endSync属性の値。
TimeFill − タイムラインが、アクティブでなくなった後にどのように振る舞うかを指定する。
TimeRestart − Timeline.Restart属性の値。
TimeSeekOrigin − タイムライン位置を示す。オフセットが適用される位置を定義することによって、ITimingControlインターフェースのSeekメソッドの挙動を指定するのに使用される。
TimeSyncBase − 開始値または終了値が同期化されるイベント。
<構造体>
ColorKeyFrame −
DoubleKeyFrame −
FloatKeyFrame −
KeySpline − このクラスは、アニメーションフラグメントのKeySplinesプロパティにキースプラインの配列を渡すのに使用される。
KeyTime − KeyTimeは、KeyFrameが行われるアニメーションの時刻に関する時間を指定するのに使用される。
LengthKeyFrame −
PointKeyFrame −
RectKeyFrame −
SizeKeyFrame −
Time − 時間の算術演算に関連する時間を表す値。
TimelineEnumerator − TimelineListコレクションのアイテムを列挙する。
TimeSyncValue − タイムラインの開始時刻または終了時刻の絶対値または相対値を表す値。
VectorKeyFrame −
以下に、System.Windows.Media.TextFormatting名前空間によって公開されるメンバ例をリストする。
<クラス>
InlineObjectInfo − インラインテキストオブジェクトの測定詳細を提供する。フォーマットするクライアントは、このオブジェクトをパラメータとしてGetInlineObjectInfoメソッドに渡す。
TextFormatter − TextFormatterは、「Avalon」テキストエンジンであり、テキストをフォーマットし、テキスト行を分割するサービスを提供する。TextFormatterは、異なるテキスト文字フォーマットおよび段落スタイルを処理することができ、TextFormatterには、国際テキストレイアウトのサポートが含まれる。
TextHighlightBounds − テキスト範囲の境界。
TextInfo − クライアントのテキストソースの文字ストア内のテキストのブロックに関する情報を表す。
TextLine − テキストの行に対するサービスを提供する。テキストの行を操作し、フォーマットするサービスを実施するには、このクラスを継承する。これは、抽象クラスである。
TextMarkerGeneratedContent − 行リストマーカー出力を生成する。
TextMarkerInfo − 段落のリストマーカーのスタイルおよび型を定義する。フォーマットするクライアントは、このクラスをパラメータとして使用して、マーカー詳細をGetTextMarkerInfoメソッドに供給する。
TextParagraphProperties − フロー方向、位置合わせ、インデントなど、段落の間で段落に変更できるプロパティを表す。
TextRun − 単一のプロパティセットを共有する文字のシーケンスを定義する。フォーマットするクライアントは、TextFormatterがTextRun詳細をパラメータとしてGetTextRunに渡すときに、このクラスにTextRun詳細を供給する。
TextRunBounds − テキストランの境界。
TextRunCache − 性能を高めるために、TextFormatterオブジェクトにキャッシングサービスを提供する。
TextRunClientData − TextRunに関連するクライアント情報データを表す。
TextRunProperties − あるTextRunからタイプフェースまたはフォアグラウンドブラシなどの別のものへ変更できるプロパティを提供する。これは、抽象クラスである。
TextRunTypographyProperties − TextRunのタイポグラフィプロパティを提供する。プロパティのこのクライアントセットによって、OpenTypeレイアウトエンジンによって処理される特徴のセットが生成される。
TextSource − 文字データおよびフォーマッティングプロパティをTextFormatterに供給する。TextSource内のテキストへのアクセスのすべてが、GetTextRunメソッドを介して達成され、GetTextRunメソッドは、クライアントが、クライアントが選択する任意の形でテキストを仮想化できるようにするように設計されている。これは、抽象クラスである。
TextTrimmingInfo − テキストトリミング特性の記述を提供する。フォーマットするクライアントは、TextFormatterがGetTextTrimmingInfoメソッドのパラメータとしてトリミング詳細を渡すときに、このクラスにトリミング詳細を書き込む。
<列挙>
TextParagraphFlags − 段落の特性を記述するフラグ。
TextRunCacheFlags − テキストランキャッシュ内のコンテンツの種類。
TextRunType − TextRunの型を示す。
<構造体>
TextSourceCharacterIndex − TextSourceCharacterIndexは、テキスト内のキャレット位置または文字位置を表す。
(媒体統合レイヤ )
媒体統合レイヤ(MIL)は、開発者およびプログラマが、単純な方法でアプリケーション内においておそらくは複雑な合成エフェクトを達成すると同時に、普通のアプリケーション性能に悪影響を及ぼさない方法でグラフィック処理ユニットを活用するAPIを提供する。MILの一態様は、異なる媒体型(2次元、3次元、ビデオ、オーディオ、テキスト、イメージングなど)を組み合わせ、共にスムーズにシームレスにアニメーション表示する能力を提供する。
MILは、プログラム的インターフェースおよびスクリプト化されたインターフェースでの機能パリティを可能にするマルチステージ合成のグラフィックスアーキテクチャおよびプログラミングモデルを提供する。APIおよびスクリプトは、レンダリングされるときに合成されるが、より即時モードの性質を有する領域を含む、保持される構造またはシーンの記述を作成できるようにする。
このインターフェースを介して、MILは、ビジュアル情報を保管するデータ構造へのアクセスを提供し、その結果、アプリケーションが、コンピュータハードウェアによって提供されるグラフィックス機能を利用できるようになる。インターフェースは、要素オブジェクトモデルと、プログラムコード開発者がグラフィックスを作るためにシーングラフデータ構造と一貫してインターフェースできる方法で要素オブジェクトモデルを使用するためのベクトルグラフィックスマークアップ言語とに基づく。データ構造は、直接レンダリングのために、またはビジュアル情報を「コンパイル」し、その結果、高速な合成およびアニメーションのために低水準グラフィックスシステムに供給できるようにするために、使用することもできる。
ベクトルグラフィックス要素オブジェクトモデルは、一般に、形状要素および、シーングラフのシーングラフオブジェクトモデルに相関するイメージ要素およびビデオ要素を含む他の要素に対応する。マークアップは、要素ツリー内の要素を含むデータに解析することができ、この要素ツリーは、シーングラフデータ構造のオブジェクトに変換される。他のマークアップは、データおよびシーングラフオブジェクトを作成する呼出しに直接に変換することができる。マークアップ言語は、単純なストリングフォーマットまたは複雑なプロパティ構文を含む要素を記述する個別の方法を提供し、この要素は、名前を付けることができ、マークアップ内の他のロケーションでの再利用が可能になる。
MILの一態様は、固有の基礎レベル概念としてのアニメーションを提供する、APIセットにまたがるアニメーションおよびタイミングの統合である。スムーズなアニメーションを容易にするために、MILは、複数レベルのグラフィックス処理のシステムおよび方法(たとえばオペレーティングシステムの)を提供する。そのような複数レベルグラフィックス処理システムの1つに、ティックオンデマンドまたは低速ティック高水準コンポーネントと高速ティック(たとえば、グラフィックスハードウェアフレームリフレッシュレートでの)低水準コンポーネントとを含む、2つのコンポーネントが含まれる。一般に、高水準低頻度コンポーネントは、単純化されたデータ構造を低水準コンポーネントに渡すために、アニメーションパラメータの更新およびシーンデータ構造のトラバースという計算集中型の態様を実行する。低水準コンポーネントは、グラフィックスサブシステムのフレームリフレッシュレートなどの高い周波数で動作して、データ構造をグラフィックスサブシステムの一定の出力データに処理する。低水準処理には、アニメーションの各フレームのシーンをレンダリングするために瞬時値を入手するのに必要な、パラメータ間隔の補間が含まれる。
トップレベルMILオブジェクトには、ビジュアルツリーが含まれ、このビジュアルツリーは、描画されるメインコンテンツを含むオブジェクトである。コントロールは、このツリーのビジュアルから直接に導出される。ビジュアルは、装置および親コンテキストに依存しない。レンダターゲット(render target)は、ビジュアルが描かれる装置である。このオブジェクト(たとえば画面)は、それ自体のダーティ機構または無効化機構を有する。さまざまなレンダターゲットに、ウインドウ、Printer、Metafile、Surface、および「サブウインドウ」が含まれ、このサブウインドウは、シーンのうちで、シーンの残りとは別に描画される部分である。他のドローイング関連オブジェクトに、ビジュアルツリーをレンダターゲットに描くように構成されたオブジェクトを含むVisual Rendererと、ビジュアルツリーをレンダターゲットに描くべきときを知っているDisplay Schedulerオブジェクトが含まれる。Time Managerは、タイミングノードのセットに関するコンテンツオブジェクトであり、スケジューラがティックを呼び出すオブジェクトである。
ビジュアルAPIが設けられ、これは、本質的に、媒体統合レイヤを介する描画の開始点であり、Visual Treeを媒体に接続するVisualManagerオブジェクトを含むオブジェクトの複数の型が含まれる。VisualManagers(たとえば、Screen、Printer、およびSurface)の異なる型は、その特定の媒体へのVisual Treeのレンダリングの責任を負う。ビジュアルは、プログラマが描画を行う場所であり、ビジュアルツリー内のノードであり、プログラムが描画する場所を提供する。
DrawingContext APIは、Visualを移植する、またはImageDataにレンダリングされるビジュアルコンテンツを構成する方法に関するコンテキストベースのプログラミングモデルを提供する。DrawingContextクラスが提供され、DrawingContextを獲得し、RetainedVisual/DrawingVisualでビジュアルコンテンツを列挙するのに必要なクラスおよびエントリポイントも提供される。
ミュータビリティを有効にするために、共通のChangeable基本型から派生する、単一のセットの型が設けられる。ミュータビリティが所望の変化である任意の型は、Changeableクラスから導出することができる。たとえば、グラフィックスプログラミングで、オブジェクトモデルに、Brush、Pen、Geometry、FloatAnimation、GradientStop、Segmentなどが含まれる。IsChangeableプロパティによって、状態を定義する、その現在の値に応じて、Changeableオブジェクトを修正できるか否かが指定される。
ブラシは、平面を塗り潰す方法を表すオブジェクトである。絶対的な方法で平面を塗り潰すことができるほかに、媒体統合レイヤのブラシは、平面を塗り潰す方法を、塗り潰されるオブジェクトのサイズに対して相対的に適合させることもできる。ブラシの型の例に、SolidColorBrush、VisualBrush(ベクトルグラフィックスリソース/Visualを参照することができる)、DrawingBrush、LinearGradient、RadialGradient、ImageBrush、およびNineGridBrushが含まれる。あるブラシオブジェクトは、使用されるときに座標系にそれを関連させる方法のアイデアと、それと共に使用されるジオメトリの境界ボックスにそれを関連させる方法のアイデアを有する。このサイズは、ブラシが塗り潰しているオブジェクトに基づく。Brush基本クラスは、Transform、一般的な透明度、およびブレンドモードを有する。Brush(ならびに、ベクトルグラフィックスAPIおよびMIL APIの他のオブジェクトリソース)オブジェクトは、Changeableであり、作成後に書き込み可能であり、修飾された使用で使用された後にどのように振る舞うかに関して一般的なChangeableのパターンに従う。
オブジェクトのGeometryクラスは、PenおよびBrushを用いる2次元ベクトルベースデータのクリッピング、ヒットテスト、およびレンダリングに使用することができる。導出されたGeometryクラスは、より具体的な構築セマンティックスおよび列挙セマンティックスを有する。複数の形状固有Geometry型ならびにより複雑な形状Geometryの明示的定義を可能にする一般化されたPathGeometryが提供される。Geometryは、抽象基本クラスである。GeometryCollectionは、定義された領域での特定のCombineMode動作を使用して組み合わされた複数のGeometryオブジェクトのコレクションである。このオブジェクトを用いると、PathGeometry内の厳密なPathFigureオブジェクトを使用する可能性があることより容易に、Geometryオブジェクトのビジュアル組合せを構築できるようになる。
ImageSourceは、イメージングの基本構成要素を含む抽象クラスである。ImageSourceは、概念的に、あるサイズと解像度の、ピクセルの単一、一定のセットを表す。たとえば、ImageSourceは、Decoderが提供できるイメージファイル内の単一フレームとすることができ、あるいは、それ自体のあるImageSourceに対して動作する変換の結果とすることができる。ImageSourceは、変更可能であるが、これは、それ自体のプロパティを変更することができるからではなく、そのサブクラスのプロパティが潜在的に変更される可能性があるからである。
オブジェクトのTransformクラスは、ベクトルグラフィックスおよびラスタグラフィックスのスケーリング、回転、並進、およびスキューのために提供される。派生されたTransformクラスは、フレンドリな使用法および列挙セマンティックスを有する。
Effectsは、レンダリング中心の方法でシーンのビジュアルコンテンツを変更する手段を提供する。たとえば、VisualEffects(ラスタベースビットマップエフェクト)は、イメージベースの、シーンの一部の完全に合成された表現を操作する。Effectsは、VisualEffects、BlendModes、およびVectorEffectsを含むさまざまな型に分解される。VisualEffectsは、サブグラフまたはElementに適用することによって保持モードシーンで使用することができ、あるいは、独立のイメージパイプラインで使用することができる。BlendModesは、イメージベースエフェクトの特定の形であり、おおむねVisualEffectsと同一の形で保持モードシーンに適用することができる。ブレンドモードでは、ソースが合成される際にソースカラーとデスティネーションカラーの組合せ、たとえば乗算または加算を実行する。
ヒットテストは、シーン内のビジュアルを選択するのに使用され、制御ツリーの最上部から開始し、点またはジオメトリによってコントロールまたはコントロールのセットを返すことによって動作する。コントロールは、レンダリングされたジオメトリ、境界ボックス、帯域外ジオメトリ(ヒット領域)、イメージ不透明度またはマスク、およびそれ自体のロジックを含むサポートサービスを用いて、ヒットするか否かを定義することができる。コントロールは、ヒットに関する特定のヒット関連データを返すことができる。ヒットテスト機構は、効率的な形でヒットテスト結果をフィルタリングすることができる。ヒットテストウォークは、ビジュアルツリーの深い右から左へのウォークであり、ヒットは、z順で上から下の形でコールバックを介して報告される。降りるときに、ヒットテスタは、要素レベル関係、たとえば、形状を有するキャンバス、内側キャンバスを有するドックパネルなどに関して、フィルタリングを見る。ヒットが発生するときに、ヒットテスタは、さらなるヒット(ある場合に)の処理を継続するか、停止することができる。
タイミング制御エンジンおよび1セットのアニメーションオブジェクトからなるアニメーションシステムを提供する。タイミングエンジンは、たとえばアニメーションオブジェクト、オーディオ媒体オブジェクト、またはビデオ媒体オブジェクトなど、時間変動挙動を示すすべてのオブジェクトによって使用できるサービスである。アニメーションオブジェクトは、タイムスパンを他のデータ型にマッピングする関数のセットを実装し、これらのデータ型は、他の上位オブジェクトへの入力として使用される。グラフィカルアニメーションは、アニメーションコレクションをレンダリング動作に関連付けることによって達成される。レンダリング動作で使用される各アニメーションは、「タイムライン」と称する別々のクロックで動作することができる。アニメーションにされたプリミティブが、描画され、アニメーションパラメータが指定されたならば、低水準レンダリングシステムが、一定の間隔でシーンの再レンダリングを処理する。フレームがレンダリングされるたびに、シーンに含まれるアニメーションの現在の値が、経過時間(ほとんどの場合にシステムクロックによって測定される)に基づいて計算され、その後、アニメーションにされたプリミティブが再描画される。
さまざまなプリミティブ型、色特性、および媒体サポートも、MILを介して提供される。MediaDataを使用して、オーディオ/ビデオコンテンツを再生することができる。
(Design名前空間)
Design名前空間320は、フォームおよびテキストの編集、データのフォーマット、およびクロスプロセスデータ共有を可能にするクラスを提供する。これらのクラスは、文書、アプリケーション、および他のコンテンツの編集に関する拡張可能なフレームワークを提供する。Design名前空間320には、2つのレベルの機能性すなわち、異なる型の情報に関する事前にパッケージ化された使い易いエディタを求めるアプリケーション設計者のための高水準機能性と、それ自体のデータの型を導入する高度なアプリケーションのための低水準機能性が含まれる。事前にパッケージ化された使い易いエディタ例は、プレーンテキスト編集、リッチテキスト編集、フォーム(要素レイアウト)編集、およびパスワード入力を提供する。
Design名前空間320は、さまざまな機能性の編成への柔軟で拡張可能な手法を提供する。共通の固定機能のエディタを提供するのではなく、Design名前空間320は、特化した、および簡単にカスタマイズ可能な情報編集ソリューションを開発者が作成できるようにするサービス、挙動、および抽象化の組合せを提供する。Design名前空間320には、スコープ付きサービス、スタック可能な挙動、エディタ−デザイナパターン、要素編集用の抽象デザイナ、抽象テキストオブジェクトモデル、アドーナ(adorner)レイヤ、デザインサーフェス、一般化されたデータ転送プロトコル、および拡張可能なアンドゥ機構を含む複数のカスタマイズ可能な編集機能が含まれる。
スコープ付きサービスを用いると、アプリケーションデータの特定の部分および下位部分への特定のサービスの関連付けが可能になる。この機構を用いると、異なるスコープでサービスをオンまたはオフに切り替えられるようになる。サービスに関するサポートを提供するメインクラスは、ServiceManagerであり、個々のサービスは、IServiceインターフェースおよびIScopedServiceインターフェースを使用して実装される。
「スタック可能な挙動」という概念を用いると、適当な期間に異なる挙動をアクティブ化できるようになる。一実施形態では、時間ベースの挙動アクティブ化がネストされ、より汎用のプロセスが一時的に中断され、正しく復元される間に、サブプロセスを開始し、終了できるようになる。ソリューションをハードコーディングするのではなく、スタック可能な挙動の手法では、お互いに関する事前に定義された知識を有しないプロセスの統合を可能にすることによって、この問題を解決する。この機構のサポートを提供するメインクラスは、EditRouterであり、個々の挙動は、EditorクラスおよびEditBehaviorクラスのサブクラスである。編集可能なデータの組込み型は、TextEditor、ElementEditor、およびMoveBehaviorなどのEditBehaviorの対応するサブクラスによってサポートされる。
「エディタ−デザイナパターン」という概念を用いると、汎用編集機能性と、より具体的な編集可能な情報のサブタイプ化との間の分離が可能になる。エディタは、それが操作する特定のデータ構造を期待しない。そうではなく、エディタは、データコンテンツが、ある抽象インターフェースを介して公開され、実装の詳細が隠蔽されるが、編集対話の対応するアクションに十分であると仮定する。このパターンは、(フォーム編集での)要素および(リッチテキスト編集での)テキストに特に有用である。
「要素編集用の抽象デザイナ」は、要素編集のある領域(たとえばフォーム編集)用の「エディタ−デザイナパターン」のアプリケーションである。さまざまな要素が、異なる内部構造、外見、および挙動を有する可能性があるが、それらの要素が、移動、回転、またはサイズ変更に関するある標準「デザイナ」を公開する場合に、それらの要素は、要素エディタによって編集可能になる。
抽象テキストモデルは、リッチテキスト編集での使用に関する「エディタ−デザイナパターン」の別のアプリケーションである。この抽象化を用いると、異なるバッキングストアが、RTF、XHTML、プレーンテキスト、XAMLマークアップ、構文的に強調されたソースコードなどのリッチテキスト編集に参加できるようになる。これらの型のテキストのセマンティックな性質および内部構造は、異なる可能性があるが、抽象テキストモデルを介してそれ自体を公開することによって、汎用編集機構の適用が可能になる。さらに、この手法では、テキストおよびデータの統合が可能になり、異なるバッキングストアからのテキストに、お互いの一部を含めることができると同時に、シームレスな編集経験がもたらされる。
アドーナレイヤは、編集中に豊富なビジュアルフィードバックを提供する統合ツールである。アドーナレイヤは、多数の型に対するフィードバックの統一されたサポートを提供する。強力なビジュアルを要素およびデータの他の部分に動的にアタッチし、デタッチして、それらにアクティブに適用可能な潜在的なユーザを示すことができる。デザインサーフェスは、アドーナレイヤおよび編集ルータなどの編集リソースを事前にパッケージ化するXAMLコントロールである。これによって、中間レベルの編集開発が単純化される。
切り取り/コピー/貼付けおよびドラッグ/ドロップなどの編集機能は、統合情報環境で重要であるが、異なるデータ型の複雑さおよび非互換性に起因してサポートが困難になる可能性がある。一般化されたデータ転送プロトコルは、データ抽出、データ挿入、データドラッグ、およびデータ変換に使用される抽象の組合せを提供することによって、この問題に対処する。この一般化されたデータ転送プロトコルは、アプリケーション−データ統合の強力で柔軟な機構を提供する。
拡張可能なアンドゥ機構は、さまざまな型のデータを収集することによってアンドゥスタックを管理する。アンドゥマネージャに、異なるデータ型を伴うアンドゥ動作を処理するプロトコルが含まれる。
以下に、System.Windows.Design名前空間によって公開されるメンバ例をリストする。
<クラス>
ActivationEventFilter − EventFilter。
ActivationRectangleAdornerInfo − これは、DesignActive要素上の境界を示すフィードバックである。
AdornerInfo − アドーナセット(adornerset)の特定のアドーナに関する情報を提供する。
AdornerLayer − Z順を超える必要がある要素(常に一番手前にある必要がある要素)の装飾を表示するサーフェスを提供する。
CanvasDesigner − デフォルトCanvasデザイナ。
ComponentChangeService − コンポーネントに影響するデザインタイムアクションのアンドゥおよびリドゥ機能性を提供する。
Designer − ライブコンテントを編集する手段を提供する。
DesignerFilterService − アプリケーションおよびコントロールが、DesignerLookupServiceによって提供される要素とデザイナとの間のデフォルトマッピングをオーバーライドするために実装することができるオプションのサービスを定義する。
DesignerLookupService − 要素をデザイナにマッピングする編集挙動を可能にする。
DesignSurface − 編集可能コンテンツの推奨ルート要素。アドーナ、サービス、およびイベントを集約する。
EditBehavior − すべての編集挙動の実装を定義する。
Editor − テキスト、要素、またはテーブルなどの特定の選択型に関するユーザ入力を処理する。通常、各選択型の特定のエディタがある。
EditorTypeAttribute − 選択型を選択モードに関連付ける。このクラスを継承することはできない。
EditRouter − 現在アクティブなEditBehaviorsのセットを管理する。
EditRouterChangedEventArgs − Changedイベントの引数。
ElementEditor 要素エディタ。
EventFilter − イベントフィルタリングおよび割り当てを可能にする。
FrameworkElementDesigner − FrameworkElementから派生するすべてのコントロールのデフォルトDesigner。
MoveBehavior − 移動挙動。
ObjectSelection − サイト選択。
ParentUndoUnit − ParentUndoUnit。
RichTextDesigner − TextPanelと、ITextDocumentResultをサポートする他のコントロールとに関するITextDesigner実装。
RoutedEventAdapter − RoutedEventAdapterは、1つのハンドラがイベントの異なる型を処理できるようにするために、特定のeventHandlerをRoutedEventHandlerにサンクする。EditRouterによって使用される。
SelectionRouter − SelectionRouterは、複数の選択モードを用いる混合選択を制御する。これは、EditRouterから派生して、イベントを(Editorから派生する)モジュラエディタにルーティングする。
SelectionService − UIアイテムの選択肢へのプログラムによるアクセスを提供する。選択されたアイテムに関するフィードバックを得ることができ、選択されたアイテムおよびそのプロパティを変更することもできる。
ServiceConverter − ServiceConverter − ストリングとIServiceのインスタンスの間の変換のコンバータクラス。
SimpleTextDesigner − Textと、ITextParagraphResultをサポートする他のコントロールとに関するITextDesigner実装。
TextDecorator − TextDecoratorは、競合するサービスからのテキスト装飾を管理するオブジェクトを定義する。プロパティ値をプライベートに書き込むのではなくTextDecoratorを使用することによって、同一優先順位の場合であっても、競合する装飾が絶対にオーバーラップしないことが保証される。
TextEditor − テキスト選択サービスを提供する。
TextSelection − TextSelectionクラスは、TextEditorクラスの選択状態をカプセル化する。パブリックコンストラクタはないが、TextEditorのパブリックプロパティを介して公開される。
UndoService − IUndoServiceのフレームワーク実装。
UndoStackChangedEventArgs − UndoStackChangedイベントおよびRedoStackChangedイベントのデータを提供する。
<インターフェース>
IAddRemoveChildDesigner − IAddRemoveChildDesignerインターフェースは、子の追加/除去に使用される。
IAdornerDesigner − FrameworkElementにアドーナを描画するのに必要なオブジェクトを検索できるようにするメソッドへのアクセスを提供する。
IDesignActivationContainer − DesignActiveになることができるDesignActivationの内側要素。要素がDesignActiveである場合に、ある子要素を編集している可能性が最も高いと仮定されるので、名前コンテナを有する。
IDesignActivationContainerParent − IDesignActivationContainerParentは、Design環境でIDesignActivationContainerをホスティングすることができる。
IDesignSurface − 編集に参加することを望むいかなる要素も実装するインターフェース。
IMoveDesigner − 移動デザイナインターフェース。
IParentUndoUnit − IParentUndoUnitインターフェース。
IScopedService − IScopedService。
ISelection − 選択モードの基本インターフェース。
ISelectionDesigner − SelectionBehavior(SelectionRouter)に関連するデザイナインターフェース。これを実装するクラスは、要素型のDesignerAttributeで指定される。
IService − 編集サービスのTypeConverterのプレースホルダ。
ITextDesigner − TextEditorサービスにレイアウト固有の情報およびアクションを供給するために実装されるインターフェースコンポーネント。
IUndoService − IUndoServiceインターフェース。
IUndoUnit − IUndoUnitインターフェース。
<列挙>
AdornerInfoZOrder − Z順フラグ。
AdornerRenderTriggers − アドーナの再レンダリングを引き起こす条件を示すフラグ。
EditRouterChange − 可能なルータ変更アクションの列挙。
TextDecorationPriority − TextDecorationPriorityは、さまざまなテキストマークアップの相対的な重要性をランキングする。これは、TextDecoratorクラスでのz順装飾実行に使用される。
UndoState − アンドゥマネージャの状態に関する列挙。
<委任>
UndoStackChangedEventHandler − UndoStackChangedイベントまたはRedoStackChangedイベントを処理するメソッドを表す。
(Input名前空間)
Input名前空間322には、システムによって受け取られる入力を調整する入力マネージャが含まれる。Input名前空間322には、キーボードまたはマウスなどの異なる入力デバイスを管理し、その制御を提供することを助けるクラスも含まれる。入力システムを用いると、アプリケーションが、マウス、キーボード、およびスタイラス(ペン)などの入力デバイスから情報を得られるようになる。ほとんどの入力機能性は、System.Windows名前空間のUIElementクラス、FrameworkElementクラス、ContentElementクラス、およびContentFrameworkElementクラスにおけるプロパティ、メソッド、およびイベントの形である。UIElementおよびContentElementは、類似する入力機能性を有し、これは、IInputElementインターフェースによってキャプチャされる。同様に、それぞれUIElementおよびContentElementから派生するFrameworkElementおよびContentFrameworkElementは、多くの入力APIを共有し、両方がIFrameworkInputElementを実装する。
入力システムは、キーボード、マウス、およびスタイラスの完全なサポートを提供する。キーボード機能性には、キーダウン/アップイベント、フォーカスの管理および通知、現在のキー状態へのアクセス、入力ストリングへのキーストロークの変換が含まれる。マウス機能性には、マウス位置、クリック、移動、要素境界での出入りのイベント、マウスキャプチャ、ホバー、およびマウスホイールが含まれる。スタイラス機能性には、位置および移動(ペンがサーフェスに触れているときと「空中」にあるときの両方)、タップ/クリック、キャプチャ、およびジェスチャ認識が含まれる。
Input名前空間には、列挙、イベント引数、委任シグネチャなど、上記の機能性に必要なヘルパクラスも含まれる。さらに、Input名前空間には、Keyboardクラス、Mouseクラス、およびStylusクラスが含まれ、これらのクラスは、これらのデバイスの現在の状況に関する情報を提供する。入力システムは、特定の要素上およびアプリケーション全体に関してマウスカーソルを指定する方法を提供する。
入力システムは、TSF(Text Services Framework)と統合され、TSFは、新しいテキストが入力されつつあるテキストコンテキストを他の入力ソフトウェアが理解できるようにする。これは、IME(input method editor)によって使用され、IMEは、東アジア言語のユーザが、複数のキーストロークを単一の文字にすることを可能にする。IMEソフトウェアは、TSFと通信して、文脈に基づいてキーストロークの最適の解釈を識別し、TSFを使用して、そのテキストを文書に挿入する。同様に、音声認識は、TSFを使用して、最良の認識を選び、文書に挿入する。
入力システムは、TextInputイベントの形で、TSFとの自動的統合を提供する。Input名前空間は、テキストコンテキストを記述するAPI、および生のキーボード入力からテキスト入力への変換を制御するAPIも提供する。InputManagerクラスは、フィルタおよびモニタを提供し、これらを用いると、サードパーティが、入力ストリームを監視し、元の入力イベントが発せられる前に新しい入力イベントを作成できるようになる。InputManagerは、IInputProviderおよびInputReportを使用して、新しい装置を入力システムに接続できるようにするAPIも提供する。
下のテーブルにSystem.Windows.Input名前空間によって公開されるメンバ例をリストする。
<クラス>
AccessKeyManager − AccessKeyManagerは、ニーモニック(mnemonics)とも称する、アクセスキー機能性を公開する。典型的な例が、Okボタンであり、alt−Oがニーモニックになる。すなわち、alt−Oの押下げが、ボタンのクリックと同一になる。
Cursor − 使用されるマウスカーソルを表す。
CursorTypeConverter − マウスカーソルとストリングの間の変換を行う。
FocusChangedEventArgs − FocusChangedEventArgsクラスには、フォーカス変更に関する情報が含まれる。
InputDevice − すべての入力デバイスの基本クラスを提供する。
InputEventArgs − InputEventArgsクラスは、すべての入力イベントに関連するRoutedEventArgsの型を表す。
InputLanguageChangedEventArgs − InputLanguageEventArgsクラスは、(人間の)入力言語の変更を示すために引き起こされるイベントに関連するRoutedEventArgsの型を表す。
InputLanguageChangingEventArgs − InputLanguageEventArgsクラスは、(人間の)入力言語の変更を示すために引き起こされるイベントに関連するRoutedEventArgsの型を表す。
InputLanguageEventArgs − InputLanguageEventArgsクラスは、(人間の)入力言語の変更を示すために引き起こされるイベントに関連するRoutedEventArgsの型を表す。
InputLanguageManager − InputLanguageManagerクラスは、Avalonで入力言語を管理する責任を負う。
InputManager − InputManagerクラスは、Avalonのすべての入力システムを調整する責任を負う。
InputMethod − InputMethodクラスは、TIPのプロパティと通信しているかこれにアクセスしているTSF関連APIを公開する。
InputMethodStateChangedEventArgs − このInputMethodStateChangedEventArgsクラスは、IME(input method editor)がその状態を変化させるときに使用される。
InputProviderSite − 入力マネージャに入力を報告するのに入力プロバイダが使用するオブジェクト。
InputReport − InputReportは、InputManagerに伝えられるすべての入力に関する抽象基本クラスである。
InputReportEventArgs − InputReportが処理されているときに引き起こされるイベントのデータを提供する。
Keyboard − Keyboardクラスは、キーボードに関連するAPIを公開する。
KeyboardDevice − KeyboardDeviceクラスは、コンテキストのメンバに対してキーボードデバイスを表す。
KeyboardEventArgs − KeyboardEventArgsクラスは、すべての派生イベント引数の論理ポインタデバイスへのアクセスを提供する。
KeyEventArgs − KeyEventArgsクラスには、キー状態に関する情報が含まれる。
KeyInterop − Win32 VirtualKeyと「Avalon」Key列挙との間の変換の静的メソッドを提供する。
Mouse − Mouseクラスは、マウスに関連するAPIを公開する。
MouseButtonEventArgs − MouseButtonEventArgsは、マウスボタンの状態を記述する。
MouseDevice − MouseDeviceクラスは、コンテキストのメンバに対してマウスデバイスを表す。
MouseDoubleClickEventArgs − マウスがダブルクリックされたときに引き起こされるイベントのデータを提供する。
MouseEventArgs − MouseEventArgsクラスは、すべての派生イベント引数に関する論理マウスデバイスへのアクセスを提供する。
MouseWheelEventArgs − MouseWheelEventArgsは、マウスホイールの状態を記述する。
NotifyInputEventArgs − 入力マネージャによって処理されている入力イベントに関する情報を提供する。
PreProcessInputEventArgs − ハンドラが入力イベントの処理を取り消せるようにする。
ProcessInputEventArgs − 入力マネージャのステージング領域へのアクセスを提供する。
RawKeyboardInputReport − RawKeyboardInputReportクラスは、キーボードから供給される生入力をカプセル化する。
RawMouseInputReport − RawMouseInputReportクラスは、マウスから供給される生入力をカプセル化する。
StagingAreaInputItem − このクラスは、入力マネージャによって処理されている間の入力イベントをカプセル化する。
TextInputEventArgs − TextInputEventArgsクラスには、入力のテキスト表現が含まれる。
TextManager − TextManagerクラスは、入力からテキストへのイベント昇格を提供する。
TextServicesContext − このクラスは、東アジアIME入力を可能にするネイティブCOM APIであるText Services FrameworkとUIDispatcherとの間の相互接続を管理する。
TextStoreInfo − これは、内部の、リンクデマンドのプロテクトクラスである。
<インターフェース>
IInputLanguageSource − 入力言語ソースを制御するインターフェース。
IInputProvider − すべての入力プロバイダによって実装されるインターフェース。
IKeyboardInputProvider − キーボード入力プロバイダを制御するインターフェース。
IMouseInputProvider − マウス入力プロバイダを制御するインターフェース。
<列挙>
CursorType − サポートされるカーソルタイプの列挙。
ImeConversionMode − ImeConversionMode。
ImeSentenceMode − ImeSentenceMode。
InputMethodState − Imeの状態。
InputMode − 入力が供給されたときの入力処理のモード。
InputType − 報告されている入力のタイプ。
Key − キーボードのすべての可能なキー値の列挙。
KeyState − KeyState列挙は、キーボードキーが入ることのできる状態を記述する。
ModifierKeys − ModifierKeys列挙は、他の入力動作を修正するのに使用される共通キーのセットを記述する。
MouseButton − MouseButton列挙は、マウスデバイスで使用可能なボタンを記述する。
MouseButtonState − MouseButtonState列挙は、マウス入力デバイスで使用可能なボタンの可能な状態を記述する。
RawKeyboardActions − キーボードから伝えられる生のアクション。
RawMouseActions − マウスから伝えられる生のアクション。
SpeechMode − 音声のモード
<構造体>
TextServicesMSG − Win32 MSG構造体の管理されるバージョン。
<委任>
FocusChangedEventHandler − FocusChangedEventArgsを受け取るハンドラに使用される委任。
InputEventHandler − InputEventArgsを受け取るハンドラに使用される委任。
InputLanguageEventHandler − これは、InputLanguageChangedイベントおよびInputLanguageChangingイベントに関する委任である。
InputMethodStateChangedEventHandler − インプットメソッド状態変化イベントを受け取るハンドラに使用される委任。
InputReportEventHandler − PointerMoveEventArgsを受け取るハンドラに使用される委任。
KeyboardEventHandler − KeyboardEventArgsを受け取るハンドラに使用される委任。
KeyEventHandler − KeyEventArgsを受け取るハンドラに使用される委任。
MouseButtonEventHandler − MouseButtonEventArgsを受け取るハンドラに使用される委任。
MouseDoubleClickEventHandler − MouseDoubleClickEventArgsを受け取るハンドラに使用される委任。
MouseEventHandler − MouseEventArgsを受け取るハンドラに使用される委任。
MouseWheelEventHandler − MouseWheelEventArgsを受け取るハンドラに使用される委任。
NotifyInputEventHandler − NotifyInputEventArgsを使用するイベントのハンドルの委任型。
PreProcessInputEventHandler − PreProcessInputEventArgsを使用するイベントのハンドルの委任型。
ProcessInputEventHandler − ProcessInputEventArgsを使用するイベントのハンドルの委任型。
TextInputEventHandler − TextInputEventArgsを受け取るハンドラに使用される委任。
(Navigation名前空間)
Navigation名前空間324は、ブラウザアプリケーションなど、ナビゲーションパラダイムを有するアプリケーションの作成を可能にするクラスおよびサービスのセットを提供する。これらのクラスおよびサービスによって、カスタマイズされたナビゲーション経験を有するアプリケーションの開発が可能になる。たとえば、オンライン商人から製品またはサービスを購入するときに、「戻る」ボタンをクリックすることにより、アプリケーションがユーザに注文を取り消す、または変更することを望むか否かを尋ねる異なるページを表示させる。もう1つの例で、「再読み込み」ボタンによって、アプリケーションが、まずアプリケーションを再ロードした後に新しいデータを検索するのではなく、新しいデータを検索するようになる。Navigation名前空間324には、ユーザに提示される質問の階層を生成する機構を提供するページ機能も含まれる。
下のテーブルに、System.Windows.Navigation名前空間によって公開されるメンバ例をリストする。
<クラス>
BoolWrapper − Boolean値のラッパー。
BoolWrapperPageFunction − 前のページにBoolean値を返す型付きページ関数。
BoolWrapperReturnEventArgs −
IntWrapper − Int32値のラッパー。
IntWrapperPageFunction − 前のページにInt32値を返す型付きページ関数。
IntWrapperReturnEventArgs −
Journal − アプリケーションのナビゲーションヒストリを含む。
JournalEntry ジャーナルエントリを表す。
LoaderService − 所与のアプリケーションドメイン内の現在のローダを設定するのに使用される。
NavigateEventArgs − 旧式。
NavigatingCancelEventArgs − NavigationApplication.NavigatingイベントおよびNavigationWindow.Navigatingイベントのイベント引数。
NavigatingNewWindowCancelEventArgs − NavigatingNewWindow取消可能イベントのイベント引数。NavigatingNewWindowCancelEventArgsは、渡されるUriまたは要素を用いてナビゲーションが行われるターゲットNavigationContainerを指定する。デフォルトで、Cancelプロパティに偽が設定される。Cancelに真を設定することによって、新しいウインドウが開かれなくなり、ナビゲーションが行われなくなる。
NavigationApplication − システムに対して「Longhorn」ナビゲーションアプリケーションを表す。
NavigationContainer − 「Avalon」マークアップツリーを含めることができるナビゲーション可能な領域。通常、このクラスは、直接に使用されるのではなく、カスタム実装の親クラスとして使用することができる。
NavigationErrorCancelEventArgs − NavigationApplication.NavigationErrorイベントおよびNavigationWindow.NavigationErrorイベントの引数を含む。
NavigationEventArgs − LoadCompleted、LoadStarted、Navigated、およびNavigationStoppedを含む、取消不能ナビゲーションイベントのイベント引数。
NavigationProgressEventArgs − NavigationApplication.NavigationProcessイベントおよびNavigationWindow.NavigationProcessイベントの引数を含む。
NavigationService − ナビゲーションイベントによって使用される委任と、INavigatorインターフェースを含むダイナミックプロパティを含む。
NavigationWindow − ナビゲーションウインドウを表す。
ObjectPageFunction − 前のページにObject値を返す型付きページ関数。
ObjectReturnEventArgs −
PageFunction − このクラスは、直接にはサポートされない。その代わりに、型付けされたクラスであるBoolWrapperPageFunction、IntWrapperPageFunction、ObjectPageFunction、またはStringPageFunctionの1つを使用する。
ReturnArgs − Returnイベントのイベント引数オブジェクト。このクラスは、直接にはサポートされない。その代わりに、型付けされたクラスであるBoolWrapperReturnEventArgs、IntWrapperReturnEventArgs、ObjectReturnEventArgs、またはStringReturnEventArgsの戻り引数を使用する。
StringPageFunction − 前のページにString値を返す型付けされたページ関数。
StringReturnEventArgs −
WindowNavigationContainer − ナビゲーションウインドウ内のナビゲーション可能領域を表す。
<インターフェース>
IJournalData − IJournalDataインターフェース − ジャーナル内で状態を永続させ、ページに再訪問したときにその状態を復元する必要があるControlによって実装されなければならない。
ILoader − Uriをストリーム群に分解するために使用されるインターフェース。ファイル、http、コンテナ、管理されるリソース、および管理されないリソースからコンテンツをロードするのに使用することができる。
INavigator − ナビゲーションをサポートするプロパティ、メソッド、およびイベントへのアクセスを提供するために、ナビゲーションコンテナによって実装される。
INavigatorService − INavigatorServiceインターフェース。このインターフェースは、NavigationWindowで使用可能であり、INavigatorの任意のインプリメンタがハHyperlinkターゲティングに参加するためにそれ自体を登録することを可能にする。
<列挙>
NavigationMode − ナビゲーションモードを指定するのに使用される。
<委任>
BoolWrapperReturnEventHandler −
IntWrapperReturnEventHandler −
LoadCompletedEventHandler − NavigationApplication.LoadCompletedイベントおよびNavigationWindow.LoadCompletedイベントを処理するメソッドを表す。
LoadStartedEventHandler − LoadStartedイベントを処理するメソッドを表す。
NavigatedEventHandler − NavigationApplication.NavigatedイベントおよびNavigationWindow.Navigatedイベントを処理するメソッドを表す。
NavigateEventHandler − 旧式。
NavigatingCancelEventHandler − NavigationApplication.NavigatingイベントおよびNavigationWindow.Navigatingイベントを処理するメソッドを表す。
NavigatingNewWindowCancelEventHandler − NavigatingNewWindowイベントを処理するメソッドを表す。
NavigationErrorCancelEventHandler − この委任は、NavigationApplication.NavigationErrorイベントおよびNavigationWindow.NavigationErrorイベントと共に使用される。
NavigationProgressEventHandler − この委任は、NavigationWindow.NavigationProgressイベントおよびNavigationApplication.NavigationProgreイベントと共に使用される。
NavigationStoppedEventHandler − NavigationApplication.NavigationStoppedイベントおよびNavigationWindow.NavigationStoppedイベントを処理するメソッドを表す。
ObjectReturnEventHandler −
ReturnEventHandler − Returnイベントを処理するメソッドを表す。このクラスは、直接にはサポートされない。その代わりに、適当な型付きクラスであるBoolWrapperReturnEventHandler、IntWrapperReturnEventHandler、ObjectReturnEventHandler、またはStringReturnEventHandlerの戻りイベントハンドラを使用する。
StringReturnEventHandler −
(Automation名前空間)
Automation名前空間326には、アクセシビリティおよびユーザインターフェースオートメーションをサポートするために使用されるメンバが含まれる。アクセシビリティシステムに、クライアントサイドとプロバイダサイドが含まれる。ツールのシステムに、ユーザインターフェース情報を探すクライアントオートメーションクラスを含むクライアントサイドオートメーションツールが含まれる。クライアントオートメーションクラスに、イベント登録ツールおよび論理要素ディスカバリツールが含まれる。ツールのセットに、さらに、クライアントにユーザインターフェース情報を与えるプロバイダサイドオートメーションツールが含まれる。プロバイダサイドオートメーションツールに、クライアントにイベント情報を与えるツールを有するオートメーションプロバイダクラスが含まれる。
クライアントオートメーションクラスは、1つまたは複数のクライアントに関するUIオートメーションメソッドを提供する。クライアントオートメーションクラスに、どのUI要素にも固有でないメソッドが含まれる。クライアントオートメーションクラスは、点、ウインドウハンドル、またはデスクトップルート要素から論理要素または生要素を得るメソッドを提供することができる。クライアントオートメーションクラスは、さらに、論理要素ベースの入力基準を見つけるメソッドを提供することができる。クライアントオートメーションクラスに、イベント通知について登録し、登録解除するメソッドも含まれることが好ましい。オートメーションクラスは、プロキシDLLのロード、プロパティおよびコントロールパターンのローカライズされた名前の検索、および要素比較の実行に関するヘルパ関数も提供することが好ましい。クライアントオートメーションクラスに、クライアントがイベントをリスンするメソッドも含まれる。下のテーブルに、System.Windows.Automation名前空間によって公開されるメンバ例をリストする。
<クラス>
ApplicationWindowPattern − 通常はトップレベルアプリケーションウインドウに関連付けられる挙動および情報を公開する。クライアントは、このクラスを使用して、アプリケーションのMDI(multiple document interface)子を並べて表示または重ねて表示し、タスクバー上のボタンを検索し、ツールバーおよびメニューなどのユーザインターフェースの周知のセクションを突き止めることができる。
AssociatedInformationPattern − 他のオブジェクトを表すUI要素のセマンティックおよびメタデータを公開する。
Automation − クライアントのユーザインターフェース(UI)オートメーションメソッド(支援技術または自動化テストスクリプト)を含む。これらのメソッドは、特定の要素に固有ではない。
AutomationEvent − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationEventArgs − パターンまたはカスタムイベント引数クラス。
AutomationFocusChangedEventArgs − フォーカスイベント引数クラス。
AutomationIdentifier − オブジェクト識別ベース識別子の基本クラス。このクラスは、効果的に抽象クラスであり、派生クラスだけがインスタンス化される。
AutomationIdentifierProxy − AutomationIdentifierをデシリアライズするのに使用される内部クラス。直接に使用してはならない。
AutomationPattern − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationPermission − UI要素へのアクセスに関するアクセス権のセットを提供する。このクラスを継承することはできない。
AutomationPermissionAttribute − AutomationPermissionAttributeのメソッドおよびプロパティを提供する。このクラスを継承することはできない。
AutomationProperty − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationPropertyChangedEventArgs − PropertyChangedイベント引数クラス。
AutomationTextAttribute − オートメーションテキスト属性の識別子。
AutomationTextPointer − テキスト内の文字の位置を表す。AutomationTextPointerは、アクセステキスト(accessing text)およびテキストナビゲーションに関するメソッドおよびプロパティを提供する。
AutomationTextRange − 選択肢の取得、設定、追加、および削除に使用される。
AutomationTextSelection − 目的:AutomationTextSelectionオブジェクトは、すべてのテキスト選択管理を処理する。挿入ポインタがその上にある選択物は、アクティブ選択物である。使用例:クライアントが、選択物の追加、除去、修正、または設定を求めるときに使用される。クライアントは、AutomationTextSelectionを介して、現在何が選択されているかを見つけることもできる。
AutomationTextUnit − オートメーションTextUnitの識別子。
BasePattern − 内部クラス。
DockPattern − ランタイムにドック状態を変更する、要素の能力を公開する。
ElementNotEnabledException − この例外は、クライアントコードが、現在イネーブルでない要素またはコントロールの操作を試みたときにスローされる。
ElementPath − ElementPathは、アプリケーションプロバイダによって前に記録され、修正され、または全体を作成された論理要素に後でリターンするのに必要な基準を提供する。
ExpandCollapsePattern − 展開してより多くのコンテンツを表示するための、または縮小してコンテンツを隠す、コントロールの能力を公開する。例に、メニューボタン、スタートボタン、Windows(登録商標) Explorerのツリービューアイテム、およびコンボボックスが含まれる。
GridItemPattern − グリッドの要素を公開する。クライアントが、グリッドアイテムの座標をすばやく判定できるようにする。
GridPattern − 基本的なグリッド機能性、サイズ、および指定されたセルへのナビゲーションを公開する。
HierarchyItemPattern − コントロールのユーザインターフェース要素の論理ツリーでの関係と独立な、それらの間の階層関係を公開する。
Input − マウス入力およびキーボード入力を送るメソッドを提供する。
InvokePattern − 単一の曖昧でないアクションを実行するオブジェクト(コントロール)によって実装される。これらのコントロールのほとんどが、状態を維持しない。これらを呼び出しは、アプリケーションでのアクションを開始する。このインターフェースを実装するコントロールの例に、プッシュボタン、ツールバーボタン、メニューアイテム、ハイパーリンク、チェックボックス、ラジオボタン、ツリービューコントロールの+記号、およびWindows(登録商標) Explorerのリストビューアイテムが含まれる。
LogicalElement − 実装(「Avalon」、Microsoft(登録商標)Win32(登録商標))に関わりなく、論理ツリー内のUI要素を表す。
LogicalStructureChangedEventArgs − 論理構造変更イベント引数クラス。
MultipleViewPattern − 情報、データ、または子の同一のセットの複数の表現の間で切り替える、要素の能力を公開する。例に、ListView(サムネイル、タイル、アイコン、リスト、詳細)、Excelチャート(パイ、直線、バー、式を有するセル値)、およびOutlook Calendar(年、月、週、日)が含まれる。
NoClickablePointException − 引数の値が、GetClickablePointによって定義されるその値の許容範囲外であるときにスローされる例外。たとえば、境界長方形が空であるか、幅または高さを有しないか、その時点でLogicalElementが呼び出されたものと同一でないとき。
ProxyAssemblyNotLoadedException − この例外は、プロキシアセンブリのロードに問題があるときにスローされる。これは、Automation.RegisterProxyAssemblyに応答して、または最初のhwndベースLogicalElementに出会うときのデフォルトプロキシのロードのときに発生する可能性がある。
RangeValuePattern − 有限の範囲内に値を管理する、コントロールの能力を公開する。これは、コントロールの有効な最小値および最大値ならびに現在の値を伝える。
RawElement − 生要素ツリー内の要素を表す。
ScrollPattern − 値を表しているUI要素を表す。
SelectionItemPattern − 選択物を管理するコンテナ内の個々のアイテムを表す。UIAutomationクライアントは、このクラスを使用して、SelectionItemPatternコントロールパターンをサポートするUI要素に関する情報を得るか、そのような要素を操作する。例に、リストボックスまたはツリービュー内のアイテムなど、SelectionPatternコントロールパターンをサポートするコントロール内で選択できるいかなるアイテムも含まれる。
SelectionPattern − 選択物を管理するコンテナを表す。SelectionPatternコントロールパターンをサポートするユーザインターフェース要素に関する情報を得るか、そのような要素を操作するのに、UIオートメーションクライアントによって使用される。
SortPattern − コンテナの現在のソート順序を公開し、クライアントがプログラムによって要素を再ソートできるようにする。
SplitPattern − 隣接ウインドウを作成することによってそれ自体のクローンを作成できるウインドウを表す。
TableItemPattern − ヘッダ情報を有するグリッドアイテムを表す。
TablePattern − ヘッダ情報を有するグリッドを表す。
TextPattern − エディットコントロールなどのテキストを表す。
TopLevelWindowEventArgs − TopLevelWindowEventArgsイベント引数クラス。
TreeLoadEventArgs − TreeLoadEventArgsイベント引数クラス。
ValuePattern − ラジオボタン、トグルボタン、チェックボックス、エディットボックス、RGBカラー値、およびチェックマークを付けられるメニューアイテムなどの範囲に及ばないコントロールの値を表す。
VisualInformationPattern − ダウンロード中の文書を表すInternet Explorerのなびく旗もしくはスピンする地球、またはコピーが進行中であることを示すWindows(登録商標) Explorerの飛ぶ紙など、ユーザに情報を伝えるイメージまたはアニメーションに関する情報を公開する。
WindowPattern − オンスクリーンの位置またはサイズを変更する、要素の能力を公開する。例に、トップレベルアプリケーションウインドウ(WordまたはWindows(登録商標) Explorer)、Outlookのメインウインドウペイン(フォルダ、電子メールメッセージ、タスク)、およびMDI子ウインドウが含まれる。
ZoomPattern − コントロールの現在のズームレベルを公開し、クライアントがプログラムによってこれを変更できるようにする。
<列挙>
AutomationPermissionFlag − AutomationPermissionオブジェクトのアクセスフラグを含む。
ChildArrangement − 子を配置できる異なる方法。
DockPosition − ドック可能なウインドウがはりつくコンテナのエッジ。
ExpandCollapseState − 展開/縮小状態を示すためにExpandCollapseパターンによって使用される。
GetDataOptions − GetDataのオプション。
HierarchyItemState − 階層アイテムの状態を示す列挙:縮小、展開、または部分的展開。
ItemCheckState − チェックボックス、ラジオボタン、および類似するコントロールの状態を示す列挙。
LoadState − ツリー状態フラグ。
LogicalMapping − 生ツリー内のノードが論理ツリーで表示されるかどうかを示す値。
ProxyFlags − プロパティを要求した結果を示すのに使用される列挙。
RowOrColumnMajor − このテーブル内のデータが行または列によって最もよく提示されるかどうか。
ScopeFlags − イベントをリスンするときにスコープを定義するのに使用されるフラグ。
ScrollAmount − スクロールの方向(順方向または逆方向)および量(ページまたは行)を示すためにScrollPatternによって使用される。
SendMouseInputFlags − SendMouseInputのフラグ。このフラグは、移動が行われたか否か、またはボタンが押されるか離されたか否かを示す。
SplitStyles − ウインドウを分割できる方向のフラグ。
StructureChangeType − 論理ツリーの構造の変更を示すフラグ。
TextPointerGravity − グラビティによって、テキストがAutomationTextPointerに挿入されるときのAutomationTextPointerの配置が決定される。グラビティは、常にテキストポインタの観点から、すなわち、自分が文字の前にいるか、自分が文字の後にいるかである。ユーザがテキストポインタ位置に文字を挿入するときに、「前」は、ポインタが新しい文字の前に置かれることを意味し、「後」は、ポインタが新しい文字の後に置かれることを意味する。
WindowChangeType − トップレベルウインドウ内の変更を示すフラグ。
WindowInteractionState − ユーザ対話に関するウインドウの現在の状態。
WindowVisualState − ウインドウのビジュアル状態を記述するのに使用される状態。WindowVisualStateは、Windows(登録商標)tateのOfficeおよびHTML定義に従う。
<構造体>
MatchCondition − FindLogicalElementまたはFindRawElementを使用して要素を見つけるための基準を指定する。
NameAndData − 名前、オブジェクトとしてのデータ、およびストリングとしてのデータを含む。
ProxyDescription − プロキシに関する情報を含む構造体。
SortInformation − ソートに使用される情報。
<委任>
AutomationEventHandler − AutomationEventsを処理する委任。
AutomationFocusChangedEventHandler − フォーカス変更イベントを処理する委任。
AutomationPropertyChangedEventHandler − AutomationProperty変更イベントを処理する委任。
LogicalStructureChangedEventHandler − 論理構造変更イベントを処理する委任。
ProxyFactoryCallback − HWNDハンドラによって実装され、指定されたウインドウのプロキシを要求するためにUIオートメーションフレームワークによって呼び出される。サポートされる場合にプロキシを、サポートされない場合にnullを返さなければならない。
TopLevelWindowEventHandler − トップレベルウインドウイベントを処理する委任。
下のテーブルに、System.Windows.Automation.InteropProvider名前空間によって公開されるメンバ例をリストする。
<クラス>
AutomationInteropProvider − ユーザインターフェース(UI)オートメーションを実装するWin32アプリケーションまたはコントロールによって使用されるメソッドを含む。このクラスを継承することはできない。
TextPointerPair − 文字の連続的ブロックを表す。
<インターフェース>
IApplicationWindowInteropProvider − 通常はトップレベルアプリケーションウインドウに関連する挙動および情報を公開する。
IAssociatedInformationInteropProvider − 他のオブジェクトを表すUI要素のセマンティックおよびメタデータを公開する。
IDockInteropProvider − ランタイムにドック状態を変更する、要素の能力を公開する。
IExpandCollapseInteropProvider − 展開してより多くのコンテンツを表示するか、縮小してコンテンツを隠す、コントロールの能力を公開する。ツリー風の挙動を提供するためにTreeViewアイテムにおいてHierarchyItemパターンと共にサポートされるが、オープンし、およびクローズする個々のコントロールにも関連する。これを実装するUIの例に、TreeViewアイテム、縮小されたOfficeのスマートメニュー、ツールバーにおけるシェブロン、コンボボックス、メニュー、Windows(登録商標) Explorerのタスクペイン(フォルダビューがしばしば表示される左側)の「Expandos」が含まれる。
IGridInteropProvider − 基本的なグリッド機能性:サイズおよび指定されたセルへの移動を公開する。
IGridItemInteropProvider − グリッド内のアイテムを表す。メソッドはなく、プロパティだけがある。
IHierarchyItemInteropProvider − 論理ツリーでの関係とは独立にUI要素の間の階層関係を公開し、クライアントがそれをトラバースできるようにする。階層関係は、定義によって非循環である。これを実装するUIの例に、TreeViewアイテム、Visio Org Chart、メニュー、「グループ表示」モードがアクティブであるときのListviewコントロールが含まれる。
IInvokeInteropProvider − 単一の曖昧でないアクションを実行するオブジェクト(コントロール)によって実装される。これらのコントロールのほとんどが、状態を維持しない。これらを呼び出すことによって、アプリケーションでのアクションが開始される。このインターフェースを実装するユーザインターフェース要素の例に、プッシュボタン、ツールバーボタン、メニューアイテム、ハイパーリンク、チェックボックス、ラジオボタン、ツリービューコントロールの+記号、およびWindows(登録商標) Explorerのリストビューアイテムが含まれる。
IMultipleViewInteropProvider − 情報、データ、または子の同一のセットの複数の表現の間で切り替える、要素の能力を公開する。このパターンは、コンテンツの現在のビューを制御するコンテナで実装されなければならない。
IRangeValueInteropProvider − 有限の範囲内で値を管理する、コントロールの能力を反映するプロパティの関連するセットを公開する。これは、コントロールの有効な最小値および最大値、ならびに現在の値を伝える。例:数値スピナ、プログレスバー、(個々のオクテットにおける)IPコントロール、一部のカラーピッカ、スクロールバー、一部のスライダ、現在の値と値の範囲を表すUI要素を表すパブリックインターフェース。パブリックインターフェースは、IValueProviderと同一の定義を有する。2つのパターンの相違は、RangeValueが追加のプロパティを有し、プロパティが、一般に、パターンパブリックインターフェースに現れないことである。
IRawElementProviderFragment − 1レベルよりも深い構造の一部である要素を公開するために、プロバイダによって実装される。子を有しない単純な1レベル構造については、代わりにIRawElementProviderSimpleを使用することができる。フラグメントのルートノードは、IRawElementProviderFragmentRootインターフェースをサポートしなければならず、IRawElementProviderFragmentRootインターフェースは、IRawElementProviderFragmentから派生し、追加のメソッドを有する。
IRawElementProviderFragmentRoot − UIのフラグメントにおけるルート要素は、このインターフェースをサポートしなければならない。同一フラグメントの他の要素は、IRawElementProviderFragmentインターフェースをサポートする必要がある。
IRawElementProviderFragmentRootAdviseEvents − オートメーションイベントを引き起こす必要があるときに通知を受けられるようにするために、UIフラグメントのルート要素において実装される。
IRawElementProviderHwndOverride − 含まれるHWNDベース要素に関する情報を提供することを望むか、またはこれを再位置決めすることを望むプロバイダによって実装される。
IRawElementProviderOverrideType − 含まれるHWNDベース要素に関する情報を提供することを望むか、またはこれを再位置決めすることを望むプロバイダによって実装される。
IRawElementProviderSimple − 単一の要素のプロパティを公開することを望むプロバイダによって実装される、UIAutomationプロバイダインターフェース。複数の要素のプロパティおよび構造を公開するには、派生IRawElementProviderFragmentインターフェースを参照されたい。
IScrollInteropProvider − このスクロールパターンは、内容をスクロールすることによってユーザに可視になる可視領域の諸部分を変更する、コントロールの能力を公開する。例:Listbox、TreeViews、コントロールの可視領域より大きい領域を含む他のコントロール。スクロールバー自体は、Scrollableパターンをサポートしてはならず、RangeValue パターンをサポートすることに留意されたい。サーバは、スクロールを正規化(0から100まで)しなければならない。このパブリックインターフェースは、内容をスクロールするUI要素を表す。
ISelectionInteropProvider − 選択を管理するコンテナにおいて非Longhornプロバイダによって実装されるプロパティへのアクセスを提供する。
ISelectionItemInteropProvider − コンテナにおいて選択されたアイテムを定義し、および操作するメソッドおよびプロパティへのアクセスを提供する。ISelectionInteropProviderをサポートし、それ自体が選択可能である要素の子である論理要素でのみサポートされる。
ISortInteropProvider − コンテナの現在のソート順序を公開し、クライアントがプログラムによってその要素を再ソートできるようにする。いくつかのコンテナは、新しいアイテムが挿入されるときにソート順序を維持し、あるいは、更新された内容に基づいて内容を移動する(例:ソートされるWin32リストボックス)。他のコンテナは、新しいアイテムが挿入されたときに古くなる1回だけのソートを実行することだけができる(例:Excel)。
ISplitInteropProvider − 要素内容領域を複数のペインまたは対話領域に分割する能力を公開する。
ITableInteropProvider − ヘッダ情報を有するグリッドを識別する。
ITableItemInteropProvider − ヘッダ情報を有するグリッドアイテムを公開するのに使用される。
ITextInteropProvider − Textパターンは、テキストを操作する, コントロールの能力を公開する。例:TextBox RichEditは、テキストおよびテキスト関連プロパティを含む他のコンテナを制御する。このインターフェースは、テキストを維持するUI要素を表す。
ITextPointerInteropProvider − Textパターンは、テキストを操作するコントロールの能力を公開する。例:TextBox RichEditは、テキストおよびテキスト関連プロパティを含む他のコンテナを制御する。このインターフェースは、テキストを維持するUI要素を表す。
IValueInteropProvider − 値を表しているUI要素を表すパブリックインターフェース。
IVisualInformationInteropProvider − ユーザに情報を伝えているイメージまたはアニメーションに関する情報を公開するのに使用される。
IWindowInteropProvider − そのオンスクリーン位置またはサイズを変更する、要素の能力ならびにビジュアル状態を変更し、およびクローズする能力を公開する。
IZoomInteropProvider − コントロールにおける現在のズームレベルを公開し、クライアントがプログラムによってそれを変更できるようにする。
<列挙>
NavigateDirection − UIAutomationツリーのナビゲーションに関する指示。
RawElementProviderOverrideType − このプロバイダが、オーバーライドまたは非クライアント領域プロバイダのどちらとして働いているかを示す。
(Serialization名前空間)
Serialization名前空間328は、XMLファイルまたは2進表現を有するファイルから、オブジェクトの階層(たとえば要素)をロードまたは保管できるパーサを提供する。このプロセスでは、オブジェクトに関連するプロパティも設定され、イベントハンドラに関連付けられる。さらに、Serialization名前空間328は、オブジェクトをシリアライズし、デシリアライズする機能性を提供する。シリアライゼーションは、オブジェクトの生のインメモリ表現をとり、ストレージデバイス(ディスクなど)に保管するまたはネットワークを介して送信するのに適するデータのストリームを作るプロセスである。デシリアライゼーションは、逆のプロセスすなわち、データストリームをとり、データストリームからオブジェクトを作るプロセスである。デシリアライゼーションを、「構文解析」とも称し、構文解析を実装するコードを、パーサと称する。
シリアライゼーションおよびデシリアライゼーションの両方が、XAMLと称するXMLフォーマット、またはBAMLと称するバイナリフォーマットなど、複数のストリーミングフォーマットをサポートする。パーサが、マークアップコンパイラと共に使用されるときに、「CAML」を生成することができる場合、このCAMLは、シリアライズされたオブジェクトを生成するコードである。
シリアライゼーションおよびデシリアライゼーションは、XAML特徴の全範囲をサポートし、これには、標準構文、複合プロパティ、コンパクト複合構文、暗黙の子構文(implicit child syntax)、明示的な子構文(explicit children syntax)、明示的なコレクションタグを伴うコレクション構文、および暗黙のセットタグを伴うセット構文が含まれる。シリアライゼーションおよびデシリアライゼーションの両方が、完全に拡張可能である。クラスは、下記などの複数の機構を介して、どのようにシリアライズされ、デシリアライズされることを望むかを定義することができる。
・デフォルトで、クラス名が、マークアップタグ名として扱われ、プロパティおよびイベントが、同一の名前のマークアップ属性として扱われる。
・クラスは、マークアップ属性値をシリアライズし、デシリアライズする型コンバータ(System.ComponentModel.TypeConverterから導出される補助オブジェクト)を定義する。
・クラスは、IAddChildインターフェース(構文解析)を実装し、およびCLR属性を使用して、暗黙の子をシリアライズする方法を記述することにより、暗黙の子をサポートすることができる。
・クラスは、DesignerSerializationVisibilityを使用することにより、プロパティがシリアライズ/デシリアライズできるか否かを制御でき、DefaultValueAttributeメソッドおよびShouldPersistメソッドを使用することによって、特定のオブジェクトにおけるプロパティをシリアライズする必要があるか否かを制御することができる。
・あるいは、コンポーネントが、リテラルコンテンツを使用してそれ自体をシリアライズ/デシリアライズすることができ、その場合には、コンポーネントのシリアライズされた形態が、XAMLのルールに従う必要がない(コンポーネントは、明確に形成されたXMLである必要がある)。
上の例では、単語「マークアップ」を使用したが、同一の概念が、バイナリフォーマット(BAML)にも適用される。
第2の拡張性機構は、「デザイナフック(desibner hooks)」であり、これを用いると、別のコードをシリアライザおよびデシリアライザにプラグインできるようになり、そのコードが、構文解析中およびシリアライズ中に属性を挿入でき、インターセプトできるようになる。この機構を用いると、新しいマークアップ機能を作成でき、既存構文のカスタム処理が可能になる。マークアップコンパイラは、デザイナフックを使用してCAMLを生成する。
シリアライゼーションおよびデシリアライゼーションは、さまざまなオブジェクトをサポートする(たとえば、System.Objectから派生する任意のクラス)。System.Windows.DependencyObjectから駆動されるクラスは、依存性プロパティを定義することができ、この依存性プロパティは、下記の2つの特徴を得る。
・シリアライゼーションは、プロパティをシリアライズする必要があるかどうかを自動的に知らせることができる(DefaultValueAttribute/ShouldPersistの必要がない)。
・パーサが、より高速にロードするための、ある最適化を実行することができる。
シリアライゼーションおよびデシリアライゼーションは、XML名前空間と、XML名前空間をCLR名前空間にマッピングする定義ファイルをサポートする。Mapperクラスを用いると、XML名前空間およびタグ名からCLRクラスへの任意のマッピングを定義できるようになる。
下のテーブルに、System.Windows.Serialization名前空間によって公開されるメンバ例をリストする。
<クラス>
CustomXamlDeserializer − デシリアライゼーションヘルパの基本クラス。パーサの設計時または編集時のデシリアライゼーションディレクションが必要な場合には、これをサブクラス化しなければならない。
CustomXamlSerializer − シリアライゼーションヘルパの基本クラス。シリアライザの設計時または編集時のシリアライゼーションディレクションが必要な場合には、これをサブクラス化しなければならない。
DependencyPropertyContext − シリアライズされている現在のプロパティに関するコンテキスト情報。XamlSerializerは、オブジェクトにおける任意のプロパティをシリアライズする前に、このクラスのインスタンスをコンテキストスタックに置く責任を負う。
DPSerializationVisibilityAttribut − デザイナシリアライザが見る、このプロパティまたはメソッドの可視性を指定する。
EntityContext − ObjectContextおよびPropertyContextの抽象基本クラス。
LayoutAttribute − タグのLayoutTypeを指定する属性。
Mapper − 拡張マークアップ言語(XML)名前空間URI(Uniform Resource Identifier)とMicrosoft(登録商標).NET名前空間型の間のマッピングを処理する。
NamespaceMap − xml NamespaceUriと、urtNamespaceが見るAssemblyの間のマッピングのためにMapperが使用する情報を含む。
ObjectContext − シリアライズされつつある現在のオブジェクトに関するコンテキスト情報。XamlSerializerは、このクラスのインスタンスを、SerializeObject内のコンテキストスタック上に置く責任を負う。
Parser − 「Avalon」ツリーの作成に使用される、「Avalon」要素解析クラス。
ParserContext − Parserが必要とするすべてのコンテキスト情報を提供する。
PropertyContext − シリアライズされつつある現在のプロパティに関するコンテキスト情報。XamlSerializerは、オブジェクトにおけるプロパティをシリアライズする前に、このクラスのインスタンスをコンテキストスタック上に置く責任を負う。
TextContext − シリアライズされつつある現在のオブジェクトに関するコンテキスト情報。XamlSerializerが、このクラスのインスタンスをSerializeObjectのコンテキストスタック上に置く責任を負う。
XamlAttributeNode − XamlAttributeNode。
XamlClrArrayPropertyNode − XamlClrArrayPropertyNode。
XamlClrComplexPropertyNode − clrオブジェクトの子として指定されたオブジェクトである、XamlClrComplexPropertyNode。
XamlClrEventNode − 任意のオブジェクトにおけるclrイベントであるXamlClrEventNode。これが、DependencyObjectまたは任意の他のオブジェクト型に対するものである場合があることに留意されたい。
XamlClrObjectNode − DependencyObject以外の何かであるXamlClrObjectNode。
XamlClrPropertyNode − 任意のオブジェクトにおけるclrプロパティであるXamlClrPropertyNode。これが、DependencyObjectまたは任意の他のオブジェクト型に対するものである場合があることに留意されたい。
XamlClrPropertyParseException − 特定の例外を構文解析するパーサプロパティの例外クラス。
XamlComplexDependencyPropertyNode − DependencyObjectのxml子として指定されたDependencyPropertyであるXamlComplexDependencyPropertyNode。
XamlComplexPropertySerializer − XamlComplexPropertySerializerは、XML属性としてシリアライズすることができないプロパティをシリアライズするのに使用される。ComplexPropertiesは、その代わりに、要素内のマークアップとしてシリアライズされる。
XamlDefAttributeNode − XamlDefAttributeNode。
XamlDefTagNode − XamlDefTagNode。
XamlDependencyObjectSerializer − アニメーションを含むようにXamlSerializerを拡張する(Elementsに固有)。
XamlDependencyPropertyNode −DependencyObjectにおける普通の、単純なDependencyPropertyであるXamlDependencyPropertyNode。
XamlDependencyPropertyParseException − 特定の例外を構文解析するパーサダイナミックプロパティの例外クラス。
XamlDesignerSerializerAttribute − 所与のクラスのシリアライザの型名を指定する。
XamlDocumentNode − XamlDocumentノード。
XamlElementNode − DependencyObjectを表すXamlElementNode。これは、Dependencyプロパティを関連付けることができるので、CLRオブジェクトと異なる。
XamlEndAttributesNode − XamlEndAttributesNode。
XamlEndClrArrayPropertyNode − XamlEndClrArrayPropertyNode。
XamlEndClrComplexPropertyNode − XamlEndClrComplexPropertyNode。
XamlEndClrObjectNode − XamlEndClrObjectNode。
XamlEndComplexDependencyPropertyNode − XamlEndComplexDependencyPropertyNode。
XamlEndDocumentNode − XamlEndDocumentNode。
XamlEndElementNode − XamlEndElementNode。
XamlEndIDictionaryPropertyNode − XamlEndIDictionaryPropertyNode。
XamlEndIListPropertyNode − XamlEndIListPropertyNode。
XamlEndResourceNode − XamlEndResourceNode。
XamlEndStartElementNode − XamlEndStartElementNode。
XamlIDictionaryPropertyNode − XamlIDictionaryPropertyNode。
XamlIEnumeratorSerializer − プロパティによってポイントされるノードコレクションをシリアライズする。
XamlIListPropertyNode − XamlIListPropertyNode。
XamlIListSerializer − プロパティによってポイントされるIListをシリアライズする。
XamlIncludeTagNode − XamlIncludeTagNode。
XamlLanguageNode − XamlLanguageNode。
XamlLiteralContentNode − XamlLiteralContentNode。
XamlNode − 他のすべてがその中で導出される基本ノード。
XamlParseException − パーサ固有例外の例外クラス。
XamlPIMappingNode − xml名前空間をclr名前空間およびアセンブリにマッピングするXamlPIMappingNode。
XamlResourceNode − XamlResourceNode。
XamlRootSerializer − XamlSerializerは、論理ツリーを持続するのに使用される。
XamlRoutedEventNode − XamlRoutedEventNode。
XamlSerializationCallbackException − シリアライゼーションコールバック固有の例外の例外クラス。
XamlSerializer − XamlSerializerは、論理ツリーを持続するのに使用される。
XamlSerializerBase − 共通のヘルパ機能を提供する、XamlSerializerの基本クラス。
XamlTextNode − XamlTextNode。
XamlTextNodeSerializer − 特別な場合のTextNodesにXamlSerializerをオーバーライドする。
XamlXmlnsPropertyNode − XamlXmlnsPropertyNode。
XmlAttributes − DependencyObjectのXML固有属性をカプセル化するクラス。
XmlnsDictionary − XML名前空間マッピングを制御する辞書。
XmlParserDefaults − Avalonによって使用されるパブリッククラス。
<インターフェース>
IAddChild − IAddChildインターフェースは、プロパティに直接にマッピングされない、マークアップにおけるタグの下のオブジェクトまたはテキストを可能にする、オブジェクトの構文解析に使用される。
IBamlSerialize − BAMLファイルに書き込まれるダイナミックプロパティのシリアライゼーションインターフェース。
ILoaded − このインターフェースは、IsLoadedという名前の読取専用ブールプロパティ、Loadedという名前のclrイベントハンドラ、ならびにDeferLoadメソッドおよびEndDeferLoadメソッドを提供する。
IPageConnector − コンパイルされたコンテンツにおいてBamlReaderによって内部的に使用されるメソッドを提供する。
IParseLiteralContent − リテラルコンテンツ − それ自体のパーサおよびセーバを有するコンテンツ。
IUriContext − IUriContextインターフェースは、(Frame、PageViewerのような)要素および(ImageData TypeConverterのような)型コンバータに、それらについてベースuriがパーサ(xaml、baml、およびcamlの場合にはcodegen)によって設定されるようにする方法を与える。要素は、このベースuriを使用してナビゲートすることができる。
<列挙>
LayoutType − Objectに関連付けることができるLayoutType。
SerializationAction − CustomXamlSerializerヘルパまたはCustomXamlDeserializerヘルパにコールバックした後に、シリアライザまたはデシリアライザが行うアクションを記述する。
SerializationErrorAction − エラーが報告されたときにシリアライザまたはデシリアライザが行うアクションを記述する。
XamlNodeType − XamlNodeの識別子。
(Interop名前空間)
Interop名前空間330は、他のオペレーティングシステムまたはコンピューティングプラットフォームとのインターオペラビリティを可能にするクラスのセットを提供する。下のテーブルに、System.Windows.Interop名前空間によって公開されるメンバ例をリストする。
<クラス>
ApplicationProxy − AppDomainにおよぶApplicationオブジェクトとの相互作用を可能にし、異なるスレッドにおいてApplication作成を可能にする、ApplicationクラスのMarshalByRefObjectラッパー。
DocobjHost − ブラウザホスティングのためにDocobjサーバの管理される部分を実装するのに使用されるInteropクラス。
PresentationInteropHelper − VisualInteropHelper。
WindowInteropHelper − 白黒レガシウインドウおよびAvalonウインドウの相互作用を助けるAvalon WindowInteropHelperクラスを実装する。
<委任>
AppEntryPoint − Applicationコードのエントリポイントメソッドの委任。
(Forms.Interop名前空間)
Forms.Interop名前空間332は、アプリケーションがフォーム制御動作をホスティングできるようにする要素を提供する。
(System.IO.CompoundFile名前空間)
別の名前空間System.IO.CompoundFile(図3に図示せず)は、さまざまな文書配布可能ファイルが保管される複合ファイルを使用するサービスを提供する。これらのサービスを用いると、内容の暗号化および圧縮が可能になる。これらのサービスは、リフロー可能文書および固定フォーマット文書など、同一の内容の複数の翻訳のストレージもサポートする。下のテーブルに、System.IO.CompoundFile名前空間によって公開されるメンバ例をリストする。
<クラス>
CertificateHelper − 署名するためのデジタル証明書を得るヘルパ。
CompoundFileByteRangeReference − 複合ファイルストリーム内のバイトの範囲を参照するサブストリーム参照コンポーネント。
CompoundFileIndexReference − 複合ファイルストリーム内の論理エントリを参照するサブストリーム参照コンポーネント。
CompoundFileReference − 複合ファイルの一部への参照。
CompoundFileReferenceCollection − 複合ファイル参照の読取専用コレクション。
CompoundFileStorageReference − コンテナストレージへの論理参照。
CompoundFileStreamReference − コンテナストリームへの論理参照。
CompressionTransform − 複合ファイルデータ空間で使用されるCompressionTransform。
ContainerHelper − このクラスは、ロードされたApplicationインスタンスに基づいて、ユーザが現在のコンテナのStorageRootにアクセスできるようにする。
DataSpaceManager − 「Avalon」コンテナの特定のインスタンス内のデータ空間を操作するのに使用される。これは、データ圧縮およびデータ暗号化などの特徴を使用可能にするためにデータ変換モジュールをコンテナにプラグインする方法である。
DigitalSignature − クライアントが既存のデジタル署名を検査でき、検証できるようにする読取専用クラス。
DigitalSignatureCollection − デジタル署名の読取専用コレクション。
DigitalSignatureManager − このクラスは、複合ファイル内のデジタル署名の作成、持続、および操作に使用される。
DocumentSummaryInfo − 標準OLE文書サマリ情報プロパティセットにおけるプロパティに対応するプロパティ要素を含む。
FormatVersion − バージョンオブジェクトを操作するクラス。
InstanceDataFormatException − ディスクにおけるDrmTransformInstanceDataのフォーマットが無効であるときにスローされる例外。
OleProperty −
PropSet −
RenditionInfo − 翻訳の情報を操作するクラス。このクラスは、翻訳にストレージおよびストリームを追加し、その翻訳から除去するAPIも提供する。
RenditionInfoCollection − RenditionInfoオブジェクトの強く型付けされたコレクション。
RenditionManager − コンテナ内の翻訳を操作するクラス。
RightsManagementEncryptionTransform − IDataTRansformインターフェースを実装し、したがって、コンテンツのRM暗号化および復号を実装するコンテナデータ変換として使用できるクラス。
StorageInfo − コンテナファイル内のストレージを操作するクラス。
StorageRoot − メインコンテナクラスを表す。複合ファイルごとに1つのStorageRootのインスタンスがある。
StreamInfo − コンテナファイル内のストリームを操作するためのアクセスを提供する。
SummaryInfo −
TransformEnvironment − このクラスの1つのインスタンスが、データスペースマネージャによって提供される環境と相互作用するための変換オブジェクトの手段として、各変換オブジェクトに与えられる。変換環境と相互作用する必要がない場合に、所与のTransformEnvironmentオブジェクトを破棄することを選択できるので、変換オブジェクトが所与のTransformEnvironmentオブジェクトにおける参照を保持することは、必須ではない。
TransformInitializationEventArgs − イベントハンドラに引数を渡すパブリッククラス。
UseLicenseInfo − Tungstenサーバから返される使用ライセンスを記述する情報を含む。
UseLicenseInfoEnumerator − DRM Transformのインスタンスデータに保管された使用ライセンスに関する列挙を表す。
VersionTuple − メジャー番号およびマイナー番号からなるバージョンタプルのクラス。
XmlDigitalSignatureProcessor − W3C勧告に従ってデータに署名し、検証するためにデジタル署名マネージャによって使用される署名プロセッサ。
<インターフェース>
IDataTransform − すべてのデータ変換オブジェクトによって実装されなければならないインターフェース。
ILicenseStorage − このインターフェースは、このインターフェースのカスタム実装を構築することによってRMTransformとRMWizardとを分離するのに使用される。我々は、RMTransformの使用を課さずに、サードパーティがRMWizardを利用できるようにする。
ISignatureProcessor − 署名プロセッサインターフェース。
IUnknownRCW − このインターフェースは、すべてのCOMインターフェース(Runtime COM Wrapperによってラップされる)をIUnknownとして不透明に処理するのに使用される。
<列挙>
DigitalSignatureProcessor − 事前定義のデジタル署名プロセッサ。
SignatureProcessorNameType − 署名プロセッサのタイプ。
TransformIdentifierTypes − 変換オブジェクトに命名するとき、渡されるストリングを、いくつかの方法の中の1つにおいて解釈することができる。この列挙型は、識別ストリングのセマンティックスを指定するのに使用される。
<委任>
InvalidSignatureHandler − ハッシュ検証に失敗した署名によって呼び出される。
TransformInitializeEventHandler − 変換を初期化する委任メソッド。
(System.Windows.Automation名前空間)
System.Windows.Automation名前空間には、アクセシビリティおよびユーザインターフェースオートメーションをサポートするのに使用されるメンバが含まれる。アクセシビリティシステムには、クライアントサイドとプロバイダサイドが含まれる。ツールのシステムに、ユーザインターフェース情報を探すクライアントオートメーションクラスを含むクライアントサイドオートメーションツールが含まれる。クライアントオートメーションクラスに、イベント登録ツールおよび論理要素ディスカバリツールが含まれる。ツールのセットに、さらに、クライアントにユーザインターフェース情報を提供するプロバイダサイドオートメーションツールが含まれる。プロバイダサイドオートメーションツールに、クライアントにイベント情報を提供するツールを有するオートメーションプロバイダクラスが含まれる。
クライアントオートメーションクラスは、1つまたは複数のクライアントにUIオートメーションメソッドを提供する。クライアントオートメーションクラスに、いかなるUI要素にも固有でないメソッドが含まれる。クライアントオートメーションクラスは、点、ウインドウハンドル、またはデスクトップルート要素から論理要素または生の要素を得るメソッドを提供することができる。クライアントオートメーションクラスは、さらに、論理要素ベースの入力基準を見つけるメソッドを提供することができる。クライアントオートメーションクラスに、イベント通知に関する登録および登録解除のメソッドも含まれることが好ましい。オートメーションクラスは、プロキシDLLのロード、プロパティおよび制御パターンのローカライズされた名前の検索、ならびに要素比較の実行のヘルパ関数を備えることが好ましい。クライアントオートメーションクラスには、クライアントがイベントをリスンするメソッドも含まれる。下のテーブルに、System.Windows.Automation名前空間によって公開されるメンバ例をリストする。
<クラス>
ApplicationWindowPattern − 通常はトップレベルアプリケーションウインドウに関連する挙動および情報を公開する。クライアントは、このクラスを使用して、アプリケーションのMDI(multiple document interface)子を並べて表示または重ねて表示し、タスクバー上のボタンを検索し、ツールバーおよびメニューなどのユーザインターフェースの周知のセクションを突き止めることができる。
AssociatedInformationPattern − 他のオブジェクトを表すUI要素のセマンティックおよびメタデータを公開する。
Automation − クライアントのユーザインターフェース(UI)オートメーションメソッド(支援技術または自動化テストスクリプト)を含む。これらのメソッドは、特定の要素に固有ではない。
AutomationEvent − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationEventArgs − パターンまたはカスタムイベント引数クラス。
AutomationFocusChangedEventArgs − フォーカスイベント引数クラス。
AutomationIdentifier − オブジェクト識別ベース識別子の基本クラス。このクラスは、効果的に抽象であり、派生クラスだけがインスタンス化される。
AutomationIdentifierProxy − AutomationIdentifierをデシリアライズするのに使用される内部クラス。直接に使用してはならない。
AutomationPattern − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationPermission − UI要素へのアクセスに関するパーミッションのセットを提供する。このクラスを継承することはできない。
AutomationPermissionAttribute − AutomationPermissionAttributeのメソッドおよびプロパティを提供する。このクラスを継承することはできない。
AutomationProperty − 使用してはならない。このクラスは、将来のバージョンで除去される。
AutomationPropertyChangedEventArgs − PropertyChangedイベント引数クラス。
AutomationTextAttribute − オートメーションテキスト属性の識別子。
AutomationTextPointer − テキスト内の文字の位置を表す。AutomationTextPointerは、アクセステキストおよびテキストナビゲーションに関するメソッドおよびプロパティを提供する。
AutomationTextRange − 選択物の取得、設定、追加、および削除に使用される。
AutomationTextSelection − 目的:AutomationTextSelectionオブジェクトは、すべてのテキスト選択管理を処理する。挿入ポインタがその上にある選択物が、アクティブ選択物である。使用例:クライアントが、選択物の追加、除去、修正、または設定を求めるときに使用される。クライアントは、AutomationTextSelectionを介して、現在何が選択されているかを知ることもできる。
AutomationTextUnit − オートメーションTextUnitの識別子。
BasePattern − 内部クラス。
DockPattern − ランタイムでのドック状態を変更する、要素の能力を公開する。
ElementNotEnabledException − この例外は、クライアントコードが、現在イネーブルされていない要素またはコントロールの操作を試みたときにスローされる。
ElementPath − ElementPathは、アプリケーションプロバイダによって前に記録され、修正され、または全体を作成された論理要素に後でリターンするのに必要な基準を提供する。
ExpandCollapsePattern − 展開してより多くのコンテンツを表示する、または縮小してコンテンツを隠す、コントロールの能力を公開する。例に、メニューボタン、スタートボタン、Windows(登録商標) Explorer内のツリービューアイテム、およびコンボボックスが含まれる。
GridItemPattern − グリッドの要素を公開する。クライアントが、グリッドアイテムの座標をすばやく判定できるようにする。
GridPattern − 基本的なグリッド機能性、サイズ、および指定されたセルへのナビゲーションを公開する。
HierarchyItemPattern − コントロールのユーザインターフェース要素の論理ツリーでの関係と独立である、それらの要素の間の階層関係を公開する。
Input − マウス入力およびキーボード入力を送るメソッドを提供する。
InvokePattern − 単一の曖昧でないアクションを実行するオブジェクト(コントロール)によって実装される。これらのコントロールのほとんどが、状態を維持しない。これらを呼び出すことによって、アプリケーションでのアクションが開始される。このインターフェースを実装するコントロールの例に、プッシュボタン、ツールバーボタン、メニューアイテム、ハイパーリンク、チェックボックス、ラジオボタン、ツリービューコントロールの+記号、およびWindows(登録商標) Explorerのリストビューアイテムが含まれる。
LogicalElement − 実装(「Avalon」、Microsoft(登録商標)Win32(登録商標))に関わりなく、論理ツリー内のUI要素を表す。
LogicalStructureChangedEventArgs − 論理構造変更イベント引数クラス。
MultipleViewPattern − 情報、データ、または子の同一のセットの複数の表現の間で切り替える、要素の能力を公開する。例に、ListView(サムネイル、タイル、アイコン、リスト、詳細)、Excelチャート(パイ、直線、バー、式を有するセル値)、およびOutlook Calendar(年、月、週、日)が含まれる。
NoClickablePointException − 引数の値が、GetClickablePointによって定義されるその値の許容範囲外であるときにスローされる例外。たとえば、境界長方形が空であるか、幅または高さを有しないか、その時点でLogicalElementが呼び出されたものと同一でないとき。
ProxyAssemblyNotLoadedException − この例外は、プロキシアセンブリのロードに問題があるときにスローされる。これは、Automation.RegisterProxyAssemblyに応答して、または最初のhwndベースLogicalElementに出会うときのデフォルトプロキシのロードのときに発生する可能性がある。
RangeValuePattern − 有限の範囲内に値を管理する、コントロールの能力を公開する。これは、コントロールの有効な最小値および最大値ならびに現在の値を伝える。
RawElement − 生要素ツリー内の要素を表す。
ScrollPattern − 値を表しているUI要素を表す。
SelectionItemPattern − 選択物を管理するコンテナ内の個々のアイテムを表す。UIAutomationクライアントは、このクラスを使用して、SelectionItemPatternコントロールパターンをサポートするUI要素に関する情報を得るか、そのような要素を操作する。例に、リストボックスまたはツリービュー内のアイテムなど、SelectionPatternコントロールパターンをサポートするコントロール内で選択できるいかなるアイテムも含まれる。
SelectionPattern − 選択物を管理するコンテナを表す。SelectionPatternコントロールパターンをサポートするユーザインターフェース要素に関する情報を得るか、そのような要素を操作するのに、UIオートメーションクライアントによって使用される。
SortPattern − コンテナの現在のソート順序を公開し、クライアントがプログラムによって要素を再ソートできるようにする。
SplitPattern − 隣接ウインドウを作成することによってそれ自体のクローンを作成できるウインドウを表す。
TableItemPattern − ヘッダ情報を有するグリッドアイテムを表す。
TablePattern − ヘッダ情報を有するグリッドを表す。
TextPattern − エディットコントロールなどのテキストを表す。
TopLevelWindowEventArgs − TopLevelWindowEventArgsイベント引数クラス。
TreeLoadEventArgs − TreeLoadEventArgsイベント引数クラス。
ValuePattern − ラジオボタン、トグルボタン、チェックボックス、エディットボックス、RGBカラー値、およびチェックマークを付けられるメニューアイテムなどの範囲に及ばないコントロールの値を表す。
VisualInformationPattern − ダウンロード中の文書を表すInternet Explorerのなびく旗もしくはスピンする地球、またはコピーが進行中であることを示すWindows(登録商標) Explorerの飛ぶ紙など、ユーザに情報を伝えるイメージまたはアニメーションに関する情報を公開する。
WindowPattern − オンスクリーンの位置またはサイズを変更する、要素の能力を公開する。例に、トップレベルアプリケーションウインドウ(WordまたはWindows(登録商標) Explorer)、Outlookのメインウインドウペイン(フォルダ、電子メールメッセージ、タスク)、およびMDI子ウインドウが含まれる。
ZoomPattern − コントロールの現在のズームレベルを公開し、クライアントがプログラムによってこれを変更できるようにする。
<列挙>
AutomationPermissionFlag − AutomationPermissionオブジェクトのアクセスフラグを含む。
ChildArrangement − 子を配置できる異なる方法。
DockPosition − ドック可能なウインドウがはりつくコンテナのエッジ。
ExpandCollapseState − 展開/縮小状態を示すためにExpandCollapseパターンによって使用される。
GetDataOptions − GetDataのオプション。
HierarchyItemState − 階層アイテムの状態を示す列挙:縮小、展開、または部分的展開。
ItemCheckState − チェックボックス、ラジオボタン、および類似するコントロールの状態を示す列挙。
LoadState − ツリー状態フラグ。
LogicalMapping − 生ツリー内のノードが論理ツリーで表示されるかどうかを示す値。
ProxyFlags − プロパティを要求した結果を示すのに使用される列挙。
RowOrColumnMajor − このテーブル内のデータが行または列によって最もよく提示されるかどうか。
ScopeFlags − イベントをリスンするときにスコープを定義するのに使用されるフラグ。
ScrollAmount − スクロールの方向(順方向または逆方向)および量(ページまたは行)を示すためにScrollPatternによって使用される。
SendMouseInputFlags − SendMouseInputのフラグ。このフラグは、移動が行われたか否か、またはボタンが押されるか離されたか否かを示す。
SplitStyles − ウインドウを分割できる方向のフラグ。
StructureChangeType − 論理ツリーの構造の変更を示すフラグ。
TextPointerGravity − グラビティによって、テキストがAutomationTextPointerに挿入されるときのAutomationTextPointerの配置が決定される。グラビティは、常にテキストポインタの観点から、すなわち、自分が文字の前にいるか、自分が文字の後にいるかである。ユーザがテキストポインタ位置に文字を挿入するときに、「前」は、ポインタが新しい文字の前に置かれることを意味し、「後」は、ポインタが新しい文字の後に置かれることを意味する。
WindowChangeType − トップレベルウインドウ内の変更を示すフラグ。
WindowInteractionState − ユーザ対話に関するウインドウの現在の状態。
WindowVisualState − ウインドウのビジュアル状態を記述するのに使用される状態。WindowVisualStateは、Windows(登録商標)tateのOfficeおよびHTML定義に従う。
<構造体>
MatchCondition − FindLogicalElementまたはFindRawElementを使用して要素を見つけるための基準を指定する。
NameAndData − 名前、オブジェクトとしてのデータ、およびストリングとしてのデータを含む。
ProxyDescription − プロキシに関する情報を含む構造体。
SortInformation − ソートに使用される情報。
<委任>
AutomationEventHandler − AutomationEventsを処理する委任。
AutomationFocusChangedEventHandler − フォーカス変更イベントを処理する委任。
AutomationPropertyChangedEventHandler − AutomationProperty変更イベントを処理する委任。
LogicalStructureChangedEventHandler − 論理構造変更イベントを処理する委任。
ProxyFactoryCallback − HWNDハンドラによって実装され、指定されたウインドウのプロキシを要求するためにUIオートメーションフレームワークによって呼び出される。サポートされる場合にプロキシを、サポートされない場合にnullを返さなければならない。
TopLevelWindowEventHandler − トップレベルウインドウイベントを処理する委任。
(System.Windows.Ink名前空間)
System.Windows.Ink名前空間は、電子インク処理システムをサポートするクラスを提供する。電子インク処理技法は、さまざまなソフトウェアアプリケーションに有用である。これらの電子インク処理技法は、レイアウト分析、分類、および認識を含む、電子インクの分析に特に適用可能である。ある電子インク処理技法を用いると、技法を実施するソフトウェアアプリケーションの動作に関して非同期に電子インクを処理できるようになり、その結果、ソフトウェアアプリケーションの動作を停止させるか大幅に遅らせることなく、電子インクを処理できるようになる。ソフトウェアアプリケーションは、前の電子インク入力が処理されつつある間に、新しい電子インクの受け入れを継続することさえできる。
アプリケーションプログラミングインターフェースは、文書をホスティングし、および第1処理スレッドで動作するソフトウェアアプリケーションから、電子インクコンテンツを含む文書の文書データを受け取るインクアナライザオブジェクトをインスタンス化する。インクアナライザオブジェクトは、第1スレッドを使用して文書データのコピーを作り、文書データのコピーを電子インク分析処理に供給し、第1処理スレッドの制御を分析プロセスに返す。分析プロセスが電子インクを分析した後に、インクアナライザオブジェクトが、分析プロセスの結果を文書の現在の文書データと一致させる。
特定の実施形態では、ファイルまたは文書内の要素を、お互いに関連する空間位置に基づいて記述することができる。たとえば、電子インクストロークとタイプで書かれたテキストの両方を、同一の空間座標系に関して記述することができる。空間情報を使用して文書の要素を記述することによって、文書を管理するソフトウェアアプリケーションが、その文書要素間の関係を記述するデータ構造を維持することができる。具体的に言うと、ソフトウェアアプリケーションは、さまざまな文書要素のクラスの記述およびさまざまな文書要素間の関連の定義の両方を行うデータ構造を維持することができる。これらの関連は、たとえば、電子インクストロークデータまたはそのコレクションを電子文書内の他の要素(単語、行、段落、ドローイング、テーブルセルなど)にリンクするのに使用される情報として定義することができる。
ファイルまたは文書データ構造内の文書要素を、その空間位置に基づいて記述することによって、さまざまなファイルタイプの文書要素が、その文書要素を識別し操作する共通の技法を使用することができる。より詳細には、さまざまなソフトウェアアプリケーションは、文書内の文書要素をその空間位置に基づいて記述でき、およびこの空間位置参照を用いて、共通の電子インク分析方法を使用することができる。さらに、分析に関して文書の特定の領域を指定することによって、各ソフトウェアアプリケーションが、分析プロセスを、文書内の所望の要素だけに制限することができる。
文書への新しい電子インク入力を分析するために、文書を管理するソフトウェアアプリケーションは、文書に関連するデータ構造を修正して、分析される新しいインクを含む。ソフトウェアアプリケーションは、このデータ構造(またはその関連する部分)をインク分析ツールに供給し、このインク分析ツールは、分析のためにデータ構造の一部またはすべてをコピーする(かつ、アプリケーションプログラムの文書データ構造と独立のデータのこのコピーを操作する)。インク分析ツールは、解析プロセス(たとえば、レイアウト分析プロセスおよび/または分類プロセス)などの分析プロセスにコピーを渡す。ソフトウェアアプリケーションは、1つまたは複数のインク分析プロセスが実行されている間に、新しい電子インク入力および/または他のデータの受け取りを含めて、通常動作を再開することができる。新しい電子インクの受け取りに加えて、たとえば既存のインク、テキスト、イメージ、グラフィックス、テーブル、フローチャート、図、および類似物のサイズ、位置、またはコンテンツを修正するデータ、追加のテキスト、イメージ、グラフィックス、テーブル、フローチャート、図、および類似物を追加するデータ、既存のテキスト、イメージ、グラフィックス、テーブル、フローチャート、図、および類似物を削除するデータなどの任意の「他のデータ」を、アプリケーションプログラムが受け取ることができる。すべての所望の分析プロセスが完了した後に、分析結果が、インク分析ツールに返される。
インク分析ツールは、さまざまな機能を実行して、電子インクの処理を容易にする。インク分析ツールは、APIなど、プログラミングインターフェースとして実装することができる。さらに、インク分析ツールは、文書内のインクを分析する必要に応じてソフトウェアアプリケーションが呼び出すことができる、ソフトウェアオブジェクトルーチンおよび関連情報のグループとして実装することができる。
一実施形態では、インク分析ツールの実装を実施するAPI(以下ではインク分析APIと呼称する)に、2つのコアクラスを含めることができる。第1のクラスを「AnalysisContext」クラスと称し、第2のクラスを「InkAnalyzer」クラスと称する。「AnalysisContext」クラスのコンポーネントは、分析コンテキストオブジェクトを作成するのに使用される。「InkAnalyzer」クラスのコンポーネントは、文書独立分析コンテキストオブジェクトを分析プロセスに提供するオブジェクトを作成し、使用し、分析結果が生成されたときを判定し、分析結果を文書の現在の状態と一致させるのに使用される。
AnalysisContextクラスは、ホストアプリケーションによって実装され、分析コンテキストオブジェクトを作成し、この分析コンテキストオブジェクトは、ソフトウェアアプリケーションの内部文書ツリーへのプロキシビューとして働く。分析コンテキストオブジェクトには、すべての未分析のインクデータが含まれ、分析コンテキストオブジェクトは、未分析のインクデータのどれを分析しなければならないかを識別するのに使用される。分析コンテキストオブジェクトには、前に分析されたインクに関する情報も含まれる。この前に分析されたインクは、現在未分析のインクをどのように分析しなければならないかを判断するのに使用することができ、それ自体を、未分析インクの分析の過程で修正することができる。さらに、分析コンテキストオブジェクトには、文書の非インク内容に関する情報が含まれ、この情報は、非インク内容への注釈としてインクを正しく分類するのに使用される。
AnalysisContextクラスには、ソフトウェアアプリケーションによって呼び出されたときに分析コンテキストオブジェクトを作成するコンストラクタが含まれる。このクラスには、「DirtyRegion {get;}」と称するプロパティを含む分析コンテキストオブジェクトに対するさまざまなプロパティも含まれる。DirtyRegionプロパティによって、未分析インクデータを含む文書の一部分(したがって、分析コンテキストオブジェクトの一部分)が定義される。
AnalysisContextクラスには、「Rootnode {get;}」と称するプロパティも含めることができ、このプロパティは、分析コンテキストオブジェクト内の最上部またはルートのコンテキストノードを識別する。このルートコンテキストノードには、子コンテキストノードとして、所与の分析コンテキストオブジェクトの他のすべてのコンテキストノードオブジェクトが含まれる。特定の実施形態では、ルートコンテキストノードは、コンテキストノード型「Root」でなければならない。アプリケーションがそれ自体の分析コンテキストオブジェクトを実装する実施形態では、分析コンテキストオブジェクトが、ルートコンテキストノードの兄弟として他のコンテキストノードを有することができるが、InkAnalyzerクラスのコンポーネントを、ルートコンテキストノードに含まれるコンテキストノードの検討に制限することができる。
AnalysisContextクラスには、さらに、プロパティ「Analysis Hints {get;}」を含めることができ、これは、ソフトウェアアプリケーションによって設定される分析ヒントオブジェクトの配列を返す。以下で詳細に述べるように、分析ヒントオブジェクトには、分析プロセスを支援できるどんなタイプの情報をも含めることができる。この情報に、たとえば、擬似事実として、ガイドまたは単語リストを含めることができる。これには、分析に使用される言語を設定する情報、未分析インクを手描きテキストのみまたはドローイングのみとして指定する情報、または、インクをリスト、テーブル、形状、フローチャート、コネクタ、コンテナ、および類似物として識別するなど、解析処理にあらゆる種類の案内の提供を含めることもできる。
これらプロパティに加えて、AnalysisContextクラスに、たとえば分析コンテキストオブジェクトにタスクを実行させるためにソフトウェアアプリケーションによって呼び出すことができるさまざまなメソッドも含めることができる。たとえば、AnalysisContextクラスに、「FindNode (Guid id)」と称するメソッドを含めることができる。分析コンテキストオブジェクト内の各ノードは、グローバル一意識別子(またはGUID)を有し、このメソッドは、分析コンテキストオブジェクト内のどこであっても、呼出しで指定されたノードを突き止める。
AnalysisContextクラスに似て、Ink Analyzerクラスでも、さまざまなプロパティと共に、ソフトウェアアプリケーションがクラスのインスタンス(すなわちインクアナライザオブジェクト)を作成できるようにするパブリックコンストラクタが定義される。たとえば、このクラスに、「User Interface Context {get; set;}」と称するプロパティを含めることができ、このプロパティによって、分析プロセスの結果が返される処理スレッドが定義される。このプロパティを用いると、結果を他のオブジェクトと同期化できるようになる。たとえば、このプロパティが、メインフォームに設定される場合に、パーサ結果が、アプリケーションのメインスレッドにおいて発せられる。このクラスに、プロパティ「AnalysisOptions AnalysisOptions {get; set;}」も含めることができ、このプロパティでは、分析プロセスに使用できるさまざまな基準が指定される。これらの基準には、たとえば、テキスト認識のイネーブリング、テーブルの使用のイネーブリング、リストの使用のイネーブリング、注釈の使用のイネーブリング、ならびにコネクタおよびコンテナの使用のイネーブリングを含めることができる。
Ink Analyzerクラスに、さまざまなメソッドが含まれる。たとえば、このクラスに、「AnalysisRegion Analyze()」と称するメソッドを含めることができる。このメソッドによって、同期分析プロセスが開始される。文書要素データは、このメソッドに渡され、このデータによって、文書の現在の状態が記述され、文書内のどのインクを分析する必要があるかが示される。一部の実施形態について、文書要素データを、上で注記したように、分析コンテキストオブジェクト(すなわちAnalysisRegion Analyze(AnalysisContext))として供給することができる。その代わりに、個々のインクストロークを、ストロークへの参照(すなわちAnalysisRegion Analyze(Strokes))またはInk Analyzerオブジェクトのプロパティ(InkAnalyzer.Strokes {get;set})のいずれかを使用して、プロパティをAnalyzeメソッドに渡さずに分析プロセスに渡すことができる。
分析プロセスが完了したならば、このメソッドは、分析プロセスの結果を含むように修正された文書独立分析コンテキストオブジェクトへの参照を返す。このメソッドは、結果が計算された文書内の領域を記述するAnalysisRegion値も返す。
Ink Analyzerクラスに、「AnalysisRegion Analyze(AnalysisContext、waitRegion)」と称するメソッドも含めることができる。このメソッドは、上で述べた同期式のAnalysis Region Analyze()メソッドと同一であるが、指定されたwaitRegion領域に結果が必要である場合に限ってインクが分析される。より詳細には、このメソッドへの呼出しによって、文書の分析コンテキストオブジェクトと、分析コンテキストオブジェクトとのうちで分析処理が同期式に分析しなければならない領域(「waitRegion」と称する)が識別される。ある実施形態では、分析プロセスがwaitRegionの分析を完了するためにそれらの領域内の内容を分析する必要がある場合を除いて、分析コンテキストオブジェクトの他のすべて領域は、無視される。上述のように、このメソッドに渡される分析コンテキストオブジェクトには、「DirtyRegion」と称するプロパティが含まれ、このプロパティによって、文書のうちで分析を必要とする領域が記述される。特定のwaitRegionを指定することによって、ソフトウェアアプリケーションは、文書内のインクデータのすべてを分析させるのではなく、関心のある一特定領域についてより速やかに分析結果を得ることができる。これらのAnalyzeメソッドのいずれかが呼び出されるときに、すべての使用可能な分析プロセスが実行される。また、これらのAnalyzeメソッドは、同期式の呼出しなので、その完了時に一致プロセスを実行する必要はなく、完了時にイベントを解く必要もない。
Ink Analyzerクラスには、「BackgroundAnalyze(AnalysisContext)」と称するメソッドも含めることができる。このメソッドは、指定された分析動作を起動するが、個別のバックグラウンド分析スレッドにおいてそれを行う。したがって、このメソッドは、ほぼ即座にメイン処理スレッドに制御を返すが、実際の分析動作は、バックグラウンドで完了する。具体的に言うと、このメソッドは、分析処理が成功裡に開始された場合に「真」の値を返す。さらに、このメソッドに渡されるAnalysisContext値によって、文書の分析コンテキストオブジェクトが識別され、文書内のどのインクを分析する必要があるかが示される。分析動作がバックグラウンドスレッドで完了したならば、Resultsイベントを引き起こして、ソフトウェアアプリケーションが結果を受け入れられるようにする。このイベントには、結果と、結果が返されるときに文書の現在の状態に関する分析コンテキストオブジェクトに結果を組み込むのに使用される一致メソッドが含まれる。
この3つのAnalyzeメソッドのそれぞれが、「AnalysisRegion」クラス内のメソッド「Clone」を呼び出す。「Clone」メソッドを使用して、これらのAnalyzeメソッドが、後に分析結果を示すために分析プロセスによって修正される独立の文書分析コンテキストオブジェクトを作成する。
Ink Analyzerクラスには、「Reconcile (AnalysisContext current、AnalysisResultsEventArgs resultArgs)」と称するメソッドも含めることができ、これは、BackgroundAnalyze(AnalysisContext)メソッドを呼び出すことによって引き起こされた結果イベントを受け取った後に、ソフトウェアアプリケーションが呼び出すメソッドである。Reconcileメソッドは、文書独立分析コンテキストオブジェクトに含まれる分析結果を、ソフトウェアアプリケーションによって維持される分析コンテキストオブジェクトの最新バージョンと比較する。このメソッドは、分析コンテキストオブジェクトの最新バージョンに追加され除去される必要があるノードを識別し、既存ノードの、その認識結果、その位置、ノードに関連するインクストローク、または分析動作の結果に関連する他のすべてのデータなどのプロパティが変更されたか否かを識別する。このメソッドは、これらの識別された変更を、分析コンテキストオブジェクトの最新バージョンに書き込む。このメソッドは、行コンテキストノード上の単語コンテキストノードの順序など、コンテキストノード順序付けの順序付けに依存する。
分析結果(すなわち、プロパティAnalysisResultsEventArgsの値)は、このメソッドに渡される。というのは、分析結果に、パブリック結果構造体およびプライベート結果構造体が含まれるからである。パブリック構造体は、ソフトウェアアプリケーションが、一致ステージで生じる変更を再検討できるようにするために返される。プライベート構造体は、ソフトウェアアプリケーションが一致プロセスの前に分析結果を変更しないようにするために含まれる。
InkAnalyzerクラスに、「Recognizers RecognizersPriority()」および「SetHighestPriorityRecognizer(recognizer)」と称するメソッドも含めることができる。インクが認識を必要とするときに、適当なレコグナイザが、言語および機能に基づいて使用される。したがって、Recognizers RecognizersPriority()メソッドは、Ink Analyzerオブジェクトによって評価される順序で認識プロセスを返す。順序は、使用可能な認識プロセスに依存してシステムごとに判定されるが、Ink AnalyzerオブジェクトにおいてSetHighestPriorityRecognizer(recognizer)を呼び出すことによってソフトウェアアプリケーションに関してオーバーライドされることができる。InkAnalyzerは、適当なレコグナイザが見つかるまで、この順序付きリストを介して列挙する。SetHighestPriorityRecognizer(recognizer)メソッドは、認識プロセスの優先順位を上げる。特定の認識プロセスの優先順位を上げることによって、その認識プロセスが、現在の認識動作の必要な言語および能力に一致する場合に、使用されるようになる。本質的に、SetHighestPriorityRecognizer(recognizer)は、指定された認識プロセスを、RecognizersPriorityメソッドによって返されるリストの最上部に押し上げる。
Ink Analyzerクラスには、パラメータとして分析コンテキストオブジェクトを使用することができる、「AnalysisRegion Abort()」と称するメソッドも含めることができる。このメソッドを用いると、フォアグラウンドまたはバックグラウンドの分析動作を早期に終了させることができる。このメソッドは、アボートの前に分析されていた領域を記述した分析領域を返す。したがって、ソフトウェアアプリケーションが、後に分析動作を継続するつもりである場合に、この領域を、文書の現在の状態の分析コンテキストオブジェクトのDirtyRegionにマージすることができる。さらに、Ink Analyzerクラスに、実用的な頻度でInkAnalyzerオブジェクトに対して発する「AnalysisResultsEventHandler」と称するイベントを含めることができる。より詳細には、このイベントは、分析プロセスの間に、少なくとも5秒に1回発することができる。このイベントを使用して、アプリケーションに、進行中の同期分析プロセス(1つまたは複数)の状況に関する更新を提供することができる。
Ink Analysis APIに、AnalysisContextクラスおよびInk Analyzerクラスのほかにクラスを含めることもできる。たとえば、Ink Analysis APIに、Context Nodeクラスを含めることができる。このクラスには、「ContextNodeType Type {get;}」と称するプロパティなど、分析コンテキストオブジェクトおよび文書独立分析コンテキストオブジェクトを構成するコンテキストノードに関するさまざまなコンポーネントを含めることができる。各コンテキストノードは、型を有し、各型が厳守しなければならないルールの特定のセットがある。これには、子コンテキストノードのどの型が許容されるか、ストロークをコンテキストノードに直接関連付けるか、子コンテキストノードを介してのみ関連付けるか否かなどのルールが含まれる。
コンテキストノードの可能な型は、ContextNodeTypes列挙において定義することができ、これには、たとえば、インクデータ注釈非テキストデータを表すInkAnnotationノード、ドローイングを形成するインクデータを表すInkDrawingノード、単語を形成するインクデータを表すInkWordノード、テキストの行を形成する単語の1つまたは複数のInkWordノードおよび/またはTextWordノードを含むLineノード、リスト内で期待されるParagraph、Image、および類似ノードを含めることができるListItemノード、ならびにそれぞれがリストのエントリを記述する1つまたは複数のListItemノードを含むListノードを含めることができる。ノードの型に、非インクドローイングイメージを表すNonInkDrawingノード、ContextNodeType列挙の他の値によって含まれないデータを表すObjectノード、段落を形成する行に対応する1つまたは複数のLineノードを含むParagraphノード、ピクチャイメージを表すPictureノードまたはImageノード、分析コンテキストオブジェクト内の最上位ノードとして働くRootノード、テーブルを構成するアイテムを表すノードを含むTableノード、テキストボックスを表すTextBoxノード、TextWordノード、およびまだ分類されていないインクデータに対応するUnclassifiedInkノードを含めることができる。ノードの型に、他のノードのグループに関するGroupノード、中黒アイテムのInkBulletノード、テーブルの行で表される文書要素のRowノード、およびテーブルのセルで表される文書要素のCellノードも含めることができる。
ContextNodeクラスに、「GUID Id {get;}」と称するプロパティも含めることができ、これは、現在のコンテキストノードのグローバル一意識別子である。所望のコンテキストノードへのアクセスを可能にするために、単一の分析コンテキストオブジェクト内の各コンテキストノードは、一意の識別子を有しなければならない。このクラスに、「AnalysisRegion Location {get;}」と称するプロパティも含めることができ、このプロパティによって、関連するコンテキストノードが実際に配置される文書空間内のロケーションが識別される。AnalysisRegionは、1つまたは複数のおそらくはばらばらの長方形風の構造を共にグループ化する2次元構造である。このクラスに、「StrokeCollection Strokes {get;}」と称するプロパティも含めることができ、このプロパティによって、関連するコンテキストノードに関連するインクストロークが識別される。特定の実施形態では、葉コンテキストノード(Wordノード、Drawingノード、およびBulletノードなど)だけが、Ink Analysis APIによってストロークを有することを許可される。ソフトウェアアプリケーションは、このプロパティを使用して、すべての上位コンテキストノード(たとえば、ルートノードに、関連する分析コンテキストオブジェクト内のすべてのストロークへのストローク参照が含まれる)による葉ノードレベルのストロークを参照することができる。
さらに、このクラスに、「ContextNode ParentNode {get;}」と称するプロパティも含めることができ、このプロパティによって、関連するコンテキストノードを含む親コンテキストノードが識別される。特定の実施形態では、コンテキストノードが、必ず親コンテキストノードに従属するように作成され、分析コンテキストオブジェクトのスタティックメンバであるRootコンテキストノードを伴う。このクラスに、プロパティ「ContextNode[] SubNodes {get;}」も含めることができ、このプロパティによって、関連するコンテキストノードの直接の子であるすべてのコンテキストノードが識別される。すなわち、このプロパティは、これら、分析コンテキストオブジェクトの1レベル下の子コンテキストノードだけを識別する。たとえば、Paragraphコンテキストノードのこのプロパティの値は、行コンテキストノードの子である単語コンテキストではなく、そのParagraphノードに含まれる行コンテキストノードだけを識別する。
このクラスに、「RecognitionResult RecognitionResult {get;}」と称するプロパティも含めることができ、このプロパティは、関連する認識分析プロセスによって計算された認識結果を提供する。というのは、RecognitionResultが、複数の言語からの複数行のテキストを表すことができるからである。認識分析プロセスによって設定され、RecognitionResultオブジェクトの作成のために使用されるRecognitionDataプロパティが、データの重複を避けるためにコンテキストノードツリーの1レベルでのみ設定される可能性があるが、RecognitionResultは、文書独立分析コンテキストオブジェクト内のすべてのコンテキストノードに対して使用可能である。ノードが、それと関連付けられたRecognitionDataを有していない場合には、そのサブノードのすべての認識結果をマージするか、その親から認識結果を抽出する。このクラスに、「Stream RecognitionData {get; set;}」と称するプロパティも含めることができ、これは、RecognitionResult値の永続的な形態である。やはり、認識分析プロセスは、関連するコンテキストノードで設定されるStream RecognitionData値を作る。その後、RecognitionResultオブジェクトが、この値に基づいて構成される。
ContextNodeクラスに、さらに、「ContextLink[] Links {get;}」と称するプロパティを含めることができ、このプロパティによって、ContextLinkオブジェクトの配列がもたらされる。ContextLinkオブジェクトは、2つのコンテキストノード間の代替の関係を記述する。コンテキストノードは、通常は、他のコンテキストノードとの親子関係を有するが、ContextLinkを用いると、コンテキストノードの間の代替の関係が可能になる。たとえば、ContextLinkによって、2つのコンテキストノード間の接続、一方のコンテキストノードの別のコンテキストノードへのアンカリング、別のコンテキストノードによるあるコンテキストノードの包含、またはソフトウェアアプリケーションによって定義されるリンクの所望の型を可能にすることができる。AddLinkメソッドを呼び出すことによって、ContextLinkをこの配列に追加することができる。同様に、DeleteLinkメソッドを呼び出すことによって、ContextLinkをこの配列から除去することができる。
さらに、このクラスに、プロパティ「IsContainer {get;}」および「IsInkLeaf {get;}」を含めることができる。プロパティIsContainer {get;}は、関連するコンテキストノードが葉コンテキストノードでない場合(すなわち、関連するコンテキストノードに子コンテキストノードが含まれ、したがってコンテナコンテキストノードと考えられる場合)に「真」の値を有し、そうでない場合に「偽」の値を有する。IsInkLeaf {get;}プロパティは、現在のコンテキストノードがコンテナコンテキストノードでない場合に「真」の値を有し、そうでない場合に「偽」の値を有する。すなわち、現在のコンテキストノードに子コンテキストノードが含まれない場合に、そのコンテキストノードは、葉コンテキストノードと考えられる。ある実施形態では、InkLeafコンテキストノードは、ストロークデータへの参照を含むと期待されるが、コンテナコンテキストノードは、この制限を有しない。コンテナコンテキストノードは、ソフトウェアアプリケーションにより指定されることにより、ストロークデータに参照を付けなくてもよい。
ContextNodeクラスに、プロパティ「Rect RotatedBoundingBox {get; set;}」も含めることができる。このプロパティの値は、レイアウトおよび分類分析プロセスによって計算される。関連するコンテキストノードと関連付けられたインクデータが、ある角度で書き込まれる場合に、コンテキストノードの境界は、それでも水平に位置合せされる。しかし、RotatedBoundingBoxプロパティの値には、関連するコンテキストノードと関連付けられたインクデータが書き込まれた角度に対して位置合せされる。さらに、このクラスに、プロパティ「ReClassifiable {get;}」を含めることができ、このプロパティは、関連するコンテキストノードの値を修正することが許容されるか否かをInkAnalyzerに知らせる。
これらのプロパティのほかに、ContextNodeクラスに、さまざまなメソッドも含めることができる。たとえば、このクラスに、「ContextNode CreateSubNode(ContextNodeType type)」と称するメソッドを含めることができる。このメソッドを用いると、特定の型の子コンテキストノードの作成が可能になる。一実施形態では、このメソッドによって、関連するコンテキストノードの有効な子型だけを作成でき、これによって、誤った形式のデータ構造が作成されなくなる。たとえば、このメソッドによって、LineコンテキストノードがInkWordおよびTextWordの子コンテキストノードを作成することだけを許可することができる。このクラスに、「void DeleteSubNode(ContextNode node)」と称するメソッドも含めることができ、このメソッドによって、参照される子コンテキストノードが、関連する分析コンテキストオブジェクトから削除される。しかし、ある実施形態では、参照されるコンテキストノードに、まだストロークまたは子コンテキストノードが含まれる場合に、このメソッドは、エラーにならなければならない。また、参照コンテキストノードが、関連するコンテキストノードの直接の子でない場合に、このメソッドは、エラーにならなければならない。ソフトウェアアプリケーションが、それ自体の分析コンテキストオブジェクトを実装し、このメソッドを使用する場合には、分析コンテキストオブジェクト内の誤った形式のデータ構造を防ぐために、関連するコンテキストノードの直接の子でない、空でない1つまたは複数のコンテキストノードは削除されない。
さらに、このクラスに、メソッド「ContextNode[] HitTestSubNodes(AnalysisRegion region)」を含めることができ、このメソッドは、指定された領域に配置されたコンテキストノードの配列を返す。しかし、すべての派生ではなく、この要素の直接の子ノードだけが返される。その領域は、AnalysisRegionオブジェクトによって定義され、これは、1つまたは複数の長方形のコレクションとすることができる。特定の実施形態では、コンテキストノードの位置の任意の部分が、指定された領域と交わる場合に、そのコンテキストノードが、配列内に返される。このメソッドは、たとえば、文書独立分析コンテキストを作成し、分析結果を文書の現在の状態に対応する分析コンテキストオブジェクトと一致させるのに使用することができる。したがって、このメソッドは、頻繁に呼び出され、InkAnalyzerによる高速の繰り返されるアクセスのために最適化されなければならない。
Context Nodeクラスに、「MoveStroke(Stroke stroke、 ContextNode destination)」と称するメソッドも含めることができる。このメソッドは、ストロークの関連を、ある葉コンテキストノードから別の葉コンテキストノードに移動する。ある実施形態では、このメソッドは、葉コンテキストノード間だけで使用される。このクラスに、「MoveSubNodeToPosition(int OldIndex、 int NewIndex)」と称するメソッドも含めることができ、このメソッドは、関連するコンテキストノードを、兄弟コンテキストノードに関して再順序付けする。たとえば、文書が、1行に3つの単語、たとえば単語1、単語2、および単語3を有する場合、その順序は、親コンテキストノードから返されるサブノードの配列によって示唆される。このメソッドは、その順序を変更できるようにし、その結果、関連する親コンテキストノードに関して、単語1のコンテキストノードを位置1から位置3に移動することによって、単語1がこの行の最後の単語になるように指定される。
さらに、このクラスに、「AddLink(ContextLink link)」と称するメソッドを含めることができ、このメソッドでは、新しいContextLinkオブジェクトが現在のコンテキストノードに追加される。特定の実施形態では、ContextLinkを関連するコンテキストノードと関連付けられたContextLinkの配列に成功裡に追加するために、ContextLinkオブジェクトは、関連するコンテキストノードへの参照を含まなければならない。このクラスに、「DeleteLink(ContextLink link)」と称するメソッドも含めることができる。このメソッドは、関連するコンテキストノードのContextLinkの配列から、指定されたContextLinkオブジェクトを削除または除去する。一実施形態では、このメソッド呼出しは、ContextLinkが関連するコンテキストノードと関連付けられたContextLinkの配列に存在しない場合であっても、必ず成功裡に完了する。
Ink Analysis APIに、Analysis Hintクラスを含めることもできる。前に記述したクラスの多くと同様に、Analysis Hintクラスに、「AnalysisHint()」と称するコンストラクタを含めることができ、このコンストラクタは、Analysis Hintオブジェクトを空の状態に初期化する。このクラスに、「AnalysisRegion Location {get;}」と称するプロパティを含む複数のプロパティを含めることもできる。このプロパティでは、AnalysisHintを適用できる、(AnalysisRegionとして)文書内の位置を指定する。たとえば、文書が、ページの最上部にタイトルセクションがある自由形式ノートである場合に、アプリケーションは、タイトル領域についてAnalysisHintを設定して、インクの水平線がその領域で期待されることを指定することができる。このAnalysis Hintは、分析プロセスの精度を高めるのに役立つ。
このクラスに、「string Factoid {get; set;}」と称するプロパティも含めることができ、このプロパティは、文書内でAnalysisHintを適用可能なロケーションに使用される特定の「擬似事実」を指定する。擬似事実によって、インクデータの期待される使用(たとえば、通常のテキスト、数字、郵便番号、ファイル名、ウェブURLなど)に関して認識プロセスにヒントが与えられる。このクラスに、「RecognizerGuide Guide {get; set;}」および「OverrideLanguageId {get; set;}」と称するプロパティも含めることができる。RecognizerGuide Guide {get; set;}プロパティは、文書内のAnalysisHintを適用できるロケーションに適用される書込ガイドを指定する。書込ガイドは、たとえば、ユーザが線または文字を書きこむ場所をユーザに指定し、レコグナイザ分析プロセスに知らせることによって、レコグナイザ分析プロセスの精度を高める助けになることができる。OverrideLanguageId {get; set;}プロパティは、AnalysisHintを適用できる文書のLanguage Hintを指定する。Language Hintを設定することによって、InkAnalyzerオブジェクトが、コンテキストノードで指定された言語の代わりに、指定された言語を使用するようになる。
このクラスに、「PrefixText {get; set;}」と称するプロパティも含めることができ、このプロパティによって、認識されるインクの行の前に書き込まれたか、またはタイプされたテキストが指定される。さらに、このクラスに、「RecognitionModes RecognitionFlags {get; set;}」と称するプロパティを含めることができ、このプロパティによって、AnalysisHintを適用できる文書内のロケーションで認識プロセスが尊重しなければならないモードの特定の型が指定される。さらに、このクラスに、「SuffixText {get; set;}」と称するプロパティも含めることができ、このプロパティによって、認識されなければならないインクの行の後に書かれたか、またはタイプされたテキストが指定され、このクラスに、「WordList WordList {get; set;}」と称するプロパティも含めることができ、このプロパティによって、認識分析プロセスによって使用されなければならない単語の特定のセットが指定される。単語リストは、医療フォーム内に書き込まれると期待される医学用語のリストなど、ユーザが実際に入力データを書く前に、期待される認識結果が知られているときに使用することができる。
さらに、このクラスに、「WordMode {get; set}」と称するプロパティを含めることができる。この値が「真」である場合に、分析プロセスは、それ自体にバイアスをかけて、分析領域全体について単一の単語を返す。このクラスに、「Coerce {get; set}」と称するプロパティを含めることができ、このプロパティが、「真」である場合に、分析プロセスに、結果を関連するヒントで設定された擬似事実または単語リストの値に制限することを課す。このクラスに、「AllowPartialDictionaryTerms {get; set}」と称するプロパティも含めることができる。このプロパティの値が「真」の場合に、認識分析プロセスは、その認識辞書から部分的な単語を返すことを許可される。
特定の実施形態では、インク分析APIに、さらに、AnalysisRegionクラスを含めることができる。このクラスに、たとえば、AnalysisRegionオブジェクトを構成する複数のコンストラクタを含めることができる。たとえば、このクラスに、任意の領域を有するAnalysisRegionオブジェクトを構成する第1コンストラクタと、2次元長方形のパラメータに基づくAnalysisRegionオブジェクトを構成する第2コンストラクタと、4つの空間座標に基づくAnalysisRegionオブジェクトを構成する第3コンストラクタとを含めることができる。デフォルトコンストラクタは、たとえば、空の領域を作成することができる。このクラスに、複数のプロパティも含めることができる。たとえば、このクラスに、AnalysisRegionの境界長方形を検索する、「Rectangle Bounds {get;}」と称するプロパティと、関連するAnalysisRegionオブジェクトが空の内部を有するかどうかを示す「IsEmpty {get;}」と称するプロパティと、関連するAnalysisRegionに無限大が設定されているか否かを示す「IsInfinite {get;}」と称するプロパティとを含めることができる。
このクラスに、関連するAnalysisRegionオブジェクトのクローンを作成する「AnalysisRegion Clone()」と称するメソッドなど、複数のメソッドも含めることができる。このクラスに、「Equals(AnalysisRegion otherRegion)」と称するメソッドも含めることができ、このメソッドは、指定されたAnalysisRegionオブジェクト(otherRegionと称する)が、関連するAnalysisRegionオブジェクトと同一であるかどうかをテストする。このメソッドは、指定されたAnalysisRegionオブジェクトの内部が、関連するAnalysisRegionオブジェクトの内部と同一である場合には「真」の値を返し、そうでない場合には「偽」の値を返す。
このクラスに、さらに「Intersect(AnalysisRegion regionToIntersect)」と称するメソッドを含めることができ、このメソッドは、関連するAnalysisRegionオブジェクトを指定された分析領域に対し切り取る。したがって、結果としてAnalysisRegionオブジェクトには、指定された分析領域とオーバーラップするか交差する領域だけが含まれる。このクラスには、「Intersect(Rectangle rectangle)」と称するメソッドも含めることができ、このメソッドは、関連するAnalysisRegionオブジェクトを指定された長方形に切り取る。この場合もやはり、結果としてAnalysisRegionオブジェクトには、指定された長方形とオーバーラップするか交差する領域だけが含まれる。このクラスに、関連するAnalysisRegionオブジェクトを空の内部に初期化する「MakeEmpty()」と称するメソッド、および関連するAnalysisRegionによって占められる領域に無限大を設定する「MakeInfinite()」と称するメソッドも含めることができる。このクラスに、さらに、関連するAnalysisRegionオブジェクトと結合または追加されるAnalysisRegionオブジェクトを指定する「Union(AnalysisRegion regionToUnion)」と称するメソッド、および指定された長方形を関連するAnalysisRegionオブジェクトと結合する「Union(Rectangle rectangle)」と称するメソッドなど、異なる定義の領域を結合するか分離するさまざまなメソッドを含めることができる。このメソッドを用いると、関連するAnalysisRegionオブジェクトの座標空間内に長方形を指定することができる。もちろん、このクラスに、いかなる領域の所望の定義に基づいても、領域を組み合わせるかある領域を他の領域から除外する、多数の他のメソッドを含めることができる。
Ink Analysis APIは、Recognition Resultクラスも有することができる。前述のクラスの多くと同様に、Recognition Resultクラスに、1つまたは複数のコンストラクタを含めることができる。たとえば、このクラスに、「RecognitionResult(Stream lattice)」と称するコンストラクタを含めることができ、このコンストラクタは、所与の認識格子(recognition lattice)からRecognitionResultsオブジェクトを構成する。特定の実施形態では、認識格子は、認識プロセスからの結果をシリアライズした形態である。このメソッドは、たとえば、関連するRecognitionResultオブジェクトの構成に使用されるバイト配列として認識格子を指定することができる。このクラスには、「RecognitionResult(ContextNode node)」と称するコンストラクタも含めることができ、このコンストラクタは、所与のコンテキストノードからRecognitionResultsオブジェクトを構成する。このクラスに、「RecognitionResult(string Text、 int StrokeCount)」と称するコンストラクタも含めることができ、このコンストラクタは、指定されたテキスト値からRecognitionResultsオブジェクトを構成し、このオブジェクトが、指定された数のストロークに関連付けられ、認識プロセスが、実際の手描きインクデータに対応する代替の認識値に達しなかった場合に、このオブジェクトを訂正に使用することができる。さらに、このクラスに、「RecognitionResult(RecognitionResult leftRecognitionResult、 RecognitionResult rightRecognitionResult)」と称するコンストラクタを含めることができ、このコンストラクタは、2つの既存のRecognitionResultsオブジェクトを共にマージすることによって、RecognitionResultsオブジェクトを構成する。
RecognitionResultクラスに、単一のインクオブジェクトに含まれるストロークのコレクションを表すストロークインデックスの配列を提供する「StrokeCollection StrokeCollection {get;}」と称するプロパティ、および認識結果の最良の代替物を提供する「RecognitionAlternate TopAlternate {get;}」と称するプロパティなど、1つまたは複数のプロパティも含めることができる。このクラスに、認識分析プロセスからの現在の結果の最良の代替選択の信頼レベル(たとえば、強、中、または弱)を提供する「RecognitionConfidence RecognitionConfidence {get;}」と称するプロパティ、および認識分析プロセスからの分析結果の最良の結果ストリングを返す「string TopString {get;}」と称するプロパティも含めることができる。
RecognitionResultsクラスに、「public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart、 selectionLength、 maximumAlternates)」と称するメソッドなどの複数のメソッドも含めることができ、このメソッドは、認識分析プロセスからの分析結果の最良の結果ストリング内の選択肢からの代替物のコレクションを指定し、各代替物は、インクの1つのセグメントだけに対応する。このメソッドの入力パラメータに、たとえば、代替物のコレクションが返されるテキスト選択の始めを指定する値と、代替物のコレクションが返されるテキスト選択の長さを指定する値と、返される代替物の最大個数を指定する値を含めることができる。このメソッドは、認識結果の最良の結果ストリング内の選択物からの代替物のRecognitionAlternateCollectionコレクションを返すことができる。
RecognitionResultsに、さらに、「RecognitionResult Merge(RecognitionResult left、 string separator、 RecognitionResult right)」と称するメソッドを含めることができる。このメソッドは、平らな格子をもたらす、単一ストリングからの新しいRecognitionResultオブジェクトの作成、既存RecognitionResultオブジェクトの先頭または末尾への単一ストリングの付加、または既存の2つのRecognitionResultオブジェクトの間での単一ストリングの連結に使用することができる。このクラスに、「ModifyTopAlternate(RecognitionAlternate alternate)」と称するメソッドも含めることができ、このメソッドは、認識結果を既知の代替物を用いて修正することを指定する。いくつかの実施形態では、デフォルトで、認識分析プロセスの結果の最良の結果ストリングが、最上位の代替物に対応する。しかし、このメソッドを使用して、最上位の代替物以外の代替物を、認識分析プロセスの結果において使用することを指定することができる。新しい最上位代替物が、前の代替物と異なるセグメント化をもたらす場合には、ModifyTopAlternateメソッドは、その変更を反映するようにコンテキストノードを自動的に更新する。認識結果を修正するために使用できる代替物を検索するために、このメソッドは、GetAlternatesFromSelectionメソッドを呼び出す。このクラスは、「Stream Save()」と称するメソッドも有することができ、このメソッドは、関連するRecognitionResultsオブジェクトを、認識格子の形態で永続的に維持する。認識格子は、認識プロセスからの結果を表すのに使用されるシリアライズされたフォーマットである。
Ink Analysis APIは、AnalysisOptions列挙型も有することができる。この型には、分析プロセスに関するすべての使用可能なオプションを使用可能にする「const AnalysisOptions Default」と称するフィールドなど、インクデータを分析プロセスによって分析する方法を指定する1つまたは複数のフィールドを含めることができる。このフィールドは、たとえば、テキスト認識、テーブルの使用、リストの使用、注釈の使用、コネクタおよびコンテナの使用、および中間結果の使用を可能にすることができる。この型に、注釈の検出を使用可能または使用不能にする「const AnalysisOptions EnableAnnotations」と称するフィールドと、コネクタおよびコンテナの検出を使用可能または使用不能にする「const AnalysisOptions EnableConnectorsAndContainers」と称するフィールドと、異なるシーケンシャル分析プロセスの使用の間(たとえば、解析プロセスとその後の認識プロセスの間)にソフトウェアアプリケーションに分析の結果を返すことを使用可能または使用不能にする「const AnalysisOptions EnableIntermediateResults」とを含めることもできる。この型は、リストの検出を使用可能または使用不能にする「const AnalysisOptions EnableLists」と称するフィールド、およびテーブルの検出を使用可能または使用不能にする「const AnalysisOptions EnableTables」と称するフィールドも有することができる。この列挙型に、さらに、テキスト認識分析プロセスを使用可能または使用不能にする「const AnalysisOptions EnableTextRecognition」と称するフィールドを含めることができる。しかし、追加の分析プロセス(または同一分析プロセスの異なるバージョン)が使用可能である場合には、この型に、追加のAnalysisOptionsをそれ相応に含めることができる。
さらに、Ink Analysis APIに、AnalysisResultsEventArgsクラスを含めることができる。このクラスは、「public AnalysisResultsEventArgs()」と称するコンストラクタを有することができ、このコンストラクタは、分析結果を含み、AnalysisResultsイベントが引き起こされるときにソフトウェアアプリケーションに返されるデータ構造を作成する。このクラスに、「InkAnalyzer InkAnalyzer {get;}」と称するプロパティも含めることができ、このプロパティによって、分析プロセスを実行するInkAnalyzerオブジェクトが識別される。
このAPIは、Lineクラスも有することができ、このクラスは、幾何学的線を表す「Line」オブジェクトの使用を認識するオペレーティングシステムのいくつかの型で有用になる可能性がある。このクラスに、Lineオブジェクトを作成する「public Line(Point beginPoint、 Point endPoint)」と称するコンストラクタなどのコンストラクタを含めることができる。このクラスに、Lineオブジェクトの始点を表す「public Point BeginPoint {get; set;}」と称するプロパティ、およびLineオブジェクトの終点を表す「public Point EndPoint {get; set;}」と称するプロパティなど、さまざまなプロパティも含めることができる。
これらのクラスのほかに、Ink Analysis APIに、Recognition Alternateクラスも含めることができる。このクラスには、レコグナイザの辞書と比較される、インクのセグメントに関する可能な単語の一致を表す要素を含めることができる。たとえば、このクラスに、単一の線(線は2つの点によって表される)に存在するRecognitionAlternateオブジェクトのアセンダラインを提供する「Line Ascender {get;}」と称するプロパティと、単一の線に存在するRecognitionAlternateオブジェクトのベースラインを提供する「public Line Baseline {get;}」と称するプロパティと、単一の線に存在するRecognitionAlternateのディセンダラインを提供する「Line Descender {get;}」と称するプロパティとを含めることができる。このクラスに、「RecognitionResult Extract {get;}」と称するプロパティも含めることができ、このプロパティは、現在のRecognitionAlternateオブジェクトのRecognitionResultsオブジェクトを提供する。このプロパティは、たとえば、単語を含む行のRecognitionResultオブジェクトからその単語のRecognitionResultオブジェクトを抽出するのに使用することができる。
このクラスに、単一の線に存在するRecognitionAlternateオブジェクトの中線を提供する「Line Midline {get;}」と称するプロパティと、インクオブジェクトに含まれるストロークのコレクションを提供する(すなわち、RecognitionResultに関連するストロークを表すStrokeCollectionを提供する)「StrokeCollection Strokes {get;}」と称するプロパティと、1つまたは複数のインクオブジェクトに含まれる、RecognitionResultに関連するストロークを表すストロークのコレクションを提供する「StrokeCollection[] StrokesArray {get;}」と称するプロパティとを含めることもできる。このクラスに、「RecognitionConfidence RecognitionConfidence {get;}」と称するプロパティも含めることができ、このプロパティは、認識分析プロセスがRecognitionAlternateオブジェクトまたはジェスチャの認識で判定した信頼のレベル(たとえば、強、中、または弱)を提供する「RecognitionConfidence RecognitionConfidence {get;}」と称するプロパティも含めることができる。行でないノードについて、関連するコンテキストノードの子の最小のRecognitionConfidenceが返される。このクラスに、「string RecognizedString {get;}」と称するプロパティも含めることができ、このプロパティは、代替物の結果ストリングを指定する。したがって、単語コンテキストノードより上位の任意のコンテキストノードについて、結果ストリングが、このメソッドによって共に連結される。たとえば、行ノードに、すべての子ノードまたは単語ノードの結果が含まれる結果ストリングが含まる。段落ノードに、そのすべての子ノードまたは行ノードの結果を含む結果ストリングが含まれる。
RecognitionAlternateクラスに、たとえば「StrokeCollection[] GetStrokesArrayFromTextRange(int selectionstart、 int selectionlength)」と称するメソッドを含む1つまたは複数のメソッドも含めることができ、このメソッドは、既知のテキスト範囲に対応する各インクオブジェクトからのStrokeCollectionを指定する。このクラスに、「StrokeCollection[] GetStrokesFromStrokesArrayRanges(StrokeCollection[] strokesArray」と称するメソッドも含めることができ、このメソッドは、ストロークの既知の入力コレクションを含み、レコグナイザが代替物を提供できる、ストロークの最小のコレクションを指定する。より詳細には、ストロークが、インクオブジェクトの配列によって返され、この配列のそれぞれに、コレクションのストロークインデックスの配列が含まれる。このメソッドによって返されるインクストロークのコレクションは、入力コレクションと一致する場合があり、あるいは、入力コレクションが、入力ストロークのすべてを含む最小の認識結果の一部だけと一致する場合、より長い場合がある。このクラスには、さらに、「StrokeCollection GetStrokesFromStrokesRanges(StrokeCollection strokes)」と称するメソッドを含めることができ、このメソッドは、ストロークの既知の入力コレクションを含み、およびレコグナイザが代替物を提供できるストロークの最小コレクションを指定する。このクラスに、さらに、「StrokeCollection GetStrokesFromTextRange(int selectionstart、 int selectionlength)」と称するメソッドを含めることができ、このメソッドは、既知のテキスト範囲に対応するStrokeCollectionを指定する。
このクラスに、さらに、「void GetTextRangeFromStrokes(ref int selectionstart、 ref int selectionend、 StrokeCollection strokes)」と称するメソッドを含めることができ、このメソッドは、ストロークの既知のセットを含む代替物をレコグナイザが返すことができる認識されたテキストの最小の範囲を指定し、このクラスに、さらに、「void GetTextRangeFromStrokesArray(ref int selectionstart、 ref int selectionend、 StrokeCollection[] strokesarray)」と称するメソッドを含めることができ、このメソッドは、ストロークの既知のセットを含む代替物をレコグナイザが返すことができる認識されたテキストの最小の範囲を指定する。このクラスに、「RecognitionAlternateCollection SplitWithConstantPropertyValue(GUID propertyType)」と称するメソッドも含めることができ、このメソッドは、このメソッドがそれについて呼び出された代替物の分割である代替物のコレクションを返す。このコレクション内の各代替物に、メソッドに渡されたプロパティと同一のプロパティ値を有する隣接認識セグメントが含まれる。たとえば、このメソッドを使用して、認識結果における信頼度の境界のレベル(強、中、または弱)、行境界、またはセグメント境界によって元の代替物を分割する代替物を得ることができる。このクラスに、さらに、「byte[] GetPropertyValue(GUID propertyType)」と称するメソッドを含めることができ、このメソッドは、代替物でのレコグナイザの信頼度など、代替物の既知のプロパティの値を指定する。しかし、すべての認識分析プロセスが、すべてのプロパティ型の値を提供するわけではない。したがって、このメソッドは、関連する認識分析プロセスによってサポートされる型のデータを提供する。
Ink Analysis APIに、Recognition Alternate Collectionクラスも含めることができる。上述のクラスの多くと同様に、このクラスに、RecognitionAlternateCollectionオブジェクトを作成する、「RecognitionAlternateCollection()」と称するコンストラクタを含めることができる。このクラスに、代替認識値のコレクションに含まれるオブジェクトまたはコレクションの数を提供する、「Count {get;}」と称するプロパティ、代替認識値のコレクションへのアクセスがソフトウェアアプリケーションと同期化される(すなわち、「スレッドセーフ」である)か否かかを示す値を提供する「IsSynchronized {get;}」と称するプロパティ、および代替認識値のコレクションへのアクセスを同期化するために使用することができるオブジェクトを提供する「SyncRoot {get;}」と称するプロパティなど、複数のプロパティも含めることができる。
このクラスに、代替認識値の現在のコレクションの要素のすべてを、指定された宛先配列インデックスから始めて、指定された1次元配列にコピーする、「virtual void CopyTo(Array array、 int index)」と称するメソッド、および呼出し側が構造体ごとに代替認識値のコレクション内の各RecognitionAlternateを介して列挙するために使用できるようにするIEnumerableの標準実装である「IEnumerator IEnumerable.GetEnumerator()」と称するメソッドなど、1つまたは複数のメソッドも含めることができる。このクラスに、「RecognitionAlternateCollectionEnumerator GetEnumerator()」と称するメソッドも含めることができ、このメソッドは、認識代替値のコレクション内のすべてのオブジェクトを含むRecognitionAlternateCollectionEnumeratorを返す。このメソッドは、たとえば、認識代替値のコレクション内の各オブジェクトを検索するのに使用することができる。
Ink Analysis APIに、さらに、RecognitionConfidence列挙およびRecognitionMode列挙を含めることができ、これらのそれぞれに、認識分析プロセスに関する1つまたは複数のフィールドを含めることができる。たとえば、Recognition Confidence型に、正しい結果が提供される代替認識値のリストに含まれることを認識分析プロセスが確信していることを示す「Intermediate」と称するフィールド、結果が提供される代替認識値のリストに含まれることを認識分析プロセスが確信していないことを示す「Poor」と称するフィールド、および代替認識値の最良の代替物が正しいことを認識分析プロセスが確信していることを示す「Strong」と称するフィールドなどの複数のフィールドを含めることができる。
同様に、Recognition Modeクラスに、認識分析プロセスが電子インクデータを解釈する方法、したがって認識結果ストリングを決定する方法を示すフィールドを含めることができる。たとえば、このクラスに、認識分析プロセスがコンテキストについて指定された擬似事実に基づいて認識結果を強制することを指定する「Coerce」と称するフィールド、認識分析プロセスが電子インクデータを単一の行として扱うことを示す「Line」と称するフィールドを含めることができる。このクラスに、認識分析プロセスが認識モードを適用しないことを指定する「None」と称するフィールド、および認識分析プロセスが電子インクデータを単一の単語または文字を形成するものとして扱うことを示す「Segment」と称するフィールドも含めることができる。さらに、このクラスに、複数のセグメント化を使用不可にする「TopInkBreaksOnly」と称するフィールドを含めることができる。
さらに、Ink Analysis APIに、2つのコンテキストノードを共にリンクする方法を定義するContext Linkクラスを含めることができる。ContextLinkオブジェクト自体は、リンクされる2つのコンテキストノード、リンクの方向、およびリンクの型を表す。このクラスには、別のコンテキストノードからリンクされるソースコンテキストノードを指定する「ContextNode SourceNode{get;}」と称するプロパティ、ソースコンテキストノードと宛先コンテキストノードの間に存在するリンク関係の型を指定する「ContextLinkType LinkType{get;}」と称するプロパティ、およびカスタムリンクが使用されていることを指定する「CustomLinkType{get;}」と称するプロパティを含めることができる。この状況は、APIが認識できるものを越えるアプリケーション固有のリンクを表すためにInkAnalyzer APIのリンクシステムを使用するとアプリケーションが決断したときに発生する。
このクラスに、「ContextNode DestinationNode {get;}」と称するプロパティも含めることができ、このプロパティは、別のコンテキストノードからリンクされている宛先コンテキストノードを指定する。このクラスから使用可能な2つのコンストラクタを設けることができ、このコンストラクタによって、既存のソースコンテキストノードと既存の宛先コンテキストノードの間の関係が作成される。
このクラスに、「ContextLinkType enum」と称する列挙も含めることができ、この列挙によって、2つのコンテキストノードによって共有される関係の型が定義される。これらのさまざまなリンク型に、たとえば、「AnchorsTo」型を含めることができ、この型は、あるノードが他のノードにアンカリングされることを記述する。両方のノードが、解析状況に基づいて、SourceNodeプロパティまたはDestinationNodeプロパティを使用することができる。リンク型に、型「Contains」も含めることができ、この型は、あるノードに他のノードが含まれることを記述する。この関係では、コンテナノードを、SourceNodeとして参照することができ、含まれるノードを、DestinationNodeとして参照することができる。リンク型に、さらに、「PointsTo」型を含めることができ、この型は、あるノードが別のノードをポインティングしていることを記述する。この関係について、ポインティングを行っているノードを、SourceNodeとして参照することができ、ポインティングされているノードを、DestinationNodeとして参照することができる。さらに、リンク型が、「PointsFrom」型を有することができ、この型は、あるノードが他のノードからポインティングされていることを記述する。この関係で、他のノードからポインティングされるノードを、SourceNodeとして参照することができ、ポインティングしているノードを、DestinationNodeとして参照することができる。
リンク型に、さらに、あるノードが別のノードの長さを水平に走ることを記述する「SpansHorizontally」型、およびあるノードが別のノードの長さを垂直に走ることを記述する「SpansVertically」型を含めることができる。これらの型について、通常は最後に書かれる、他のノードをカバーするノード(ストライクアウト、下線、マージンバー)を、SourceNodeとして参照することができ、スパンされるノードを、DestinationNodeとして参照することができる。リンク型に、カスタムリンク型が使用されたことを記述する「Custom」型も含めることができる。この値が使用されるときに、ContextLinkオブジェクトの「CustomLinkType」プロパティによって、このリンクの目的に関するさらなる詳細を提供することができる。
(アプリケーションモデル)
Windows(登録商標)クライアントは、ウェブの特性を従来のデスクトップアプリケーションの特性と一体化する。アプリケーションモデルは、セキュアアプリケーションのフレームワークを提供し、クライアントアプリケーションの開発、展開、および保守を単純にする。このフレームワークは、単純で一貫性のあるユーザ経験を提供する。たとえば、ローカルアプリケーションは、そのアプリケーションがブラウザ内でホスティングされるか、独立アプリケーションであるかにかかわらず、馴染みのあるブラウザ風の特徴を活用できると同時に、ローカルクライアントで実行されるという利益が維持される。このフレームワークを用いると、ユーザが、ウェブをよく知っていることを活用でき、これによって、ユーザの快適レベルが高まり、新しいアプリケーションの使い方を習得するのに必要な時間が減る。アプリケーションモデルは、System.Windows名前空間の一部である。
アプリケーションモデルを使用するアプリケーションは、ウェブページに類似する形で動作する。ユーザが、アプリケーションをブラウズするときに、アプリケーションが、クライアントシステムのリブートし、または他のアプリケーションの誤動作の危険を犯して、インストールのユーザ確認を必要とすることなく、自動的にインストールされる。一実施形態では、アプリケーションが、徐々にダウンロードされ、これによって、アプリケーションが完全にダウンロードされる前の初期レベルの対話性がもたらされる。アプリケーション更新は、自動的に、ユーザに透過的な手段で処理される。したがって、ユーザは、明示的にアプリケーションアップグレードを実行する必要なしに、必ずアプリケーションの最新バージョンにアクセスできる。
アプリケーションモデルを使用するアプリケーションは、クライアントシステムがオンライン(すなわち、ウェブに能動的に結合される)またはオフライン(すなわち、ウェブに能動的に結合うされていない)のいずれであるかにかかわらず、クライアントシステムでローカルに動作する。これによって、アプリケーションが、能動的ウェブ接続を必要とし、継続的にウェブを介してサーバとデータを交換するサーバベースのアプリケーションよりもよい性能を提供する。アプリケーションが、クライアントシステムにインストールされた後に、アプリケーションに、「スタート」メニューから(従来のデスクトップアプリケーションのように)またはアプリケーションにナビゲートすることによって(ウェブアプリケーションのように)アクセスすることができる。アプリケーションモデルには、3つの主要な部分すなわち、アプリケーションライフサイクル管理、アプリケーションフレームワーク、およびナビゲーションフレームワークが含まれる。
2つの異なるタイプのアプリケーションすなわち、「オンラインアプリケーション」および「管理されるアプリケーション」がアプリケーションモデルによってサポートされる。アプリケーションモデルを使用するアプリケーションは、ブラウザ内または独立のトップレベルウインドウ内で実行することができる。「オンラインアプリケーション」は、サーバから実行され、ブラウザ内でホスティングされるアプリケーションである。アプリケーションを、オフラインアクセスのためにキャッシングすることができ、あるいは、アプリケーションが、正しい実行のためにあるオンラインリソースを要求することができる。「管理されるアプリケーション」は、オフラインで使用可能であり、クライアントにインストールされる。オペレーティングシステムが、管理されるアプリケーションにサービスする。管理されるアプリケーションのエントリを、クライアントの「スタート」メニューに追加することができる。アプリケーションを、徐々にダウンロードして、インストールプロセスが完了するまで対話を遅延させるのではなく、ユーザが、アプリケーションのダウンロード中にそのアプリケーションとの対話を開始できるようにすることができる。
アプリケーションは、アプリケーションの実行に必要な追加ライブラリおよびリソースなど、アプリケーションの依存性を記述した関連するアプリケーションマニフェストを有する。インストーラは、アプリケーションマニフェストを使用して、アプリケーションのダウンロードおよびインストールを制御する。「信頼マネージャ」が、インストールプロセスの一部として呼び出される。信頼マネージャは、アプリケーションマニフェストを使用して、アプリケーションの実行にどのパーミッションが必要であるかを判定する。アプリケーションマニフェストでは、ファイル関連付け、スタートメニューにエントリを追加するか否か、ならびにエントリのアイコンおよびテキストなどのシェル情報も指定される。
アプリケーションモデルを使用するアプリケーションに、マークアップ、コード、リソース、およびマニフェストが含まれる。アプリケーションは、そのアプリケーションオブジェクトによって定義され、スコープを指定され、このアプリケーションオブジェクトは、各アプリケーションセッションの寿命の間メモリ内に残存するグローバルオブジェクトである。アプリケーションオブジェクトは、そのアプリケーションに属するすべてのリソースの知識を有し、それ自体と他のアプリケーションまたは外部リソースとの間の境界を提供する。アプリケーションフレームワークは、アプリケーションオブジェクトを使用して、アプリケーションを識別し、参照し、これと通信する。アプリケーションオブジェクトは、ウインドウおよびリソースを管理し、スタートアップ挙動およびシャットダウン挙動を指定し、コンフィギュレーション設定を処理し、アプリケーションのビジュアルスタイルを指定し、ナビゲーションにわたってコード、状態、およびリソースを共有し、アプリケーション全体のイベントを処理するためにも、アプリケーション内で使用される。
ナビゲーションフレームワークは、ユーザのナビゲーションの熟知およびウェブでのジャーナリングアクティビティを活用するナビゲーションベースのアプリケーションをサポートして、アプリケーションがシステムブラウザ内でホスティングされるか独立のトップレベルウインドウ内にあるのいずれであるかにかかわらず、クライアントシステムでの馴染みのある一貫したユーザ経験を提供する。ジャーナリングは、ナビゲーションヒストリを追跡するためにナビゲーションフレームワークによって使用されるプロセスである。ジャーナルを用いると、ユーザが、リニアナビゲーションシーケンスにおいてステップを前後に再トレースできるようになる。ナビゲーション経験が、ブラウザ内または独立のナビゲーションウインドウ内のどちらででホスティングされるかにかかわらず、各ナビゲーションが、ジャーナル内に残存し、「戻る」ボタンおよび「次」ボタンを使用することまたは「go forward」メソッドおよび「go back」メソッドを使用することによって、リニアシーケンスで再訪問することができる。各ナビゲーションウインドウが、関連するジャーナルを有する。
NavigationApplicationクラスは、ナビゲーションに関連するプロパティおよびイベントを提供することによって、ナビゲーションベースアプリケーションを作成する作業を単純にする。NavigationApplicationクラスには、アプリケーションが始めて起動されるときにシステムがナビゲートするページまたは要素を指定するスタートアッププロパティが含まれる。このクラスは、アプリケーション開発者が、アプリケーションをサブクラス化する必要なしにページにわたってグローバル状態情報を共有できるようにするプロパティコレクションを有し、これらのプロパティへのデータバインディングをサポートする。
(例示的なコンピューティングシステムおよび環境)
図4に、プログラミングフレームワーク132を(完全にまたは部分的にのいずれかで)実施できる、適するコンピューティング環境400の例を示す。コンピューティング環境400は、本明細書に記載のコンピュータアーキテクチャおよびネットワークアーキテクチャで使用することができる。
例示的なコンピューティング環境400は、コンピューティング環境の一例にすぎず、コンピュータおよびネットワークアーキテクチャの使用の範囲または機能性に関する制限を示唆することを意図されたものではない。また、コンピューティング環境400を、例示的なコンピューティング環境400に示された、構成要素のいずれかまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
フレームワーク132を、多数の他の汎用または専用コンピューティングシステム環境または構成と共に実施することができる。使用に適する可能性がある衆知のコンピューティングシステム、コンピューティング環境、および/または構成の例に、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれるが、これに制限されない。このフレームワークのコンパクト版またはサブセット版を、携帯電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信/コンピューティング装置などの限られたリソースのクライアントで実施することもできる。
フレームワーク132を、1つまたは複数のコンピュータまたは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令の全般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。フレームワーク132は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージ装置を含むローカルおよびリモートの両方のコンピュータストレージ媒体に配置することができる。
コンピューティング環境400に、コンピュータ402の形の汎用コンピューティング装置が含まれる。コンピュータ402のコンポーネントには、1つまたは複数のプロセッサまたは処理装置404、システムメモリ406、および処理装置404を含むさまざまなシステムコンポーネントをシステムメモリ406に接続するシステムバス408を含めることができるが、これに制限はされない。
システムバス408は、メモリバスまたはメモリコントローラ、周辺バス、AGP(Accelerated Graphics Port)、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む、複数の可能なタイプのバス構造の1つまたは複数を表す。たとえば、そのようなアーキテクチャに、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも称するPCI(Peripheral Component Interconnects)バスを含めることができる。
コンピュータ402に、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、揮発性媒体および不揮発性媒体、リムーバブル媒体および固定の媒体の両方を含む、コンピュータ402によってアクセス可能である任意の使用可能な媒体とすることができる。
システムメモリ406には、ランダムアクセスメモリ(RAM)410などの揮発性メモリおよび/または読取専用メモリ(ROM)412などの不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ402内の要素の間での情報の転送を助ける基本ルーチンを含む基本入出力システム(BIOS)414が、ROM412に保管される。RAM410には、通常は、処理装置404によって即座にアクセス可能および/または処理装置404によって現在操作されているデータおよび/またはプログラムモジュールが含まれる。
コンピュータ402に、他のリムーバブル/固定の、揮発性/不揮発性コンピュータストレージを含めることもできる。たとえば、図4に、固定の不揮発性磁気媒体(図示せず)から読み取り、これに書き込むハードディスクドライブ416、リムーバブル不揮発性磁気ディスク420(たとえば「フロッピ(登録商標)ディスク」)から読み取り、これに書き込む磁気ディスクドライブ418、およびCD−ROM、DVD−ROM、または他の光媒体などのリムーバブル不揮発性光ディスク424から読み取り、かつ/またはこれに書き込む光ディスクドライブ422が含まれる。ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422は、それぞれ、1つまたは複数のデータメディアインターフェース423によってシステムバス408に接続される。その代わりに、ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422を、1つまたは複数のインターフェース(図示せず)によってシステムバス408に接続することができる。
ディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ402のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。この例では、ハードディスク416、リムーバブル磁気ディスク420、およびリムーバブル光ディスク424が示されているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)、または他の光ストレージ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、および類似物などのコンピュータによってアクセス可能なデータを保管できる他のタイプのコンピュータ可読媒体を使用して、例示的なコンピューティングシステムおよび環境を実施することもできることを理解されたい。
たとえば、オペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432を含む、任意の個数のプログラムモジュールを、ハードディスク416、磁気ディスク420、光ディスク424、ROM412、および/またはRAM410に保管することができる。オペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432(またはその組合せ)に、プログラミングフレームワーク132の要素を含めることができる。
ユーザは、キーボード434およびポインティング装置436(たとえば「マウス」)などの入力装置を介してコンピュータ402にコマンドおよび情報を入力することができる。他の入力装置438(具体的には図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、および/または類似物を含めることができる。上記および他の入力装置は、システムバス408に接続された入出力インターフェース440を介して処理装置404に接続されるが、パラレルポート、ゲームポート、またはUSB(Universal Serial Bus)などの他のインターフェースおよびバス構造によって接続することができる。
モニタ442または他のタイプの表示装置を、ビデオアダプタ444などのインターフェースを介してシステムバス408に接続することもできる。モニタ442のほかに、他の出力周辺装置に、スピーカ(図示せず)およびプリンタ446など、入出力インターフェース440を介してコンピュータ402に接続できるコンポーネントを含めることができる。
コンピュータ402は、リモートコンピューティング装置448などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。たとえば、リモートコンピューティング装置448を、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノード、などとすることができる。リモートコンピューティング装置448は、コンピュータ402に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
コンピュータ402とリモートコンピュータ448の間の論理接続は、ローカルエリアネットワーク(LAN)450および一般的な広域ネットワーク(WAN)452として図示されている。そのようなネットワーキング環境は、オフィス、会社規模のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
LANネットワーキング環境において実施されるときに、コンピュータ402は、ネットワークインターフェースまたはネットワークアダプタ454を介してローカルネットワーク450に接続される。WANネットワーキング環境において実施されるときに、コンピュータ402に、通常は、広域ネットワーク452を介する通信を確立する、モデム456または他の手段が含まれる。モデム456は、コンピュータ402の内蔵または外付けとすることができるが、入出力インターフェース440または他の適当な機構を介してシステムバス408に接続することができる。図示のネットワーク接続が、例示的であり、コンピュータ402と448の間の通信リンクを確立する他の手段を使用できることを理解されたい。
コンピューティング環境400と共に図示されたものなどのネットワーク化された環境において、コンピュータ402に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置に保管することができる。たとえば、リモートアプリケーションプログラム458が、リモートコンピュータ448の記憶装置に常駐している。例示のために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントが、本明細書では別個のブロックに図示されているが、そのようなプログラムおよびコンポーネントが、さまざまなときにコンピューティング装置402の異なるストレージコンポーネントに常駐することができ、コンピュータのデータプロセッサによって実行されることを理解されたい。
フレームワーク132、具体的にはAPI142またはAPI142に対して行われる呼出しの実装を、ある形のコンピュータ可読媒体を介して保管または伝送することができる。コンピュータ可読媒体は、コンピュータによってアクセスできる任意の使用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体に、「コンピュータストレージ媒体」および「通信媒体」を含めることができる。「コンピュータストレージ媒体」には、揮発性および不揮発性、取外し可能および取外し不能の、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージに関する方法またはテクノロジで実施される媒体が含まれる。コンピュータストレージ媒体には、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリテクノロジ、CD−ROM、デジタル多用途ディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは、所望の情報を保管するのに使用でき、コンピュータによってアクセスできる他のすべての媒体が含まれるが、これに制限はされない。
「通信媒体」によって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータが実施される。通信媒体には、すべての情報配信媒体も含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形で、その特性の1つまたは複数を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれる。
その代わりに、フレームワークの諸部分を、ハードウェアで、あるいはハードウェア、ソフトウェア、および/またはファームウェアの組合せで実施することができる。たとえば、1つまたは複数の特定用途向け集積回路(ASIC)またはプログラマブルロジックデバイス(PLD)を設計またはプログラムして、本フレームワークの1つまたは複数の部分を実施することができる。
プログラミングインターフェース(または単にインターフェース)は、コードの1つまたは複数のセグメントが、コードの1つまたは複数の他のセグメントと通信するかそのセグメントによって提供される機能性にアクセスできるようにする機構、処理、プロトコルとみなすことができる。その代わりに、プログラミングインターフェースを、他のコンポーネントの1つまたは複数の機構、メソッド、関数呼出し、モジュールなどとの通信接続が可能なシステムのコンポーネントの1つまたは複数の機構、メソッド、関数呼出し、モジュール、オブジェクトなどとみなすことができる。前の文の用語「コードのセグメント」は、コードの1つまたは複数の命令または行を含むことが意図されており、これには、使用される用語、コードセグメントが別々にコンパイルされるかどうか、コードセグメントがソースコード、中間コード、またはオブジェクトコードのどれとして提供されるか、コードセグメントがランタイムシステム内またはプロセス内で使用されるかどうか、コードセグメントが同一のマシンまたは異なるマシンに配置されるか、あるいはマシンにまたがって分散されるかどうか、コードのセグメントによって表される機能性が、完全にソフトウェアで、完全にハードウェアで、あるいはハードウェアとソフトウェアの組合せのどれで実施されるかに無関係に、たとえば、コードモジュール、オブジェクト、サブルーチン、関数などが含まれる。
概念上、プログラミングインターフェースは、一般的に、図5または図6に示されているように見ることができる。図5に、第1コードセグメントと第2コードセグメントがそれを介して通信する導管としてのインターフェースInterface1を示す。図6に、システムの第1コードセグメントおよび第2コードセグメントが媒体Mを介して通信できるようにする、インターフェースオブジェクトI1およびI2(第1および第2コードセグメントの一部とすることも、そうしないこともできる)を含むものとしてインターフェースを示す。図6に鑑みて、インターフェースオブジェクトI1およびI2を、同一のシステムの別々のインターフェースと考えることができ、オブジェクトI1およびI2と媒体Mにインターフェースが含まれると考えることもできる。図5および7に、両方向のフローおよびフローの両側のインターフェースを示したが、ある実施形態では、一方向の情報フローだけを有する(または、下で示すように情報フローなし)ことができ、あるいは、片側だけにインターフェースオブジェクトを有することができる。制限ではなく例として、アプリケーションプログラミングまたはプログラムインターフェース(API)、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル(COM)インターフェースなどの用語が、プログラミングインターフェースの定義に含まれる。
そのようなプログラミングインターフェースの態様に、第1コードセグメントが情報(ここで、「情報」は、その最も広い意味で使用され、「情報」には、データ、コマンド、要求などが含まれる)を第2コードセグメントに送る方法と、第2コードセグメントがその情報を受け取る方法と、情報の構造、シーケンス、構文、編成、スキーマ、タイミング、および内容とを含めることができる。これに関して、基礎になるトランスポート媒体自体は、媒体が有線、無線またはその両方の組合せのどれであれ、インターフェースによって定義される形で情報がトランスポートされる限り、インターフェースの動作に重要でない可能性がある。ある状況では、情報転送が別の機構を介する(たとえば、情報が、コードセグメントの間で流れる情報と別に、バッファ、ファイルなどに置かれる)ので、従来の意味で一方向または両方向に渡されないか、あるコードセグメントが第2コードセグメントによって実行される機能性に単純にアクセスするので情報が存在しない場合がある。これらの態様のいずれかまたはすべてが、所与の状況で、たとえば、コードセグメントが疎結合された構成または密結合された構成のどちらの一部であるかに応じて、重要になる可能性があり、したがって、このリストは、例示的であり、非限定的とみなされなければならない。
プログラミングインターフェースのこの概念は、当業者に既知であり、本発明の前述の詳細な説明から明白である。しかし、プログラミングインターフェースを実施する他の形があり、明示的に除外されない限り、これらも、本明細書に記載の請求項に含まれることが意図されている。そのような他の形は、図5および7の極度に単純化された図よりも洗練されて見える、または複雑に見える可能性があるが、それでも、そのような他の形によって、同一の全体的な結果を達成する類似する機能が実行される。これから、プログラミングインターフェースの例示的な代替実施形態を短く説明する。
A.因数分解
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の個別の通信に分解することによって、間接的に達成することができる。これを、図7および9に概略的に示す。図からわかるように、いくつかのインターフェースを、機能性の分割可能なセットとして記述することができる。したがって、数学的に24または2×2×3×2を提供するように、図5および7のインターフェースの機能性を因数分解して、同一の結果を達成することができる。したがって、図7からわかるように、インターフェースInterface1によって提供される機能を再分割して、このインターフェースの通信を複数のインターフェース、Interface1A、Interface1B、Interface1Cなどに変換し、同一の結果を達成することができる。図8からわかるように、インターフェースI1によって提供される機能性を、複数のインターフェースI1a、I1b、I1cなどに再分割し、それと同時に同一の結果を達成することができる。同様に、第1コードセグメントから情報を受け取る第2コードセグメントのインターフェースI2を、複数のインターフェースI2a、I2b、I2cなどに因数分解することができる。因数分解するときに、第1コードセグメントに含まれるインターフェースの数が、第2コードセグメントに含まれるインターフェースの数と一致する必要はない。図7および9のどちらの場合でも、インターフェースInterface1およびI1の機能的趣旨は、それぞれ図5および7と同一のままである。インターフェースの因数分解は、関連するプロパティ、累算的プロパティ、および他の数学的プロパティに従う場合もあり、因数分解の理解が困難な場合がある。たとえば、動作の順序付けは、重要でない場合があり、その結果、あるインターフェースによって実行される機能を、別のコードまたはインターフェースによって、インターフェースに達するよりかなり前に実行することができ、あるいは、システムの別々の構成要素によって実行することができる。さらに、プログラミング技術の当業者は、同一の結果を達成する異なる関数呼出しを行うさまざまな形があることを理解することができる。
B.再定義
いくつかの場合に、初期の結果を達成しながら、プログラミングインターフェースのある態様(たとえばパラメータ)を無視し、追加し、または再定義することが可能である場合がある。これを、図9および11に示す。たとえば、図5のインターフェースInterface1に、関数呼出しSquare(input、precision、output)すなわち、3つのパラメータinput、precision、およびoutputを含む呼出しであって、第1コードセグメントから第2コードセグメントに発行される関数呼出しが含まれると仮定する。真ん中のパラメータprecisionが、図9に示されているように、所与のシナリオで関係がない場合に、無視することができ、意味のない(この状況)パラメータと置換することができる。関係のない追加のパラメータを追加することもできる。どちらの場合でも、inputが第2コードセグメントによって二乗された後にoutputが返される限り、square(二乗)の機能性を達成することができる。precision(精度)は、コンピューティングシステムの下流または他の部分に意味のあるパラメータとすることもできるが、二乗計算の狭い目的について精度が必要でないことが理解されたならば、置換するか無視することができる。たとえば、結果に悪影響を及ぼさずに、有効な精度値を渡すのではなく、誕生日などの意味のある値を渡すことができる。同様に、図10に示されているように、インターフェースI1が、インターフェースへのパラメータを無視するか追加するために再定義されたインターフェースI1’に置換される。インターフェースI2は、同様に、不要なパラメータを無視するか、ほかで処理できるパラメータについて再定義されたインターフェースI2’として再定義することができる。ここでのポイントは、いくつかの場合に、プログラミングインターフェースに、パラメータなど、ある目的に不要な態様が含まれる場合があり、したがって、それらを無視するか再定義することができ、あるいは、他の目的のために他の形で処理できるということである。
C.インラインコーディング
2つの別々のコードモジュールの機能性の一部またはすべてをマージし、これらの間の「インターフェース」の形を変えることが実行可能である場合もある。たとえば、図5および7の機能性を、それぞれ図11および13の機能性に変換することができる。図11では、図5の前の第1コードセグメントおよび第2コードセグメントが、その両方を含む1つのモジュールにマージされている。この場合に、コードセグメントは、まだ互いに通信することができるが、インターフェースは、単一モジュールにより適する形に適合させることができる。したがって、たとえば、前のCallステートメントおよびReturnステートメントは、もはや不要とすることができるが、インターフェースInterface1に準ずる類似する処理または応答を、まだ有効とすることができる。同様に、図12では、図6のインターフェースI2の一部(またはすべて)を、インターフェースI1にインラインで記述して、インターフェースI1”を形成することができる。図からわかるように、インターフェースI2は、I2aおよびI2bに分割され、インターフェース部分I2aは、インターフェースI1とインラインにコーディングされて、インターフェースI1”を形成する。具体的な例として、図6のインターフェースI1が、関数呼出しsquare(input、output)を実行し、これがインターフェースI2によって受け取られ、インターフェースI2は、第2コードセグメントによるinputを用いて渡された値の処理(二乗)の後に、二乗された結果にoutputを用いて返すことを検討されたい。その場合に、第2コードセグメントによって実行される処理(inputの二乗)を、インターフェースへの呼出しなしで、第1コードセグメントによって実行することができる。
D.分離(divorce)
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の個別の通信に分解することによって、間接的に達成することができる。これを、図13および15に示す。図13からわかるように、1または複数のミドルウェア(機能性および/またはインターフェース機能を元のインターフェースから分離するので、分離インターフェース)を設けて、第1インターフェースInterface1の通信を、異なるインターフェース、この例ではインターフェースInterface2A、Interface2B、およびInterface2Cに従うように変換する。たとえば、これは、たとえばInterface1プロトコルに従ってオペレーティングシステムと通信するように設計されたアプリケーションのインストールベースがあるが、そのオペレーティングシステムが、異なるインターフェース、この例ではインターフェースInterface2A、Interface2B、およびInterface2Cを使用するように変更される場合に行うことができる。ポイントは、第2コードセグメントによって使用された元のインターフェースが、もはや第1コードセグメントによって使用されるインターフェースと互換でなくなるように変更され、したがって、古いインターフェースと新しいインターフェースとに互換性を持たせるため、仲介物が使用されることである。同様に、図14からわかるように、インターフェースI1からの通信を受け取る分離インターフェースDI1を有し、インターフェース機能性を、たとえば、DI2と共に働くが同一の機能的結果を提供するように再設計されているインターフェースI2aおよびI2bに送る、分離インターフェースDI2を有する第3コードセグメントを導入することができる。同様に、DI1およびDI2は、同一のまたは類似する機能的結果を提供しながら、図6のインターフェースI1およびI2の機能性を変換するように一緒に働くことができる。
E.再記述
もう1つの可能な変形形態が、コードを動的に再記述して、インターフェース機能性を、同一の総合的な結果を達成する別のものに置換することである。たとえば、中間言語(たとえば、Microsoft(登録商標) IL、Java(登録商標) ByteCodeなど)で提示されるコードセグメントを、実行環境(.NET framework(登録商標)、Java(登録商標)ランタイム環境、または類似するランタイムタイプ環境によって提供されるものなど)内のジャストインタイム(JIT)コンパイラまたはインタープリタに供給するシステムがある。JITコンパイラは、第1コードセグメントから第2コードセグメントへの通信を動的に変換する、すなわち、それらを、第2コードセグメント(元のまたは異なる第2コードセグメント)が必要とする可能性がある異なるインターフェースに合わせることができる。これを、図15および17に示す。図15からわかるように、この手法は、上で説明した分離シナリオに似ている。これは、たとえば、アプリケーションのインストールベースが、Interface1プロトコルに従ってオペレーティングシステムと通信するように設計されているが、オペレーティングシステムが、異なるインターフェースを使用するように変更される場合に行うことができる。JITコンパイラを使用して、通信を、オンザフライでインストールベースアプリケーションからオペレーティングシステムの新しいインターフェースに合わせることができる。図16からわかるように、インターフェースを動的に再記述するこの手法は、動的因数分解、または他の形のインターフェースの変更にも適用することができる。
代替実施形態を介してインターフェースとして同一のまたは類似する結果を達成する、上で説明したシナリオを、さまざまな形で、順次および/または並列で、または他の介在コードと共に、組みわせることもできることにも留意されたい。したがって、上で提示した代替実施形態は、相互に排他的ではなく、混合され、マッチングされ、かつ組み合わされて、図5および7で提示された包括的なシナリオと同一のまたは同等のシナリオを作ることができる。また、ほとんどのプログラミング構造と同様に、本明細書に記載されていないが、それでも本発明の趣旨および範囲によって表されるインターフェースの同一のまたは類似する機能性を達成する他の類似する形があることに留意されたい、すなわち、インターフェースの価値の基礎になるのは、少なくとも部分的に、インターフェースによって表される機能性と、インターフェースによって使用可能にされる有益な結果である。
(結論)
本発明を、構造的特徴および/または方法論的動作に固有の言葉で説明したが、請求項で定義される本発明は、説明した特定の特徴または動作に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および動作は、請求される発明を実施する例示的な形として開示されたものである。
クライアントが、従来のプロトコルを使用するインターネットを介してウェブサービスにアクセスするネットワークアーキテクチャを示す図である。 アプリケーションプログラムインターフェース(API)を含むネットワークプラットフォームのソフトウェアアーキテクチャを示すブロック図である。 APIによってサポートされるプレゼンテーションサブシステムならびにさまざまなAPI関数の機能クラスを示すブロック図である。 ソフトウェアアーキテクチャのすべてまたは一部を実行することができる例示的コンピュータを示すブロック図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。 プログラミングインターフェースの実施形態例を示す図である。
符号の説明
100 ネットワーク環境
104 ネットワーク
106,112,114,122〜129 通信リンク
132 プログラミングフレームワーク
142 APIレイヤ
400 コンピューティング環境
416 ハードディスクドライブ
418 磁気ディスクドライブ
422 光ディスクドライブ
420 リムーバブル不揮発性磁気ディスク
424 リムーバブル不揮発性光ディスク
438 入力装置

Claims (58)

  1. 1つまたは複数のコンピュータ可読媒体において実施されるプログラミングインターフェースであって、
    グラフィカルコンポーネントの生成に関連するサービスの第1群と、
    クラスのプロパティをデータソースにバインディングすることに関連するサービスの第2群と、
    コンテンツのフォーマットに関連するサービスの第3群と
    を備えたことを特徴とするプログラミングインターフェース。
  2. サービスの前記第1群は、前記グラフィカルコンポーネントの外見を決定するサービスを含むことを特徴とする請求項1に記載のプログラミングインターフェース。
  3. サービスの前記第1群は、前記グラフィカルコンポーネントの挙動を決定するサービスを含むことを特徴とする請求項1に記載のプログラミングインターフェース。
  4. サービスの前記第1群は、前記グラフィカルコンポーネントの配置を決定するサービスを含むことを特徴とする請求項1に記載のプログラミングインターフェース。
  5. サービスの前記第1群は、前記グラフィカルコンポーネントを定義する複数のネストされたプリミティブコントロールを含むことを特徴とする請求項1に記載のプログラミングインターフェース。
  6. 前記グラフィカルコンポーネントは、ベクトルグラフィックスによって定義されることを特徴とする請求項1に記載のプログラミングインターフェース。
  7. 少なくとも1つのグラフィカルコンポーネントのアニメーション表示に関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  8. ナビゲーション機能を有するアプリケーションの作成に関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  9. 電子インク処理システムのサポートに関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  10. 複数の異なる媒体型の組合せに関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  11. ブラウザ型インターフェースを使用するクライアントでのアプリケーション実行に関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  12. アプリケーションの自動的なインストールおよび実行に関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  13. コンテンツのシリアライゼーションに関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  14. ユーザインターフェースの生成のオートメーションに関連するサービスの第4群をさらに備えたことを特徴とする請求項1に記載のプログラミングインターフェース。
  15. 請求項1に記載の前記プログラミングインターフェースを備えたソフトウェアアーキテクチャ。
  16. 1つまたは複数のコンピュータ可読媒体で実施されるプログラミングインターフェースであって、
    コンテンツを表示する前に前記コンテンツをフォーマットすることに関連するサービスの第1群と、
    クラスのプロパティをデータソースにバインディングすることに関連するサービスの第2群と、
    イメージングエフェクトの生成に関連するサービスの第3群と
    を備えたことを特徴とするプログラミングインターフェース。
  17. サービスの前記第1群は、複数のデータ要素を配置することを含むことを特徴とする請求項16に記載のプログラミングインターフェース。
  18. サービスの前記第3群は、少なくとも1つのグラフィカルアイテムのアニメーション表示を含むことを特徴とする請求項16に記載のプログラミングインターフェース。
  19. サービスの第4群は、アプリケーションのユーザが複数のイメージの間でナビゲートできるようにする前記アプリケーションの作成に関連することを特徴とする請求項16に記載のプログラミングインターフェース。
  20. 前に作成されたコンテンツの編集に関連するサービスの第4群をさらに備えたことを特徴とする請求項16に記載のプログラミングインターフェース。
  21. 入力デバイスから受け取る入力の管理に関連するサービスの第4群をさらに備えたことを特徴とする請求項16に記載のプログラミングインターフェース。
  22. 他のコンピューティングシステムとのインターオペラビリティを有効にすることに関連するサービスの第4群をさらに備えたことを特徴とする請求項16に記載のプログラミングインターフェース。
  23. 1つまたは複数のマイクロプロセッサと1つまたは複数のソフトウェアプログラムとを含むコンピュータシステムであって、前記1つまたは複数のソフトウェアプログラムは、オペレーティングシステムからサービスを要求するためにアプリケーションプログラムインターフェースを使用し、前記アプリケーションプログラムインターフェースは、
    グラフィカルオブジェクトの生成に関連するサービスの第1群と、
    前記グラフィカルオブジェクトのコンポーネントの作成に関連するサービスの第2群と、
    前記グラフィカルオブジェクトの外見の修正に関連するサービスの第3群と
    を含むサービスを要求する個別のコマンドを含むことを特徴とするコンピュータシステム。
  24. サービスの前記第1群は、少なくとも1つのグラフィカルオブジェクトの挙動を定義するサービスを含むことを特徴とする請求項23に記載のコンピュータシステム。
  25. サービスの前記第1群は、前記1つのグラフィカルオブジェクトの配置を定義するサービスを含むことを特徴とする請求項23に記載のコンピュータシステム。
  26. 前記グラフィカルオブジェクトの外見を修正することは、前記グラフィカルオブジェクトのアニメーション表示を含むことを特徴とする請求項23に記載のコンピュータシステム。
  27. サービスの前記第2群は、幾何学的形状を生成するサービスを含むことを特徴とする請求項23に記載のコンピュータシステム。
  28. 前記アプリケーションプログラムインターフェースは、さらに、テキストをフォーマットすることに関連するサービスの第4群を備えたことを特徴とする請求項23に記載のコンピュータシステム。
  29. データをフォーマットするのを容易にする1つまたは複数の第1機能を呼び出すステップと、
    グラフィカルオブジェクトを作成するのを容易にする1つまたは複数の第2機能を呼び出すステップと、
    前記グラフィカルオブジェクトの外見を変更するのを容易にする1つまたは複数の第3機能を呼び出すステップと
    を備えたことを特徴とする方法。
  30. 複数のグラフィカルオブジェクトを使用してユーザインターフェースを生成するのを容易にする1つまたは複数の第4機能を呼び出すステップをさらに備えたことを特徴とする請求項29に記載の方法。
  31. ユーザインターフェースのランタイム作成を容易にする1つまたは複数の第4機能を呼び出すステップをさらに備えたことを特徴とする請求項29に記載の方法。
  32. 複数のグラフィカルオブジェクトを使用してユーザインターフェースを生成するのを容易にする1つまたは複数の第4機能を呼び出すステップと、
    前記ユーザインターフェースのランタイム作成を容易にする1つまたは複数の第5機能を呼び出すステップと
    をさらに備えたことを特徴とする請求項29に記載の方法。
  33. 前記第1機能は、
    ユーザ入力を受け取るステップと、
    ディスプレイ上でデータ要素を配置するステップと
    を容易にすることを特徴とする請求項29に記載の方法。
  34. 前記第2機能は、幾何学的形状の生成を容易にすることを特徴とする請求項29に記載の方法。
  35. 前記第2機能は、少なくとも1つの幾何学的形状の生成を容易にし、および前記第3機能は、前記幾何学的形状の外見を修正するのを容易にすることを特徴とする請求項29に記載の方法。
  36. 複数の幾何学的形状を作成できるようにする機能の第1のセットを公開する手段と、
    前記幾何学的形状が配置される方法を変更できるようにする機能の第2のセットを公開する手段と、
    前記幾何学的形状の外見を修正できるようにする機能の第3のセットを公開する手段と
    を備えたことを特徴とするシステム。
  37. 機能の前記第2のセットは、さらに、ページ上の前記幾何学的形状の配置をレンダリングできるようにすることを特徴とする請求項36に記載のシステム。
  38. 前記複数の幾何学的形状は、線を含むことを特徴とする請求項36に記載のシステム。
  39. 機能の前記第3のセットは、さらに、イメージエフェクトを少なくとも1つの幾何学的形状に関連付けられるようにすることを特徴とする請求項36に記載のシステム。
  40. 機能の前記第3のセットは、さらに、期間にわたって特定の幾何学的形状の外見を変更できるようにすることを特徴とする請求項36に記載のシステム。
  41. 前記複数の幾何学的形状を使用するユーザインターフェースの生成を可能にする機能の第4セットを公開する手段をさらに備えたことを特徴とする請求項36に記載のシステム。
  42. グラフィカルオブジェクトを1つまたは複数のデータソースに関連付けられるようにする機能の第4セットを公開する手段をさらに備えたことを特徴とする請求項36に記載のシステム。
  43. グラフィカルオブジェクトのデータ固有版を表示できるようにする機能の第4セットを公開する手段をさらに備えたことを特徴とする請求項36に記載のシステム。
  44. グラフィカルオブジェクトのコンポーネントの作成を容易にする1つまたは複数の第1機能を呼び出すステップと、
    グラフィカルオブジェクトの生成を容易にする1つまたは複数の第2機能を呼び出すステップと、
    前記グラフィカルオブジェクトの外見の修正を容易にする1つまたは複数の第3機能を呼び出すステップと、
    前記グラフィカルオブジェクトの配置を容易にする1つまたは複数の第4機能を呼び出すステップと、
    前記グラフィカルオブジェクトのデータソースへの関連付けを容易にする1つまたは複数の第5機能を呼び出すステップと
    を備えたことを特徴とする方法。
  45. コンテンツの複数の表示の間でのナビゲーションを容易にする1つまたは複数の第6機能を呼び出すことをさらに備えたことを特徴とする請求項44に記載の方法。
  46. 前記グラフィカルオブジェクトのコンポーネントは、複数の形状を含むことを特徴とする請求項44に記載の方法。
  47. 前記第2機能は、さらに、グラフィカルユーザインターフェースの生成を容易にすることを特徴とする請求項44に記載の方法。
  48. 前記第3機能は、特定のグラフィカルオブジェクトの前記外見を修正する機能を含むことを特徴とする請求項44に記載の方法。
  49. 前記第3機能は、グラフィカルオブジェクトの1つまたは複数のコンポーネントの前記外見を修正する機能を含むことを特徴とする請求項44に記載の方法。
  50. 前記第3機能は、グラフィカルオブジェクトをディスプレイ上の異なる位置に移動する機能を含むことを特徴とする請求項44に記載の方法。
  51. 前記第3機能は、ユーザ入力に応答してグラフィカルオブジェクトの外見を修正することを特徴とする請求項44に記載の方法。
  52. 前記第4機能は、ユーザ入力に応答してグラフィカルオブジェクトの配置を修正することを特徴とする請求項44に記載の方法。
  53. プログラムを開発する方法であって、
    グラフィカルイメージのコンポーネントを選択する機能の第1群にアクセスするステップと、
    前記グラフィカルイメージを生成する機能の第2群にアクセスするステップと、
    前記グラフィカルイメージの少なくとも1つのコンポーネントの外見を修正する機能の第3群にアクセスするステップと、
    前記グラフィカルイメージに関連するコンテンツをフォーマットする機能の第4群にアクセスするステップと
    を備えたことを特徴とする方法。
  54. 前記グラフィカルイメージは、ユーザインターフェースであることを特徴とする請求項53に記載の方法。
  55. 前記コンテンツは、テキスト情報であることを特徴とする請求項53に記載の方法。
  56. 前記コンテンツは、グラフィカルデータであることを特徴とする請求項53に記載の方法。
  57. 前記グラフィカルイメージのコンポーネントをデータソースに関連付ける機能の第5群にアクセスすることをさらに備えたことを特徴とする請求項53に記載の方法。
  58. 機能の前記第3群は、さらに、前記グラフィカルイメージの少なくとも1つのコンポーネントに関連する挙動を修正することを特徴とする請求項53に記載の方法。

JP2004264628A 2003-10-24 2004-09-10 コンピュータプラットフォームのためのプログラミングインターフェース Pending JP2005135384A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/694,080 US20050091576A1 (en) 2003-10-24 2003-10-24 Programming interface for a computer platform

Publications (1)

Publication Number Publication Date
JP2005135384A true JP2005135384A (ja) 2005-05-26

Family

ID=34465630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004264628A Pending JP2005135384A (ja) 2003-10-24 2004-09-10 コンピュータプラットフォームのためのプログラミングインターフェース

Country Status (16)

Country Link
US (2) US20050091576A1 (ja)
EP (1) EP1536327A3 (ja)
JP (1) JP2005135384A (ja)
KR (1) KR101031700B1 (ja)
CN (1) CN100530083C (ja)
AU (1) AU2004205327B2 (ja)
BR (1) BRPI0407050A (ja)
CA (1) CA2481590A1 (ja)
IL (1) IL164072A (ja)
MX (1) MXPA04008849A (ja)
NO (1) NO20043781L (ja)
NZ (1) NZ535217A (ja)
RU (1) RU2371758C2 (ja)
SG (1) SG111201A1 (ja)
TW (1) TWI366105B (ja)
ZA (1) ZA200407299B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009540466A (ja) * 2006-06-16 2009-11-19 マイクロソフト コーポレーション メディアファイルを管理するためのアプリケーションプログラムインターフェース
JP7420911B2 (ja) 2017-06-08 2024-01-23 ウィックス.コム リミテッド. ウェブサイトコンポーネント相互間におけるスマートインタラクションのためのシステム及び方法

Families Citing this family (280)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US6753885B2 (en) 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US9256356B2 (en) * 2001-03-29 2016-02-09 International Business Machines Corporation Method and system for providing feedback for docking a content pane in a host window
US6826729B1 (en) * 2001-06-29 2004-11-30 Microsoft Corporation Gallery user interface controls
US8132115B2 (en) * 2003-02-27 2012-03-06 Autodesk, Inc. Dynamic properties for software objects
US7313764B1 (en) * 2003-03-06 2007-12-25 Apple Inc. Method and apparatus to accelerate scrolling for buffered windows
US7155440B1 (en) * 2003-04-29 2006-12-26 Cadence Design Systems, Inc. Hierarchical data processing
US9715678B2 (en) * 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US8799808B2 (en) 2003-07-01 2014-08-05 Microsoft Corporation Adaptive multi-line view user interface
US7716593B2 (en) * 2003-07-01 2010-05-11 Microsoft Corporation Conversation grouping of electronic mail records
US7707255B2 (en) * 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
CA2451164C (en) * 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments
US7187380B2 (en) * 2003-10-30 2007-03-06 Hewlett-Packard Development Company, L.P. Telecommunications graphical service program
US7216127B2 (en) * 2003-12-13 2007-05-08 International Business Machines Corporation Byte stream organization with improved random and keyed access to information structures
GB2411331A (en) * 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
US7181464B2 (en) * 2004-02-20 2007-02-20 Microsoft Corporation Forward-only evaluation for XPATH inverse query processing
WO2005081970A2 (en) 2004-02-24 2005-09-09 The Curators Of The University Of Missouri Self-assembling cell aggregates and methods of making engineered tissue using the same
US20050204368A1 (en) * 2004-03-09 2005-09-15 Venu Ambekar Executable application interoperability and interface creation system
US20050229048A1 (en) * 2004-03-30 2005-10-13 International Business Machines Corporation Caching operational code in a voice markup interpreter
US20050231512A1 (en) * 2004-04-16 2005-10-20 Niles Gregory E Animation of an object using behaviors
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US8239749B2 (en) * 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US9098476B2 (en) * 2004-06-29 2015-08-04 Microsoft Technology Licensing, Llc Method and system for mapping between structured subjects and observers
US7275211B2 (en) * 2004-07-02 2007-09-25 Cognos Incorporated Rendering page sets
US7411590B1 (en) * 2004-08-09 2008-08-12 Apple Inc. Multimedia file format
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7895531B2 (en) * 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US7707498B2 (en) * 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US7747966B2 (en) 2004-09-30 2010-06-29 Microsoft Corporation User interface for providing task management and calendar information
US7653721B1 (en) * 2004-10-29 2010-01-26 Sun Microsystems, Inc. Mechanism for capturing high level events on user interface components
US20060136877A1 (en) * 2004-12-22 2006-06-22 International Business Machines Corporation Method, system and program product for capturing a semantic level state of a program
US7730394B2 (en) * 2005-01-06 2010-06-01 Microsoft Corporation Data binding in a word-processing application
US7617234B2 (en) * 2005-01-06 2009-11-10 Microsoft Corporation XML schema for binding data
US7945590B2 (en) * 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7752224B2 (en) 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7668873B2 (en) 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
US7512892B2 (en) 2005-03-04 2009-03-31 Microsoft Corporation Method and system for displaying and interacting with paginated content
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US7386558B2 (en) * 2005-04-22 2008-06-10 Microsoft Corporation Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein
US9507919B2 (en) * 2005-04-22 2016-11-29 Microsoft Technology Licensing, Llc Rights management system for streamed multimedia content
US8135750B2 (en) * 2005-04-22 2012-03-13 Microsoft Corporation Efficiently describing relationships between resources
CN101248405B (zh) * 2005-04-29 2010-09-15 微软公司 使用并发域的多线程化
US7587671B2 (en) * 2005-05-17 2009-09-08 Palm, Inc. Image repositioning, storage and retrieval
WO2006135726A2 (en) 2005-06-09 2006-12-21 Whirlpool Corporation Software architecture system and method for communication with, and management of, at least one component within a household appliance
US7886290B2 (en) * 2005-06-16 2011-02-08 Microsoft Corporation Cross version and cross product user interface
US7853605B2 (en) * 2005-07-29 2010-12-14 Microsoft Corporation Auxiliary data provider
US8239882B2 (en) 2005-08-30 2012-08-07 Microsoft Corporation Markup based extensibility for user interfaces
US8689137B2 (en) 2005-09-07 2014-04-01 Microsoft Corporation Command user interface for displaying selectable functionality controls in a database application
US9542667B2 (en) 2005-09-09 2017-01-10 Microsoft Technology Licensing, Llc Navigating messages within a thread
US7953696B2 (en) * 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US7861219B2 (en) 2005-09-12 2010-12-28 Microsoft Corporation Script application framework
US8392151B1 (en) * 2005-09-28 2013-03-05 The Mathworks, Inc. Preview of an object in graphical modeling environments
US8095565B2 (en) * 2005-12-05 2012-01-10 Microsoft Corporation Metadata driven user interface
US7603260B2 (en) * 2005-12-29 2009-10-13 Sap Ag Object model for initiating physical operations
US7987456B2 (en) * 2006-01-24 2011-07-26 Microsoft Corporation Qualitatively annotated code
US7818660B2 (en) * 2006-01-29 2010-10-19 Litera Technology Llc Method of compound document comparison
US8601437B2 (en) * 2006-02-15 2013-12-03 Microsoft Corporation Reusable component data persistence using a markup language
US20070211056A1 (en) * 2006-03-08 2007-09-13 Sudip Chakraborty Multi-dimensional data visualization
KR100754211B1 (ko) * 2006-03-15 2007-09-03 삼성전자주식회사 멀티태스킹을 위한 사용자 인터페이스 방법 및 그 방법을수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
CN101410839B (zh) * 2006-04-12 2012-10-10 国际商业机器公司 调节客户端设备的功能的环境设置的方法和系统
DE102006019917B4 (de) * 2006-04-28 2013-10-10 Airbus Operations Gmbh Verfahren und Vorrichtung zur Sicherung der Maßhaltigkeit von mehrsegmentigen Konstruktionsstrukturen beim Zusammenbau
WO2007134265A2 (en) * 2006-05-12 2007-11-22 Captaris, Inc. Workflow data binding
US8605090B2 (en) * 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US7865481B2 (en) * 2006-06-29 2011-01-04 International Business Machines Corporation Changing documents to include changes made to schemas
US20090024958A1 (en) * 2006-08-09 2009-01-22 Kyocera Mita Corporation Program product including display control program and computer-readable media, display device, display control method, and image forming apparatus
JP4143661B2 (ja) * 2006-09-11 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション テスト用リソース・ファイル及びテスト用フォントを用いた国際化ソフトウェアのテスト方法、装置及びプログラム
US20080091409A1 (en) * 2006-10-16 2008-04-17 Microsoft Corporation Customizable mathematic expression parser and evaluator
TWI396133B (zh) * 2006-10-24 2013-05-11 Sino Wealth Electronic Ltd 程式碼自動生成裝置及方法
KR101288970B1 (ko) * 2006-11-28 2013-07-24 삼성전자주식회사 렌더링 장치 및 방법
GB0624582D0 (en) * 2006-12-08 2007-01-17 Visible Computing Ltd USB autorun devices
KR100827241B1 (ko) * 2006-12-18 2008-05-07 삼성전자주식회사 동적 영상물을 생성하기 위한 템플릿을 편집하는 장치 및방법
US8732595B2 (en) * 2007-01-18 2014-05-20 Sap Ag Condition editor for business process management and business activity monitoring
US7761783B2 (en) * 2007-01-19 2010-07-20 Microsoft Corporation Document performance analysis
US7676524B2 (en) * 2007-01-31 2010-03-09 Microsoft Corporation Hierarchical cursor-based object model
US20080186307A1 (en) * 2007-02-05 2008-08-07 Yaron Leifenberg Method and a protocol for describing procedural content for games
US8347206B2 (en) * 2007-03-15 2013-01-01 Microsoft Corporation Interactive image tagging
US20080256514A1 (en) * 2007-04-10 2008-10-16 Microsoft Corporation Side-by-side application manifests for single-purpose applications
US8650489B1 (en) * 2007-04-20 2014-02-11 Adobe Systems Incorporated Event processing in a content editor
US9547415B2 (en) * 2007-04-30 2017-01-17 Oracle International Corporation Suite-wide navigation
US8386923B2 (en) 2007-05-08 2013-02-26 Canon Kabushiki Kaisha Document generation apparatus, method, and storage medium
US8156509B2 (en) * 2007-06-05 2012-04-10 International Business Machines Corporation Exchanging data using data transformation
US8065628B2 (en) 2007-06-25 2011-11-22 Microsoft Corporation Dynamic user interface for previewing live content
US8041120B2 (en) * 2007-06-26 2011-10-18 Microsoft Corporation Unified digital ink recognition
US8094939B2 (en) 2007-06-26 2012-01-10 Microsoft Corporation Digital ink-based search
US8315482B2 (en) * 2007-06-26 2012-11-20 Microsoft Corporation Integrated platform for user input of digital ink
US8201103B2 (en) 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8232901B2 (en) * 2007-06-29 2012-07-31 International Business Machines Corporation Determining an alternative character string
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
JP4342578B2 (ja) * 2007-07-24 2009-10-14 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置およびプログラム
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US20090132919A1 (en) * 2007-11-15 2009-05-21 International Business Machines Corporation Appending Hover Help to Hover Help for a User Interface
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US20090132994A1 (en) * 2007-11-16 2009-05-21 Microsoft Corporation Automation tool and method for generating test code
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US20090158181A1 (en) * 2007-12-18 2009-06-18 Mellmo Llc User interface method and apparatus to navigate a document file
US8473276B2 (en) * 2008-02-19 2013-06-25 Google Inc. Universal language input
US20090235161A1 (en) * 2008-03-15 2009-09-17 Microsoft Corporation Lossless Web-Based Editor For Complex Documents
US9753712B2 (en) 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
US9110685B2 (en) * 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets in a wireless communication environment
US9747141B2 (en) * 2008-03-25 2017-08-29 Qualcomm Incorporated Apparatus and methods for widget intercommunication in a wireless communication environment
US9269059B2 (en) * 2008-03-25 2016-02-23 Qualcomm Incorporated Apparatus and methods for transport optimization for widget content delivery
US9069575B2 (en) 2008-03-25 2015-06-30 Qualcomm Incorporated Apparatus and methods for widget-related memory management
US9600261B2 (en) * 2008-03-25 2017-03-21 Qualcomm Incorporated Apparatus and methods for widget update scheduling
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US8438539B2 (en) * 2008-04-11 2013-05-07 International Business Machines Corporation Using a menu slideshow framework for generating a custom menu-driven slideshow containing definable content
US9052924B2 (en) * 2008-04-15 2015-06-09 Microsoft Technology Licensing, Llc Light-weight managed composite control hosting
US8490050B2 (en) * 2008-04-17 2013-07-16 Microsoft Corporation Automatic generation of user interfaces
US8140593B2 (en) * 2008-05-15 2012-03-20 Microsoft Corporation Data viewer management
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US20090315894A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation Browser-independent animation engines
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
KR20170020942A (ko) 2008-06-24 2017-02-24 더 큐레이터스 오브 더 유니버시티 오브 미주리 자가-조립가능 다세포체 및 이들을 이용하여 3차원 생물학적 구조체를 생산하는 방법
US8402096B2 (en) 2008-06-24 2013-03-19 Microsoft Corporation Automatic conversation techniques
US9081590B2 (en) * 2008-06-24 2015-07-14 Microsoft Technology Licensing, Llc Multimodal input using scratchpad graphical user interface to edit speech text input with keyboard input
CN101296198B (zh) * 2008-06-25 2010-07-14 腾讯科技(深圳)有限公司 一种在即时通信窗口中插入丰富界面元素的方法及客户端
US9471406B2 (en) * 2008-07-09 2016-10-18 International Business Machines Corporation Remote product invocation framework
US9639331B2 (en) 2008-07-09 2017-05-02 International Business Machines Corporation Service interface creation and modification for object-oriented services
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8478798B2 (en) * 2008-11-10 2013-07-02 Google Inc. Filesystem access for web applications and native code modules
US7984332B2 (en) * 2008-11-17 2011-07-19 Microsoft Corporation Distributed system checker
US8495074B2 (en) * 2008-12-30 2013-07-23 Apple Inc. Effects application based on object clustering
US8639086B2 (en) 2009-01-06 2014-01-28 Adobe Systems Incorporated Rendering of video based on overlaying of bitmapped images
US10685177B2 (en) * 2009-01-07 2020-06-16 Litera Corporation System and method for comparing digital data in spreadsheets or database tables
US8799790B2 (en) * 2009-02-18 2014-08-05 Kyocera Document Solutions Inc. Computer-readable recording medium storing driver program, image forming system, image forming apparatus, method for controlling image forming apparatus, and driver program
US20100235769A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth layout animation of continuous and non-continuous properties
US8136031B2 (en) * 2009-03-17 2012-03-13 Litera Technologies, LLC Comparing the content of tables containing merged or split cells
WO2010107476A1 (en) * 2009-03-19 2010-09-23 Duke University Inhibiting gsnor
US8799353B2 (en) * 2009-03-30 2014-08-05 Josef Larsson Scope-based extensibility for control surfaces
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
US8797337B1 (en) * 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US20110119479A1 (en) * 2009-11-17 2011-05-19 Robert Cowie EOOBE-Application to collect information for new computer and manufacturing process
US9137206B2 (en) * 2009-11-20 2015-09-15 International Business Machines Corporation Service registry for saving and restoring a faceted selection
US20110126113A1 (en) * 2009-11-23 2011-05-26 c/o Microsoft Corporation Displaying content on multiple web pages
CN101719902B (zh) * 2009-12-04 2014-07-30 深圳创维数字技术股份有限公司 一种远程过程调用方法和系统
US8631333B2 (en) 2010-06-07 2014-01-14 Microsoft Corporation Feature set differentiation by tenant and user
US8302014B2 (en) 2010-06-11 2012-10-30 Microsoft Corporation Merging modifications to user interface components while preserving user customizations
US9213661B2 (en) * 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
CN101876917A (zh) * 2010-07-02 2010-11-03 深圳市迅雷网络技术有限公司 一种开发控件的方法及装置
KR20120010047A (ko) * 2010-07-23 2012-02-02 삼성전자주식회사 이메일 처리 방법 및 장치
US9013488B2 (en) 2010-10-19 2015-04-21 Apple Inc. Grouping items in a folder
CN101957759B (zh) * 2010-10-21 2013-02-06 江苏科技大学 一种sdk接口转换系统及其实现方法
DK2629975T3 (da) 2010-10-21 2022-05-09 Organovo Inc Anordninger til fremstilling af væv
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US20120159395A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Application-launching interface for multiple modes
US8689123B2 (en) 2010-12-23 2014-04-01 Microsoft Corporation Application reporting in an application-selectable user interface
US20110119575A1 (en) * 2010-12-28 2011-05-19 Whitmyer Jr Wesley W Fit-to function for document processing
US9104307B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
US8893033B2 (en) * 2011-05-27 2014-11-18 Microsoft Corporation Application notifications
US9158445B2 (en) 2011-05-27 2015-10-13 Microsoft Technology Licensing, Llc Managing an immersive interface in a multi-application immersive environment
CN102810041B (zh) * 2011-06-02 2015-11-18 深圳市金蝶友商电子商务服务有限公司 一种多文档界面的转换方法以及相关装置
US20130031110A1 (en) * 2011-07-28 2013-01-31 Kikin Inc. Systems and methods for rich query construction
US20130055200A1 (en) * 2011-08-30 2013-02-28 Microsoft Corporation Application interface for object build information
US20130057587A1 (en) 2011-09-01 2013-03-07 Microsoft Corporation Arranging tiles
US8922575B2 (en) 2011-09-09 2014-12-30 Microsoft Corporation Tile cache
US10353566B2 (en) 2011-09-09 2019-07-16 Microsoft Technology Licensing, Llc Semantic zoom animations
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
RU2466452C1 (ru) * 2011-09-14 2012-11-10 Российская Федерация, от имени которой выступает Министерство промышленности и торговли Российской Федерации (Минпромторг РФ) Конвейерная система автоматизированного конструирования с виртуальными рабочими местами
US20130110661A1 (en) * 2011-10-28 2013-05-02 Microsoft Corporation Application store delivered platform components
US8954475B2 (en) * 2011-11-10 2015-02-10 Microsoft Technology Licensing, Llc Deep cloning of objects using binary format
US8775936B2 (en) * 2011-12-13 2014-07-08 International Business Machines Corporation Displaying dynamic and shareable help data for images a distance from a pointed-to location
WO2013110287A1 (en) 2012-01-23 2013-08-01 Microsoft Corporation Vector graphics classification engine
US9990347B2 (en) 2012-01-23 2018-06-05 Microsoft Technology Licensing, Llc Borderless table detection engine
US9499779B2 (en) 2012-04-20 2016-11-22 Organovo, Inc. Devices, systems, and methods for the fabrication of tissue utilizing UV cross-linking
US10109255B2 (en) * 2012-06-05 2018-10-23 Apple Inc. Method, system and apparatus for dynamically generating map textures
US9349205B2 (en) 2012-06-08 2016-05-24 Apple Inc. Systems and methods for animating between collection views
US9342518B1 (en) * 2012-06-21 2016-05-17 Emc Corporation Declaring directives in a data store
CN104471913B (zh) 2012-07-13 2017-12-05 华为技术有限公司 指示和处理内容传输和传送中的内容加密和权限管理
CN103678340B (zh) * 2012-09-07 2016-09-14 腾讯科技(深圳)有限公司 浏览器引擎的运行方法、装置、浏览器及终端
US20140136937A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Providing and procuring worksheet functions through an online marketplace
US9953008B2 (en) 2013-01-18 2018-04-24 Microsoft Technology Licensing, Llc Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally
US9123086B1 (en) 2013-01-31 2015-09-01 Palantir Technologies, Inc. Automatically generating event objects from images
US9552347B1 (en) * 2013-02-26 2017-01-24 Ca, Inc. Data grid cell styling systems and methods
US9575634B2 (en) * 2013-03-04 2017-02-21 Facebook, Inc. Techniques for asynchronous rendering
US10346501B2 (en) 2013-03-13 2019-07-09 International Business Machines Corporation Mobile enablement of existing web sites
US10083156B2 (en) 2013-03-13 2018-09-25 International Business Machines Corporation Mobile enablement of webpages
US9426201B2 (en) 2013-03-13 2016-08-23 International Business Machines Corporation Transforming application cached template using personalized content
US9563448B2 (en) * 2013-03-13 2017-02-07 International Business Machines Corporation Mobilizing a web application to take advantage of a native device capability
US20140272886A1 (en) * 2013-03-14 2014-09-18 Patrick H. Vane System and Method for Gamefied Rapid Application Development Environment
US10037314B2 (en) 2013-03-14 2018-07-31 Palantir Technologies, Inc. Mobile reports
US20150279233A1 (en) * 2013-03-14 2015-10-01 Patrick H. Vane System and Method for Gamefied Rapid Application Development Environment
US9442105B2 (en) 2013-03-15 2016-09-13 Organovo, Inc. Engineered liver tissues, arrays thereof, and methods of making the same
US9305374B2 (en) * 2013-03-15 2016-04-05 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US8990839B2 (en) 2013-04-22 2015-03-24 Microsoft Technology Licensing, Llc Controlling runtime access to application programming interfaces
CN103279541B (zh) * 2013-06-04 2016-08-31 天津市天安怡和信息技术有限公司 一种降低网页浏览器加载负载的方法及其装置
US9734174B1 (en) * 2013-06-28 2017-08-15 Google Inc. Interactive management of distributed objects
US9276855B1 (en) 2013-07-16 2016-03-01 Google Inc. Systems and methods for providing navigation filters
CA2919734C (en) 2013-07-31 2023-04-25 Organovo, Inc. Automated devices, systems, and methods for the fabrication of tissue
US9058375B2 (en) * 2013-10-09 2015-06-16 Smart Screen Networks, Inc. Systems and methods for adding descriptive metadata to digital content
US9530233B2 (en) * 2013-10-10 2016-12-27 Adobe Systems Incorporated Action records associated with editable content objects
US8868537B1 (en) 2013-11-11 2014-10-21 Palantir Technologies, Inc. Simple web search
US9378276B1 (en) * 2014-01-03 2016-06-28 Google Inc. Systems and methods for generating navigation filters
RU2636112C1 (ru) * 2014-02-26 2017-11-20 Хуавэй Текнолоджиз Ко., Лтд. Объект службы управления интерфейсом, объект службы функций и способ управления элементами
US9727376B1 (en) 2014-03-04 2017-08-08 Palantir Technologies, Inc. Mobile tasks
US10831731B2 (en) * 2014-03-12 2020-11-10 Dell Products L.P. Method for storing and accessing data into an indexed key/value pair for offline access
CA3177480A1 (en) 2014-04-04 2015-10-08 Organovo, Inc. Engineered three-dimensional breast tissue, adipose tissue, and tumor disease model
TWI509496B (zh) * 2014-08-12 2015-11-21 Noodoe Corp 電子裝置之頁面管理方法及系統,及相關電腦程式產品
CN105446788B (zh) * 2014-08-20 2019-01-11 联想(北京)有限公司 一种信息处理方法及电子设备
KR20170064547A (ko) 2014-10-06 2017-06-09 오가노보, 인크. 조작된 신장 조직, 이의 어레이, 및 이를 제조하는 방법
WO2016073782A1 (en) 2014-11-05 2016-05-12 Organovo, Inc. Engineered three-dimensional skin tissues, arrays thereof, and methods of making the same
CN104408120B (zh) * 2014-11-26 2019-04-12 北京国双科技有限公司 源代码的处理方法及装置
CN105159524A (zh) * 2015-08-03 2015-12-16 小米科技有限责任公司 界面显示方法及装置
US10296617B1 (en) 2015-10-05 2019-05-21 Palantir Technologies Inc. Searches of highly structured data
WO2017074963A1 (en) * 2015-10-26 2017-05-04 Knowlio, Inc. Digital resource management system
CN105302445B (zh) * 2015-11-12 2019-07-23 小米科技有限责任公司 图形用户界面绘制方法及装置
US10558345B2 (en) * 2015-11-16 2020-02-11 Sap Se User interface development in a transcompiling environment
JP6566850B2 (ja) * 2015-11-30 2019-08-28 キヤノン株式会社 情報処理システム、情報処理システムの制御方法、情報処理装置およびプログラム
CN112516605B (zh) * 2016-03-31 2022-06-14 贝尔合控(深圳)科技有限责任公司 模块化组件系统
US10466863B1 (en) * 2016-06-01 2019-11-05 Google Llc Predictive insertion of graphical objects in a development environment
US10104187B2 (en) * 2016-06-15 2018-10-16 Futurewei Technologies, Inc. System, computer program, and method for dividing services into subsets based on interdependencies
US10853412B2 (en) * 2016-06-16 2020-12-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Scenario-based sound effect control method and electronic device
RU2638779C1 (ru) * 2016-08-05 2017-12-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и сервер для вьполнения авторизации приложения на электронном устройстве
CN106648813B (zh) * 2016-09-19 2020-01-10 南京航空航天大学 一种同步数据流程序的形式化编译方法
KR20190077407A (ko) 2016-11-10 2019-07-03 오가노보, 인크. 바이오프린팅된 모발 모낭 및 그의 용도
US10365898B2 (en) * 2016-11-15 2019-07-30 Palantir Technologies Inc. Multi-platform interface framework
CN106775934B (zh) * 2016-11-29 2020-12-11 北京元心科技有限公司 基于多系统的输入输出方法及装置
US10540167B2 (en) 2017-01-26 2020-01-21 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US10740123B2 (en) 2017-01-26 2020-08-11 Nice Ltd. Method and system for accessing table content in a digital image of the table
US11995428B2 (en) 2017-01-26 2024-05-28 Nice Inc. Method and system for providing image-based interoperability with an application
US10133953B2 (en) * 2017-01-26 2018-11-20 Nice Ltd. System and method for enabling graphic-based interoperability with a run-time application
US10671602B2 (en) * 2017-05-09 2020-06-02 Microsoft Technology Licensing, Llc Random factoid generation
CN108984221B (zh) * 2017-05-31 2021-07-20 北京京东尚科信息技术有限公司 一种多平台用户行为日志的采集方法和装置
CN109101297B (zh) * 2017-06-20 2021-08-13 北京国双科技有限公司 一种页面的标识方法及装置
US10810004B2 (en) * 2017-06-30 2020-10-20 Oracle International Corporation System and method for managing a public software component ecosystem using a distributed ledger
RU2681408C2 (ru) * 2017-08-22 2019-03-06 Александр Павлович Соколов Способ и система графо-ориентированного создания масштабируемых и сопровождаемых программных реализаций сложных вычислительных методов
CN109558739B (zh) * 2017-09-26 2022-04-15 腾讯科技(深圳)有限公司 程序运行方法、装置、终端及可读介质
RU2668738C1 (ru) * 2017-11-15 2018-10-02 Общество с ограниченной ответственностью "УМИКОН" Способ и система для визуального создания программ для вычислительных устройств
US10963144B2 (en) * 2017-12-07 2021-03-30 Microsoft Technology Licensing, Llc Graphically organizing content in a user interface to a software application
EP3506033A1 (de) * 2017-12-27 2019-07-03 Siemens Aktiengesellschaft Verfahren zur rechnergestützten verarbeitung von betriebsdaten eines technischen systems
US10984079B2 (en) * 2018-01-25 2021-04-20 Oracle International Corporation Integrated context-aware software applications
CN110362412A (zh) * 2018-04-09 2019-10-22 华为技术有限公司 一种服务api调用方法和相关装置
US10665008B2 (en) * 2018-05-31 2020-05-26 Microsoft Technology Licensing, Llc Hybrid traversal of object sets
CN108829339A (zh) * 2018-06-28 2018-11-16 上海哔哩哔哩科技有限公司 基于键盘光标的特殊交互元素编辑方法、装置和存储介质
TWI718429B (zh) * 2018-10-25 2021-02-11 國立清華大學 適應性調整使用者介面中資訊量的方法及其電子裝置
KR102136661B1 (ko) * 2018-11-01 2020-07-22 주식회사 한글과컴퓨터 전자 문서에 삽입된 개체들에 대한 손쉬운 깊이 조정을 가능하게 하는 전자 단말 장치 및 그 동작 방법
KR102144354B1 (ko) * 2018-11-05 2020-08-13 주식회사 한글과컴퓨터 전자 문서에 삽입된 개체에 대한 손쉬운 선택 및 조정을 가능하게 하는 전자 단말 장치 및 그 동작 방법
US11232172B2 (en) * 2018-12-04 2022-01-25 Sap Se Collaborative web application and data system
CN111381897B (zh) * 2018-12-28 2024-05-17 北京字节跳动网络技术有限公司 一种接口调用方法、装置、移动终端及存储介质
KR102187540B1 (ko) * 2019-01-04 2020-12-07 주식회사 한글과컴퓨터 문서 상에서 겹쳐진 개체에 대한 손쉬운 편집을 지원하는 전자 단말 장치 및 그 동작 방법
US10768901B2 (en) * 2019-01-16 2020-09-08 Accenture Global Solutions Limited Converting code of a first code type on a mainframe device in phases to code of a second code type
CN109951384A (zh) * 2019-01-24 2019-06-28 无锡帮趣数据服务有限公司 一种api网关系统灵活管理的使用方法
US10997192B2 (en) 2019-01-31 2021-05-04 Splunk Inc. Data source correlation user interface
KR102187544B1 (ko) * 2019-03-25 2020-12-07 주식회사 한글과컴퓨터 전자 문서에 존재하는 겹쳐진 개체에 대한 직관적 선택을 가능하게 하는 전자 장치 및 그 동작 방법
US11194564B1 (en) 2019-04-29 2021-12-07 Splunk Inc. Maintaining compatibility in a multi-component application
US10754638B1 (en) 2019-04-29 2020-08-25 Splunk Inc. Enabling agile functionality updates using multi-component application
US11537586B2 (en) * 2019-06-06 2022-12-27 Microsoft Technology Licensing, Llc Detection of layout table(s) by a screen reader
US11120205B2 (en) * 2019-09-09 2021-09-14 Adobe Inc. Reviewing document designs
US11151125B1 (en) 2019-10-18 2021-10-19 Splunk Inc. Efficient updating of journey instances detected within unstructured event data
US11269876B1 (en) 2020-04-30 2022-03-08 Splunk Inc. Supporting graph data structure transformations in graphs generated from a query to event data
CN111858368B (zh) * 2020-07-27 2022-11-25 成都新潮传媒集团有限公司 数据处理方法、装置及存储介质
US11741131B1 (en) 2020-07-31 2023-08-29 Splunk Inc. Fragmented upload and re-stitching of journey instances detected within event data
TWI776215B (zh) * 2020-08-24 2022-09-01 奇蹟行動科技有限公司 產生使用者介面的描述碼之方法、系統及非暫態電腦可讀取儲存媒體
CN112464463B (zh) * 2020-11-23 2022-09-06 上海交通大学 基于飞行过程的面向参数功能模型的仿真实现方法
US11790110B2 (en) 2021-02-09 2023-10-17 Nice Ltd. System and method for preventing sensitive information from being recorded
CN113094791B (zh) * 2021-04-13 2024-02-20 笔天科技(广州)有限公司 一种基于矩阵运算的建筑数据分析处理方法
CN113778398B (zh) * 2021-09-28 2024-05-14 北京达佳互联信息技术有限公司 代码生成方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163490A (ja) * 1998-08-25 2000-06-16 Informix Software Inc ダイナミックオブジェクトプロパティ

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5655093A (en) * 1992-03-06 1997-08-05 Borland International, Inc. Intelligent screen cursor
JP2522898B2 (ja) * 1992-09-08 1996-08-07 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的カストマイズ方法及びグラフィックリソ―ス・エディタ
JP2639308B2 (ja) * 1992-11-19 1997-08-13 富士電機株式会社 力センサ,温度センサおよび温度・力センサ装置
US5596702A (en) * 1993-04-16 1997-01-21 International Business Machines Corporation Method and system for dynamically sharing user interface displays among a plurality of application program
US6014138A (en) * 1994-01-21 2000-01-11 Inprise Corporation Development system with methods for improved visual programming with hierarchical object explorer
US6243102B1 (en) * 1994-05-16 2001-06-05 Apple Computer, Inc. Data-driven layout engine
US6404433B1 (en) * 1994-05-16 2002-06-11 Apple Computer, Inc. Data-driven layout engine
EP0760125B1 (en) * 1994-05-16 2002-04-03 Apple Computer, Inc. A system and method for customizing appearance and behavior of graphical user interfaces
EP1156416A3 (en) * 1994-05-16 2007-07-18 Apple Computer, Inc. A method for editing a theme associated with a graphical user interface (GUI)
US5880729A (en) * 1994-05-16 1999-03-09 Apple Computer, Inc. Graphical user interfaces having animated control elements
US5504892A (en) * 1994-09-08 1996-04-02 Taligent, Inc. Extensible object-oriented file system
US5745762A (en) * 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture supporting multiple system emulations
JPH08286916A (ja) * 1994-12-16 1996-11-01 Internatl Business Mach Corp <Ibm> オブジェクトにより手続きソフトウェアを機能的に改良するシステム及び方法
US5986667A (en) * 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5862379A (en) * 1995-03-07 1999-01-19 International Business Machines Corporation Visual programming tool for developing software applications
US6307574B1 (en) * 1995-05-08 2001-10-23 Apple Computer, Inc. Graphical user interface with hierarchical structure for customizable menus and control objects
US5838317A (en) * 1995-06-30 1998-11-17 Microsoft Corporation Method and apparatus for arranging displayed graphical representations on a computer interface
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US5917487A (en) * 1996-05-10 1999-06-29 Apple Computer, Inc. Data-driven method and system for drawing user interface objects
US5794470A (en) * 1996-06-25 1998-08-18 P.L. Porter Co. Mechanical seat lock
US5893107A (en) * 1996-07-01 1999-04-06 Microsoft Corporation Method and system for uniformly accessing multiple directory services
US6128007A (en) * 1996-07-29 2000-10-03 Motorola, Inc. Method and apparatus for multi-mode handwritten input and hand directed control of a computing device
US5905492A (en) * 1996-12-06 1999-05-18 Microsoft Corporation Dynamically updating themes for an operating system shell
US6137492A (en) * 1997-04-03 2000-10-24 Microsoft Corporation Method and system for adaptive refinement of progressive meshes
US6262729B1 (en) * 1997-04-14 2001-07-17 Apple Computer, Inc. Method and apparatus for binding user interface objects to application objects
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US6072501A (en) * 1997-06-27 2000-06-06 Xerox Corporation Method and apparatus for composing layered synthetic graphics filters
US5974470A (en) * 1997-09-03 1999-10-26 Chicago-Soft, Ltd. System for reducing conflicts among dynamic link library modules by aliasing modules
US6243106B1 (en) * 1998-04-13 2001-06-05 Compaq Computer Corporation Method for figure tracking using 2-D registration and 3-D reconstruction
US6067785A (en) * 1998-04-24 2000-05-30 Wellman, Inc. Method of producing high quality dark dyeing polyester and resulting yarns and fabrics
US6188399B1 (en) * 1998-05-08 2001-02-13 Apple Computer, Inc. Multiple theme engine graphical user interface architecture
US6219056B1 (en) * 1998-06-05 2001-04-17 Autodesk, Inc. Shape objects having authorable behaviors and appearances
US6023271A (en) * 1998-06-11 2000-02-08 Sun Microsystems, Inc. Framework for binding data viewers/data manipulation with one to many objects through introspection
DE19928880A1 (de) * 1998-07-06 2000-01-13 Heidelberger Druckmasch Ag Farbkasten in einer Druckmaschine
US6392671B1 (en) * 1998-10-27 2002-05-21 Lawrence F. Glaser Computer pointing device having theme identification means
US6039047A (en) * 1998-10-30 2000-03-21 Acuson Corporation Method and system for changing the appearance of a control region of a medical device such as a diagnostic medical ultrasound system
CA2255017A1 (en) * 1998-11-30 2000-05-30 Christina P. Lau Method and mechanism for a task oriented xml data model
US6353451B1 (en) * 1998-12-16 2002-03-05 Intel Corporation Method of providing aerial perspective in a graphical user interface
US6346945B1 (en) * 1998-12-28 2002-02-12 Klocwork Solutions Method and apparatus for pattern-based flowcharting of source code
US6668354B1 (en) * 1999-01-05 2003-12-23 International Business Machines Corporation Automatic display script and style sheet generation
US7117446B2 (en) * 1999-02-01 2006-10-03 Sonic Solutions, Inc. User interface method and system for application programs implemented with component architectures
US6480813B1 (en) * 1999-02-24 2002-11-12 Autodesk, Inc. Method and apparatus for defining a precision drawing in a drawing program
US6538651B1 (en) * 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6952215B1 (en) * 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
US6426761B1 (en) * 1999-04-23 2002-07-30 Internation Business Machines Corporation Information presentation system for a graphical user interface
US6779027B1 (en) * 1999-04-30 2004-08-17 Hewlett-Packard Development Company, L.P. Intelligent management module application programming interface with utility objects
US6393432B1 (en) * 1999-06-02 2002-05-21 Visionael Corporation Method and system for automatically updating diagrams
US6613099B2 (en) * 1999-08-20 2003-09-02 Apple Computer, Inc. Process and system for providing a table view of a form layout for a database
US6853868B1 (en) * 1999-10-15 2005-02-08 Sun Microsystems, Inc. Cross-platform audio feedback for GUI components
US7181686B1 (en) * 1999-10-29 2007-02-20 International Business Machines Corporation Selecting screens in a GUI using events generated by a set of view controllers
US6580438B1 (en) * 1999-11-22 2003-06-17 Fuji Xerox Co., Ltd. Systems and methods for maintaining uniformity in a presentation environment
US6546397B1 (en) * 1999-12-02 2003-04-08 Steven H. Rempell Browser based web site generation tool and run time engine
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6753885B2 (en) * 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US7137066B2 (en) * 2000-04-06 2006-11-14 Microsoft Corporation Binary cache file format for themeing the visual appearance of a computer system
US6762767B2 (en) * 2000-04-06 2004-07-13 Microsoft Corporation Theme aware management using fusion
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US6886135B2 (en) * 2000-04-07 2005-04-26 Microsoft Corp. Extensible schema for defining the visual appearance of computer system components
TW581968B (en) * 2000-08-21 2004-04-01 Bsquare Corp Method and apparatus for producing user interfaces and device functionality for processor-based devices having embedded operating system and programming framework
US6918091B2 (en) * 2000-11-09 2005-07-12 Change Tools, Inc. User definable interface system, method and computer program product
US7596791B2 (en) * 2000-12-19 2009-09-29 Emc Corporation Methods and techniques for delivering rich Java applications over thin-wire connections with high performance and scalability
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US20030093419A1 (en) * 2001-08-17 2003-05-15 Srinivas Bangalore System and method for querying information using a flexible multi-modal interface
US20030101439A1 (en) * 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
AUPS145902A0 (en) * 2002-03-28 2002-05-09 Canon Kabushiki Kaisha A client server approach for interactive updates of graphical user interfaces on intranets

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000163490A (ja) * 1998-08-25 2000-06-16 Informix Software Inc ダイナミックオブジェクトプロパティ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009540466A (ja) * 2006-06-16 2009-11-19 マイクロソフト コーポレーション メディアファイルを管理するためのアプリケーションプログラムインターフェース
JP7420911B2 (ja) 2017-06-08 2024-01-23 ウィックス.コム リミテッド. ウェブサイトコンポーネント相互間におけるスマートインタラクションのためのシステム及び方法

Also Published As

Publication number Publication date
IL164072A (en) 2013-01-31
IL164072A0 (en) 2005-12-18
EP1536327A2 (en) 2005-06-01
RU2004127210A (ru) 2006-02-20
RU2371758C2 (ru) 2009-10-27
US20090119578A1 (en) 2009-05-07
TW200515175A (en) 2005-05-01
EP1536327A3 (en) 2007-09-05
CN100530083C (zh) 2009-08-19
KR20050039549A (ko) 2005-04-29
CA2481590A1 (en) 2005-04-24
NO20043781L (no) 2005-04-25
AU2004205327A1 (en) 2005-05-12
KR101031700B1 (ko) 2011-04-29
CN1609792A (zh) 2005-04-27
SG111201A1 (en) 2005-05-30
US20050091576A1 (en) 2005-04-28
ZA200407299B (en) 2006-05-31
TWI366105B (en) 2012-06-11
MXPA04008849A (es) 2005-06-17
AU2004205327B2 (en) 2010-04-01
NZ535217A (en) 2006-05-26
BRPI0407050A (pt) 2005-11-22

Similar Documents

Publication Publication Date Title
AU2004205327B2 (en) Programming interface for a computer platform
US7426734B2 (en) Facilitating presentation functionality through a programming interface media namespace
US7721254B2 (en) Programming interface for a computer platform
JP3565850B2 (ja) オブジェクト指向通知フレームワークシステム
US6342907B1 (en) Specification language for defining user interface panels that are platform-independent
MacDonald Pro WPF in VB 2010: Windows Presentation Foundation in. NET 4
KR20060087995A (ko) 작업 흐름을 모델링하는 방법 및 시스템
MacDonald Pro WPF 4.5 in VB
Bucanek Model-view-controller pattern
Ghoda et al. XAML developer reference
US7657869B2 (en) Integration of external tools into an existing design environment
MacDonald Pro WPF in C# 2008: Windows presentation foundation with. NET 3.5
Wenz Essential Silverlight 2 Up-to-Date
US7698659B1 (en) Methods and apparatus for formatting portion of content
McDonald Pro WPF: Windows Presentation Foundation in. NET 3.0
Dovey et al. Beginning Objective-C
Feldman et al. WPF in Action with Visual Studio 2008: Covers Visual Studio 2008 Service Pack 1 and. NET 3.5 Service Pack 1!
Allen Self Handbook Documentation
Gamma et al. ET++ 2.2—Introduction and Installation
Spenke et al. GINA User Manual
RepeatBehavior Symbols & Number
WO1996015492A1 (en) Object-oriented operating system
Jgr Programming With C#. Net
Hrubiš Knihovna pro tvorbu uživatelského rozhraní
Chambers et al. Apollo for Adobe® FlexTM Developers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110628