(57)【要約】  本発明に係る文書閲覧コントロール（２０４）は、別のコンピュータプログラムによってホストされて、そのプログラムに、コンテンツとのユーザ対話を可能にすることを含む文書閲覧機能を提供する。インタフェースが、スクロール（４４１）、ズーム（４４２）、発見（４４３）、レイアウト（４４４）、コピーなどを含む文書閲覧機能へのプラグインアクセスをプログラムに提供する。本発明では、前記インタフェースを介してプロパティを取り出し、設定することができ、コマンドを発行することができる。結果として、任意のプログラムが一貫性のある方式で文書閲覧機能を提供することができる。さらに、スタイルなどを介して、プログラム開発者は、デフォルト機能を非アクティブ化および／またはオーバーライドして、所与のプログラムに対して望むように文書ビューアをカスタマイズおよび／または拡張することができる。
2008536200.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境において、
別のプログラムによってホストするための文書閲覧コントロールであって、少なくとも１つのインタフェースのインタフェースセットを含む前記文書閲覧コントロールを提供すること、
前記文書閲覧コントロールの前記インタフェースセットにおいて、呼出しプログラムから関数呼出しを受け取ること、および、
関数呼出しに応答して、前記呼出しプログラムが文書のコンテンツを表示できるようにするための文書閲覧機能を提供することを含むことを特徴とする方法。
【請求項２】
前記文書閲覧機能を提供することは、表示コンテンツのズームレベルを変更することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記文書閲覧機能を提供することは、前記文書中でスクロールして、コンテンツが表示されている方式を変更することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記文書閲覧機能を提供することは、前記文書中の選択されたコンテンツをコピーすることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
関数呼出しに応答して、文書印刷機能を提供することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記インタフェースセットにおいて、前記呼出しプログラムから前記関数呼出しを受け取ることは、プロパティ値を得る要求を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記プロパティ値を得る前記要求を受け取ることは、セットのうちの少なくとも１つのプロパティの値の要求を受け取ることを含み、前記セットは、コンテンツ関連データ、ページカウントデータ、最初の可視ページのデータ、最後の可視ページのデータ、水平オフセットデータ、垂直オフセットデータ、エクステント横幅データ、エクステント縦幅データ、ビューポート横幅データ、ビューポート縦幅データ、ページ境界が表示されるかどうかを示すデータ、ズームパーセンテージデータ、グリッド列カウントデータ、垂直ページ間隔データ、水平ページ間隔データ、文書の最初かどうかを示すデータ、文書の最後かどうかを示すデータ、文書をズームインできるかどうかを示すデータ、文書をズームアウトできるかどうかを示すデータ、および、ツールバー状態を示すデータを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記インタフェースセットにおいて、前記呼出しプログラムから前記関数呼出しを受け取ることは、プロパティ値を変更する要求を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記プロパティ値を変更する前記要求を受け取ることは、セットのうち少なくとも１つのプロパティの値を変更する要求を受け取ることを含み、前記セットは、コンテンツ関連データ、最初の可視ページのデータ、水平オフセットデータ、垂直オフセットデータ、ページ境界表示データ、ズームパーセンテージデータ、グリッド列カウントデータ、垂直ページ間隔データ、水平ページ間隔データ、および、ツールバー状態を変更するためのデータを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記インタフェースセットにおいて、前記呼出しプログラムから前記関数呼出しを受け取ることは、コマンドを受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記コマンドを受け取ることは、セットのうち少なくとも１つのコマンドを受け取ることを含み、前記セットは、ツールバートグルコマンド、グリッド列カウントに合わせるコマンド、文書リフローコマンド、サムネイルビューコマンド、横幅に合わせるビューコマンド、および、縦幅に合わせるビューコマンドを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
実行されると請求項１に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１３】
実行可能コンピュータプログラムを有するコンピューティング環境において、
文書のコンテンツを表示するための文書閲覧コントロールであって、表示コンテンツとのユーザ対話を可能にするための少なくとも１つのデフォルトフィーチャを提供する前記文書閲覧コントロールと、
前記文書閲覧コントロールのインタフェースセットとを備えるシステムであって、前記インタフェースセットにより前記実行可能コンピュータプログラムは、前記コンピュータプログラムに文書閲覧機能を提供するよう前記文書閲覧コントロールに対して呼出しを行うことを特徴とするシステム。
【請求項１４】
前記コンピュータプログラムは、少なくとも１つのデフォルトフィーチャをオーバーライドすることによって、前記文書閲覧コントロールの少なくとも一部をカスタマイズすることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記コンピュータプログラムは、スタイルを介して前記文書閲覧コントロールの少なくとも一部をカスタマイズすることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記文書閲覧コントロールは、文書のコンテンツの表示に関連する少なくとも１つの他のコントロールのコントロールセットを含むことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記コントロールセットは、スクロール関連コントロール、ズーム関連コントロール、発見関連コントロール、レイアウト関連コントロール、メニュー関連コントロール、およびコピー関連コントロールを含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記インタフェースはプロパティおよびコマンドへのアクセスを提供し、前記プロパティは、
コンテンツ関連データ、ページカウントデータ、最初の可視ページのデータ、最後の可視ページのデータ、水平オフセットデータ、垂直オフセットデータ、エクステント横幅データ、エクステント縦幅データ、ビューポート横幅データ、ビューポート縦幅データ、ページ境界が表示されるかどうかを示すデータ、ズームパーセンテージデータ、グリッド列カウントデータ、垂直ページ間隔データ、水平ページ間隔データ、文書の最初かどうかを示すデータ、文書の最後かどうかを示すデータ、文書をズームインできるかどうかを示すデータ、文書をズームアウトできるかどうかを示すデータ、および、ツールバー状態を示すデータを含むプロパティセットのうち少なくとも１つのメンバを含み、
前記コマンドは、
ツールバートグルコマンド、グリッド列カウントに合わせるコマンド、文書リフローコマンド、サムネイルビューコマンド、横幅に合わせるビューコマンド、および、縦幅に合わせるビューコマンドを含むコマンドセットのうち少なくとも１つのメンバを含むことを特徴とする請求項１３に記載のシステム。
【請求項１９】
コンピューティング環境において、
別のプログラムによってホストするための文書閲覧コントロール手段であって、少なくとも１つのインタフェースのインタフェースセットを含む前記文書閲覧コントロール手段と、
別のプログラムによってホストされている間に、前記インタフェースセットにおいて呼出しプログラムから関数呼出しを受け取って、前記文書閲覧コントロール手段を介して表示コンテンツとのユーザ対話を可能にする手段とを備えることを特徴とするシステム。
【請求項２０】
前記ユーザ対話は、コンテンツが表示される方式を変更することを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータに関し、より詳細には、コンピュータシステム上でコンテンツを表示することに関する。
【背景技術】
【０００２】
コンピュータシステムの最も一般的な使用法の１つは、文書のコンテンツを表示することである。現代のコンピュータシステムおよびプログラムは、文書の閲覧において大きなフレキシビリティを提供する。これには、文書中のハイパーリンクされた位置へのジャンプ、コンテンツのズームインおよびズームアウト、ユーザが所望のページ番号を示すことによって所望のページにジャンプできるようにすること、スクロールおよびキーボードキーの使用によって文書をナビゲートできるようにすること、ならびにその他多くの文書閲覧オプションを実施できるようにすることが含まれる。
【０００３】
しかし、ページ分割されたコンテンツを表示したいアプリケーションプログラム開発者は、通常、独自の文書閲覧機能を提供するためのコードを書く。これは、一部には、今までは一般に開発者がそのような閲覧機能を提供する方法が他になかったからだが、また、種々のタイプのアプリケーションプログラムおよびコンテンツがあり、アプリケーション開発者が自身の特定プログラムと表示コンテンツのタイプとに対して意味をなすフィーチャ（feature）を提供したいと思うからでもある。
【０００４】
同時に、コンテンツ閲覧コード（content-viewing code）が提供する機能（functionality）およびフィーチャの多くは、プログラム間で共通である。例えば、ズーム、スクロール、テキスト検索などは、ブラウザ、ワードプロセッサ、文書リーダ、および他のプログラムにみることができる。これらのフィーチャをあらゆるアプリケーション中に別個にコード化することは、非常に非効率的であり、また、多くのカスタムコードがあり、したがってより多くのバグがある可能性が高いという点で、一般に堅牢性が劣る。さらに、このことは、様々なアプリケーションがそれぞれ独自のコンテンツ閲覧方式を提供するという点で、不整合につながる。この結果、ユーザは、単にコンテンツを見るだけのために、多くの異なるタイプのプログラムおよびそれらのユーザインタフェースを学習しなければならない。ユーザには別のプログラムによって提供されるのと同じフィーチャに見えるものでも、実際にはまったく異なる動作をすることもある。同様に、キーの組合せおよび／またはファンクションキーはしばしば、あるプログラムと次のプログラムとでは異なる意味を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
文書閲覧機能およびフィーチャが複数のプログラムにわたって一貫性および堅牢性を有するように、プログラムが共通の文書閲覧機能およびフィーチャを備えるための方法が必要とされている。同時に、開発者が望むなら何らかのレベルのカスタマイズを追加して、文書閲覧が所与のプログラム中でどのように動作するかを変更できるように、このような解決法はいずれも拡張可能であるべきである。
【課題を解決するための手段】
【０００６】
簡潔に言えば、本発明は、文書ビューア（document viewer）がコントロール中で（in a control）提供される方法およびシステムを提供し、コントロールは、ホスティングプログラムが文書ビューアの機能を備え、それを拡張することができるようにするアプリケーションプログラミングインタフェースおよびメソッドを有する。文書ビューアコントロールは、ページレイアウトと、ナビゲーションと、適切にフォーマットされた任意のコンテンツに対する一般的なユーザ対話の管理とを担う。機能は、印刷、キーワード発見（keyword find）、プロポーショナルズーム、コンテンツフローのマルチパスレイアウト、および／または、コンテンツのナビゲーションを含む。ホスティングプログラムは、望まれないフィーチャのいずれかを選択的に非アクティブ化することができ、利用可能だがデフォルトではアクティブでないフィーチャをアクティブ化することができ、文書ビューアコントロールに追加のフィーチャを補うこともできる。
【０００７】
ホストプログラムは、文書閲覧コントロール（document viewing control）を使用して、その閲覧領域にコンテンツを表示する。ある文書閲覧コントロールはデフォルトのユーザインタフェースを提供するが、このユーザインタフェースは一般に、上部にツールバー領域を備え、その下にコンテンツ閲覧領域（ビューポート）を備える。ツールバー領域では、文書閲覧コントロールは、１つまたは複数のボタンや、文書閲覧方式を管理するための他の対話式項目（interactive item）など、ユーザインタフェース要素を表示することができる。スクロールバーもまた設けられる。デフォルトで、スクロール、ならびにズーム、発見（find）（テキスト検索）、およびコピーのために、共通の文書対話機能が、ツールバーまたはメニューを介してアクティブ化されるコマンドとして提供される。印刷を提供することもできる。ホスティングプログラムは、すべてのデフォルト文書ビューアフィーチャの一部を選択的に使用することができ、かつ／または、デフォルトで使用可になっていないフィーチャおよび機能をアクティブ化することができる。例示的なツールバー領域の１つは、メニューボタン、ズームインボタン、ズームコンボボックス、ズームアウトボタン、コピーボタン、および発見ボタンを提供する。
【０００８】
例示的な一実装形態では、文書閲覧コントロールは、パブリックメソッドを介していくつかのプロパティおよびコマンドを公開する。文書閲覧コントロールは、文書閲覧機能を実施するための他のコントロールを含むことができる。例えば、スクロール動作を扱うためのスクロールコントロール、ズームを扱うためのズームコントロール、合致するテキストをテキストコンテンツ中で検索するための発見コントロール、ユーザがナビゲートできるようにページのグリッドをレイアウトするためのレイアウトコントロール、および、メニュー関連の機能を扱うためのメニューコントロールを含むことができる。
【０００９】
プログラムに返すことのできるプロパティは、コンテンツ関連データ、ページカウントデータ、最初の可視ページのデータ、最後の可視ページのデータ、水平オフセットデータ、垂直オフセットデータ、エクステント横幅データ、エクステント縦幅データ、ビューポート横幅データ、ビューポート縦幅データ、ページ境界が表示されるかどうかを示すデータ、ズームパーセンテージデータ、グリッド列カウントデータ、垂直ページ間隔データ、水平ページ間隔データ、文書の最初かどうかを示すデータ、文書の最後かどうかを示すデータ、文書をズームインできるかどうかを示すデータ、文書をズームアウトできるかどうかを示すデータ、および、ツールバー状態を示すデータを含むことができる。プログラムによって設定することのできるプロパティは、コンテンツ関連データ、最初の可視ページのデータ、水平オフセットデータ、垂直オフセットデータ、ページ境界表示データ、ズームパーセンテージデータ、グリッド列カウントデータ、垂直ページ間隔データ、水平ページ間隔データ、および、ツールバー状態を変更するためのデータを含むことができる。コマンドは、ツールバートグル（toggle）コマンド、グリッド列カウントに合わせるコマンド、文書リフロー（reflow）コマンド、サムネイルビューコマンド、横幅に合わせたビューコマンド、および、縦幅に合わせたビューコマンドを含む。
【００１０】
文書閲覧コントロールは、コンテンツを表示する必要があるときは常にデフォルトで自動的に文書ビューアとして提供することができる。プログラムは、デフォルトの文書閲覧コントロールを、それ自体のカスタマイズされた文書閲覧コントロールでオーバーライドすることができる。文書閲覧コントロールはスタイル化（styled）することができ、したがって、望むように文書ビューアを表示させるには、文書ビューアの特性を１度指定するだけでよい。アプリケーションプログラムは、単にスタイルを介してどのフィーチャが欲しいかを記述すればよく、そのスタイルを備えた文書ビューアが指定どおりに表示される。スタイルには名前を付けることができ、それによりプログラムは、文書ビューアの種々のスタイルを定義することができ、次いで、プログラム実行中の適時にどのスタイルが使用されるかを変えることができる。
【００１１】
その他の態様は、以下の詳細な記述を図面と共に読めば明らかになるであろう。
【発明を実施するための最良の形態】
【００１２】
（例示的な動作環境）
図１に、本発明を実施することのできる適切なコンピューティングシステム環境１００の例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についてどんな限定を意味するものでもない。またコンピューティング環境１００は、この例示的な動作環境１００に示すコンポーネントのいずれか１つまたは組合せに関してどんな依存や要件を有するとも解釈されるべきではない。
【００１３】
本発明は、その他多くの汎用または専用コンピューティングシステム環境または構成でも機能する。本発明と共に使用するのに適するであろう周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラム可能な家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらに限定されない。
【００１４】
本発明は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般に、プログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
【００１５】
図１を参照すると、本発明を実施するための例示的なシステムは、コンピュータ１１０の形の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、処理ユニット１２０と、システムメモリ１３０と、システムメモリを含めた様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とを含めることができるが、これらに限定されない。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、および、メザニンバスとも呼ばれるＰＣＩ（Peripheral component Interconnect）バスが含まれる。
【００１６】
コンピュータ１１０は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と取外し不可能の媒体の両方がこれに含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、取外し可能と取外し不可能の媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用できコンピュータ１１０からアクセスできる他の任意の媒体が含まれるが、これらに限定されない。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構などの被変調データ信号に組み入れるものであり、任意の情報送達媒体がこれに含まれる。用語「被変調データ信号」は、信号中の情報が符号化される形で１つまたは複数の特性が設定または変更される信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークや直接有線接続などの有線媒体と、音響（acoustic）、無線周波数、赤外線などの無線媒体および他の無線媒体とが含まれる。以上のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００１７】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。ＲＯＭ１３１には通常、起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（basic input/output system）１３３が記憶されている。ＲＡＭ１３２は通常、処理ユニット１２０からすぐにアクセス可能な、かつ／または処理ユニット１２０が現在作用している、データおよび／またはプログラムモジュールを含む。限定ではなく例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００１８】
コンピュータ１１０は、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例に過ぎないが図１には、取外し不可能な不揮発性の磁気媒体に対して読み書きするハードディスクドライブ１４１と、取外し可能な不揮発性の磁気ディスク１５２に対して読み書きする磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭや他の光媒体など取外し可能な不揮発性の光ディスク１５６に対して読み書きする光ディスクドライブ１５５を示す。この例示的な動作環境で使用できる他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれるが、これらに限定されない。ハードディスクドライブ１４１は通常、インタフェース１４０などの取外し不可能メモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インタフェース１５０などの取外し可能メモリインタフェースでシステムバス１２１に接続される。
【００１９】
上述し、図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶をコンピュータ１１０に提供する。例えば図１には、ハードディスクドライブ１４１がオペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているのが示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じものとすることもでき、異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７が少なくとも異なるコピーであることを示すために、異なる番号を付けてある。ユーザは、キーボード１６２やポインティングデバイス１６１（マウス、トラックボール、またはタッチパッドと一般に呼ばれる）などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、ハンドヘルドＰＣまたは他の筆記タブレットのタッチセンシティブスクリーンなどを含めることができる。これらおよび他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインタフェースおよびバス構造で接続されてもよい。モニタ１９１または他のタイプの表示デバイスも、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７やプリンタ１９６など、その他の周辺出力デバイスも備えることができ、これらは出力周辺インタフェース１９５を介して接続することができる。
【００２０】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、図１にはメモリ記憶デバイス１８１しか示されていないが通常は、コンピュータ１１０に関して上述した要素の多くまたはすべてを備える。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでよくみられる。
【００２１】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介した通信を確立するためのモデム１７２または他の手段を備える。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関して示したプログラムモジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図１には、リモートアプリケーションプログラム１８５がメモリデバイス１８１上にあるのが示されている。図示したネットワーク接続は例であり、コンピュータ間で通信リンクを確立するための他の手段を使用してもよいことは理解されるであろう。
【００２２】
（ページ分割されたコンテンツの表示および対話）
本発明は一般に、コントロールとして提供される文書ビューアを対象とし、これは本質的に、別のプログラムによってホストされてそのプログラムに一定の機能を提供することのできるオブジェクトである。文書ビューアコントロールは、ページレイアウトと、ナビゲーションと、適切にフォーマットされた任意のコンテンツに対する一般的なユーザ対話の管理とを担う対話式閲覧解決（interactive viewing solution）を提供する。例えば一実施形態では、文書ビューアコントロールは、ｉＤｏｃｕｍｅｎｔＰａｇｉｎａｔｏｒインタフェースを実装する任意のコンテンツの閲覧、ならびに、文書ビューアコントロールを実装するカスタム解決を可能にする。
【００２３】
本発明の様々な態様によれば、文書ビューアコントロールは、オブジェクトとして、適切に構成された任意のアプリケーションプログラムに追加することができる。プログラムは、文書ビューアコントロールを自動的にまたは明示的に、例えばマークアップを介して呼び出すことができる。文書ビューアが追加されると、文書ビューアは、フィーチャのコアセットを提供する。フィーチャのコアセットは、ページグリッドを使用した（サイズ、ならびに／あるいは、固定コンテンツ、および／または利用可能な空間に基づいて調節（例えばテキストラップ）するリフロー可能コンテンツについての）混合フォーマットレイアウト、印刷、キーワード発見、プロポーショナルズーム、コンテンツフローのマルチパスレイアウト、および／または、コンテンツのナビゲーションを含む。ホスティングプログラムは、望まれないフィーチャのいずれかを選択的に非アクティブ化することができ、利用可能だがデフォルトではアクティブでないフィーチャをアクティブ化することができ、文書ビューアコントロールに追加のフィーチャを補うこともできる。
【００２４】
理解されるであろうが、本発明を実施するための多くの方法が実現可能であり、本明細書ではいくつかの代替方法のみについて述べる。例えば、本発明を主に複合コントロールオブジェクトモデルに関して以下に述べるが、このモデルでは、文書閲覧コントロールはその機能のいくらかを提供するために他のコントロールオブジェクトを含む。しかし、このことは本発明に必須ではなく、文書ビューアが他のオブジェクトを含まず直接に閲覧機能、フィーチャ、および論理を含むモデルなど、他のモデルも実現可能である。したがって本発明は、本明細書に述べるいずれか特定の実施例または実装形態に限定されず、コンピューティング一般における利益および利点を提供する様々な方法で使用することができる。
【００２５】
図２に移ると、本発明の様々な態様により本発明が動作することのできる例示的な構成を表すブロック図が示されている。この構成は、ホスト（例えばアプリケーション）プログラム２００と文書閲覧コントロール２０４とを備え、文書閲覧コントロール２０４は、ビューポート２１０と呼ばれるその閲覧領域にコンテンツを表示する。本明細書では、文書は本質的にどんなタイプの可視コンテンツをも含み、したがってテキスト、グラフィックス、動画（animated）テキストおよび／またはグラフィックス、ビデオ、あるいはこれらの任意の組合せを含むことができる。ホストプログラム２００は、図１のコンピュータシステム１１０などのコンピュータシステム上で実行されるコンピュータプログラムを含み、従来のアプリケーションプログラム、オペレーティングシステムコンポーネントまたはユーティリティ、別のコントロールなどとすることができる。
【００２６】
文書閲覧コントロール２０４は、一実装形態では文書ビューア（ＤｏｃｕｍｅｎｔＶｅｗｅｒ）という名称であり、デフォルトのユーザインタフェースを提供する。このユーザインタフェースは一般に、上部にツールバー領域２１２を備え、その下にコンテンツ閲覧領域（ビューポート２１０）を備える。ツールバー領域２１２では、文書閲覧コントロール２０４は、１つまたは複数のボタンや、文書閲覧方式を管理するための他の対話式項目など、ユーザインタフェース要素を表示することができる。図２の例示的な文書ビューアスクリーンショットにはまた、スクロールバーユーザインタフェース要素２１４も示されており、これは、ユーザがビューポート２１０内でコンテンツをスクロールできるようにする。
【００２７】
例示的な一実装形態では、文書閲覧コントロール２０４は、例えばナビゲート、発見（テキスト検索）、コピー、およびズームのために、いくつかの共通の文書対話機能をデフォルトで提供する。印刷は、デフォルトで提供することのできるユーザ対話機能の別の例である。本発明の様々な態様に従って、アプリケーションプログラムは、後述するように、単にコントロールを「プラグイン」すればそのデフォルト機能を有することができる。ホストプログラム２００は、例えばデフォルトを除去したり、隠したり、使用不可にしたり、かつ／またはオーバーライドしたりすることによって、すべてのデフォルト文書ビューアフィーチャの一部を選択的に使用することができる。ホストプログラム２００はまた、デフォルトで使用可になっていないフィーチャおよび機能をアクティブ化することもできる。
【００２８】
いくつかのデフォルトフィーチャの例として、図３は、本発明の様々な態様により動作する文書閲覧コントロール２０４の例示的なビューの１つを示すスクリーンショットである。この表現では、文書閲覧コントロール２０４のツールバー領域２１２はツールバー項目３２０〜３２５を含み、これらにはメニューボタン３２０、ズームインボタン３２１、ズームコンボボックス３２２、ズームアウトボタン３２３、コピーボタン３２４、および発見ボタン３２５が含まれる。他のボタン（印刷ボタンなど）は表示されていないことに留意されたい。というのは、それらのボタンはデフォルトで提供されないからであり、あるいはデフォルトで提供されるとしても、対応する機能を提供したくないホストプログラムによって非アクティブ化されているからである。さらに、文書閲覧コントロール２０４および／またはホストプログラム２００は、例えば追加のツールバー項目を加えたり、いずれかの既存のツールバー項目を除去したりできるようにすることによって、ユーザがツールバーをカスタマイズするのを可能にするインタフェースを提供することができることにも留意されたい。
【００２９】
図４に一般に表す例示的な一実装形態では、文書閲覧コントロール２０４は、インスタンス化されホストされ実行されたときにパブリックメソッド４４０を使用していくつかのプロパティおよびコマンドを公開することのできるオブジェクトを含む。パブリックメソッド４４０を使用して、文書閲覧コントロール２０４は、それ自体の機能へのアクセスを提供することができ、また、他の文書閲覧機能を実施するための、含まれている他のコントロール４４１〜４４６へのアクセスを提供することもできる。例えば、文書閲覧コントロール２０４は、スクロール動作を扱うためのスクロールコントロール４４１、ズームを扱うためのズームコントロール４４２、合致するテキストをテキストコンテンツ中で検索するための発見コントロール４４３、ユーザがナビゲートできるようにページのグリッドをレイアウトするためのレイアウトコントロール４４４、および、ツールバーが最小化されているときを含めてユーザが対話式にコマンドを発行するための代替方法を提供するなど、メニュー関連の機能を扱うためのメニューコントロール４４５を含むことができる。スクロール、ズーム、およびレイアウトは、それぞれ、「Method and System for Navigating Paginated Content in Page-Based Increments」、「Method and System for Zooming in and out of Paginated Content」、及び「Method and System for Laying Out Paginated Content for Viewing」という名称の同時係属の米国特許出願において一般に述べられており、これらの各出願は、本発明の譲受人に譲渡され、本出願と同時に出願され、参照により本明細書に組み込まれる。図４でブロック４４６によって表すように、その他のコントロール（例えば「コピー」操作を扱うためのコントロール）が文書閲覧コントロール２０４に含まれてもよい。図４には特に示していないが、これらのコントロール４４１〜４４６のいくつかまたはすべては、それ自体でパブリックに公開されてもよいことに留意されたい。
【００３０】
図３に表す例示的な実装形態に戻ると、文書ビューアのツールバー領域２１２は、ズーム、コピー、および発見などの文書閲覧コントロールを公開するユーザインタフェース項目を提供する。これらのいくつかは、文書閲覧コントロール２０４がネイティブに扱うコマンドに結び付けられるが、ズームなどのいくつかは、文書閲覧コントロール２０４のプロパティにデータバインドされる。ツールバーは、例えば「ＴｏｇｇｌｅＴｏｏｌｂａｒ」コマンドを介して、最小化および最大化することができる。ツールバーは、最大化されたときは、ツールバーコントロールを内部に有するパネルを備える。最小化された状態では、メニュー項目以外は見えなくなる。
【００３１】
ツールバー中の各コントロールボタンには、アクセシビリティ（accessibility）およびテスティング（testing）を容易にするために、識別子および「タブ」順序付けが与えられる。例示的な左から右への順序付けでは、ツールバー中の第１のユーザインタフェース要素はメニューボタンであり、メニューボタンは、最小化されたとき、最大化されたツールバー中で通常利用可能なものと同じコマンドセットを公開する。これらのメニュー項目（およびそれらに関連するコマンド）には、コピー−ＡｐｐｌｉｃａｔｉｏｎＣｏｍｍａｎｄｓ．Ｃｏｐｙと、発見−ＡｐｐｌｉｃａｔｉｏｎＣｏｍｍａｎｄｓ．Ｆｉｎｄと、印刷−ＡｐｐｌｉｃａｔｉｏｎＣｏｍｍａｎｄｓ．Ｐｒｉｎｔと、ズームイン−ＮａｖｉｇａｔｉｏｎＣｏｍｍａｎｄｓ．ＩｎｃｒｅａｓｅＺｏｏｍ．と、ズームアウト−ＮａｖｉｇａｔｉｏｎＣｏｍｍａｎｄｓ．ＤｅｃｒｅａｓｅＺｏｏｍと、表示／非表示ツールバー−ｄｏｃｕｍｅｎｔ  ｖｉｅｗｉｎｇ  ｃｏｎｔｒｏｌ．ＴｏｇｇｌｅＴｏｏｌｂａｒとを含めることができる。メニューボタンは、メニューコントロールのプロパティ（例えばＩｓＭｏｕｓｅＯｖｅｒおよびＩｓＭｏｕｓｅＰｒｅｓｓｅｄ）に対してＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓを使用することによって、マウスアクティビティに基づいて外観を変更することができる。これらのコマンドのいくつかまたはすべては、標準コマンドのライブラリに結び付けることができる。
【００３２】
ズームアウトボタンがクリックまたはメニューを介して作動されると、文書閲覧コントロールは現在の文書をズームアウトする。同様に、ズームインボタンが作動されると、文書閲覧コントロールは現在の文書をズームインする。ズームコンボボックスは、様々な事前定義済みの「ズームストップ」および他のズーム関連設定（例えば「１００％」、「５０％」、「１ページ」など）を含む。文書閲覧コントロールのズームコンボボックスは、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中で実装することができ、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＤｏｃｕｍｅｎｔＬａｙｏｕｔプロパティをコンボボックスのＳｅｌｅｃｔｅｄＩｔｅｍＶａｌｕｅプロパティにデータバインドする。あるいは、開発者は単に、コマンドまたはプロパティを使用して、グリッド列の数を直接設定し、かつ／またはズームパーセンテージを設定してもよい。コンボボックス中の各エントリは、型ＤｏｃｕｍｅｎｔＬａｙｏｕｔのスタイル化されたデータ項目とすることができ、それにより、コンボボックス中の項目が選択されたとき、文書閲覧コントロールのページレイアウトを更新することができる。
【００３３】
発見ボタンを作動すると、文書閲覧コントロールの発見ダイアログが呼び出される。コピーは、テキストエディタ（例えば、文書閲覧コントロール２０４に付属のもの）が、ユーザの現在マークされている選択をクリップボードにコピーするようにする。印刷は、印刷ダイアログを呼び出す。
【００３４】
ビューポート２１０と呼ばれる、文書閲覧コントロールのコンテンツ領域は、レイアウトコントロールによってグリッド中にレイアウトされた１つまたは複数のページ列の並びで文書のコンテンツを表示する。この領域中のユーザインタフェース要素には、水平および／または垂直スクロールバーを含めることができる。コンテキストメニュー、例えば、ツールバー中のメニューボタンと同じ項目を含み、同じコマンドに結び付けられたコンテキストメニューを設けることもできる。
【００３５】
文書閲覧コントロールは、一実装形態において、ＳｃｒｏｌｌＶｉｅｗｅｒと呼ばれるスクロールコントロール４４１を介して、文書閲覧コントロールのコンテンツにスクロール機能を提供する。（例えば、ＤｏｃｕｍｅｎｔＧｒｉｄという名称の）レイアウトコントロール４４４は、文書閲覧コントロールのＳｃｒｏｌｌＶｉｅｗｅｒによって使用されるＩＳｃｒｏｌｌＩｎｆｏオブジェクトであり、文書コンテンツをフレキシブルな方式で表示することを担う。ＤｏｃｕｍｅｎｔＧｒｉｄは内部コントロールであって、文書閲覧コントロールのＳｔｙｌｅ中で直接指定することはできないことに留意されたい。図５に一般に表すように、ＤｏｃｕｍｅｎｔＧｒｉｄは、ＩＤｏｃｕｍｅｎｔＳｃｒｏｌｌＩｎｆｏ（これはＩＳｃｒｏｌｌＩｎｆｏを実装する）を実装し、ＳｃｒｏｌｌＶｉｅｗｅｒの子としてセットアップされる。ＳｃｒｏｌｌＶｉｅｗｅｒは、スクロールに基づく情報を、ＩＳｃｒｏｌｌＩｎｆｏインタフェースを介してＤｏｃｕｍｅｎｔＧｒｉｄに通信する。同様に、文書閲覧コントロールは、ページナビゲーション／レイアウトに基づく情報を、ＩＤｏｃｕｍｅｎｔＳｃｒｏｌｌＩｎｆｏ（またはＩＤｏｃｕｍｅｎｔＰｒｅｓｅｎｔａｔｉｏｎＩｎｆｏ）インタフェースを介してＤｏｃｕｍｅｎｔＧｒｉｄに通信する。文書閲覧コントロールは、ＩＤｏｃｕｍｅｎｔＰｒｅｓｅｎｔａｔｉｏｎＩｎｆｏプロパティを設定して、ＤｏｃｕｍｅｎｔＧｒｉｄのズームやオフセットなどを更新し、ＤｏｃｕｍｅｎｔＧｒｉｄは、ＤｏｃｕｍｅｎｔＧｒｉｄ上で変化したプロパティに文書閲覧コントロールを同期させておくために、文書閲覧コントロールのＩｎｖａｌｉｄａｔｅＰｒｅｓｅｎｔａｔｉｏｎＩｎｆｏ（）メソッドを呼び出す。
【００３６】
本発明の様々な態様により、文書閲覧コントロールはいくつかのプロパティおよびコマンドを公開する。以下の表は、文書閲覧コントロール２０４の一実装形態により公開することのできるいくつかの例示的なプロパティおよびコマンドを含む。
【００３７】
【表１】
2008536200.tif 000003
【００３８】
文書閲覧コントロール２０４のプロパティおよびコマンドへは、アプリケーション２００からアクセスすることができる。「ｇｅｔ」を示すプロパティは読取り可能である。「ｇｅｔ」および「ｓｅｔ」を示すプロパティは、読取り可能と書込み可能の両方である。本発明の趣旨および範囲を逸脱することなく、他のプロパティおよびコマンドを含めることもでき、かつ／または上記のプロパティおよびコマンドのいくつかを削除または修正することもできることは、容易に理解されるであろう。さらに、前述のプロパティおよびコマンドは例であり、本発明の趣旨および範囲を逸脱することなく他のデータ構造、定義、技法、および方法を使用して文書閲覧コントロール２０４の様々な態様を実施することができることは、容易に理解されるであろう。
【００３９】
以下に、プロパティおよびコマンドについての追加の詳細を提供する。
【００４０】
ｐｕｂｌｉｃ  ｉｎｔ  ＰａｇｅＣｏｕｎｔ｛ｇｅｔ；｝
ＰａｇｅＣｏｕｎｔは、文書閲覧コントロール（ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ）にロードされた現在ページ数を返す。この数は、ページ分割が完了するまで増加し、完了した時点で文書中の総ページ数を示すことになる。
【００４１】
ｐｕｂｌｉｃ  ｉｎｔ  ＦｉｒｓｔＶｉｓｉｂｌｅＰａｇｅ｛ｇｅｔ；ｓｅｔ；｝
ＦｉｒｓｔＶｉｓｉｂｌｅＰａｇｅは、照会されると、画面上で見える最初のページを返す。これは、左から右へのコンテンツの場合は、一番左上の見えるページであり、あるいは右から左へのコンテンツの場合は、一番右上の見えるページである。設定されると、文書閲覧コントロールはＩＤｏｃｕｍｅｎｔＰｒｅｓｅｎｔａｔｉｏｎＩｎｆｏ．ＭａｋｅＰａｇｅＶｉｓｉｂｌｅ（）を呼び出し、これは、可能な場合に、指定されたページを、見える一番左上（または一番右上）のページにすることを試みる。これは常に可能なわけではなく（例えば文書の上部または下部で、あるいは複数列のレイアウトの場合）、したがって、ＦｉｒｓｔＶｉｓｉｂｌｅＰａｇｅに割り当てられた値が、読み返された値と同じではないことになる状況があり得る。
【００４２】
ＦｉｒｓｔＶｉｓｉｂｌｅＰａｇｅは、ユーザインタフェースへのデータバインドをより有用にするために、インデックスは１で始まる。１未満の値、またはＰａｇｅＣｏｕｎｔよりも大きい値の場合は、値は範囲内に切り詰められる。ＦｉｒｓｔＶｉｓｉｂｌｅＰａｇｅを設定すると、ＬａｓｔＶｉｓｉｂｌｅＰａｇｅが更新される。
【００４３】
ｐｕｂｌｉｃ  ｉｎｔ  ＬａｓｔＶｉｓｉｂｌｅＰａｇｅ｛ｇｅｔ；｝
ＬａｓｔＶｉｓｉｂｌｅＰａｇｅは、照会されると、画面上で見える最後のページを返す。これは、左から右へのコンテンツの場合は、一番右下の見えるページであり、あるいは右から左へのコンテンツの場合は、一番左下の見えるページである。ＬａｓｔＶｉｓｉｂｌｅＰａｇｅは、ユーザインタフェースへのデータバインドをより有用にするために、インデックスは１で始まる。１未満の値、またはＰａｇｅＣｏｕｎｔよりも大きい値の場合は、値は範囲内に切り詰められる。
【００４４】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＨｏｒｉｚｏｎｔａｌＯｆｆｓｅｔ｛ｇｅｔ；ｓｅｔ；｝
ＨｏｒｉｚｏｎｔａｌＯｆｆｓｅｔは、現在のページレイアウトが与えられた場合の、文書中の現在の水平位置をピクセル単位で示す。ＨｏｒｉｚｏｎｔａｌＯｆｆｓｅｔは、インデックスは０で始まる。０未満の値、またはＥｘｔｅｎｔＷｉｄｔｈよりも大きい値は、範囲内に切り詰めることができる。
【００４５】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＶｅｒｔｉｃａｌＯｆｆｓｅｔ｛ｇｅｔ；ｓｅｔ；｝
ＶｅｒｔｉｃａｌＯｆｆｓｅｔは、現在のページレイアウトが与えられた場合の、文書中の現在の垂直位置をピクセル単位で示す。ＶｅｒｔｉｃａｌＯｆｆｓｅｔは、インデックスは０で始まる。０未満の値、またはＥｘｔｅｎｔＨｅｉｇｈｔよりも大きい値は、範囲内に切り詰めることができる。
【００４６】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＥｘｔｅｎｔＷｉｄｔｈ｛ｇｅｔ；｝
ＥｘｔｅｎｔＷｉｄｔｈは、文書レイアウトの現在の横幅を示す。
【００４７】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＥｘｔｅｎｔＨｅｉｇｈｔ｛ｇｅｔ；｝
ＥｘｔｅｎｔＨｅｉｇｈｔは、文書レイアウトの現在の縦幅を示す。
【００４８】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＶｉｅｗｐｏｒｔＷｉｄｔｈ｛ｇｅｔ；｝
ＶｉｅｗｐｏｒｔＷｉｄｔｈは、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのコンテンツ領域（ビューポート）の現在の横幅を示す。
【００４９】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＶｉｅｗｐｏｒｔＨｅｉｇｈｔ｛ｇｅｔ；｝
ＶｉｅｗｐｏｒｔＨｅｉｇｈｔは、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのコンテンツ領域（ビューポート）の現在の縦幅を示す。
【００５０】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＳｈｏｗＰａｇｅＢｏｒｄｅｒｓ｛ｇｅｔ；ｓｅｔ；｝
ＳｈｏｗＰａｇｅＢｏｒｄｅｒｓは、開発者が文書閲覧コントロール中で表示されているページの周りで「Ｄｒｏｐ  Ｓｈａｄｏｗ」を使用可または使用不可にできるようにする。
【００５１】
ｐｕｂｌｉｃ  ｄｏｕｂｌｅ  ＺｏｏｍＰｅｒｃｅｎｔａｇｅ｛ｇｅｔ；ｓｅｔ：｝
これは、ＵＩへのデータバインドを単純なタスク（例えば、ユーザがズームを設定できるようにする単純なテキストボックスの生成）にするために公開される「便利（convenience）」プロパティである。最後のＺｏｏｍＰｅｒｃｅｎｔａｇｅ設定またはページフィット呼出しに基づいて、有効なズームパーセンテージを返す。５％未満または１０００％よりも大きい値は、範囲内に切り詰めることができる。
【００５２】
ＺｏｏｍＰｅｒｃｅｎｔａｇｅプロパティはまた、「％」符号付きの列を解析することのできるＴｙｐｅＣｏｎｖｅｒｔｅｒに関連付けられることになる。このようにして、データバインドされたＵＩ（例えばＴｅｘｔＢｏｘ）は、ＺｏｏｍＰｅｒｃｅｎｔａｇｅの値を「１００」ではなく「１００％」と表示することができる。さらに、「％」符号をマークアップ中で使用することも可能にする。すなわち、＜ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ  ＺｏｏｍＰｅｒｃｅｎｔａｇｅ＝”１００％”／＞となる。
【００５３】
ｐｕｂｌｉｃ  ｉｎｔ  ＧｒｉｄＣｏｌｕｍｎＣｏｕｎｔ｛ｇｅｔ；ｓｅｔ；｝
これは、ＵＩへのデータバインドを単純なタスク（例えば、表示されるページの表示列の数をユーザが設定できるようにする単純なテキストボックスの生成）にするために公開される「便利」プロパティである。表示されるページの列の数を返す。設定されると、指定数の列がレイアウトされるようにする（ただしビューには収まらない）。文書内の１未満またはページ数よりも大きい値は、範囲内に切り詰めることができる。
【００５４】
ｐｕｂｌｉｃ  ＩＤｏｃｕｍｅｎｔＰａｇｉｎａｔｏｒ  Ｃｏｎｔｅｎｔ｛ｇｅｔ；ｓｅｔ；｝
コンテンツは、ＩＡｄｄＣｈｉｌｄインタフェースを介して文書閲覧コントロールにロードされた現在のＩＤｏｃｕｍｅｎｔＰａｇｉｎａｔｏｒコンテンツツリーを公開し、コンテンツの操作を可能にする。コンテンツが追加または除去されると、コンテンツは文書閲覧コントロールのＬｏｇｉｃａｌＴｒｅｅから追加または除去される。しかしこれは、文書閲覧コントロールがスタイル化を介して呼び出されたときには当てはまらない。その場合は何も行われず、文書閲覧コントロールがスタイル化を介して呼び出されたかどうか判定する現在のチェックは、「ｉｆ（ｔｈｉｓ．ＳｔｙｌｅｄＰａｒｅｎｔ＝＝ｎｕｌｌ）」である。
【００５５】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＩｓＡｔＳｔａｒｔ｛ｇｅｔ；｝
文書閲覧コントロール（ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ）が現在の文書の上部にあるかどうかを示す。ＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓを使用してナビゲーションボタンを使用可／使用不可にするために、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中で有用である。
【００５６】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＩｓＡｔＥｎｄ｛ｇｅｔ；｝
文書閲覧コントロールが現在の文書の最下部にあるかどうかを示す。ＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓを使用してナビゲーションボタンを使用可／使用不可にするために、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中で有用である。
【００５７】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＣａｎＺｏｏｍＩｎ｛ｇｅｔ；｝
文書閲覧コントロールがこれ以上ズームインできる（すなわち現在、最高の「ズームストップ」でない）かどうかを示す。ＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓを使用してズームボタンを使用可／使用不可にするために、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中で使用される。
【００５８】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＣａｎＺｏｏｍＯｕｔ｛ｇｅｔ；｝
文書閲覧コントロールがこれ以上ズームアウトできる（すなわち現在、最低の「ズームストップ」でない）かどうかを示す。ＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓを使用してズームボタンを使用可／使用不可にするために、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ  のＳｔｙｌｅ中で使用される。
【００５９】
ｐｕｂｌｉｃ  ｂｏｏｌ  ＩｓＴｏｏｌｂａｒＭａｘｉｍｉｚｅｄ｛ｇｅｔ；ｓｅｔ；｝
ツールバーの現在状態、すなわち、最小化、最大化、または使用不可にされているかどうかを示す／設定する。ツールバーをその報告された状態に基づいて表示／非表示にするために、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中で使用される。
【００６０】
（コマンド）
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＴｏｇｇｌｅＴｏｏｌｂａｒ
このコマンドを呼び出すと、文書閲覧コントロール（ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ）は、「ＩｓＴｏｏｌｂａｒＭａｘｉｍｉｚｅｄ」プロパティを真と偽の間でトグルする。Ｓｔｙｌｅの作成者がＩｓＴｏｏｌｂａｒＭａｘｉｍｉｚｅｄプロパティを利用することを選択している場合、これは、ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＳｔｙｌｅ中のＰｒｏｐｅｒｔｙＴｒｉｇｇｅｒｓに基づいてＵＩの変化を引き起こす。
【００６１】
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＦｉｔＴｏＧｒｉｄＣｏｌｕｍｎＣｏｕｎｔ
このコマンドは、現在の列レイアウト（ＧｒｉｄＣｏｌｕｍｎＣｏｕｎｔによって指定されている）が、ちょうど現在のビューポートに収まるようにする。
【００６２】
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＲｅｆｌｏｗＤｏｃｕｍｅｎｔ
このコマンドは、文書中の任意のリフロー可能コンテンツが再ページ分割されて現在のビューポートに収まるようにするとともに、現在指定されている列カウントを表示する。
【００６３】
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＶｉｅｗＴｈｕｍｂｎａｉｌｓ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ．ＤｏｃｕｍｅｎｔＬａｙｏｕｔを、ＤｏｃｕｍｅｎｔＬａｙｏｕｔ（ＤｏｃｕｍｅｎｔＬａｙｏｕｔＴｙｐｅ．Ｔｈｕｍｂｎａｉｌ）に設定する。
【００６４】
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＶｉｅｗＦｉｔＴｏＷｉｄｔｈ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ．ＤｏｃｕｍｅｎｔＬａｙｏｕｔを、ＤｏｃｕｍｅｎｔＬａｙｏｕｔ（ＤｏｃｕｍｅｎｔＬａｙｏｕｔＴｙｐｅ．ＦｉｔＴｏＷｉｄｔｈ）に設定する。
【００６５】
ｐｕｂｌｉｃ  Ｃｏｍｍａｎｄ  ＶｉｅｗＦｉｔＴｏＨｅｉｇｈｔ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ．ＤｏｃｕｍｅｎｔＬａｙｏｕｔを、ＤｏｃｕｍｅｎｔＬａｙｏｕｔ（ＤｏｃｕｍｅｎｔＬａｙｏｕｔＴｙｐｅ．ＦｉｔＴｏＨｅｉｇｈｔ）に設定する。
【００６６】
（外部コマンド）
文書閲覧コントロール（ＤｏｃｕｍｅｎｔＶｉｅｗｅｒ）が扱うことになるがそれ自体では実装しない、様々なコマンドがある。例として以下のものが含まれる。
ＡｐｐｌｉｃａｔｉｏｎＣｏｍｍａｎｄｓ．Ｆｉｎｄ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＦｉｎｄダイアログを呼び出す。
ＡｐｐｌｉｃａｔｉｏｎＣｏｍｍａｎｄｓ．Ｐｒｉｎｔ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのＰｒｉｎｔダイアログを呼び出す。
ＣｏｍｐｏｎｅｎｔＣｏｍｍａｎｄｓ．ＳｃｒｏｌｌＰａｇｅＵｐ／Ｄｏｗｎ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒがＶｉｅｗｐｏｒｔの上／下によってスクロールするようにする。
ＣｏｍｐｏｎｅｎｔＣｏｍｍａｎｄｓ．ＭｏｖｅＵｐ／Ｄｏｗｎ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒが１６ピクセル上／下にスクロールするようにする。
ＣｏｍｐｏｎｅｎｔＣｏｍｍａｎｄｓ．ＭｏｖｅＬｅｆｔ／Ｒｉｇｈｔ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒが１６ピクセル左／右にスクロールするようにする。
ＣｏｍｐｏｎｅｎｔＣｏｍｍａｎｄｓ．ＭｏｖｅＴｏＨｏｍｅ／Ｅｎｄ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒが文書の最初／最後に移動するようにする。
ＣｏｍｐｏｎｅｎｔＣｏｍｍａｎｄｓ．ＳｃｒｏｌｌＢｙＬｉｎｅ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒが指定行数分、上または下にスクロールするようにする。
ＮａｖｉｇａｔｉｏｎＣｏｍｍａｎｄｓ．Ｚｏｏｍ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒのズームを指定レベルに設定する。
ＮａｖｉｇａｔｉｏｎＣｏｍｍａｎｄｓ．ＩｎｃｒｅａｓｅＺｏｏｍ／ＤｅｃｒｅａｓｅＺｏｏｍ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒがコンテンツ上でズームイン／ズームアウトするようにする。
ＮａｖｉｇａｔｉｏｎＣｏｍｍａｎｄｓ．ＧｏｔｏＮｅｘｔＰａｇｅ／ＧｏｔｏＰｒｅｖｉｏｕｓＰａｇｅ
ＤｏｃｕｍｅｎｔＶｉｅｗｅｒが次／前のページの並びにスクロールするようにする。
【００６７】
（ＤｏｃｕｍｅｎｔＶｉｅｗｅｒインタフェース実装）
ＩＳｅｒｖｉｃｅＰｒｏｖｉｄｅｒ
文書閲覧コントロールのＩＳｅｒｖｉｃｅＰｒｏｖｉｄｅｒ実装は、ＤｏｃｕｍｅｎｔＧｒｉｄのＴｅｘｔＶｉｅｗサービスを公開して、文書中の基礎をなすテキストへのアクセスを可能にする。
【００６８】
ＩＡｕｔｏｍａｔｉｏｎＰａｔｔｅｒｎＰｒｏｖｉｄｅｒ
文書閲覧コントロールのＩＡｕｔｏｍａｔｉｏｎＰａｔｔｅｒｎＰｒｏｖｉｄｅｒインタフェースは、ＵＩＡｕｔｏｍａｔｉｏｎ  ＴｅｘｔＰａｔｔｅｒｎを求める要求を扱い、ＵＩＡｕｔｏｍａｔｉｏｎ  ＴｅｘｔＰａｔｔｅｒｎは、表示されている文書のテキストコンテンツにＡｕｔｏｍａｔｉｏｎシステムがアクセスできるようにする。
【００６９】
ＩＥｎｓｕｒｅＶｉｓｉｂｌｅ
ＩＥｎｓｕｒｅＶｉｓｉｂｌｅは、開発者が文書中の特定の要素を見えるようにすることを可能にする。これを使用して、ハイパーリンク付け（Hyperlinking）および何らかのアクセシビリティ機能をサポートすることができる。
【００７０】
ＩＡｄｄＣｈｉｌｄ
ＩＡｄｄＣｈｉｌｄは、文書閲覧コントロールの論理ツリーに文書コンテンツを追加することを可能にする。子を１つだけ追加することができ、これはｎｕｌｌでないＩＤｏｃｕｍｅｎｔＰａｇｉｎａｔｏｒでなければならない。これらの基準が満たされない場合は、例外を投げることができる。
【００７１】
解釈された（interpreted）マークアップを介してユーザインタフェース要素が表示される一実装形態では、コンテンツを表示する必要があるときは常に、文書閲覧コントロール２０４はデフォルトで自動的に文書ビューアとして提供される。しかし、プログラムがそれ自体のカスタマイズ文書閲覧コントロールでデフォルト文書閲覧コントロール２０４をオーバーライドできるようにするための、大きなフレキシビリティが提供される。上記のＡＰＩからわかるように、これは、ＡＰＩのプロパティの多くを設定できることからもたらされる。
【００７２】
文書閲覧コントロールはスタイル化することができ、したがって、望むように文書ビューアを表示させるには、文書ビューアの特性を１度指定するだけでよい。例として、以下のマークアップを考えてみる（ＤＶはＤｏｃｕｍｅｎｔＶｉｅｗｅｒを表す）。
【００７３】
【表２】
2008536200.tif 000004
【００７４】
一般に、デフォルトからの何らかの変更が望まれる場合、開発者は、文書ビューアが所望のプログラムリソースであることを指定して、所望の１つまたは複数の変更を示すだけでよい。上記のマークアップは、黄色の背景を有する、（主として）デフォルトの文書ビューアになる。ボタンやハイパーリンクなども同様に変更することができる。一実装形態では、コンテンツおよびレイアウトをスタイル化できない場合があり、有効な文書閲覧コントロールＳｔｙｌｅは、ｄｏｃｕｍｅｎｔ  ｖｉｅｗｉｎｇ  ｃｏｎｔｒｏｌ．ＣｏｎｔｅｎｔＨｏｓｔ付属プロパティでマークされたＳｃｒｏｌｌＶｉｅｗｅｒコントロールを含む必要があることに留意されたい。Ｓｔｙｌｅが適用されたことを文書閲覧コントロールが検出したとき、文書閲覧コントロールは、視覚ツリーを辿って、このマークされた要素を検索する。このマークされた要素を見つけることができなかった場合、またはこのマークされた要素がＳｃｒｏｌｌＶｉｅｗｅｒでない場合は、例外を投げる。正しいＳｃｒｏｌｌＶｉｅｗｅｒが見つかった場合は、文書閲覧コントロールはＤｏｃｕｍｅｎｔＧｒｉｄコントロールをインスタンス化し（レイアウトのために）、これをＳｃｒｏｌｌＶｉｅｗｅｒのＣｏｎｔｅｎｔにし、ＤｏｃｕｍｅｎｔＧｒｉｄコントロールがＳｃｒｏｌｌＶｉｅｗｅｒに通信できるようにする。
【００７５】
このように、スタイルプロパティは、ユーザの望むように文書ビューアを表示させるために利用可能である。アプリケーションプログラムは、単にスタイルを介してどのフィーチャが欲しいかを記述すればよく、そのスタイルを備えた文書ビューアが指定どおりに表示される。ただし、コンテンツはスタイル化されないことに留意されたい。スタイルは、何らかのレベルのズームインおよびズームアウトをサポートするかどうかや、表示するページの列の数などのフィーチャを指定することができる。ＡＰＩはこのようにする能力を提供するものの、所与のプログラムは、利用可能なすべてのフィーチャは使用しない場合もある。したがって例えば、スタイル化された文書閲覧コントロールをプログラム中で使用して限定されたフィーチャを提供し、カスタマイズされた文書ビューア、例えばズームオプションがなく「前」および「次」ボタンを備えた単一のページに、ユーザを向けさせることができる。
【００７６】
さらに、スタイルには名前を付けることができることにも留意されたい。したがって例えば、プログラムは、文書ビューアの種々のスタイルを定義することができ、次いで、適時にどのスタイルが使用されるかを変えることができる。これは例えば、プログラム中で、ある時は、ある文書ビューアスタイルが「ＸＹＺ」文書ビューアに等しいことを指定し、別の時は、使用する文書ビューアが「ＡＢＣＤ」文書ビューアに等しいことを指定するなどによって行うことができる。また、例えば、プログラムは、表示されているコンテンツのタイプによって、使用される文書ビューアを変えることができ、例えば、固定コンテンツはある文書ビューアスタイルを有し、利用可能な空間に基づいて調節（例えばテキストラップ）するリフロー可能コンテンツは異なるスタイル化がなされたビューアを介して表示されてよい。
【００７７】
以上の詳細な説明からわかるように、複数のプログラムがプログラムにわたって一貫性および堅牢性を有するようにして文書閲覧機能およびフィーチャを提供できるようにする方法およびシステムが提供される。この方法およびシステムは、カスタマイズ可能であり拡張可能である。
【００７８】
本発明は様々な修正および代替構造が可能であり、本発明の例示的ないくつかの実施形態を図面に示し、上に詳細に述べた。しかし、開示した特定の形に本発明を限定する意図はなく、反対に、本発明の趣旨および範囲の内に入るすべての修正、代替構造、および均等物をカバーするものである。
【図面の簡単な説明】
【００７９】
【図１】本発明を組み込むことのできるコンピュータシステムを表すブロック図である。
【図２】本発明の様々な態様による、文書閲覧コントロールをプログラムによってホストすることのできる例示的な構成を表す図である。
【図３】本発明の様々な態様による、文書閲覧コントロールとの対話で使用されるユーザインタフェース要素を示す例示的なスクリーンショット表現の図である。
【図４】本発明の様々な態様による、例示的な文書閲覧コントロールが様々な他のコントロールを含む構成を示すブロック図である。
【図５】本発明の様々な態様による、スクロール関連のインタフェースを含めたグリッドレイアウトに関する例示的なレイアウトクラスを表す図である。
【図１】
2008536200.tif 000005
【図２】
2008536200.tif 000006
【図３】
2008536200.tif 000007
【図４】
2008536200.tif 000008
【図５】
2008536200.tif 000009
【国際調査報告】
2008536200.tif 000010