(57)【要約】  ディスプレイスクリーン拡大鏡は、スクリーン上で開いているウィンドウを含むデスクトップの選択された部分を拡大するためにユーザによってコントロールすることができる。移動可能な拡大鏡フレームが提供され、その中には、拡大されたイメージが提示される。この拡大されたイメージは、拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベルまで拡大されている。この拡大鏡は、ユーザ入力デバイスの使用を通じてコントロールすることができる。オンスクリーンオブジェクトと対話することなく、デスクトップやスクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、拡大鏡の少なくとも１つのオペレーション上のパラメータを調整することができる。本発明の特定の実施形態においては、拡大鏡のオンザフライの制御性は、その拡大鏡をアクティブ化および非アクティブ化すること、拡大レベルを調整すること、および拡大鏡フレームのサイズを調整することを含む。
2009503742.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイスクリーンとユーザ入力デバイスとを有するデータ処理デバイスによって実行されると、前記スクリーン上で開いているウィンドウを含むデスクトップの選択された部分を拡大するためにユーザによってコントロールすることができるディスプレイスクリーン拡大鏡を提供するように前記デバイスを構成する役割を果たす命令を含む機械可読ストレージメディアであって、前記拡大鏡は、拡大されたイメージが内部に提示される移動可能な拡大鏡フレームを提供し、前記イメージは、前記拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベルまで拡大され、前記拡大鏡は、前記拡大鏡の少なくとも１つのオペレーション上のパラメータを調整するために、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてユーザによってコントロールすることができることを特徴とする機械可読ストレージメディア。
【請求項２】
前記拡大鏡は、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてアクティブ化および非アクティブ化することができることを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項３】
前記拡大鏡の前記少なくとも１つのオペレーション上のパラメータは、前記拡大鏡フレームのサイズ寸法を含むことを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項４】
前記少なくとも１つのオペレーション上のパラメータは、前記拡大鏡の拡大レベルを含むことを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項５】
前記入力デバイスを使用して前記拡大鏡の調整モードをアクティブ化することができ、前記調整モードがアクティブ化されると、前記少なくとも１つのオペレーション上のパラメータを変更するために前記入力デバイスの入力を前記拡大鏡へ一時的に導くフックが設定されることを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項６】
前記入力デバイスは、コンピュータポインティングデバイスであり、前記フックは、前記コンピュータポインティングデバイスのフックであることを特徴とする請求項５に記載の機械可読ストレージメディア。
【請求項７】
前記フックは、前記拡大鏡の前記少なくとも１つのオペレーション上のパラメータを変更するために、前記コンピュータポインティングデバイスのポインタの動きに関するデータおよびスクロールホイールの回転に関するデータのうちの少なくとも１つを前記拡大鏡へ導くことを特徴とする請求項６に記載の機械可読ストレージメディア。
【請求項８】
前記フックは、前記ポインタの動きに関するデータを前記拡大鏡へ導き、前記ポインタの動きに関するデータは、前記拡大鏡フレームのサイズ寸法を調整するために使用されることを特徴とする請求項７に記載の機械可読ストレージメディア。
【請求項９】
前記フックは、前記スクロールホイールの回転に関するデータを前記拡大鏡へ導き、前記スクロールホイールの回転に関するデータは、前記拡大鏡フレームの拡大レベルを調整するために使用されることを特徴とする請求項７に記載の機械可読ストレージメディア。
【請求項１０】
前記入力デバイスは、ポインティングデバイスを含み、前記拡大鏡フレームの位置および動きは、前記ポインティングデバイスのオンスクリーンカーソルの位置および動きに対応することを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項１１】
前記拡大されたイメージは、前記拡大鏡がアクティブになっている間に生じる下にあるスクリーンコンテンツ内の変更を反映するために動的に更新されることを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項１２】
前記拡大鏡は、前記ユーザ入力デバイスのスイッチを作動させるとアクティブ化され、前記スイッチを所定の時間だけ作動させ続けると調整モードに入ることを特徴とする請求項２に記載の機械可読ストレージメディア。
【請求項１３】
前記拡大鏡が前記調整モードにあるときに、前記拡大鏡は、前記調整モードがアクティブである旨のオンスクリーンの視覚的なインジケータを提示することを特徴とする請求項１２に記載の機械可読ストレージメディア。
【請求項１４】
前記視覚的なインジケータは、前記拡大鏡の前記少なくとも１つのオペレーション上のパラメータの調整を行うための適切なユーザ入力の表示を提供することを特徴とする請求項１３に記載の機械可読ストレージメディア。
【請求項１５】
前記視覚的なインジケータは、前記拡大鏡フレームの少なくとも１つのサイズ寸法の調整を行うための適切なユーザ入力の表示を提供することを特徴とする請求項１４に記載の機械可読ストレージメディア。
【請求項１６】
前記視覚的なインジケータは、前記拡大鏡の拡大比率の調整を行うための適切なユーザ入力の表示を提供することを特徴とする請求項１３に記載の機械可読ストレージメディア。
【請求項１７】
前記ディスプレイスクリーン拡大鏡は、オペレーティングシステムのアプリケーションプログラミングインターフェースのウィンドウスタイルと、前記ウィンドウスタイルに関連付けられている第２段階スクリーンコンテンツ合成エンジンとによって構成されていることを特徴とする請求項１に記載の機械可読ストレージメディア。
【請求項１８】
ディスプレイスクリーンとユーザ入力デバイスとを有するデータ処理デバイスであって、前記デバイスは、前記スクリーン上で開いているウィンドウを含むデスクトップの選択された部分を拡大するためにユーザによってコントロールすることができるディスプレイスクリーン拡大鏡を提供するように構成されており、前記拡大鏡は、拡大されたイメージが内部に提示される移動可能な拡大鏡フレームを提供し、前記イメージは、前記拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベルまで拡大され、前記拡大鏡は、前記拡大鏡の少なくとも１つのオペレーション上のパラメータを調整するために、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてユーザによってコントロールすることができることを特徴とするデータ処理デバイス。
【請求項１９】
前記拡大鏡は、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてアクティブ化および非アクティブ化することができることを特徴とする請求項１８に記載のデータ処理デバイス。
【請求項２０】
前記ディスプレイスクリーン拡大鏡は、オペレーティングシステムのアプリケーションプログラミングインターフェースのウィンドウスタイルと、前記ウィンドウスタイルに関連付けられている第２段階スクリーンコンテンツ合成エンジンとによって構成されていることを特徴とする請求項１８に記載のデータ処理デバイス。
【請求項２１】
ディスプレイスクリーンとユーザ入力デバイスとを有するデータ処理デバイスを、前記スクリーン上で開いているウィンドウを含むデスクトップの選択された部分を拡大するためにユーザによってコントロールすることができるディスプレイスクリーン拡大鏡を提供するように構成する方法であって、前記拡大鏡は、拡大されたイメージが内部に提示される移動可能な拡大鏡フレームを提供し、前記イメージは、前記拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベルまで拡大され、前記拡大鏡は、前記拡大鏡の少なくとも１つのオペレーション上のパラメータを調整するために、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてユーザによってコントロールすることができることを特徴とする方法。
【請求項２２】
前記拡大鏡は、ユーザがオンスクリーンオブジェクトと対話することなく、および前記デスクトップや前記スクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、前記入力デバイスの使用を通じてアクティブ化および非アクティブ化することができることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記ディスプレイスクリーン拡大鏡は、オペレーティングシステムのアプリケーションプログラミングインターフェースのウィンドウスタイルと、前記ウィンドウスタイルに関連付けられている第２段階スクリーンコンテンツ合成エンジンとによって構成されていることを特徴とする請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザがスクリーンディスプレイのコンテンツの部分を便利に選択的に拡大することができる、ソフトウェア／ファームウェアに基づくシステムおよび方法に関する。
【背景技術】
【０００２】
さまざまなタイプのコンピュータディスプレイスクリーンの拡大およびズーム機能が知られている。一般に、そのような拡大鏡（magnifier）は、コンピュータのスクリーン上に表示されているものの一部の拡大されたコピーを示す。そのような機能は、視力障害者のための、およびその他の目的のためのユーザ補助として、また特定のアプリケーションソフトウェア内で提供される機能として、およびオペレーティングシステム（たとえば、デスクトップ）のレベルでユーザアプリケーションと共に使用するために一般に利用できる拡大／ズーム機能を提供するように意図されている専門のソフトウェアとして提供されてきた。視力障害者にとっては、そのような機能は、スクリーン上の小さなテキストの判読、および／またはアイコンなどの識別に伴って役立つことができる。より一般には、拡大およびズーム機能は、スクリーン上のオブジェクトやイメージのすべてまたは一部を拡大することが望まれる可能性のある場合に、アプリケーション内で、およびオペレーティングシステム（たとえば、デスクトップ）のレベルで役立つことができる。
【０００３】
ズーム機能を提供するユーザアプリケーションの一例が、Ａｄｏｂｅ  Ａｃｒｏｂａｔのｐｄｆドキュメントリーダである。ドロップダウンメニューを介した標準的なツールバーズームレベルの選択（standard toolbar zoom level selections）に加えて、Ｌｏｕｐｅ  Ｔｏｏｌ、Ｐａｎ＆Ｚｏｏｍウィンドウ、Ｄｙｎａｍｉｃ  Ｚｏｏｍツールという３つのパンおよびズーム関連の機能がある。
【０００４】
Ｌｏｕｐｅ  Ｔｏｏｌでは、ユーザは、スライダ（slider）を用いてズームレベルをコントロールし、ドキュメント内でクリックすることによってズーム位置をコントロールする。ズームされたエリアは、ドキュメント上の長方形によって表され、この長方形のサイズは、ズームレベルに反比例し、ズームされたビューは、別個のウィンドウ内に表示される。Ｐａｎ＆Ｚｏｏｍウィンドウ機能では、小さなウィンドウ内に提示されているドキュメントページ上で、サイズ変更可能なボックスを移動することができる。ボックスとして背景のズームおよびパン内に提供されているドキュメントビューが、サイズ変更され、移動される。Ｄｙｎａｍｉｃ  Ｚｏｏｍツールでは、通常のカーソルが、ズームモードに入っていることを示す小さな虫メガネ（magnifying glass）の表示に変わる。このモードにおいては、ユーザは、ドキュメント上でクリックし、そして上／下へドラッグして、動的にズームインおよびズームアウトすることができ、また、ドキュメントの横の縁でパンすることができる。
【０００５】
ユーザアプリケーションソフトウェアの一部として提供されるズーム機能のさらなる例として、Ｄｉｇｉｔａｌ  Ｉｍａｇｅ  Ｐｒｏは、イメージをナビゲートするためのウィンドウの一部として提供されるツールバー上に、一式のコントロールを提供する。これらは、スライダに基づくズームレベルと、１００％へ戻るボタンと、パニングウィンドウ（panning window）と、選択したところへズームするボタンとを含む。ＡｄｏｂｅのＰａｎ  ａｎｄ  Ｚｏｏｍ機能と同様に、選択されたズームレベルに反比例するサイズのボックスを、小さなウィンドウ内に提示されているイメージ上で動かすことができる。ボックス内のイメージ部分の拡大されたビューが、背景内に提供される。
【０００６】
アプリケーションは一般に、コンピュータマウスの入力機能を利用してズーム機能を実施する。たとえば、キーボード上のＣＴＲＬキーを押すと共にマウス上のスクロールホイール（scroll wheel）を回転させること（ＣＴＲＬ＋ホイール）によって、ユーザは、アプリケーションのズームインおよびズームアウトを行うことができる。それぞれのアプリケーションは、独自のズーミング増加度合い（zooming increment）を有しており、スクロールホイールによるズーミングは、これらの増加度合いを適用する。その他のズームオプションは、関連技術の図４に示されているように、Ｍｉｃｒｏｓｏｆｔ  ＩｎｔｅｌｌｉＰｏｉｎｔ（商標）（マウス）ソフトウェアコントロールパネル内に存在する。Ｂｕｔｔｏｎｓタブ上には、それぞれのマウスボタンのためのオプションとして、Ｚｏｏｍ  ＩｎコマンドおよびＺｏｏｍ  Ｏｕｔコマンドが最近追加された。いくつかのＭｉｃｒｏｓｏｆｔキーボードは、Ｚｏｏｍコントロール（たとえば、「スライダ」）を有しており、このズームコントロールは、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＩｎｔｅｌｌｉＴｙｐｅ（商標）ソフトウェアのコントロールのもとで機能する。
【０００７】
オペレーティングシステム（デスクトップ）のレベルで使用するために開発された拡大鏡ソフトウェア（magnifier software）と比較すると、特定のユーザアプリケーションのための拡大およびズーム機能の開発には、より大きな柔軟性がある。というのは、それらの機能を提供するためにアプリケーションを「ゼロ」から（from "the ground up"）構築することができるためである。また、アプリケーション固有の拡大鏡では、その拡大鏡と、独立して実行されているプログラムおよびそれらの関連付けられているウィンドウとの対話は、一般に問題ではない。ズーミングは、アプリケーション内で容易に達成される。アプリケーションは、表示されるコンテンツの内部の表示を有しており、正しく設計されているならば、そのコンテンツをさまざまなサイズまたはズームレベルで表示することができる。たとえばＭｉｃｒｏｓｏｆｔ（登録商標）のＷｏｒｄ（登録商標）においては、スクリーン上に数行しか表示されなくなるまでズームインすることができるが、テキストは非常にはっきりしており、これは、フォントがベクトルグラフィックス（ビットマップではなく、文字の数学的な記述）に基づいているためである。
【０００８】
デスクトップと共に、およびその他の開いているあらゆるウィンドウと共に、すなわちＯＳ（operating system）のレベルで使用するために一般に利用できるように設計されている拡大鏡では、アプリケーションがズーム機能のために有している可能性のある内部の表示は利用できない。むしろ拡大は、出力のスクリーンショットまたはビットマップの操作によって実行される。これは通常、適用可能なスクリーン解像度までしか詳細度を高めないが、それでもユーザは、ＵＩ（user interface）オブジェクトおよびテキストをより大きなサイズで見ることはできる。そのような拡大鏡が、下にある（underlying）さまざまなスクリーン要素およびウィンドウと対話する方法が、非常に重要である。その対話の性質は、機能の実際の使いやすさおよび知覚される使いやすさに対して重大な影響力を有する可能性がある。
【０００９】
既存のＯＳレベルのスクリーン拡大機能の一例が、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）  ＸＰ（登録商標）オペレーティングシステムの「Ｍａｇｎｉｆｉｅｒ」である。Ｍａｇｎｉｆｉｅｒは、視力の損なわれたユーザにとってスクリーンをより読みやすくするディスプレイユーティリティーである。このＭａｇｎｉｆｉｅｒは、スクリーンの拡大された部分を表示する別個のウィンドウを作成し、この拡大された部分は、ポインティングデバイスのカーソル、たとえばマウスポインタの位置によって決定される。ユーザは、機能のコントロールパネル内の設定を介して拡大レベルを変更することができる。ユーザは、Ｍａｇｎｉｆｉｅｒウィンドウを移動したりサイズ変更したり、あるいはスクリーンの縁へドラッグして所定の位置に固定したりすることができる。
【００１０】
公知のスクリーン拡大専門のアプリケーションが、Ｚｏｏｍ  Ｍａｇｉｃである。このアプリケーションは、起動すると、図１に示されているように、カスタムの拡大ウィンドウを開く。このウィンドウは、通常のウィンドウとしてサイズ変更することができ、移動することができる。すべてのツール／設定は、タイトルバー内で利用することができる。このウィンドウは、直下にあるものをすべて拡大する。マウスカーソルは、拡大されたコンテンツ上を移動することはできるが、そのコンテンツと対話することはできない。
【００１１】
図１を参照すると、ウィンドウタイトルバー内の矢印ボタンをクリックすることによって開始された、カーソルトラッキングモード（cursor tracking mode）がある。別々の赤色の矢印をクリックすると、ウィンドウが、上／下／左／右へドッキングする。中央をクリックすると、ウィンドウのドッキングが解除され、通常のウィンドウに戻る。このモードでは、その他の開いているウィンドウをオーバーレイすることはできるが、拡大ウィンドウ内で下にあるアプリケーションウィンドウと対話することはできない。カーソルトラッキングは、矢印ボタンをクリックすることによってオン／オフを切り替えることができる。デスクトップおよびその他の開いているあらゆるウィンドウの上に拡大ウィンドウを保持するオプションがあるが、このモードでは、拡大されたイメージは、拡大ウィンドウがクリックされない限り、更新されない。
【００１２】
「Ｌｅｎｓ」は、ＡＢＦ  Ｍａｇｎｉｆｙｉｎｇ  Ｔｏｏｌｓ（非特許文献１）によって提供されているツールであり、関連技術の図２において見られるように、虫メガネの漫画（caricature）を作成する。ユーザは、その虫メガネをドラッグすることによってその位置を変え、それを使用してスクリーンのエリア上に選択的にズームインすることができる。ユーザは、＋ボタンおよび−ボタンをクリックすることによって、拡大レベルを調整することができる。このツールは、アクティブ化された時点の静的なスクリーンショットを取り込む。もしもスクリーン上で何かが変わっても、それは、ズームされたイメージ内には反映されない。
【００１３】
公知のユーザ補助専門のアプリケーションの別の例が、ＡＩ２（非特許文献２）によるＺｏｏｍＴｅｘｔ  ８．１である。アプリケーションが起動すると、関連技術の図３に示されているように、モーダルコントロールパネルタイプの（modal control panel type）ＵＩ（user interface）が表示される。
【００１４】
ＺｏｏｍＴｅｘｔ  ８．１の拡大鏡／ズーム機能には、いくつかのモードがある。
【００１５】
Ｆｕｌｌ  Ｓｃｒｅｅｎ  Ｍｏｄｅは、スクリーン全体を段階的に拡大する。マウスがスクリーンの縁に近づくと、パンが自動的に開始される。
【００１６】
Ｏｖｅｒｌａｙ  Ｍｏｄｅは、スクリーンの右下の隅にサイズ変更可能な四角いウィンドウを作成する。マウスは、通常の（１：１の）ビュー内で追跡把握され、その動きが、拡大されたビュー内に映し出される。マウスがスクリーンの縁に近づくと、ズームウィンドウ内でパンが自動的に開始される。
【００１７】
Ｌｅｎｓ  Ｍｏｄｅは、浮遊するサイズ変更可能な四角いウィンドウを作成し、このウィンドウは、マウスカーソルと動きを共にする。Ｌｉｎｅ  Ｍｏｄｅは、スクリーンを横切る横長の帯を作成し、この帯は、マウスカーソルのＹ座標における変化に伴って上下に動く。拡大ウィンドウ内で動的な更新が行われて、使用中にスクリーンコンテンツの変化が反映され、下にあるアプリケーションウィンドウとの対話が、拡大ウィンドウを通じて利用可能となり、すなわち、拡大鏡をとばして下にあるウィンドウへ至るためのマウスおよびキーボードによる入力が可能となる。
【００１８】
Ｄｏｃｋｅｄ  Ｍｏｄｅは、スクリーンの上、下、右、または左の縁に寄せて配置される（黒色で縁どられた）サイズ変更可能な帯を作成する。マウスの動きは、ズームされたビュー内でのみ追跡把握され、その一方で、１：１のビューはロックされる。
【００１９】
Ｆｒｅｅｚｅ  Ｉｔツールを有効にすると、ユーザは、サイズ変更可能なボックスをスクリーン上に描画して、その位置を固定する（「動かなくする」）ことができる。事前に定義されたボックスビューが、ズーム位置を特定のＸ座標およびＹ座標にロックする。コンテンツが、拡大されているエリア内で変化した場合には、その変化が、ボックス内における拡大されたコンテンツ内に反映される。Ｆｒｅｅｚｅモードは、「Ｆｕｌｌ  Ｓｃｒｅｅｎ」拡大鏡モードでしか利用できない。Ｆｕｌｌ  Ｓｃｒｅｅｎモードでは、レンズがなく、スクリーン全体が拡大され、マウスは、「スクリーンから外れた」エリアへパンする。
【００２０】
公知のディスプレイスクリーン拡大鏡は、それらの簡潔性および利便性、ならびにそれらを使用する際の直観性という点で、決して理想的とは言えない。また、いくつかの拡大鏡が実装される様式によって、それらの拡大鏡は、非常に脆弱になる。すなわち、オペレーティングシステム／ドライバの更新およびパッチに際して機能不良の影響を受けやすくなる。
【００２１】
コンピュータのデスクトップおよびその他の開いているウィンドウ上に「浮遊」できるという点で実際の光学用レンズの拡大鏡にさらに類似した動作を示す堅牢なコンピュータ実装型のディスプレイスクリーン拡大鏡（computer implemented display screen magnifier）を有すること、下にあるものの拡大されたビューを自然な直観的な方法で提供すること、および下にあるデスクトップ／ウィンドウを自由に見てそのデスクトップ／ウィンドウと対話できることが望ましいであろう。
【００２２】
ウィンドウベースのＧＵＩ（graphical user interface）を提供するオペレーティングシステム、たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムと共に使用するように意図されている拡大アプリケーション（magnification application）を実装することは、ある問題を提示する。拡大鏡が従来のウィンドウとして作成される場合には、拡大ウィンドウそのものが、開かれたときにデスクトップの一部となる。結果として、拡大用のデスクトップイメージを得るためのシステムコールは、拡大鏡ウィンドウ（magnifier window）そのもの（その下にあるＧＵＩのその部分ではなく）を含むことになる。Ｗｉｎｄｏｗｓ（登録商標）ＸＰの拡大鏡のように、拡大を行うためにそのようなシステムコールを使用することは、無限のミラー効果につながる。ユーザの観点から見れば、拡大ウィンドウの下にあるものの拡大されたビューを得るのを妨害される結果となる。
【００２３】
前述のＺｏｏｍＴｅｘｔ製品など、複数の市販の拡大アプリケーションは、ドライバチェーニング（driver chaining）として知られている技術を使用して、上述の問題に対処している。このアプローチでは、オペレーティングシステムによって合成されたスクリーンコンテンツの選択された部分は、ビデオディスプレイドライバ（video display driver）に達する前に、カーネルレベルの拡大鏡によって傍受され、操作される。スクリーン読み取りソフトウェアやスクリーン拡大ソフトウェアでは、ＡＴＶ（assistive technology vendor）は、基本的にディスプレイドライバを突き止め、そのために必要とされる情報を入手し、そして時として修正されたＤＤＩ（Display Driver Interface）コールを元のディスプレイドライバに渡す（特定のリモートコントロールソフトウェアはまた、リモートコンピュータに渡される情報を傍受するために、この技術を使用する）。このＤＤＩの傍受技術は、ドライバチェーニングと呼ばれている。連鎖されたドライバが、ＧＤＩからディスプレイドライバへのＤＤＩコールを傍受し、スクリーンの一部を拡大するような方法でそれらのコールを操作する。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムに関する限り、スーパーインポーズされた（superimposed）拡大鏡の出力は、単にそこになく、したがって、デスクトップのコピー部分へのコールには、それが見えないであろう。
【００２４】
ドライバチェーニングは、あらかじめ確立されたオペレーティングシステム／ドライバの関係に介入するため、オペレーティングシステムの供給業者、たとえばＭｉｃｒｏｓｏｆｔ（登録商標）によって公式にサポートすることはできない。結果として、この技術は、たとえばオペレーティングシステムが新たなサービスパックまたはドライバによってアップグレードされる場合には、非常に脆弱で機能不良に陥りやすくなりがちである。ドライバチェーニング、ならびにスクリーン拡大鏡およびその他の補助テクノロジー製品におけるその応用に関するさらなる情報は、非特許文献３のＭＳＤＮ（Microsoft Developers Network）で見ることができる。
【００２５】
【非特許文献１】http://www.abf-soft.com/magnifying-tools.shtml
【非特許文献２】http://www.aisquared.com/index.htm
【非特許文献３】http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc/html/atg driverchain.asp
【非特許文献４】http://msdn. microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp
【非特許文献５】http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn hooks32.asp
【非特許文献６】http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks.asp
【発明の開示】
【発明が解決しようとする課題】
【００２６】
コンピュータディスプレイ拡大鏡のための設定を変更することは、従来のコントロールパネルを通じた時間のかかる不便な作業である。ユーザが、タスクのコンテキストを失ったり、コントロールパネルへのアクセスが必要となったり、あるいはその他の形でオンスクリーンツール／オブジェクトと対話したりすることなく、基本的な拡大鏡コントロール機能をオンザフライ（on the fly）で実行できるならば、非常に有利であろう。
【００２７】
開いているウィンドウから焦点を奪い去ることなく、拡大鏡をアクティブ化すること、非アクティブ化すること、配置すること、ならびにそのサイズおよび／または拡大レベルを調整することができるならば、非常に有益であろう。拡大鏡が焦点を得て、マウス／キーボードの入力を受け入れるならば、拡大鏡の設定を容易に変更することができる。しかし、これには、ユーザが設定の調整を終えたときに当該アプリケーションに焦点を戻すという問題がある。そのアプリケーションは、アクティブにされて前景に戻ったときに、同じ状態にはない可能性があり、キーボードの焦点は、別のコントロール上にあるかもしれない。
【課題を解決するための手段】
【００２８】
本発明は、ディスプレイスクリーンおよびユーザ入力デバイス（たとえば、コンピュータマウス、トラックボール、あるいはタッチパッドなどのポインティングデバイスや、コンピュータキーボード）と共に提供されるデータ処理デバイス（たとえば、汎用または専用のコンピュータ）上で実行することができるソフトウェア／ファームウェアに基づくシステムおよび方法を提供する。これらのシステムおよび方法は、ユーザがスクリーンディスプレイのコンテンツの部分を便利に選択的に拡大することができる手段を提供する役割を果たす。上述のような公知の拡大鏡の１つまたは複数の欠点に対処するために、そのようなディスプレイスクリーン拡大鏡を提供することに対する新たなアプローチが提供される。
【００２９】
本発明による拡大鏡は、デスクトップおよびスクリーン上で開いているウィンドウの選択された部分を拡大するためにユーザによってコントロールすることができる。移動可能な拡大鏡フレーム（magnifier frame）が提供され、その中には、拡大されたイメージが提示される。この拡大されたイメージは、拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベル（a set level of magnification）まで拡大されている。
【００３０】
本発明による拡大鏡は、ユーザ入力デバイスの使用を通じてオンザフライでコントロールすることができる。オンスクリーンオブジェクトと対話することなく、デスクトップやスクリーン上で開いているあらゆるウィンドウから焦点を奪い去ることなく、拡大鏡の少なくとも１つのオペレーション上のパラメータを調整することができる。本発明の特定の実施形態においては、拡大鏡のオンザフライの制御性は、拡大鏡をアクティブ化および非アクティブ化し、その拡大レベルを調整し、その拡大フレーム（magnification frame）のサイズを調整する機能を含む。
【００３１】
本発明の一態様によれば、ディスプレイスクリーン拡大鏡は、オペレーティングシステムのＡＰＩ（application programming interface）、すなわちウィンドウスタイル（windows style）、およびそのウィンドウスタイルに関連付けられている第２段階スクリーンコンテンツ合成エンジン（second stage screen content compositing engine）によって利用可能にされるリソースを活用することによって機能するように構成されている。
【００３２】
本発明の一態様によれば、デスクトップイメージを拡大させるためのコールに対して事実上影響を与えない（effectively invisible）拡大鏡ウィンドウが作成される。これによって、拡大鏡は、直観的な様式で機能することができ、見ている人は、開いているアプリケーションウィンドウおよび／またはデスクトップから焦点を奪い去ることなく、拡大鏡のすぐ下にあるものを見て、拡大鏡と対話することができる。本発明の一実施形態は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）２０００およびＸＰオペレーティングシステムのＡＰＩによって利用可能にされるウィンドウスタイルを有利に活用する。このようにして、脆弱なドライバチェーニング技術を使用する必要性が回避される。
【００３３】
本発明の上述およびその他の目的、特徴、および利点は、好ましい実施形態に関する以下の詳細な説明を添付の図面と共に読めば、容易に明らかになり、十分に理解できるであろう。
【発明を実施するための最良の形態】
【００３４】
本発明によるオンスクリーン拡大鏡は、拡大されたイメージが内部に提示される移動可能な拡大鏡フレームを含む。拡大されたイメージは、拡大鏡フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応し、一定の拡大レベルまで拡大されている。
【００３５】
本発明の一実施形態によるディスプレイスクリーン拡大鏡は、アクティブになっている間はスクリーンディスプレイのデスクトップおよびその他の開いているあらゆるウィンドウの上に留まるように構成されている。このディスプレイスクリーン拡大鏡は、ユーザ入力デバイス（たとえば、マウスやキーボード）のイベントを、拡大鏡の下に位置するウィンドウに渡し、拡大されたイメージを動的に更新して、下にあるスクリーンコンテンツ内の変化を反映する。このようなディスプレイスクリーン拡大鏡は、ディスプレイスクリーンおよびユーザ入力デバイスと共に提供される汎用コンピュータやその他のデータ処理デバイス上で実行されるソフトウェアやファームウェア内で具体化することができる。
【００３６】
本発明の一態様は、オペレーティングシステムの既存のＡＰＩ（application programming interface）、とりわけウィンドウスタイル、およびそのウィンドウスタイルに関連付けられている第２段階スクリーンコンテンツ合成エンジンを通じて利用可能にされるリソースを活用することによって上述の動作を達成することを含む。「ウィンドウスタイル」は、本明細書において使用される際、ＡＰＩのセット内で指定された１つまたは複数の指定のウィンドウスタイル内に含まれているパラメータのセットを含めて、ＧＵＩ（graphical user interface）の一部として表示されることになるウィンドウの機能的な特徴および／または視覚的な特徴を指定するパラメータの任意のセットを広く包含する。本発明のアプローチは、脆弱なドライバチェーニング技術の代わりに使用することができる。
【００３７】
本発明の例示的な一実施形態においては、拡大鏡は、Ｍｉｃｒｏｓｏｆｔ（登録商標）によるパーソナルコンピュータ用のＷｉｎｄｏｗｓ（登録商標）２０００およびＸＰオペレーティングシステムのＡＰＩの一部として提供されている下記の拡張されたウィンドウスタイルを用いて作成された拡大ウィンドウ（magnify window）を含む。
【００３８】
ＷＳ＿ＥＸ＿ＴＲＡＮＳＰＡＲＥＮＴ：このウィンドウスタイルは、このウィンドウの下にあるウィンドウがペイントされるまでこのウィンドウはペイントされないということを指定する。これによって、拡大鏡が描画される前にその拡大鏡の下にあるスクリーンの「スナップショット」を撮ることができる。
【００３９】
ＷＳ＿ＥＸ＿ＬＡＹＥＲＥＤ：このスタイルがＷＳ＿ＥＸ＿ＴＲＡＮＳＰＡＲＥＮＴスタイルと共に使用されている場合には、拡大鏡ウィンドウは、マウスやキーボードからのユーザ入力を受け取らず、すべての入力は、拡大鏡の下にあるアプリケーションに渡される。拡大鏡ウィンドウが、重ねられた透明なウィンドウとして作成されている場合には、ポインティングデバイス（たとえばマウス）のイベントは、その重ねられたウィンドウの下にある他のウィンドウに渡されることになる。また、このウィンドウスタイルは、アルファブレンドされたフレーム（alpha blended frame）を拡大鏡に与えるために使用することができるピクセルごとのアルファブレンディングを最適化する。この特徴は、拡大鏡がデスクトップ上に「浮遊している」という視覚的な手がかりをユーザに与えるために使用することができる。
【００４０】
ＷＳ＿ＥＸ＿ＮＯＡＣＴＩＶＡＴＥ：このウィンドウスタイルはまた、ウィンドウが「焦点」を得ないようにウィンドウを作成する。すなわち、拡大鏡ウィンドウが、通常は視覚的に強調表示されるウィンドウ（たとえば、タイトルバーと共に提供される通常のウィンドウ）として提供されている場合には、ポインティングデバイス（たとえばマウス）を用いてその中をクリックしても、そのウィンドウがアクティブウィンドウとして視覚的に強調表示される（たとえば、照らし出される）ことはない。ユーザは、拡大鏡を通り抜けてクリックすることができる。また、キーボードのイベント（入力）が拡大鏡によって取り込まれることもない。これによって、ユーザは、拡大鏡の下に位置するアプリケーションウィンドウと自由に対話することができる。また、このスタイルでは、拡大鏡はタスクバー上に表示されない。
【００４１】
ＷＳ＿ＥＸ＿ＴＯＯＬＷＩＮＤＯＷ：このスタイルを追加すると、拡大鏡はまた、開いているウィンドウ／アプリケーションをａｌｔ−ｔａｂで切り替える際の一覧（alt-tab listing）内に表示されなくなる。
【００４２】
ＷＳ＿ＥＸ＿ＴＯＰＭＯＳＴ：このウィンドウスタイルは、拡大鏡を一番上のウィンドウとして保持する。これがなければ、拡大鏡がその他のウィンドウの後ろに隠れてしまうことによって、拡大鏡の実用性が低下するおそれがある。
【００４３】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムのＡＰＩ内に含まれているこれらおよびその他の拡張されたウィンドウスタイルに関するさらなる情報は、たとえば非特許文献４のＭＳＤＮ（Microsoft Developers Network）で見ることができる。
【００４４】
使用することができる例示的な拡大鏡ウィンドウ作成機能を以下に示す。
【００４５】
【表１】
2009503742.tif 000003
【００４６】
本発明の一態様による拡大鏡のオペレーション上の処理が、図５に示されている。拡大鏡ウィンドウがアクティブ化されると、拡大鏡が所定の度合いで（たとえば、１秒間に約１５回から２４回）タイマメッセージを受け取るようにタイマが設定される。一実施形態においては、タイマの間隔は、１５ミリ秒、あるいは１秒間に６７回に設定される。拡大鏡は、拡大鏡が使用されている（アクティブになっている）間に生じる下にあるスクリーンコンテンツ内の変更を反映する目的で拡大鏡のイメージを継続的に更新するためにタイマメッセージを使用する。示された範囲内の更新頻度によって、拡大されたイメージは、拡大フレームがスクリーン上を移動するにつれて、あるいは下のウィンドウ内で再生されているアニメーションがあり、それによってスクリーンの前で手に持って動かされている実際の光学用虫メガネの外観をまねている場合に、比較的スムーズに変化できるはずである。図５に示されているように、タイマメッセージが受け取られると、拡大されることになる領域が取り込まれ、拡大鏡ウィンドウが一番上に設定され、そして取り込まれた領域が、適切な拡大レベルで拡大鏡内に描画される（たとえば、「ブリット（blit）を拡大する」）。
【００４７】
本発明の一実施形態は、ＵＳＥＲ３２（Ｗｉｎ３２ウィンドウマネージャー（Win32 window manager））が、Ｔｒａｎｓｐａｒｅｎｔウィンドウが作成される際にスクリーンコンテンツの合成の第２段階を実行するための比較的シンプルな合成エンジンを実装しているという事実を有利に活用する。これは、普通または通常のデスクトップ合成プロセスとは異なり、そうしたデスクトップ合成プロセスに追加するものであるという意味で、合成の「第２段階」である。Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムによって採用されている通常の合成プロセスは、時として修正ペインターズアルゴリズム（modified painters algorithm）と呼ばれるものに準拠している。ウィンドウは、逆ｚ順（reverse z order）で（上から下へ）デスクトップにペイントされる。再び描画されるスクリーンのエリアを、コンテンツが追加されているエリアまたは変更が生じているエリアに限定して、それによってスクリーンのちらつきを回避し、実際のペイント／描画作業の分量を少なくするために、積極的な「クリッピング（clipping）」が使用される。
【００４８】
Ｗｉｎｄｏｗｓ（登録商標）がウィンドウのピクセルをその「後ろ」にあるあらゆるものとマージすることを必要とするドロップシャドウ（drop shadow）、透明性、あるいはその他の任意の効果をウィンドウが使用している場合には、Ｗｉｎｄｏｗｓ（登録商標）は、それぞれデスクトップおよび透明なウィンドウのための中間のビットマップバッファ（intermediate bitmap buffer）を作成する。そして、これらのバッファのコンテンツが「合成」されて、最終的な出力が作成される。デスクトップのスナップショットを撮るためのコール（たとえばＧｅｔＤＣ（ＮＵＬＬ））、およびデスクトップからブリットを拡大するためのコール（ＳｔｒｅｔｃｈＢｌｔ）は、第２段階の合成プロセスから生じるデスクトップではなく、デスクトップバッファを使用することになる。拡大ウィンドウは、（たとえ不透明度が１００％に設定されていても）自分自身をＷｉｎｄｏｗｓ（登録商標）の「Ｔｒａｎｓｐａｒｅｎｔ」ウィンドウにすることによって、第２段階の合成プロセスを可能にすること、および自分自身をメインのデスクトップの上に置くことの双方を行う。「Ｔｏｐｍｏｓｔ」ウィンドウスタイルを使用することは、新たなウィンドウが後から現れて自分自身を一番上に設定することを防止することによって、拡大鏡を一番上に保持する。
【００４９】
本発明による拡大鏡は、ディスプレイスクリーン上で移動できるサイズ変更可能な拡大フレームを提示し、この拡大フレーム内には、その拡大フレームの下にある拡大領域内に位置するスクリーンコンテンツに対応する拡大されたイメージが提示される。本明細書に記載されている主要な実施形態においては、拡大フレーム／レンズは、ポインティングデバイスのカーソルと動きを共にするために中心をそのカーソルに固定されている。その他の実施形態においては、（拡大鏡の仮想「レンズ」の境界を示す）拡大フレームは、ポインティングデバイスのカーソルとは無関係に移動できるようにすることができる。
【００５０】
本発明の一態様によるコンピュータディスプレイ拡大鏡は、デスクトップおよび開いているあらゆるウィンドウの上に「浮遊」し、デスクトップや開いているいかなるウィンドウからも焦点を奪い去ることはない。前述のように、これらは、望ましい特徴である。しかし、これらは、どのようにして拡大鏡をサイズ変更し、その拡大レベルを変更するかという問題を提起する。通常のアプリケーションウィンドウにとっては、これは、取るに足らないことであろう。サイズ変更は、ウィンドウの境界をクリックアンドドラッグすることによって達成されるであろうし、拡大レベルは、オンスクリーンコントロール（on-screen control）を用いて変更することができる。しかし、このような方法を使用すると、その他の開いているウィンドウから焦点が奪い去られる結果となり、これによって、意図せぬ望ましくない結末となるおそれがある。コントロールパネルページを通じて設定を変更することもできるが、このアプローチは、特に、コンピュータ上においてさまざまなタスクを実行する過程で拡大鏡の頻繁で断続的な補助を希望する可能性のあるユーザにとっては、面倒であり、時間がかかる。
【００５１】
本発明の一態様によれば、ユーザ入力デバイス（たとえば、コンピュータマウスやキーボード）上に提供されている指定の拡大ボタンをクリックすることによって、ユーザによってほぼ瞬時にオンとオフを切り替えることができる拡大鏡が提供される。拡大鏡コントロールスイッチは、専用のボタン（またはユーザによって作動できるその他のタイプのスイッチ）、あるいはユーザによって拡大機能に割り当てられたボタンとすることができる。
【００５２】
例示的な一実施形態においては、拡大鏡がスクリーン上に表示されると、ユーザは、拡大ボタンを所定の短時間（たとえば約０．５秒）押し続けて、調整モードに入ることができる。調整モードがアクティブであるということをユーザに示すために、図６に示されているようなグラフィックを、拡大鏡フレームによって境界を示されている拡大レンズエリア内に表示させる（たとえばフェードインさせる）ことができる。調整モードにいる間、ユーザは、レンズの倍率およびサイズを変更することができる。図６に示されているように、スクリーン上に表示されるグラフィックは、拡大鏡の調整を行うための適切なユーザ入力の視覚的な表示（たとえば、マウスの動きおよびスクロールホイールの回転）を提供することができる。しかしユーザは、調整を行うためにそれらのグラフィックスと対話することはしない。拡大レンズ／フレームのサイズを変更するための例示的なスキームについて、以下でその概要を説明する。
【００５３】
拡大鏡がアクティブ化された状態で、拡大鏡フレームの横の寸法に対する変更を下記の方法で行うことができる。ユーザが、拡大機能に割り当てられているマウスボタンを押し下げてそのまま保持して、マウスを所定の方向に所定の距離だけ（たとえば、右に５０ピクセル）動かすと、その方向のマウスの動きに対応する度合いだけ拡大鏡フレームのサイズを（たとえば、その右側および左側の一方または双方で）増加させることができる。ユーザが、指定されているマウスボタンを押し下げてそのまま保持して、マウスを第２の所定の方向に所定の距離だけ（たとえば、左に５０ピクセル）動かすと、その方向のマウスの動きに対応する度合いだけ拡大鏡フレームのサイズを（たとえば、右側および左側の一方または双方で）減少させることができる。
【００５４】
拡大鏡がアクティブ化された状態で、拡大鏡フレームの縦の寸法に対する変更を同様に行うことができる。ユーザが、指定されているマウスボタンを押し下げてそのまま保持して、マウスを第３の所定の方向に所定の距離だけ（たとえば、下に５０ピクセル）動かすと、そのマウスの動きに対応する度合いだけ拡大鏡フレームのサイズが（たとえば、その下側および上側の一方または双方で）増加し始める。ユーザが、指定されているボタンを押し下げてそのまま保持して、マウスを第４の所定の方向に所定の距離だけ（たとえば、上に５０ピクセル）動かすと、そのマウスの動きに対応する度合いだけ拡大鏡フレームのサイズが（たとえば、下側およびその上側の一方または双方で）減少し始める。
【００５５】
上述のマウスの動きを組み合わせることによって、拡大鏡フレームのサイズに対する縦および横の変更を同時に行うことができる。拡大鏡が次に起動されたときに、拡大鏡フレーム／レンズが、最後に閉じられた時点の直前のサイズと同じサイズになるように、拡大鏡のサイズ設定を保存することができる。
【００５６】
拡大鏡がアクティブ化された状態で、拡大のレベルを下記の方法で変更することができる。ユーザが、指定されているマウスボタンを押し下げ、そしてそのボタンを押し下げたまま保持している間に、マウスホイールを手前へスクロールすると、拡大レベルは、最小拡大レベル（たとえば、１：１の拡大比率）によって設定されている任意の限度内で減少する。ユーザが、指定されているマウスボタンを押し下げ、そしてそのボタンを押し下げたまま保持している間に、マウスホイールを奥へスクロールすると、拡大レベルは、（最大拡大レベルによって設定されている任意の限度内で）増加する。例示的な一実施形態においては、拡大レベルは、１．５倍、２倍、３倍、４倍、および５倍のレベルへ段階的に調整することができる。
【００５７】
拡大鏡が非アクティブ化された（オフにされた）状態で、指定されているマウスボタンを押し下げてから放すと、拡大鏡がアクティブ化され、スクリーン上に表示される。次いでそのボタンを瞬間的に押し下げると、拡大鏡は、すぐに非アクティブ化される。拡大鏡が非アクティブになっている間に、ユーザが、指定されているボタンを押し下げ、そしてそのボタンを押し下げたまま保持している間に、マウスホイールを手前または奥へスクロールすると、そのスクロールイベントは、焦点を有しているアプリケーションに達する。ユーザが拡大ボタンを放すと、拡大鏡がアクティブ化され、スクリーン上に表示される。
【００５８】
本発明による例示的な拡大鏡は、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）２０００およびＸＰオペレーティングシステムによって提供されているＡＰＩの一部として利用可能な拡張されたウィンドウスタイルを使用して実装される。詳細には、この拡大鏡は、スクリーンイメージの一部を定期的に取り込み、拡大し、そのウィンドウイメージを更新する単一の層の（ＷＳ＿ＥＸ＿ＬＡＹＥＲＥＤ）、透明な（ＷＳ＿ＥＸ＿ＴＲＡＮＳＰＡＲＥＮＴ）ウィンドウとして構成することができる。これらの特定のウィンドウ属性によって、このウィンドウは、デスクトップおよび開いているあらゆるアプリケーションウィンドウの上に「浮遊」することができる。これらのスタイルフラグ（style flag）が設定されている状態では、拡大鏡が焦点を得ることはない。その代わりに、マウスからユーザ入力を選択的に得るためにソフトウェア「フック」（software "hooks"）が使用され、このフックは、進行中のユーザタスクおよびアプリケーションプロセスを妨げることなく拡大鏡に対する調整を行うために使用される。
【００５９】
上述の主要な実施形態においては、拡大鏡に対する調整を行う目的でマウスおよびスクロールホイールの動きと共に使用される入力ボタンを提供するためにコンピュータマウスが使用されている。しかし、拡大鏡のオンザフライの制御性を提供するために、トラックボールデバイス、コンピュータキーボード、タッチパッド、およびジョイスティックなど、さまざまなその他の公知のユーザ入力デバイスを使用することができるということが理解できるであろう。
【００６０】
本発明の例示的な一実施形態によれば、拡大ボタンを十分に長く押したまま保持して、調整モードに入ると、マウスフック（mouse hook）が設定される。マウスフックは、マウスによって作成された入力を「取り込み」、その入力を、通常は入力を受け取らない拡大鏡ウィンドウへと導く。マウスの入力（マウスの動きおよびスクロールホイールの回転に関する情報）を使用して、設定が調整される。マウスフックが設定されている間は、下にある「焦点を有している」いかなるアプリケーションも、マウスの動きやスクロールホイールの通知を受け取らない。ボタンを放すと、ただちに調整モードが終了し、するとすぐにフックが解除され、それによって、焦点を有しているアプリケーションは、再びマウスの入力を受け取ることができる。焦点を有しているアプリケーションは、決して焦点を失うことはなく、したがって、意図せぬ副次的悪影響はない。記載の例示的な拡大鏡では、設定は、拡大レベル、拡大鏡の横の長さ（単位はピクセル）、および拡大鏡の縦の長さ（単位はピクセル）という３つのレジストリ値として保存される。
【００６１】
Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムと共に使用できる「フック」に関する情報は、たとえば非特許文献５のＭＳＤＮ（Microsoft Developers Network）で見ることができる。  
非特許文献６も参照されたい。
【００６２】
本発明の拡大鏡の例示的な一実施形態を実装するのに適したソフトウェアについては、ウィンドウのプロシージャー、作成、更新タイマ（update timer）、および破棄を実施するＭａｇｎｉｆｉｅｒＷｉｎｄｏｗ、ならびにスクリーンイメージの取り込みおよびウィンドウのレンダリングを実施するＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒという２つの主要なクラスの点から説明することができる。
【００６３】
ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗクラスは、（数ある中でも）ＷＳ＿ＥＸ＿ＬＡＹＥＲＥＤスタイルおよびＷＳ＿ＥＸ＿ＴＲＡＮＳＰＡＲＥＮＴスタイルを用いてウィンドウを作成する。ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗクラスは、はじめに、最初の拡大鏡サイズおよび拡大レベルを決定し、ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒオブジェクトを初期化する。ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗクラスはまた、タイマオブジェクトを作成し、タイマによるそれぞれの刻時ごとに、ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒオブジェクト上でＵｐｄａｔｅ（．．．）メソッドを呼び出して、スクリーン上の拡大鏡のイメージおよび位置を更新する。拡大鏡ウィンドウは、ユーザが拡大鏡マウスボタンを２回目にクリックしたときに閉じて、サイズおよび拡大レベルを保存する。ＷＭ＿ＣＬＯＳＥメッセージが受け取られたときに、ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗオブジェクトに関連付けられているＨＷＮＤがリリースされる。ウィンドウが破棄されたときに、ＷＭ＿ＱＵＩＴがスレッドのメッセージポンプ（message pump）にポストされる。ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗには、前述の拡大鏡調整モードを提供することができ、この拡大鏡調整モードには、指定されている拡大鏡マウスボタンを押し下げてそのまま保持することによって入る。以下は、ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗクラス内に含めることができる構成要素のメソッドおよびメッセージハンドラ（message handler）を例示的に列挙したものである。
【００６４】
・Ｃｏｎｓｔｒｕｃｔｏｒ：ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗウィンドウクラスを登録し、そのインスタンスを作成し、マウスフックｄｌｌ（mouse hook dll）をロードする。  
・Ｄｅｓｔｒｕｃｔｏｒ：ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗに関連付けられているＨＷＮＤがリリースされたかどうかをチェックし、マウスフックを解除する。  
・ＧｅｔＨＷＮＤ：ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗクラスのこのインスタンスに関連付けられているＨＷＮＤを返す（クライアントは、ＷＭ＿ＣＬＯＳＥメッセージをこのウィンドウに送って、拡大鏡を閉じることができる）。  
・ＷＭ＿ＣＲＥＡＴＥ：最良の拡大鏡サイズ（アクティブ化スクリーンの解像度の割合（percentage of activation screen resolution）、あるいはレジストリの設定から）および拡大レベル（デフォルトでは１．５倍、あるいはレジストリの設定）を決定する。ｍａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒオブジェクトを初期化し、更新のためのウィンドウタイマ（window timer）を作成する。  
・ＷＭ＿ＣＬＯＳＥ：更新タイマを破棄し、レジストリの設定を保存し、ＤｅｓｔｒｏｙＷｉｎｄｏｗを呼び出す。  
・ＷＭ＿ＤＥＳＴＲＯＹ：ＷＭ＿ＱＵＩＴメッセージをスレッドのメッセージポンプにポストする。  
・ＷＭ＿ＮＣＤＥＳＴＲＯＹ：クラスメンバー変数（class member variable）を非初期化（uninitialize）する。  
・ＷＭ＿ＴＩＭＥＲ：スクリーンセーバが実行されている場合には、拡大鏡を閉じ、ＯＳＤ（on-screen-display）アニメーション（サイズおよび拡大レベルが調整されているときに表示されるオンスクリーンディスプレイグラフィックス（on-screen-display graphics））を更新し、アクティブな場合には、マウスポインタの現在位置を得て、コールＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒ：：Ｕｐｄａｔｅ（．．．）を呼び出して拡大鏡のイメージおよび位置を更新する。  
・ＷＭ＿ＤＩＳＰＬＡＹＣＨＡＮＧＥ：スクリーンの寸法が変更される際に、拡大鏡の寸法を更新する。  
・ＷＭ＿ＥＲＡＳＥＢＫＧＮＤ：オペレーションなし。このメッセージが受け取られると、コントロールは、最適化としてＷｉｎｄｏｗｓ（登録商標）へすぐに返される。  
・ＷＭ＿ＭＯＵＳＥＷＨＥＥＬ：このメッセージは、マウスフック（アクティブな場合）からのみ受け取られる。拡大レベルを変更する。  
・ＷＭ＿ＭＯＵＳＥＭＯＶＥ：このメッセージは、マウスフック（アクティブな場合）からのみ受け取られる。拡大鏡ウィンドウ（フレーム）のサイズを変更する。  
・Ｏｎ  Ｍａｇｎｉｆｉｅｒ  ＢｕｔｔｏｎＤｏｗｎ：サイズ変更モードに入り、マウスのフックを設定し、ＯＳＤのフェードインを初期化する。  
・Ｏｎ  Ｍａｇｎｉｆｉｅｒ  ＢｕｔｔｏｎＵｐ：サイズ変更モードから出て、マウスのフックを解除し、ＯＳＤのフェードアウトを初期化し、倍率またはサイズのいずれも変更されなかった場合には、拡大鏡を終了する。  
・ＳｅｔＢｅｓｔＷｉｎｄｏｗＳｉｚｅ：所望の横の長さおよび縦の長さが与えられると、最もよく合うように拡大鏡ウィンドウのサイズを設定する。それぞれのウィンドウの縁は、ズームインおよびズームアウトの最中のイメージジッタ（image jitter）を防止するために、現在の倍率の２倍の増加度合いで変化する（すなわち、倍率が１．５倍であるならば、ウィンドウの横の長さは、６ピクセルの増加度合いで変化する）。  
・ＭｏｕｓｅＨｏｏｋ：マウスフックを呼び戻し、マウスホイールおよびマウスの動きに関するメッセージを拡大鏡ウィンドウへ転送する。マウスフックは、拡大鏡のサイズおよび倍率を変更している間に下にあるアプリケーションがマウスの入力を受け取ることを防止するために使用される。
【００６５】
（ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒ）
ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒクラスは、スクリーンの取り込みおよび拡大レンダリングオペレーションを実行する。ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒクラスは、ウィンドウハンドルに関連付けられており、ある拡大レベルを与えられている。ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒ内に含めることができる構成要素のメソッドを例示的に列挙したものが、以下に示されている。
【００６６】
・Ｃｏｎｓｔｒｕｃｔｏｒ：デフォルトの初期化。  
・ＡｔｔａｃｈＷｉｎｄｏｗ：ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒオブジェクトをウィンドウハンドルに関連付ける。拡大鏡の横の長さおよび縦の長さは、コールの時点での指定されたウィンドウの横の長さおよび縦の長さに等しい。拡大鏡フレームおよびレンズマスク（lens mask）を表すイメージが、この時点で作成される。それらの横の長さおよび縦の長さは、指定されたウィンドウの横の長さおよび縦の長さと一致する。これらの２つのイメージは、レンダリングの最中に迅速に合成を行うために保持される。このメソッドは、ウィンドウのサイズからＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒをサイズ変更させるために繰り返し呼び出すことができる。  
・ＳｅｔＭａｇｎｉｆｉｃａｔｉｏｎ：拡大レベルを設定する。このメソッドは、拡大レベルを変更するためにいつでも呼び出すことができる。  
・ＧｅｔＭａｇｎｉｆｉｃａｔｉｏｎ：現在の拡大レベルを返す。  
・ＳｅｔＯＳＤＡｌｐｈａ：拡大鏡を調整するための適切なユーザ入力を示す調整モードのオンスクリーンディスプレイグラフィックの不透明度を設定する。  
・ＧｅｔＯＳＤＡｌｐｈａ：調整モードのオンスクリーンディスプレイグラフィックの不透明度を得る。  
・Ｕｐｄａｔｅ：拡大鏡を移動し、更新する。ウィンドウのサイズが変更された場合には、新たなフレームおよびレンズマスクのビットマップを作成する。取り込みビットマップ（capture bitmap）に変化がない場合には、更新は行われず、イメージ更新の多くのサイクルが省略される。  
・Ｃａｐｔｕｒｅ：現在および前回の２つの取り込みバッファ（capture buffer）が提供される。新たな現在のバッファが取り込まれ、現在のバッファと前回のバッファとが異なるかどうかを示すメッセージが返される。  
・Ｒｅｎｄｅｒ：現在の取り込みイメージ（capture image）を拡大し、不要なピクセルをマスクしてオフにし、フレームを一番上にコピーする。  
・ＣｒｅａｔｅＦｒａｍｅＡｎｄＭａｓｋ：現在のウィンドウの横の長さおよび縦の長さと相対的にサイズ設定されたレンズマスク、フレーム、現在の取り込みビットマップ、および前回の取り込みビットマップを作成する。  
・ＧｅｔＢｉｔｍａｐＳｉｚｅ：ＳＩＺＥ構造内のＨＢＩＴＭＡＰの横の長さおよび縦の長さを返す。  
・ＧｅｎｅｒａｔｅＢｏｒｄｅｒ：９つのコンポーネントビットマップを取り込み、それらで対象のビットマップを満たす。  
・ＭａｓｋＢｉｔｍａｐ：指定されたマスクビットマップを使用して、対象のビットマップ内のピクセルをマスクする。対象のピクセルにマスクアルファ値（mask alpha value）をかける。  
・ＡｒｅＢｉｔｍａｐｓＤｉｆｆｅｒｅｎｔ：取り込みエリア（capture area）が変化しているかどうかを判定するためにピクセル値どうしを比較することによって、２つのビットマップが異なっているかどうかを返す。取り込みエリアが変化していない場合には、最適化として拡大鏡を更新する必要はない。  
・Ｓｔｒｅｔｃｈ＿１×５：ビットマップを１．５倍に拡大する。
【００６７】
ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒの例示的なプロセスおよび機能について、以下で図７〜図１０を参照して説明する。
【００６８】
（初期化（Initialization））
図７を参照すると、ＡｔｔａｃｈＷｉｎｄｏｗ（．．．）が、指定されたウィンドウハンドルを保存し、フレームおよびレンズマスクのためのイメージを作成する。このフレームおよびレンズマスクのイメージは、ウィンドウの横の長さおよび縦の長さと一致する。フレームは、９つの別個の要素から構成されている。中央の要素が拡大されて、必要とされているサイズのフレームを作り上げる。これらのイメージ内で陰影の付いているエリアは、透明なピクセルを表しているという点に留意されたい。
【００６９】
次いで図８を参照すると、フレームのイメージが作成された後に、同様にしてレンズマスクのイメージが作成されている。陰影の付いていないエリアによって表されているマスク内の不透明なピクセルは、拡大されたイメージが表示されることになる領域を画定している。これらのイメージ内で陰影の付いていたエリアは、透明なピクセルを表していたという点に留意されたい。
【００７０】
ＭａｇｎｉｆｉｅｒＲｅｎｄｅｒｅｒ：：Ｕｐｄａｔｅ（．．．）メソッドは、オーナーウィンドウの寸法が変化しているかどうかをチェックし、そうである場合には、フレームおよびレンズマスクのイメージを更新して、新たなサイズと一致させる。クライアントは、ＡｔｔａｃｈＷｉｎｄｏｗ（．．．）を呼び出して、明示的にフレームおよびレンズマスクのイメージを再作成させることができる。
【００７１】
（取り込み（Capture））
図９Ａを参照すると、拡大前のイメージを取り込む長方形（source image capture rectangle）が、マウスポインタの現在位置を中心にして配置されている。（拡大領域を画定している）図示されているＣａｐｔｕｒｅ  Ｒｅｃｔａｎｇｌｅの横の長さは、Ｍａｇｎｉｆｉｅｒ  Ｗｉｎｄｏｗ  Ｒｅｃｔａｎｇｌｅ（拡大鏡フレーム）の横の長さを拡大のレベルで割ったものである。同様に、ＣａｐｔｕｒｅＲｅｃｔａｎｇｌｅの縦の長さは、ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗ  Ｒｅｃｔａｎｇｌｅの縦の長さを拡大のレベルで割ったものである。Ｃａｐｔｕｒｅメソッドは、スクリーンイメージをコピーし、その取り込まれたイメージが、前回に取り込まれたイメージと異なっているかどうかを返す。その取り込まれたイメージは、レンダリングの最中に使用するために保存される。
【００７２】
（レンダリング（Render））
図９Ｂに示されているように、まずは、取り込まれたイメージが、ウィンドウのサイズへ拡大される。次に、その拡大されたイメージが、レンズマスクを用いてマスクされる。次いで、その拡大されたイメージにフレームがはめ込まれる。調整モードに入ると、拡大の調整およびフレームのサイズ変更のためのヒントグラフィックス（magnification adjustment and frame resizing hint graphics）（好ましくは透明なグラフィックイメージが、透明なピクセルを表している）が、フレーム付きのイメージに追加される。このヒントグラフィックスは、調整モードがアクティブである場合にのみ表示される。
【００７３】
（更新（Update））
拡大鏡のイメージおよび位置が変化した場合には、：：ＵｐｄａｔｅＬａｙｅｒｅｄＷｉｎｄｏｗ（ｉｍａｇｅ＆ｐｏｓｉｔｉｏｎ）への呼び出しが行われる。位置のみが変化した場合には、：：ＵｐｄａｔｅＬａｙｅｒｅｄＷｉｎｄｏｗ（ｐｏｓｉｔｉｏｎ）への呼び出しが行われる。イメージのみが変化した場合には、：：ＵｐｄａｔｅＬａｙｅｒｅｄＷｉｎｄｏｗ（ｉｍａｇｅ）への呼び出しが行われる。このウィンドウは、Ｕｐｄａｔｅ（）機能内で一番上に設定される。
【００７４】
（１．５倍の拡大アルゴリズム（1.5x Stretching Algorithm））
ビットイメージをさまざまな拡大レベルで拡大鏡フレームへ拡大するために、標準的なＷｉｎｄｏｗｓ（登録商標）のＡＰＩを使用することができる。本発明の一実施形態においては、１．５倍というデフォルトの拡大レベルは、スピードを最適化するために、および拡大されたイメージの外観を改善するために別のアルゴリズムを利用する。
【００７５】
図１０Ａに示されているように、１．５倍に拡大する際、拡大前の２つのピクセルは、拡大後には３つのピクセルになる。拡大前の最初のピクセルは、コピー先の最初のピクセルへコピーされる。拡大前の２番目のピクセルは、コピー先の３番目のピクセルへコピーされる。コピー先の２番目のピクセルは、拡大前の最初の２つのピクセルの平均として設定される。
【００７６】
拡大鏡によって使用される拡大アルゴリズムは、拡大前の第０行、第１行、第２行、第３行、第４行．．．を、それぞれ図１０Ｂに示されている拡大後の第０行、第２行、第３行、第５行、第６行．．．へと拡大する。そしてこのアルゴリズムは、はじめに戻って、図１０Ｃに示されているように、対象のピクセルの１つ上の行からのピクセルと１つ下の行からのピクセルとを平均することによって、第１行、第４行、第７行などを埋める。
【００７７】
本発明について、その好ましい例示的な実施形態の点から説明してきた。当業者が本開示を考察すれば、添付の請求項の範囲および趣旨内に収まるその他の多くの実施形態、修正形態、および変形形態が想起されるであろう。請求項において、本明細書に記載されているアルゴリズム変数を表す標示がいかなる形で使用されていても、それは、便宜および明確さを目的としたものであり、いかなる形であれ限定する影響を与えることを意図するものではない。
【図面の簡単な説明】
【００７８】
【図１】関連技術の拡大鏡製品のオンスクリーン拡大ウィンドウを示すスクリーンショット図である。
【図２】別の関連技術の拡大鏡製品を示すスクリーンショット図である。
【図３】関連技術の拡大鏡製品のオンスクリーンツールバーウィンドウ（on-screen tool bar window）を示すスクリーンショット図である。
【図４】関連技術のコンピュータマウス製品と共に使用するためのソフトウェアの一部として提供されるコントロールパネルを示す図である。
【図５】本発明のスクリーン拡大鏡の実施形態によって実行される一連のオペレーション上の処理ステップを示す流れ図である。
【図６】拡大鏡の調整モードの最中に表示されるスーパーインポーズされたヒントグラフィックス（hint graphics）を含む本発明の移動可能かつ調整可能な拡大フレームを示すスクリーンショット図である。
【図７】本発明の一態様によるフレームビットマップ作成プロセス（frame bitmap generation process）を表す図である。
【図８】本発明の一態様によるマスクビットマップ作成プロセス（mask bitmap generation process）を表す図である。
【図９Ａ】拡大鏡フレーム（「ＭａｇｎｉｆｉｅｒＷｉｎｄｏｗ  Ｒｅｃｔａｎｇｌｅ」）と、下にある拡大領域（「Ｃａｐｔｕｒｅ  Ｒｅｃｔａｎｇｌｅ」）との関係を示す、拡大のために選択された具象的なイメージ部分を含む図である。
【図９Ｂ】図９Ａに示されているイメージ部分に対応する拡大されたイメージを作成して提示するための本発明のプロセスの段階を示す図（一連のビュー）である。
【図１０Ａ】本発明の一態様による１．５倍の「拡大」アルゴリズム（stretching algorithm）によって実行されるプロセスを示す図である。
【図１０Ｂ】本発明の一態様による１．５倍の「拡大」アルゴリズムによって実行されるプロセスを示す図である。
【図１０Ｃ】本発明の一態様による１．５倍の「拡大」アルゴリズムによって実行されるプロセスを示す図である。
【図１】
2009503742.tif 000004
【図２】
2009503742.tif 000005
【図３】
2009503742.tif 000006
【図４】
2009503742.tif 000007
【図５】
2009503742.tif 000008
【図６】
2009503742.tif 000009
【図７】
2009503742.tif 000010
【図８】
2009503742.tif 000011
【図９Ａ】
2009503742.tif 000012
【図９Ｂ】
2009503742.tif 000013
【図１０Ａ】
2009503742.tif 000014
【図１０Ｂ】
2009503742.tif 000015
【図１０Ｃ】
2009503742.tif 000016
【国際調査報告】
2009503742.tif 000017