JPH10507853A - ウィンドウをサービスするためのオブジェクト指向システム - Google Patents

ウィンドウをサービスするためのオブジェクト指向システム

Info

Publication number
JPH10507853A
JPH10507853A JP8513878A JP51387896A JPH10507853A JP H10507853 A JPH10507853 A JP H10507853A JP 8513878 A JP8513878 A JP 8513878A JP 51387896 A JP51387896 A JP 51387896A JP H10507853 A JPH10507853 A JP H10507853A
Authority
JP
Japan
Prior art keywords
window
computer
computer system
server
display
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
JP8513878A
Other languages
English (en)
Inventor
リンチ−フレッシュナー,ローレンス,エイ.
マーシュ,ドナルド,エム.
ミルン,スティーヴ,エイチ.
ジアス,ジェフ,エイ.
Original Assignee
オブジェクト テクノロジー ライセンシング コーポレイション
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 オブジェクト テクノロジー ライセンシング コーポレイション filed Critical オブジェクト テクノロジー ライセンシング コーポレイション
Publication of JPH10507853A publication Critical patent/JPH10507853A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • 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

Landscapes

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

Abstract

(57)【要約】 ウィンドウ・サーバはクライアントと通信してウィンドウ・オブジェクトを生成し、破棄し、および変更する。オブジェクトは、クライアントによって与えられたパラメータに応答して生成される。クライアントは、ウィンドウ・サーバによって管理されるウィンドウに関する様々な情報を得ることができる。ハードウェア・ウィンドウはポリモーフィック・スクリーン・オブジェクトを提供するオブジェクトをサブクラス化することによりサポートされる。したがって、ウィンドウがハードウェアもしくはソフトウェア・エンティティのいずれによって生成されたかは問題とならない。クライアントは、特定のウィンドウに関して発生したあるイベント、たとえば構成の変更などに対する応答において、ウィンドウ・サーバにより通知されることがある。ウィンドウ・サーバはまた、クライアントによって指定された、若しくは指定されていないパラメータのほか、ウィンドウ・サーバによって現在管理されているウィンドウの特徴を考慮するデフォルトのウィンドウのレイヤリング方法を動的に管理することもできる。ウィンドウ・サーバはまた、ウィンドウのクラスタリングもサポートするが、これによって1つのウィンドウがモニタをスパンできるようにする。ウィンドウ・サーバはまた、構成プログラムに対する応答において、デスクトップの特徴に対する広汎な変更ができるようにする。

Description

【発明の詳細な説明】 ウィンドウをサービスするためのオブジェクト指向システム 著作権の告示 本特許出願の一部には、著作権保護のもとにある資料を含む。著作権者は、特 許商標庁において現れるような特許文献または特許開示内容を何人もが原文通り に複製することを妨げるものではない。 発明の分野 本発明は、一般的にはコンピュータ・システムにおける改良に関し、特に、グ ラフィック・ユーザ・インタフェースにおけるウィンドウ・ディスプレイ領域を 管理するためのオペレーティング・システム・ソフトウェアに関する。 発明の背景 現代のコンピュータ・システムの最も重要な面の一つは、人間のユーザと機械 の間のインタフェースである。初期の最も一般的なインタフェースの型は、テキ スト・ベースのものであった。ユーザは、キーボード上でテキスト文字をタイプ して機械と通信し、機械はディスプレイ・スクリーン上にテキスト文字をディス プレイしてユーザと通信していた。最近は、グラフィック・ユーザ・インタフェ ースがより一般的になってきており、グラフィック・ユーザ・インタフェースで は、機械は、テキストや絵を含むグラフィックをディスプレイ・スクリーン上に ディスプレイすることによりユーザと通信し、ユーザは、テキストからなるコマ ンドをタイプすること、及び、ディスプレイされている絵をマウスなどのポイン ティング・デバイスによって操作することの両方によって、機械と通信する。 現代のコンピュータ・システムには、ウィンドウ環境と呼ばれるグラフィック ・ユーザ・インタフェースを処理するものが多い。典型的なウィンドウ環境にお いては、ディスプレイ・スクリーン上に描かれたグラフィカル・ディスプレイは 、電子的な「デスクトップ(desktop)」の表面に似せるように配置され、コンピ ュータ上で動作している各アプリケーション・プログラムは、「ウィンドウ(win dow)」と呼ばれるスクリーンの長方形の領域内にディスプレイされた1つまたは 2つ以上の電子的な「用紙(paper sheet)」として表現される。 各ウィンドウ領域は、一般的には関連するアプリケーション・プログラムによ って生成される情報をディスプレイし、デスクトップ上に同時に複数のウィンド ウ領域が存在して、それぞれの領域が異なるアプリケーション・プログラムによ って生成された情報を表すことができる。アプリケーション・プログラムは、ユ ーザに対する情報を各ウィンドウを通じて提供するが、これは、イメージ、グラ フィック、もしくはテキストをウィンドウ領域の中に描画もしくは「ペイント(p ainting)」することによって行う。一方、ユーザはアプリケーションと通信する が、これは、ウィンドウ領域内のオブジェクトをポインティング・デバイスによ って制御されるカーソルで「指し示す」ことによって、及びそのオブジェクトを 操作したり移動させたりすることによって、さらにまた、キーボード上に情報を タイプすることによって行う。ウィンドウ領域は、ディスプレイ・スクリーン上 のいたるところに移動させたりサイズや姿を変更させることができるので、ユー ザは便利なようにデスクトップを配置することができる。 ウィンドウ領域のそれぞれは、典型的には標準的なグラフィカル・オブジェク ト、たとえば大きさ変更のボックス(sizing box)、ボタン、及びスクロール・バ ーなどを含む。これらの機能は、ユーザがカーソルで指し示して選択したり処理 したりできるようなユーザ・インタフェース・デバイスを表現している。これら のデバイスが選択され、もしくは操作されるときは、その下にあるアプリケーシ ョン・プログラムにウィンドウ・システム経由で、そのコントロールがユーザに よって操作された旨の情報が伝えられる。 一般的には、以上に説明したウィンドウ環境はコンピュータ・オペレーティン グ・システムの一部である。オペレーティング・システムはまた、典型的にはコ ンピュータ・システムが基本的な操作を実行できるようにするためのユーティリ ティ・プログラムの集合も含む。基本的な操作には、情報をディスク・メモリに 格納したりこれから取り出したりすることや、ファイルの新規作成、名前付け、 名前の変更を含むファイル操作を実行することや、場合によっては、機能不調(m alfunctions)を発見してこれから回復するための診断操作を実行することなどが ある。 コンピューティング・システムの最後の部分は、オペレーティング・システム と相互作用してより高いレベルの機能を提供し、特定のタスクを実行し、及びユ ーザとの直接インタフェースを提供する「アプリケーション・プログラム」であ る。アプリケーション・プログラムは、典型的にはオペレーティング・システム の機能を利用するが、これには、一連のタスク・コマンドをオペレーティング・ システムに送り出し、その後でオペレーティング・システムは要求されたタスク を実行することがある。例えば、アプリケーション・プログラムは、オペレーテ ィング・システムに特定の情報をコンピュータ・ディスク・メモリ上に格納する よう要求したり、ビデオ・ディスプレイ上に情報をディスプレイするよう要求し たりできる。 図1は、典型的な従来技術のコンピュータ・システムであってアプリケーショ ン・プログラムとオペレーティング・システムの両方を利用するものの概略図で ある。コンピュータ・システムは、点線で描かれた箱100によって概略的に表 現され、アプリケーションは箱102によって表現され、オペレーティング・シ ステムは箱106によって表現される。アプリケーション・プログラム102と オペレーティング・システム106との間の上述したような相互作用は図では矢 印104で図示されている。このデュアル・プログラム・システム(dual progra m system)は、メイン・フレームからパーソナル・コンピュータまでの範囲の多 くの種類のコンピュータ上で使用されている。 スクリーン・ディスプレイの操作の方法はコンピュータごとに異なるが、この 点について、図1は、従来技術のパーソナル・コンピュータ・システムを表現し ている。スクリーン・ディスプレイを提供するために、アプリケーション・プロ グラム102はディスプレイされる情報をスクリーン・バッファ110内に一般 的には格納する(格納操作は矢印108によって概略的に示される)。システム 内のさまざまなハードウェア及びソフトウェアの制御の下で、スクリーン・バッ ファ110の内容はバッファから読み出されて、矢印114によって概略的に示 されるように、ディスプレイ・アダプタ112へ提供される。ディスプレイ・ア ダプタ112はハードウェアとソフトウェア(ファームウェアの形式によること もある)を含むが、これはスクリーン・バッファ110内の情報をディスプレイ ・モニタ118を駆動するために使用できる形式に変換する。ここで、ディスプ レイ・モニタ118は、ディスプレイ・アダプタ112とケーブル116によっ て接続されている。 図1に示されている従来技術の構成(configuration)は、一般的には一つのア プリケーション・プログラム102だけがいかなる時も動作しているシステムで はうまく働く。この単純なシステムは正しく動作するが、これはディスプレイ上 の問題を起こすことなしに、単一のアプリケーション・プログラム102が全ス クリーン・バッファ領域110のいかなる領域の中にも情報を書くことができる からである。しかし、図1に示されている構成が、1つより多いアプリケーショ ン・プログラム102が同時に稼働するようなコンピュータ・システム内で使用 される場合(例えば、「マルチタスキング(multi-tasking)」コンピュータ・シ ステム)は、ディスプレイ上の問題が発生しうる。特に、各アプリケーション・ プログラムが全スクリーン・バッファ110にアクセスする場合であって、アプ リケーションの間のある種の直接通信がない場合には、あるアプリケーションが 、別のアプリケーションによって使用されているスクリーン・バッファの一部を 上書きしてしまい、そのために、あるアプリケーションによって生成されたディ スプレイが他のアプリケーションによって生成されたディスプレイによって上書 きされる結果となる。 それ故に、アプリケーション・プログラムの操作を調節するための機構が開発 されたが、これは、各アプリケーション・プログラムがスクリーン・バッファの 一部のみに制限されるために他のディスプレイと分離されていることを保証する ためである。この調節(coordination)は、ウィンドウがスクリーン・ディスプレ イ上で「オーバラップ(overlap)」してもよいシステムでは、複雑になってしま っていた。スクリーン・ディスプレイが配置されてウィンドウが「オーバラップ 」 してディスプレイされるようになっている場合は、別のウィンドウの「前」にデ ィスプレイされるウィンドウは、下にあるウィンドウの一部を覆って見えなくす る。このように、一番前にあるウィンドウ以外は、下にあるウィンドウの一部だ けがスクリーンにディスプレイされ、いかなるときも「見える」のはその一部だ けとなることがある。さらに、ウィンドウはユーザによって移動されたり大きさ を変更されたりするため、各ウィンドウの見える部分が、他のウィンドウが移動 されたり大きさを変更されたりしたときに、変わることがある。したがって、各 アプリケーション・ウィンドウに割り当てられたスクリーン・バッファの部分は また、他のアプリケーションのウィンドウが移動し大きさが変更するとき変化す る。 ウィンドウの移動や大きさ変更によって発生する急速なスクリーンの変更に対 応するのに必要なスクリーン・バッファに対する変更を効率よく管理するために 、図1に示されている従来技術のコンピュータ配置は、図2に示されているよう に変更された。この新しい配置のコンピュータ・システム200は、1つ又は複 数のアプリケーション・プログラムによって制御され、そのプログラムとして2 02と216が図に示されているが、これらのプログラムはコンピュータ・シス テム内で同時に動作することができる。プログラムはそれぞれオペレーティング ・システム204とインタフェースをとるが、この様子は図中の矢印206と2 20によって図示されている。しかし、ディスプレイ・スクリーン上に情報をデ ィスプレイするために、アプリケーション・プログラム202と216はディス プレイ情報を、オペレーティング・システム204の中にある中央ウィンドウ・ マネージャ・プログラム218に送る。次に、ウィンドウ・マネージャ・プログ ラム218は、直接スクリーン・バッファ210とインタフェースをとるが、こ の様子は図中では矢印208によって図示されている。スクリーン・バッファ2 10の内容が、矢印212に示されるように、ケーブル222によってディスプ レイ・モニタ224に接続されているディスプレイ・アダプタ214に提供され る。 このようなシステムでは、ウィンドウ・マネージャ218は一般に、ユーザが アプリケーション・プログラムの処理中に見る全ウィンドウ・ディスプレイの管 理の責任を負うことになる。ウィンドウ・マネージャ218は全アプリケーショ ン・プログラムと通信状態にあるので、アプリケーション間の調節をしてウィン ドウ・ディスプレイが重ならないようにすることができる。その結果、一般に、 ウィンドウ・マネージャがする作業は、ウィンドウ及び、ウィンドウが移動した ときに描画あるいは再描画しなければならないウィンドウ領域の、位置と大きさ を追跡し続けることである。 ウィンドウ・マネージャ218はディスプレイ要求をアプリケーション202 と216のそれぞれから受信する。しかし、ウィンドウ・マネージャ218だけ がスクリーン・バッファ210とインタフェースをとっているので、各アプリケ ーションに対してスクリーン・バッファ210の各々の領域を割り当てることが でき、アプリケーションが間違って別のアプリケーションによって生成されたデ ィスプレイを上書きすることがないことが保証できる。市販されている異なるウ ィンドウ環境には、図2に図示した配置を利用しているものがいくつかある。こ れには、X/Window Operating環境、WINDOWS、Micros oft 社によって開発されたグラフィカル・ユーザ・インタフェース(graphical u ser interface)、及びInternational Business Machines 社によって開発された OS/2プレゼンテーション・マネージャ(Presentation Manager)が含まれる。 これらのウィンドウ環境のそれぞれは、自分用の内部ソフトウェア・アーキテ クチャを持っているが、これらアーキテクチャは、コンピュータ・ネットワーク ・ソフトウェアを記述するために使用される多層(multi-layer)モデルに類似し た多層モデルを使用することによって、すべて分類することができる。典型的な 多層モデルには、以下の層が含まれる。 ユーザ・インタフェース ウィンドウ・マネージャ リソース制御及び通信 コンポーネント・ドライバ・ソフトウェア コンピュータ・ハードウェア ただし、用語「ウィンドウ環境(window environment)」は、上記のすべての層 をまとめたものを意味する。 最下層のコンピュータ・ハードウェア・レベルは、基本コンピュータ及びディ スプレイ・モニタ、キーボード、マウスやトラック・ボールなどのポインティン グ・デバイスなどを含むこれに関連する入出力デバイス、及びプリンタやディス ク・ドライブなどを含むその他の標準コンポーネントを含む。次の層の「コンポ ーネント・ドライバ・ソフトウェア」レベルは、さまざまなハードウェア・コン ポーネントを操作するために必要なコマンドや信号を生成するデバイス依存ソフ トウェアからなる。リソース制御及び通信層は、コンポーネント・ドライバとイ ンタフェースをとり、ソフトウェア・ルーチンであってリソースを割り当て、ア プリケーション間の通信を行い、高い層によって生成された通信を下にある層へ 多重(multiplex)するソフトウェア・ルーチンを含む。ウィンドウ・マネージャ は、ウィンドウの移動や大きさ変更、ウィンドウのアクチベート(activate)やイ ンアクチベート(inactivate)、ウィンドウの再描画や再ペイントなどの基本ウィ ンドウ操作に対するユーザ・インタフェースを処理する。最後のユーザ・インタ フェース層は、完全なユーザ・インタフェースを開発するためにアプリケーショ ン・プログラムが使用するさまざまな制御(ボタン、スライダ、ボックスおよび 他の制御)を実装する高レベルの機能を提供する。 図2に示した配置によってディスプレイ・スクリーンの干渉問題は解決される が、全アプリケーション・プログラムによって生成されるスクリーン・ディスプ レイ要求をウィンドウ・マネージャ218が処理しなければならないという欠点 がある。これらの要求は順を追って処理することができるだけなので、要求はウ ィンドウ・マネージャに対して提示するためのキューに入れられ、その後で、各 要求が処理されて端末224上にディスプレイが生成される。スクリーン上に同 時にたくさんのウィンドウが存在するようなディスプレイにおいては、ウィンド ウ・マネージャ218は容易にディスプレイ情報に対する「ボトルネック」とな りうるので、アプリケーション・プログラム202及び216によるディスプレ イの高速な変更ができなくなる。ユーザによってウィンドウが移動されたときや 再配置されたときにスクリーンの再描画に時間がかかるため、ウィンドウが少し ずつ構築されていく様子が見えるので時間がかかっていることがわかってしまい 、これはいらいらさせることになり、システムの操作を損なうことになる。 したがって、本発明の目的は、各アプリケーション・プログラムによって生成 されたスクリーン・ディスプレイをすばやく効率よく再描画できるような方法で アプリケーション・プログラムとのインタフェースをとることができるウィンド ウ・マネージャを提供することである。 本発明の別の目的は、全アプリケーション・プログラム若しくはクライアント のディスプレイ生成を調節して、アプリケーションやクライアントが互いに干渉 したりスクリーン・ディスプレイ上で互いに上書きしたりするのを防ぐことであ る。 本発明のさらに別の目的は、アプリケーション・プログラムやクライアントと 単純なコマンド構造によって相互作用でき、その際にアプリケーション・プログ ラムは実際の実装の詳細について知る必要がないようなウィンドウ・マネージャ を提供することである。 さらに、本発明の別の目的は、スクリーン・ディスプレイプロセスを通じて詳 細な制御を必要とするアプリケーション・プログラムの開発者が、利用できるが 各アプリケーション・プログラムによって使用される必要はないディスプレイコ ントロール・コマンドのフル・セットによってこのコントロールを完成できるよ うに処理するようなウィンドウ・マネージャを提供することである。 発明の概要 オブジェクト指向ウィンドウ・サーバ(object-oriented window server)がク ライアントとディスプレイ・システムとの間の調整をおこなう本発明の例示的実 施の形態においては、上述の問題は克服され、上述の目的は達成される。各クラ イアントは、パラメータをウィンドウ・サーバに送ることによってウィンドウを 作成できる。ウィンドウ・サーバは、そのパラメータにしたがってウィンドウ・ オブジェクト(window objects)を作成する。オブジェクト指向の設計、特にウィ ンドウ・サーバによって作成されたオブジェクトのユニークな特性が、デスクト ップやその要素などのディスプレイ空間(display space)のさまざまな面(aspect )の作成、変更、消滅を望むクライアントに対する一貫したインタフェースを提 供する。 パラメータを受信すると、ウィンドウ・サーバは特定のパラメータが存在する か調べる。特定のパラメータが存在する場合は、そのパラメータにしたがって、 ウィンドウはディスプレイ空間や他のウィンドウに相対的な位置にディスプレイ される。特定のパラメータが存在しない場合は、そのウィンドウはデフォルトの 階層スキーム(default layerlng scheme)を使用してディスプレイされ、そのウ ィンドウはすでにディスプレイされているウィンドウに関連するパラメータを引 き受ける。 ウィンドウ・サーバはまた、サブクラス化(subclass)によって作成されること があるハードウェア・ウィンドウも提供するが、これは、多相的(polymorphic) なスクリーン・デバイス・オブジェクトを作成するためである。したがって、ク ライアントがハードウェア・エンティティ(entity)とソフトウェア・エンティテ ィのいずれであっても、ウィンドウ・サーバにとっては無関係である。 さらにウィンドウ・サーバは、複数のモニタのスパン(span)をサポートするが 、これは、モニタのスパンに必要な内部ウィンドウを含むクラスタ・オブジェク ト(cluster object)を作成することによっておこなう。 図面の簡単な説明 前述及び後述する本発明の利点は、添付した図面と組み合せて以下の説明を参 照することによって、よりよく理解されると思われる。 図1は、アプリケーション・プログラム、オペレーティング・システム、スク リーン・バッファ、及びディスプレイ・モニタの関係を示す従来技術のコンピュ ータ・システムの概略ブロック図である。 図2は、図1に示された従来技術のシステムを変更した概略ブロック図であり 、これによって複数の同時に動作しているアプリケーション・プログラムがスク リーン・ディスプレイを生成できるようになる。 図3は、コンピュータ・システム、例えば、本発明のオブジェクト指向ウィン ドウ・マネージャが処理を行うパーソナル・コンピュータ・システムの概略ブロ ック図である。 図4は、変更したコンピュータ・システムの概略ブロック図であり、ディスプ レイ・モニタ上にグラフィック情報をディスプレイするために多数のアプリケー ション・プログラムとウィンドウ・マネージャとの間のスクリーン・バッファに おける相互作用をしている。 図5は、情報経路の概略ブロック図であり、アプリケーション・プログラムが 本発明のオブジェクト指向マネージャと通信する方法を示している。 図6は、システム・レベルのウィンドウ・サーバ(Window Server)、及びウィ ンドウ・サーバとクライアント(Clients)の間の関係を示すブロック図である。 図7は、ウィンドウを作成するためにクライアントからウィンドウ・サーバに 送られるパラメータを含む要素及び操作を明らかにするブロック図である。 図8は、クライアントによって指定されたウィンドウの種類と位置に応じて、 ウィンドウ・サーバによってウィンドウの位置が決められる方法を説明するフロ ーチャートを示す図である。 図9は、ノーティフィケーション・インスタンス(notification instances)を 作成するためにクライアントがウィンドウ・オブジェクトと相互作用する方法を 明らかにするブロック図である。 図10は、本発明の好適実施の形態におけるウィンドウ、ウィンドウ・サーバ 、およびイベント・サーバの間の相互作用を示すブロック図である。 図11は、デスクトップを形成する各ディスプレイ・デバイスに対して入出力 アクセス・マネージャ(IO access manager)が存在することを明らかにするブ ロック図である。 図12は、構成チーム(configuration team)、すなわち、ディスプレイ・デバ イス・フレームワーク、ウィンドウ・サーバ、ディスプレイ・デバイス・アクセ ス・マネージャの間の操作の要素及び流れを示す図である。 図13は、デスクトップ・ジオメトリ(geometry)に対するアクセスのために使 用されるクラスを示す図である。 図14は、各コンポーネント・グラフ(graf)・デバイスがTGrafDevice及びMSc reenDeviceによって表現される方法を説明するブーチ図(Booch diagram)を示す 図である。 図15は、クライアント・チームのウィンドウ、及びウィンドウ・サーバのウ ィンドウを示すブロック図である。 図16は、ハードウェア・ウィンドウを実装するためにサブクラス化されたTI nternalWindowを明らかにするブーチ図である。 図17は、TSystemWindow及びTInternalWindowのサブクラス化を示すブーチ図 である。 図18は、デスクトップを形成する各ディスプレイ・デバイスを示すブロック 図であり、ウィンドウの中で生きて(live)いるTDisplayDeviceがある。 図19は、内部ウィンドウが作成される方法を示すブロック図である。 図20は、ブロック・ダイアグラムによって、異なる3つのモニタにスパンす るウィンドウを示す図である。 図21は、ウィンドウが3つのモニタにスパンできるようにするために使用さ れるシステムを示す図である。 図22は、モニタのスパンをサポートするのに必要なオブジェクトを図示する ブーチ図である。 発明の好適実施の形態の詳細な説明 本発明は、好ましくは、IBM、PS/2、Apple、Macintoshコンピュータな どのパーソナル・コンピュータの上に常駐するオペレーティング・システムの枠 内において実施される。代表的なハードウェア環境は図3に描かれており、これ は、本発明にしたがったコンピュータ300の典型的なコンピュータ構成を図示 する。コンピュータ300は、中央処理ユニット302(これは、従来のマイク ロプロセッサでもよい)によって制御されており、他の何個かのユニットは、す べてシステム・バス308によって内部的に接続されているが、特定の処理を達 成するために提供されている。特定のコンピュータでは、図3に図示したユニッ トのうちのいくつかしかないかもしれないし、図示されていないものがあるかも しれないが、多くのコンピュータでは少なくとも図示したユニットがある。 特に、図3に示されたコンピュータ300は、情報の一時的な格納のためにラ ンダム・アクセス・メモリ(random access memory:RAM)306と、コンピュ ータの構成及び基本操作コマンドの永久的な格納のために読み出し専用メモリ(r ead only memory:ROM)304と、及びディスク・ユニット313及びプリン タ314などの周辺デバイスをバス308に、それぞれケーブル315及び31 2経由で接続するための入力/出力(I/O)アダプタ310とを含む。また、 ユーザ・インタフェース・アダプタ316は、キーボード320などの入力デバ イス及びマウス、スピーカ、マイクロフォンを含む既知のインタフェース・デバ イスをバス308に接続するために提供されている。視覚的な出力はディスプレ イ・アダプタ318により提供されて、バス308をディスプレイ・デバイス3 22、例えばビデオ・モニタに接続する。ワークステーションは、その上に常駐 するものを有し、Apple System/7、オペレーティング・システムなどのオペレ ーティング・システム・ソフトウェアによって制御され調整されている。 好適実施の形態においては、本発明はC++プログラミング言語によって、オ ブジェクト指向プログラミング技法を用いて実装される。C++は、コンパイル 型言語(compiled language)である、すなわち、プログラムが人間が読みやすい スクリプト(human-readable script)として書かれ、次にこのスクリプトがコン パイラと呼ばれる他のプログラムに提供され、コンパイラは、コンピュータ内に ロードできてコンピュータによって直接実行できる機械可読(machine-readable) な数値コードを生成する。以下で説明する通り、C++言語には、他人が書いた プログラムをソフトウェア開発者が簡単に使用できるという特徴がある一方で、 それでもプログラムの再利用を広範囲に渡って制御してその破棄や不適切な使用 が防止できるようになっている。C++言語は、周知であって、この言語の詳細 を説明する多くの記事や文書が入手できる。さらに、C++コンパイラは、Borl and International社、Microsoft社を含む複数のベンダから市販されている。そ れゆえ、明快にするために、C++言語及びC++コンパイラの処理の詳細につ いては、ここでは論じない。 本分野における当業者によって理解されている通り、オブジェクト指向プログ ラミング(Object-Oriented Programming:OOP)技法は、「オブジェクト(obj ects)」の定義(definition)、生成(creation)、使用(use)、消滅(destruction) を 含む。これらのオブジェクトはデータ要素及びそのデータ要素を操作するルーチ ン、いいかえれば関数を備えたソフトウェア・エンティティである。データ及び 関連する関数は、ソフトウェアによってエンティティとして扱われ、あたかも単 一のアイテム(item)であるかのように、生成され、使用され、削除されることが できる。ともに、データ及び関数は、オブジェクトがデータ要素によって表現さ れうる、実世界のエンティティをその特徴の観点から仮想的(virtually)にモデ ル化することができるようになり、そのデータの操作関数によって表現されうる 、その振舞い(behavior)を仮想的にモデル化することができるようになる。この 方法では、オブジェクトは、人間やコンピュータのように具体的なものをモデル 化することができ、数や幾何学的なデザインのように抽象的な概念もモデル化す ることができる。 オブジェクトは、「クラス(classes)」を生成することによって定義される。 「クラス」はオブジェクト自体ではないが、実際のオブジェクトを構築する方法 をコンパイラに指示するテンプレート(templates)として働く。たとえば、クラ スは、データ変数の数と型、及びそのデータを操作する関数に含まれるステップ を指定する。オブジェクトは実際には、コンストラクタ(constructor)と呼ばれ る特殊な関数という手段によって、プログラム内で生成される。コンストラクタ は対応するクラス定義やその他の情報、例えばオブジェクト生成の際に提供され た引数などを使用してオブジェクトを構築する。同様に、オブジェクトはデスト ラクタ(destructor)と呼ばれる特殊な関数によって破棄される。オブジェクトは 、そのデータを使用しその関数を起動することによって、使用することができる 。 オブジェクト指向プログラミング技法の利点は、3つの基本的な原理から生ず る。その3つの原理とは、カプセル化(encapsulation)、ポリモーフィズム(poly morphism)、及び継承(inheritance)である。特に、オブジェクトは、内部データ 構造や内部関数の全部もしくは一部を隠す、つまり、カプセル化するように設計 することができる。特に、プログラムの設計の間、プログラム開発者は、データ 変数の全部または一部及び関連する関数の全部または一部が「非公開(private) 」、つまり、そのオブジェクト自身のみによる使用のためであるようなオブジェ クトを定義することができる。他のデータや関数は、「公開(public)」、つまり 、他 のプログラムによる使用のために利用できるように宣言することができる。他の プログラムによる非公開変数に対するアクセスは、オブジェクトの非公開データ にアクセスする公開関数をそのオブジェクトに対して定義することによって制御 することができる。公開関数は、非公開データと「外側」の世界との間の制御さ れた矛盾のないインタフェースを形成する。直接非公開データにアクセスするプ ログラム・コードを書こうとしても、コンパイラはプログラムのコンパイルの間 にエラーを生成し、そのエラーはコンパイル過程を停止させることになるので、 プログラムの実行は防止される。 ポリモーフィズムは、同じ全体的なフォーマットを持つが、異なるデータを扱 うオブジェクトや関数が、矛盾のない結果を作成するために異なる機能を果たす ことができるようにさせる概念である。たとえば、加算関数は、変数Aプラス変 数B(A+B)として定義できるが、AやBが数、文字、ドル、セントのいずれ の場合であってもこれと同じフォーマットが使用できる。しかし、加算を実行す る実際のプログラム・コードは、A及びBを備える変数の型に依存して大きく異 なる。ポリモーフィズムは、3つの独立した関数定義を、変数のそれぞれの型( 数、文字およびドル)に対して1つずつ書くことができるようにする。関数を定 義した後は、それ以降は、プログラムは、共通のフォーマット(A+B)によっ て加算関数を参照することができ、コンパイルの際に、C++コンパイラが、変 数の型を調べることによって実際に使用されるのは3つの関数のいずれかを決定 する。次に、コンパイラは適切な関数コードを置換する。ポリモーフィズムは、 類似した結果を作成する類似した関数がプログラム・ソース・コード内で「グル ープ化」してより論理的で明快なプログラム・フローを生成することができるよ うにする。 オブジェクト指向プログラミングの基礎をなす3番目の原理は継承である。継 承によって、プログラム開発者は簡単に既存のプログラムを再利用することがで きるようになり、ソフトウェアの生成を単なる寄せ集め(scratch)でないように することができるようになる。継承の原理は、ソフトウェア開発者が複数のクラ ス(及びそれらから後に生成されるオブジェクト)を関連あるものとして宣言す ることができるようにする。特に、クラスは他の基本クラス(base class)のサブ ク ラスとして指定することができる。サブクラスは、その基本クラスの公開関数の すべてを「継承」し、アクセスできるが、これはあたかもそれらの関数がそのサ ブクラスの中に存在するかのようである。そのかわり、サブクラスは継承した関 数の一部若しくは全部をオーバーライド(override)することができ、あるいは、 同じ形式の新しい関数を単に定義することによって、継承した関数の一部若しく は全部を変更することができる(オーバーライドや変更は、基本クラスの関数を 変更するわけではなく、サブクラスにおけるその関数の使用を変更するだけであ る)。他のクラスの機能を(選択的に変更して)いくつか持つ新しいサブクラス の生成は、ソフトウェア開発者が容易に既存のコードをカスタマイズ(custmize) して特定の必要を満たすことができるようにする。 オブジェクト指向プログラミングは他のプログラミング概念を超える大きな改 善をもたらすが、プログラムの開発には、まだ時間と労力の大きな出費が必要と され、変更して利用できる既存のソフトウェア・プログラムがない場合は特にそ うである。その結果、従来技術のアプローチは、プログラム開発者にあらかじめ 定義された相互に結びつけられたクラスであって、特定の環境において一般的に 見られる処理を実行することをすべて指示されるオブジェクト及び追加の雑多な ルーチンを生成するクラスのセットを提供することであった。このようなあらか じめ定義されたクラス及びライブラリは典型的には「フレームワーク(framework )」と呼ばれるものであり、アプリケーションを動作させるためには、あらかじ め作りあげられた構造を提供することが不可欠であった。 たとえば、ユーザ・インタフェースに対するフレームワーク(framework)は、 ウィンドウ、スクロール・バー、メニューなどを生成するあらかじめ定められた グラフィック・インタフェース・オブジェクトのセットを提供し、これらのグラ フィック・インタフェース・オブジェクトに対するサポート及び「デフォルト」 の振舞いを提供する。フレームワークはオブジェクト指向技法に基くので、あら かじめ定めたクラスは基本クラスとして使用することができ、組込のデフォルト の振舞いは開発者が定義したサブクラスにより継承したり、変更もしくはオーバ ーライドのいずれかをしたりすることができ、これによって開発者はフレームワ ークを拡張して専門的知識(expertise)の特定の領域においてカスタマイズされ た解 決方法を生成することができるようになる。このオブジェクト指向アプローチに は、伝統的なプログラミングに対する大きな利点がある。プログラマは、元のプ ログラムを変更せずに、元のプログラムの機能を拡張するからである。さらに、 フレームワークが階層的構造のガイダンス及びモデル化を提供するので、開発者 はコードの層を通して無闇に働くことはなく、同時に、開発者はその問題の領域 に特有のアクションを提供することから解放される。 含まれるシステムのレベル及び解決すべき問題の種類によって、利用できるさ まざまな種類のフレームワークがある。フレームワークの種類は、ユーザ・イン タフェースを開発する際に役立つ高レベルのアプリケーション・フレームワーク から、通信、印刷、ファイル・システム・サポート、グラフィックなどの基本シ ステム・ソフトウェア・サービスを提供する最低レベルのフレームワークにまで 及ぶ。アプリケーション・フレームワークの商業的な例には、MacApp(Ap ple社)、BedRock(Symantec社)、OWL(Borland社)、NeXTStep App Kit(NeXT社)Smalltalk−80 MVC(ParPlace社) などがある。 フレームワーク・アプローチは、オブジェクト層においてカプセル化、ポリモ ーフィズム、継承の原理をすべて利用しており、他のプログラミング技法に対し て重要な改善がされているが、その一方で発生した問題がある。アプリケーショ ン・フレームワークは一般的に、モノリシック(monolithic)なオペレーティング ・システムの頂上にある1つ若しくは複数のオブジェクト「層」からなり、オブ ジェクト層の柔軟さをもってしても、厄介な手続き呼び出しによって基礎となる オペレーティング・システムと直接相互作用をする必要があることがしばしばあ る。 アプリケーション・フレームワークが開発者にアプリケーション・プログラム に対するプレハブ(prefab)の機能を提供する方法と同様の方法で、システム・フ レームワーク、たとえば好適実施の形態に含まれるものなどは、システム・レベ ル・サービスに対するプレハブの機能を提供でき、このサービスを開発者は変更 したりオーバーライドしたりしてカスタマイズされた解決方法を生成することが でき、それによって従来技術のアプリケーション・フレームワーク・プログラム で必要だった厄介な手続き呼び出しを避けることができる。たとえば、アプリケ ーション・プログラムによって発生された情報をディスプレイするウィンドウの 生成、削除及び操作に対する基礎を提供できるディスプレイフレームワークを考 えよう。これらの機能を必要とするアプリケーション・ソフトウェア開発者は、 通常これらを提供するための特定のルーチンを書かなければならなかった。フレ ームワークを使ってこれを行うには、開発者は完成されたディスプレイ(finishe d display)の特徴と振舞いを提供する必要があるだけであり、その一方でフレー ムワークがこの処理を実行する実際のルーチンを提供するのである。 好適実施の形態では、フレームワークの概念を採用しこれを、アプリケーショ ン及びオペレーティング・システムを含む全システムに適用する。商業的もしく は会社の開発者、システム・インテグレータ、もしくはOEMにとっては、これ はMacAppなどのフレームワークに対して説明されてきた利点の全てが、ア プリケーション・レベルにおいてテキストやユーザ・インタフェースなどのよう なものに対してのみならず、システム・レベルにおいて、印刷、グラフィック、 マルチメディア、ファイル・システム、入出力、テストなどのようなサービスに 対しても利用(leverage)できることを意味する。 図4は、本発明のオブジェクト指向ウィンドウ・マネージャを利用するコンピ ュータ・システムの概要を示す。コンピュータ・システムは一般的に、点線で囲 まれた箱400で示され、複数のアプリケーション・プログラム(そのうちのア プリケーション・プログラム402と418が示されている)及びオペレーティ ング・システム404は、コンピュータの操作を制御し調整するために提供され ている。図4を簡単にするために、アプリケーション・プログラム402及び4 18とオペレーティング・システム404との相互作用は、スクリーン・ディス プレイを扱う相互作用に限定されている。図に示す通り、アプリケーション・プ ログラム402と418の両方は、オペレーティング・システム404のウィン ドウ・マネージャ部420とインタフェースをとる。次に、ウィンドウ・マネー ジャ420は、情報をスクリーン・バッファ412に送るが、これは矢印408 で概略的に図示されている。 しかし、本発明にしたがい及び図4に示すように、アプリケーション・プログ ラム402及び418はスクリーン・バッファ412に直接情報を送る。この様 子は矢印410と428で図示されている。以下に詳細に説明する通り、アプリ ケーション・プログラム402及び418はディスプレイ情報を直接ウィンドウ 420に提供し、ウィンドウ・ディスプレイが変更されたときにウィンドウ・マ ネージャ420から格納された情報を取り出す。特に、ウィンドウが変更される とき、ウィンドウ・マネージャ420は各ウィンドウの可視領域を再計算して格 納する。この格納された可視領域はそれぞれのアプリケーション・プログラムに よって取り出され、アプリケーションがディスプレイ情報を描画するクリッピン グ領域(clipping region)として使用される。ウィンドウの再ペイントや描画は アプリケーション・プログラムによって同時に実行されるが、これはスクリーン の再ペイントの速度をあげるためである。 アプリケーション・ディスプレイはディスプレイ・スクリーン上で分割された ままであるが、これはウィンドウ・マネージャ420がウィンドウの可視領域(v isible area)を再計算するため、どの領域も重ならないからである。このように して、各アプリケーション・プログラム、たとえばアプリケーション・プログラ ム402やアプリケーション・プログラム418が、ウィンドウ・マネージャ4 20によって自分に提供された可視領域の中だけを描画する場合は、スクリーン ・バッファによって生成されるディスプレイの中に重なる部分はない。ディスプ レイ情報がスクリーン・バッファ412の中にいったん描画されると、今度は、 矢印414で示されるようにディスプレイ・アダプタ416に提供されるが、デ ィスプレイ・アダプタはケーブル若しくはバス424によってディスプレイ・モ ニタ426に接続されている。 アプリケーション・プログラムとウィンドウ・マネージャの相互作用は概略図 の図5においてより詳細に図示されている。前述した通り、ウィンドウ・マネー ジャ(図5では箱510として図示されている)は、オブジェクト指向プログラ ムである。したがって、アプリケーション・プログラム508は、「オブジェク ト」を生成して操作することによってウィンドウ・マネージャとインタフェース をとる。特に、各アプリケーション・プログラムは、ウィンドウ・マネージャ5 10と通信するためにウィンドウ・オブジェクト、例えば ウィンドウ・オブジ ェクト500を生成する。次にアプリケーション・プログラム508はウィンド ウ・オブジェクト500と通信するが、図では矢印502で示されている。ウィ ンドウ・マネージャ自身は、オペレーティング・システムが開始されるときに生 成されるオブジェクトであり、ウィンドウ・オブジェクトの生成によってウィン ドウ・マネージャ510がディスプレイ・スクリーン上の対応するウィンドウを 生成することとなる。 ディスプレイ・スクリーン上に多くのウィンドウを同時にディスプレイするた めに、多くのウィンドウ・オブジェクトを同時に生成できるため、各ウィンドウ ・オブジェクト500はウィンドウ・マネージャ510とデータ・ストリーム5 04によって通信する。データ・ストリーム504は「ストリーム」オブジェク トを生成することによって生成されるが、これにはあるオブジェクトから別のオ ブジェクトへ情報を転送するために必要なソフトウェア・コマンドが含まれてい る。たとえば、ウィンドウ・オブジェクト500がウィンドウ・マネージャ・オ ブジェクト510に情報を転送したいとき、ウィンドウ・オブジェクト500は 、データをウィンドウ・マネージャ・オブジェクト510に「流し込む(stream) 」ストリーム・オブジェクト(stream object)を生成する。同様に、ウィンドウ ・マネージャ・オブジェクト510がウィンドウ・オブジェクト500に情報を 戻して転送したいときは、ウィンドウ・マネージャ・オブジェクト510がデー タをウィンドウ・オブジェクト510に「流し込む」ストリーム・オブジェクト を生成する。このようなストリーム・オブジェクトは本質的に慣習的なものであ り、ここでは詳細は説明しない。ウィンドウ・オブジェクト500からウィンド ウ・マネージャ・オブジェクト510へデータを運ぶストリーム・オブジェクト 及びウィンドウ・マネージャ・オブジェクト510からウィンドウ・オブジェク ト500へデータを運ぶストリーム・オブジェクトは、まとめて矢印504とし て図示されている。 図5に示すように、ウィンドウ・マネージャ・オブジェクト510は3つの主 要な部分からなる。可視領域マネージャ506、共用データ領域512、及びウ ィンドウ・リスト514である。可視領域マネージャ506は、ウィンドウ・マ ネージャ510が生成されるときにウィンドウ・マネージャ510によって開始 される独立したタスクである。以下で詳細に説明する通り、可視領域マネージャ は、データ・ディスプレイ・スクリーン上で見えるウィンドウの部分を管理する ことについて責任がある。この目的のため、可視領域マネージャは、あるウィン ドウ、若しくはそのウィンドウの前にある別のウィンドウが変更されたときにウ ィンドウの可視領域を再計算する。また、可視領域マネージャは、たとえばウィ ンドウが再オリエント(reorient)されたり大きさを変更されたりして下にある「 デスクトップ」の以前は覆われていた領域がさらされるときに発生するデスクト ップの「損傷」を直すことなどの、多くの他の管理タスク(housekeeping tasks) も実行する。 共用データ領域512は、共用メモリ内の領域と関連する格納及び取り出しル ーチンを含むが、これらはともにウィンドウに関連する情報を格納する。共用デ ータ領域は、ウィンドウ・マネージャによって共用メモリ内に生成され、共用デ ータ領域の一部はウィンドウのそれぞれに割り当てられ、可視領域のバージョン を意味する「タイム・スタンプ(time stamp)」などのさまざまなウィンドウ・パ ラメータを含むこととなる。 可視領域にアクセスするためのメッセージ・ストリームの使用を減らすため、 各ウィンドウ・オブジェクト500は、ローカルな「キャッシュ」メモリも管理 している。このメモリは関連するウィンドウの可視領域のコピーを格納する。タ イム・スタンプもまたローカル・キャッシュ・メモリに格納されるが、このタイ ム・スタンプはウィンドウ・サーバから取り出された可視領域の最新のバージョ ン(last version)を示す。アプリケーション・プログラムが再描画操作を開始す るときは、アプリケーション・プログラムはウィンドウ・オブジェクトからの可 視領域を要求する。次に、ウィンドウ・オブジェクトは、共用メモリ領域からタ イム・スタンプを取り出されたタイム・スタンプとローカル・キャッシュ・メモ リに格納されているタイム・スタンプと比較する。この2つのタイム・スタンプ の比較により可視領域が変更されていないことが示された場合には、ローカル・ キャッシュ・メモリに格納されている可視領域のコピーが再描画処理に使用され る。そうではなく、タイム・スタンプの比較によりウィンドウ・マネージャが可 視領域を更新したことが示された場合には、新しい可視領域が取り出され、ロー カル・キャッシュ・エリアに格納される。タイム・スタンプだけを取り出すこと は、可視領域全体を取り出すことに比べてずっと高速なので、再描画全体にかか る時間は、ローカル・キャッシュ・コピーが使用できる場合には短くなる。 ウィンドウ・マネージャ510は、ウィンドウ・リスト514も管理する。こ れは、図示したようにリンクド・リスト(lined list)として実装され、システム 内の現在の各ウィンドウの識別番号を含む。本発明の好適実施の形態によれば、 各ウィンドウはウィンドウの「種類(kind)」を割り当てられている。ウィンドウ の種類は、一般的にはスクリーン上のウィンドウの相対的な位置に従った種類の 階層から選択される。実例となる種類の階層は以下の通りである(ウィンドウの 種類は、通常ウィンドウの一番前の位置にあるウィンドウの種類から始めるよう に説明する): 一番前の位置:スクリーン・セーバ、メニュー・バー、メニュー、ウィンドイ ド(フローティング・パレットや他の類似する型のウィンドウを意図したもの) 、及び文書。一番後の位置:デスクトップ。 ウィンドウ・マネージャは自動的にスクリーン上のディスプレイされているウ ィンドウを管理するが、それは、同じ種類のウィンドウはすべてある種類の「層 」にいっしよに位置するようにおこなわれる。この位置付けは、種類の層の間の 分割を示すウィンドウ・リスト内に「プレース・ホルダー(place holder)」を挿 入することにより達成される。これによってウィンドウ・マネージャは、これら のプレース・ホルダーの1つに到達するまでウィンドウ・リスト中を通して繰返 し、特定の種類の層の終りが新しい種類の層が始まる開始に到達したときを決定 できる。 前述した通り、好適実施の形態においては、オペレーティング・システムは複 数のタスクを同時に動作させることができ、2つ以上のタスクが同時に処理をし ているときはいつでも、互いの相互作用(mutual interaction)の潜在的可能性が ある。このような互いの相互作用は、2つ以上のタスクが同時に共用リソース、 たとえば、共用データ領域やウィンドウ・リストなどにアクセスしようとしたと きに発生し得る。したがって、このような相互作用を管理するため及び望ましく ない干渉を防止するために、並列制御(concurrency control)が必要である。セ マ フォ(semaphore)として知られている実例となる並列制御技法が、実施の形態に おいて使用されている。セマフォは周知のデバイスであって、これはリソースに 対する並列アクセスの試みに「順序を付ける(serialize)」ために使用される。 特に、タスクがセマフォによって制御されているリソースにアクセスできるよう になる前に、タスクはそのセマフォを「取得する(acquire)」ことが必要である 。そのリソースを使うタスクが終了するときは、そのタスクは、他のタスクによ る取得(acquisition)のためにセマフォを解放(release)する。各セマフォは、一 般的にはそれに対応する要求キュー(request queue)を持っているので、セマフ ォを取得するための要求であって、(そのセマフォが他のタスクによって取得さ れているために)その権利を得ることができなかったものがキューの中に保持さ れている。 現在のシステムでは、セマフォはさまざまな異なる共用リソースを保護するた めに使用されている。特に、グローバルな描画セマフォ(drawing semaphore)は 、アプリケーション・プログラムがウィンドウ・マネージャと相互作用を起こさ ないようにするために使用されている。可視領域にアクセスする前に、各アプリ ケーション・プログラムは描画セマフォを取得しなければならない。現在のシス テムで使用されている描画セマフォには2つのモードがある。共用モードと排他 モードである。本発明によれば、アプリケーション・プログラムは他のアプリケ ーション・プログラムと同時にスクリーン・バッファ内に書き込みをしてもよい ので、「共用」モードで描画セマフォを取得しなければならない。アプリケーシ ョン・プログラムはウィンドウ・マネージャによってスクリーン・バッファから 切り離されているので、この同時アクセスは問題を起こさない。しかし、ウィン ドウ・マネージャは全ウィンドウに影響を与える操作、たとえば新しいウィンド ウの生成などを実行するが、したがって、ウィンドウ・マネージャは「排他」モ ードで描画セマフォを取得しなければならない。ウィンドウ・マネージャが描画 セマフォを排他的に取得しているときは、アプリケーションはセマフォを取得す ることができないので、スクリーン・バッファ内に書き込むこともできない。こ の排他処理によって、アプリケーションは、変更を知らされる前にスクリーン・ バッファの変更された部分を上書きしてしまうことがなくなる。 同様に、グローバル・セマフォは、ウィンドウ・マネージャ510内の共用デ ータ領域512を保護するために使用されるが、この共用領域もまた共用リソー スである。同様のローカル・セマフォは、ウィンドウ・リスト514をウィンド ウ・サーバ(Window Server)を使用する異なるアプリケーション・プログラムに よる同時アクセスから保護するために使用される。さまざまなセマフォの特定の 取得と解放の詳細については、プログラムによって使用される実際のルーチンの 詳細を説明するときに述べる。 ウィンドウ・サーバは、層サーバ(layer server)として参照することができる が、動作している全プログラムに対するスクリーンの不動産(real-estate)を割 り当てて管理するために使用される。ウィンドウ・サーバは、本発明によれば、 伝統的なウィンドウ・サーバ機能のほかに数々の機能を実行する。これらの機能 には、以下のものが含まれる。描画セマフォを保持したまま死んだタスクからの 回復。オペレーティング・システムが動作中のときのディスプレイのユーザ再構 成(ビット深さやモニタ位置の変更)。デスクトップ・ジオメトリ(desktop geo metry)に対するプログラマ・アクセス。ハードウェア・ウィンドウ、つまり、ウ ィンドウをハードウェアによって高速化できるようにすること。更新とアクティ ブ化/非アクティブ化(activate/deactivate)に対するイベントのかわりの使用 通知(use notification)。ディスプレイ・デバイスの結合した管理。 図6は、システム・レベル608におけるウィンドウ・サーバ606を示す。 ウィンドウ・サーバ606は、コンピュータ・システム内のクライアント600 及び610などによって非公開で使用される。プログラマがウィンドウ・サーバ 606を扱う必要はほとんどない。たとえば、ウィンドウを生成し操作するオブ ジェクト及びシステムの一部は、ウィンドウ・サーバ606のクライアントと考 えられる。別の例は、文書レベルのウィンドウ・マネージャ、MacやOS/2 アダプタなどのパーソナリティ(ウィンドウを生成して操作するため)、構成モ デル(ディスプレイを再構成するため)、グラフィックス・システム(ディスプ レイ・デバイスに対する問合せと操作をするため)などのエンティティである。 さらに、ウィンドウ・サーバ606は、ディスプレイ・デバイス・ドライバ生 成者によって拡張されることができる。たとえば、ウィンドウ・サーバ606は 、ハードウェアがこれをサポートする場合には、ハードウェア・ウィンドウ61 6 を実装するように拡張することができ、また、グラフィックス機能618を追加 するように拡張することができる。拡張は図6の破線で示されており、これはウ ィンドウ・サーバ606の拡張であることを意味している。 ウィンドウ・サーバ606は、動作している全プログラムの間で、利用できる スクリーン領域を分割するオブジェクト指向システムである。システム・レベル ・ウィンドウ・マネージャを使用する他のレベルには、ウィンドウ・マネージャ があることもある。たとえば、システムに文書レベルのウィンドウ・マネージャ があることもあり、これは文書のウィンドウ内のスクリーン空間を管理する。 ウィンドウ・サーバのクライアント600と610は、ある境界(任意の領域 )を持つウィンドウを生成する。クライアントはシステム・レベル610でも非 システム・レベル600でもよい。ウィンドウの順序付け及びその重なり方に基 いて、ウィンドウ・サーバ606は各ウィンドウの可視部分を決定することがで きる。クライアントはこの領域に描画を制限することを期待されている。 特別なユーザ・インタフェース機能(たとえば、フローティング・ウィンドウ (floating windows))をサポートするために、ウィンドウ・サーバ606は、ウ ィンドウの種類の数を、620で示されているように定義する。これらの種類は 、順番がつけられ、ウィンドウ・サーバ606は、ある種類に属する全ウィンド ウが、それに続く種類に属する全ウィンドウの前にあることを保証する。種類の フル・セットは、以下で説明するが、これには、メニュー・バー、ウィンドイド (windoid)、文書、デスクトップのようなものが含まれる。 ウィンドウ・サーバ606は、また、各ウィンドウの更新領域604を管理す るが、これは、ウィンドウ操作のために「損傷」してしまったウィンドウの部分 を記述するものである。(文書自身内で発生する損傷は、文書ウィンドウ・マネ ージャによって管理される。たとえば、文書ウィンドウ・マネージャは、閲覧操 作(view manipulation)、非有効化(invalidation)などによって生ずる損傷を管 理する。)ウィンドウ・サーバ606は、クライアント600(例えば文書ウィ ンドウ・マネージャ)に、602で示す通り、そのウィンドウの更新領域が空で なくなったとき通知する。また、これは、ウィンドウの損傷した部分の消去もす るが、これは部分的にはクライアント(例えば文書ウィンドウ・マネージャ)に よ って、ウィンドウ毎に(window-by-window)の原則によって制御されている。 ウィンドウ・サーバ606は、602で示す通り、(文書ウィンドウ・マネー ジャなどの)クライアントに、ウィンドウがアクティブ化/非アクティブ化され たとき通知する。一番前のウィンドウはアクティブなウィンドウであり、他のウ ィンドウは非アクティブである。 ウィンドウ・サーバ606は、デスクトップを形成し、デスクトップディスプ レイ・デバイス情報(Desktop Display Device Info)614の中にあるディスプ レイ・デバイスの情報も管理する。構成プログラム612は、ビット深さ、モニ タ位置及びディスプレーの他のハードウェア固有の属性を変更するために、この 情報を問い合わせて変更することができる。 以下の説明では、オブジェクトを、大文字の「T」が前にあるオブジェクト名 で参照する。たとえば、システム・ウィンドウ・オブジェクトは、TSystemWindo wとして参照される。 クライアント・クラス あるクラスによって、クライアントはウィンドウの生成、破棄、及び操作がで きるようになる。たとえば、 1. TSystemWindowは新しいウィンドウを生成する。オブジェクトのインス タンシエート(instantiate)はウィンドウを生成する。オブジェクトの削除はウ ィンドウを破棄する。 2. TSystemWindowSurrogateは、TSystemWindowとまったく同じに働くが、 代理(surrogate)を破棄しても実際のウィンドウには影響がない点が異なる。 図7は、ウィンドウ生成を示す。ウィンドウを生成するには、クライアント7 00(文書ウィンドウ・マネージャ若しくはパーソナリティ)が、システム・レ ベル708にあるウィンドウ・サーバ706に以下のパラメータを渡して、TSys temWindowを生成する。このパラメータは、(世界座標における領域オブジェク トとして表現される)ウィンドウのエクステント(extent)(位置と形状)、ウィ ンドウに対するイベント及び通知を受信するタスクを識別するイベント・レシー バ (event receiver)ID、ウィンドウの前から後への順序付け(front-to-back ord ering)、ウィンドウは最初から見えるようにしておくべきかどうか、ウィンドウ ・サーバは自動的にウィンドウの損傷した部分を消去すべきかどうか、及び、ウ ィンドウの種類などである。 ウィンドウ・サーバはウィンドウ上の操作の基本セットをサポートする。クラ イアントは、ウィンドウの情報を得ることができる。これには、そのイベント・ レシーバID、現在の更新領域、及び現在の可視領域が含まれ、図7ではウィン ドウ・サーバ706からクライアント700への矢印として示されている。さら に、クライアントはウィンドウの属性を変更できる。クライアントは、ウィンド ウのエクステントを変更したり、ウィンドウを隠したり示したり、ウィンドウを 同じ種類の他のウィンドウの前に持ってくることができるが、これはクライアン ト700からウィンドウ・サーバ706への矢印で示されている。 図8は、ウィンドウ・マネージャによってクライアントからの情報に応答して ウィンドウの位置が決められる方法を示すフローチャートである。ウィンドウ位 置を指定する方法は2つあり、それぞれ専用のコンストラクタがある。第1に、 クライアントはウィンドウの種類、及び、それがその種類のウィンドウの一番前 か一番後かのいずれにすべきかを指定することができる。この情報が与えられて いるか否かの決定は、800における決定によって示されている。種類と位置が 指定されている場合は、ウィンドウは位置付けされる(802)。第2に、種類 が指定されていない場合は、新しいウィンドウはただちに既存のウィンドウの前 もしくは後に位置付けできる(804)(したがってその種類を用いる(adopt) ことになる)。 TSystemWindowのサブクラスはハードウェア固有のウィンドウを生成するため に使用することができる。これは、以降の節「ハードウェア・ウィンドウ」にお いて詳しく説明する。 ウィンドウが変更されたとき、ウィンドウ・サーバは、その可視領域を再計算 して、(できるかぎり)ウィンドウの更新領域に追加する。ウィンドウ・サーバ は、また、クライアントに、ウィンドウが更新を必要とするときや、ウィンドウ のアクティブな状態が変化したときの通知もする。各ウィンドウは、その可視領 域の現在の「バージョン」を示すタイム・スタンプを管理している。クライアン トはこれを使用してウィンドウの可視領域が変換したときを検出することができ 、現在の可視領域と古い領域に基いてインクリメンタル更新(incremental updat es)を実行することができる。 ウィンドウ上の全操作は、TSystemWindowクラス及びこれとほとんど同じTSyst emWindowSurrogateクラス内で利用できる。この2つのクラスの違いは、「物理 的」ウィンドウとTSystemWindowのインスタンスとの間には1対1の対応がある ことである。オブジェクトを生成するとウィンドウが生成される。オブジェクト が削除されるとウィンドウが破棄される。これは、TSystemWindowのインスタン スは、他のタスクにコピーしたり渡したりできないことを意味する。TSystemWin dowSurrogateのインスタンスは、コピーしたり渡したりができ、他のウィンドウ を参照するように変更することができる。TSystemWindowSurrogateのオブジェク トを削除しても、スクリーン上のウィンドウの存在には影響しない。 TSystemWindowクラスは、多数の静的メンバ関数を通して、グローバルなウィ ンドウ機能を実装できる。たとえば、特定のスクリーンの点を含むウィンドウを 取ってマウスのクリックを処理したり、システム描画を停止したり開始したりす ることができる。 ウィンドウは、ウィンドウがアクティブや非アクティブになったとき、及び、 ウィンドウが損傷を受けて更新が必要になったときに、イベントをアプリケーシ ョンに送る。このサービスに対する主なクライアントは、文書ウィンドウ・マネ ージャである。 イベントをポスト(post)するかわりに、ウィンドウは通知(notification)を使 用する。TSystemWindow及びTSystemWindowSurrogateは、通知者(notifiers)にな ることができる。 図9に示すように、クライアント900は、906で示すように、これらのク ラス902のどれかに、以下に対するインテレスト(interest)を生成するように 、インスタンス生成(Instance Creation)904経由で、依頼する。 ActivateWindow このウィンドウがアクティブになっている。 DeactivateWindow 別のウィンドウがアクティブになっている。 WindowUpdate このウィンドウは損傷を受けており再描画しなければな らない。 ウィンドウがアクティブである旨の通知は、文書によって受信されるイベント と必ずしも同期していない。たとえば、ユーザが非アクティブなウィンドウ上で クリックして、その後でタイプを始めた場合、マウスとキーのイベントが、アク ティブになった旨の通知の前に、文書に配送されることがある。アクティブ化に ついての、イベントに対する通知の使用の利点は、(1)パフォーマンスが良く 、(2)プログラミング・モデルが簡単であることであるが、これによってより 管理しやすいコードが結果として得られる。 図10は、本願発明の好適実施の形態におけるウィンドウ、ウィンドウ・サー バ1004、及びイベント・サーバ1002の間の相互作用を示すブロック図で ある。ウィンドウ・サーバ1004は、デフォルトのディレクタ(director)10 06を使用して、デフォルトのイベント(たとえばキーストローク)をどのウィ ンドウが受信するかを管理する。デフォルト・イベントを受信するウィンドウは 、常に一番前にある(ただし、そのウィンドウがデフォルト・イベントを受信で きないことを文書ウィンドウ・マネージャが指定した場合を除く)。 デフォルト・イベントを誰が受信するかの決定は、イベント・サーバ1002 によって実行される。ウィンドウの1つ1000は、イベント・サーバ1002 に、(クライアント・クラスを使用して)新しいウィンドウが一番前になるたび に通知を送る。ウィンドウ・サーバはそのウィンドウのイベント・レシーバID をイベント・サーバに渡す。イベント・サーバはこの情報を使用して誰がデフォ ルト・イベントを得るべきかを決定する。 ウィンドウは、ウィンドウ可視領域のセットに対するアクセスを保護する描画 セマフォを提供する。可視領域を変更する前に、ウィンドウはこのセマフォを取 得する。可視領域に描画する前に、クライアントはこのセマフォを共用モードで 取得しなければならない。 この慣習による結果は、ウィンドウが可視領域を変更する必要があるときは、 現在の描画操作が完了するまでブロックすることである。新しい描画操作は、ウ ィンドウが完成するまで開始することができない。これは、クライアントが描画 するときに、可視領域が本当に正しいとを保証する。クライアントの描画は、文 書ウィンドウ・マネージャによって可視領域にクリップされるので、これは、ク ライアントに割り当てられていないスクリーンの部分にそのクライアントが描画 することはないことを保証する。 発生する一つの問題は、描画セマフォを保持したままクライアントのタスクが 死ぬかもしれないことである。システム・カーネル(kernel)は死んだタスクによ って保持されているセマフォを解放しない。その結果は、すべての描画がデッド ロック(deadlocks)し、エンド・ユーザにはシステムが完全にハングした(hung) ように見えるので、破滅的である。好適実施の形態では、回復セマフォ(TRecove rableSemaphore)をシステム・カーネルに追加することによってこの状況は改善 されている。このセマフォを保持したタスクが死ぬときに、カーネルは自動的に これを解放する。 TSystemWindow及びTSystemWindowSurrogateには、このセマフォに対するクラ イアントのアクセスを許可するメンバ関数がある。これらのメンバ関数は、セマ フォに対する取得、解放(release)、待ち(wait)の機能が含まれる。 図11は、デスクトップを形成する各ディスプレイ・デバイス用に入出力マネ ージャ1104が1つあることを明らかにするブロック図である。入出力アクセ ス・マネージャを持つ1つ又は複数のクライアント・チーム1100がある。TD isplayDeviceHandles1102は、ディスプレイ・デバイスと通信するために使 用されるクライアント・オブジェクトである。 ディスプレイ・デバイス入出力アクセス・マネージャ1104は、ハードウェ アディスプレイ・デバイスの状態、たとえばモニタ・ビット深さ(monitorbit de pth)や位置などの管理と操作に対する責任がある。ディスプレイ・デバイス・ハ ンドル(display device handles)は、これらの属性を変更する構成プログラムに よって使用される。 ディスプレイ・デバイス・ドライバの生成者は、TDisplayDeviceHandleをサブ クラス化して自分のハードウェアによって提供されている機能をサポートしなけ ればならない。カードが特有の機能、たとえばクロマキー(chroma keying)によ るビデオ・オーバレイなどを実行する場合は、サブクラス側ではTDisplayDevice Ha ndleにメンバ関数を追加して、クライアントがこの機能にアクセスできるように するとよい。 構成プログラムは、スクリーンの再構成の前に、全描画を停止する必要がある 。ビット深さ及びモニタ位置は、ユーザが再構成できる事項の例である。 図12は、構成チーム(Configuration Teams)1200、ディスプレイ・デバ イス・フレームワーク(Display Device Framework)1206、ウィンドウ・サー バ(Window Server)1204、及び、ディスプレイ・デバイス・アクセス・マネ ージャ(Display Device Access Manager)1212の間の操作の要素と流れを示 す。以下で概説するステップは、図12の丸で囲まれた番号に対応する。 1)構成チーム1200は、TDisplayDeviceHandle1202のメンバ関数を呼 び出して、再構成の要求を出す。 2)この要求はディスプレイ・デバイス入出力アクセス・マネージャ1212 に送られる。 3)ディスプレイ・デバイス・フレームワーク1206は、要求を中断(inter cept)する。これが構成の更新要求であることがわかったときは、フレームワー クは要求をウィンドウ・サーバ1204によって処理されているウィンドウに( 非公開ウィンドウ・クライアント1208経由で)送り、全描画を停止させる。 4)全描画が停止したときに、ディスプレイ・デバイス・フレームワーク12 06は要求をディスパッチ(dispatch)するので、サブクラス1210が再構成を 実行する結果となる。 5)サブクラスが再構成を完了したときに、ディスプレイ・デバイス・フレー ムワーク1206は、ウィンドウに描画を再開するよう指示する。ウィンドウは 、ディスプレー上のウィンドウに更新通知を送ることにより、影響を受けたスク リーン領域に再描画をさせる。ウィンドウはまた、グラフ・デバイス・シード(g raf device seed)も変更するが、これは文書ウィンドウ・マネージャによって新 しいグラフ・デバイスを得なければならないことを通知するために使用される。 TDesktopDisplayは、次の節で説明するが、モニタ構成がどのように変更され たかを正確に知ることにアプリケーションが興味がある場合に使用することがで きる。 デスクトップ・ジオメトリへのアクセス 多くのアプリケーションでは、デスクトップのジオメトリ(geometry)、すなわ ち、デスクトップ全体用のTGArea及びデスクトップを形成する各スクリーン用の TGAreaにアクセスする必要がある。このような機能を利用することができ数少な いクライアントの例は以下の通りである。 文書フレームワークは、ズームされたウィンドウがスクリーン全体に広がるこ とができるようにする必要がある。これをするためには、スクリーンの大きさを 知る必要がある。 文書は、以前はより大きなデスクトップ(たとえば21インチのモニタ)にデ ィスプレイされていたウィンドウをもっと小さいスクリーン(たとえば9インチ のモニタ)上で見えるようにする必要があることがある。 カーソル・コードは、デスクトップ・ジオメトリを知ってカーソルをスクリー ン上にピン止め(pin)できるようにする必要がある。 図13は、デスクトップ・ジオメトリにアクセスするために使用されるクラス を示すブーチ図(Booch diagram)である。TDesktopDisplay1300は、全デスク トップを表現するオブジェクトであり、ビット深さの変更及びモニタ位置の変更 の通知をする。TDesktopDisplay1300は、デスクトップを形成するディスプ レイのすべてを表現する。これは、TGrafCluster1302を有するが、これな全 ディスプレイに対するレンダリング・オブジェクト(renderingo bject)である。 TGrafCluster1302は、デスクトップを形成するレンダリング・オブジェクト のすべての集合である。TGrafClusterは、全コンポーネント・グラフ(graf)・デ バイスを通じて繰り返しを行うメンバ関数のほか、デスクトップ・ジオメトリを 領域として取るメンバ関数が含まれる。TGrafDevice1304は、レンダリング ・オブジェクトである。TGrafDevice1306は、各々それぞれのディスプレイ に対するサブクラスを表現する。これらのサブクラスは、また、MScreenDevice 内でミックスされるが、これについては後述する。 図14は、各コンポーネント・グラフ・デバイスがTGrafDevice及びMScreenDe viceのサブクラスによってどのように表現されるかを説明するブーチ図である。 MScreenDevice1404は、TGrafDeviceにコンポジット(composit)、スプライト (sprite)、及びマルチタスクの同期機能を追加する。TDisplayDeviceHandle14 06は、実際のディスプレイ・デバイスについて問い合わせを行う。ディスプレ イサブクラス・オブジェクト1402は、ディスプレイを表現するサブクラスを 含む。TGrafDevice1400については前述した。ディスプレイのジオメトリは 、まずMScreenDevice1404にそのディスプレイ・デバイス・ハンドルを尋ね ることによって得ることができる。TDesktopDisplayは、また、ある条件が発生 したときに通知を送ることができる。たとえば、ジオメトリが変化したときに、 若しくは、ユーザがモニタの位置を再度決めたりしたときに、TDesktopDisplay は、通知を送ることができる。 ハードウェア・ウィンドウ 好適実施の形態は、ハードウェア・ウィンドウをサポートするが、これは、ポ リモーフィック(polymorphic)なスクリーン・デバイス・オブジェクトを使用す ることにより、ウィンドウの割り当て、移動、大きさの変更をする。ウィンドウ が、ソフトウェアあるいは、ハードウェアのいずれによって描画されても、ウィ ンドウ・サーバに対する問題はおきない。 ウィンドウは、ハードウェア内にウィンドウ機能を実装するディスプレイ・デ バイスを用意することもできる。ハードウェアは、ウィンドウの移動、ウィンド ウに対する可視領域の計算、ウィンドウに対する更新領域の計算のときに、ウィ ンドウの再ペイントを高速化するためにしばしば使用される。 内部ウィンドウ 図15は、クライアント・チーム1500のウィンドウ、及び、ウィンドウ・ サーバ1502のウィンドウを示すブロック図である。ウィンドウ・サーバは、 内部的にウィンドウ・サーバ1502内のスクリーンの不動産(real-estate)の 一片を表現するために、クラスTInternalWindow1506を使用する。クライア ント・チーム1500、たとえば文書ウィンドウ・マネージャなどがTSystemWin do w1504を生成するときはいつでも、TInternalWindow1506がウィンドウの 内部に生成される。 図16は、ハードウェア・ウィンドウを実装するためにサブクラス化されたTI nternalWindowを説明するブーチ図である。TInternalWindow1600は、内部ウ ィンドウの抽象基本クラス(abstract base class)である。TXYZInternalWindow 1602は、ハードウェア・ウィンドウ・サブクラスを表現する。図16では、 1602は、XYZ社があると仮定した場合のXYZ社からの、ハードウェア・ ウィンドウ・サブクラスを表現する。TFlatFrameBufferInternalWindow1604 は、フラットなフレームバッファ(framebuffers)に適したウィンドウを表現する 。 TInternalWindow1602は、以下の責任を有する。 1)ウィンドウの、TGAreaとして表現された、エクステント(位置と大きさ) の管理。 2)位置が変わったときのウィンドウの移動。ソフトウェア・ウィンドウに対 しては、これは、可視ウィンドウの内容をコピービット(copybit)することを意 味する。ハードウェア・スクロールを使用するハードウェア・ウィンドウに対し ては、これはあるレジスタにウィンドウを移動すべき旨を書込むことを意味する 。 3)ウィンドウについて以下の情報を返すこと。 − 自分自身の可視領域が計算できるか?ソフトウェア・ウィンドウは通常は しないが、そのウィンドウはソフトウェア・ウィンドウのためにこれを行う。ハ ードウェア・ウィンドウによっては、できるものがある(これができるのは、ハ ードウェア・ウィンドウは全ソフトウェア・ウィンドウの頂上に制約されるから である)。もしそのウィンドウが自分の可視領域を計算できる場合は、そのウィ ンドウは計算する必要はない。 − 自分自身の損傷を受けた領域を計算できるか?ふたたび、そのウィンドウ が自分自身でこれができない場合は、ウィンドウ・サーバが通常これを行う。 4)可視領域と更新領域のセッタ(setter)とゲッタ(getter)を持つこと。ハー ドウェア・ウィンドウは、ハードウェアでこれらを計算している場合は、これら の領域を最新の状態に保つ必要がある。 5)ウィンドウが位置を変えたときはいつでも、ウィンドウ・サーバがウィン ドウにその内部ウィンドウのリストを前から後(front-to-back)の順に手渡す。 ハードウェア・ウィンドウは、可視領域と更新領域を決定するためにこの情報を 使用することができる。 6)ウィンドウの非公開管理。これは、サブクラス部は詳細について心配する 必要がないことを意味する。 ハードウェア・ウィンドウ・デバイス・ドライバを書くときは、以上の責任を 果たすため、TInternalWindowがサブクラス化されなければならない。デバイス がハードウェア・ウィンドウをサポートしておらず、フラットなフレーム・バッ ファのように見える場合は、TInternalWindow及びTSystemWindowはサブクラス化 される必要はない。ストック(stock)されたクラスでうまく動作するだろう。 図17は、TSystemWindow1700及びTInternalWindow1704をサブクラス 化することによって、新しいメンバ関数をシステム・ウィンドウ・サブクラスに 追加する様子を示すブーチ図である。図示したように、TSystemWindow1700 もまた、特別のメンバ関数を追加する必要がある場合には、TXYZSystemWindow1 706によって示すように、サブクラス化することができる。一般的に、TSyste mWindow1700がサブクラス化された場合は、次にTInternalWindow1704も またサブクラス化されなければならないが、これは、実際に作業を行う非公開ハ ンドラ・メンバ関数(private handler member function)を追加するためである 。TInternalWindowのサブクラス化は、TXYZInternalWindow1708によって示 されている。 ディスプレイ・デバイス 図18は、デスクトップを形成する各ディスプレイ・デバイスに対するものを 示すブロック図であり、ウィンドウ・サーバ1800の中で生きているTDisplay Device1802がある。ディスプレイ・デバイスはディスプレーの入出力アクセ ス・マネージャ1804と必要があるときに通信する。TDisplayDevice1803 は、ウィンドウ・サーバ1800の中に常駐している。ディスプレイ・デバイス は、内部ウィンドウの生成のほか、内部ウィンドウによって参照されるのに必要 となり得るデバイス固有の情報の管理について責任がある。 内部ウィンドウの生成 図19は、内部ウィンドウが生成される方法を図示するブロック図である。 1)クライアント・チーム1900がTSystemWindow1902をインスタンシ エート(instantiate)する。 2)TSystemWindow1902がウィンドウ・パラメータをTInternalWindowDesc ription1904内にパッケージ化して、これをウィンドウ・サーバ1906の ディスパッチャ(dispatcher)1908に送る。TInternalWindowDescription19 04はウィンドウの生成に必要な全パラメータ(前述の「システム・ウィンドウ の生成と削除」において説明したパラメータ)を有し、ウィンドウの大きさと位 置(TGAreaとして記述される)が含まれる。TSystemWindow1902及びTIntern alWindow1912がサブクラス化されて追加の構築(construction)パラメータを 必要とする場合は、これをサブクラス化して新しいパラメータを追加することが できる。 3)ウィンドウは、どのディスプレイ・デバイスの上にウィンドウがあるかを 計算(figure out)する。ウィンドウは、ディスプレイ・デバイスに、TInternalW indow1912を生成するようにTDisplayDevice1910経由で頼む。(ウィン ドウが複数のモニタにスパンしている場合は、次節「モニタのスパン」で説明す る)。 4)ディスプレイ・デバイスは、TInternalWindow1912(フラットなフレ ームバッファである場合)又はサブクラス(ハードウェア・ウィンドウ若しくは 他の追加機能をサポートする場合)のいずれかを生成する。 モニタのスパン 図20は、ブロック・ダイアグラムによって、3つの異なるモニタにスパンす るウィンドウを図示する。この例では、モニタA2000は、単純なフレーム・ バッファである。モニタB2004は、ハードウェア・ウィンドウをサポートす る。モニタC2006は、モニタB2004とは異なる種類のハードウェア・ウ ィンドウをサポートする。ウィンドウ2002は、これらの3つのモニタをスパ ンしている。 図21は、ウィンドウが3つのモニタにスパンできるようにするために使用さ れるシステムを図示する。図22は、モニタのスパンをサポートするのに必要な オブジェクトを図示するブーチ図である。ウィンドウは、TInternalWindowのサ ブクラス、TInternalWindowCluster(2202)を生成することによって、これ を処理する。TInternalWindowCluster2202は、3つの他の内部ウィンドウ( 2102、2104、2106)を「持つ」内部ウィンドウである。3つのコン ポーネント内部ウィンドウは、ディスプレイ・デバイスによって生成されるが、 これは前節で説明した通りである。 ウィンドウ・クラスタ2100が移動するよう指示を受けたとき、向きを変え て、そのコンポーネント内部ウィンドウに適切に移動してその大きさを変更する よう指示を出す。クラスタに対する他のウィンドウ要求のすべてについても同じ ことがいえる。クラスタはある種の解釈を行って要求をそのコンポーネントに引 き渡す。 インプリメンタ(implementor)は、内部ウィンドウ・クラスタを生成するとき の選択をすることができる。必要なとき(たとえば、ウィンドウが異なる種類の モニタにスパンするとき)だけクラスタを生成することによって最適化を図るこ ともできるし、あるいは、一つのモニタのみにウィンドウが入っている場合であ っても各ウィンドウに対してクラスタが生成されるという単純な解決方法を選択 することもできる。 上記の解決方法に対する単純な他の方法を考えることもできる。たとえば、ウ ィンドウが複数のモニタをスパンするときはいつでも、ストックされたソフトウ ェア・ウィンドウに戻るものなどである。これは、TInternalWindowの継承され たメンバ関数を呼び出すことによって可能となる。この解決方法は単純だが、デ ィスプレイ・デバイスが、そのスクリーン上にあるウィンドウのすべてを知るこ とができないという欠点がある。この情報は、可視範囲及び更新範囲の計算を高 速化する際に役立てることができる。 TXYZInternalWindowをストックされたTFlatFrameBufferWindowに戻らせる簡単 な方法は、TFlatFrameBufferWindowから継承して、戻らせることが必要なときは いつでも、継承されたメンバ関数を呼び出すことである。 ハードウェア・デバイスは、固定数のハードウェア・ウィンドウだけしかサポ ートできないことがある。この場合、ハードウェア・ウィンドウの数が超過した ときにストックされたソフトウェア・ウィンドウへ戻ることは、TInternalWindo wサブクラスの責任である。 ハードウェア・ウィンドウの最大数が超過したとき計算するために、あるTInt ernalWindowサブクラスがそれに対応するTDisplayDeviceと通信する必要がある ということを考える。TDisplayDeviceサブクラスは存在するハードウェア・ウィ ンドウの数を管理する。TInternalWindowは、この情報を得るためにディスプレ イ・デバイスに問い合わせる。 クライアントが、システム・ウィンドウを生成するときに、ハードウェア・ウ ィンドウを要求することができる。これをするには、TSystemWindowではなく直 接TSystemWindowサブクラスをインスタンシエートすることによる。 これは、特定のハードウェア・デバイス上でのみ動作することがわかっている アプリケーション、たとえば、IBM ActionMedia II Pla ybackカードを使用するアプリケーションなどに対しては、便利である。こ のカードは、ディジタル・ビデオを伸張(decompress)してオンボードのフレーム ・バッファにディスプレイし、それ以外の場所にはディスプレイしない機能を持 つ。 ビュー(view)がディスプレイされているディスプレイ・デバイスの種類が何か を、ビューが知りたいときが何度かある。これによって、TViewサブクラスはハ ードウェアによって提供されるあるかわった(fancy)機能を利用できるようにな る。TSystemWindowは、そのウィンドウが位置しているTDisplayDeviceHandleの すべてについてクライアントが繰り返しできるようにするためのイテレータ(ite rator)を返すメンバ関数がある。ビューのサブクラスは、この情報を使用してど のデバイスにそのビューがあり、それに従って動作しているか調べることができ る。 本発明は特定のシステム環境における好適実施の形態の観点から説明したが、 以降の請求の範囲の精神と範囲内で、本発明を、変更して、他の異なるハードウ ェアやソフトウェア環境において実行することができることは、本技術分野の当 業者であれば認識できるだろう。
【手続補正書】特許法第184条の8第1項 【提出日】1996年9月30日 【補正内容】 請求の範囲 1.コンピュータ・システム上で使用する複数のウィンドウ・ディスプレイを割 り当てかつ管理する装置であって、複数のアプリケーション・プログラム(61 0)が動作するシステム・アドレス空間(608)およびプログラム・アドレス 空間(600)を含むメモリと、ディスプレイ・デバイス(322)と、複数の クライアント・アプリケーション・プログラム(610)であって、そのそれぞ れが親ウィンドウ・ディスプレイ内のディスプレイのためにグラフィック情報を 作成するものと、ユーザ・ウィンドウ操作要求(320)を受信するデバイスと 、システム・アドレス空間(608)内のシステム・ウィンドウ・サーバ(60 6、1502)であって、複数の親ウィンドウ・ディスプレイのそれぞれに対す る可視領域の位置と大きさを定義する格納されたデータ(604)を維持し、か つ複数の親ウィンドウ・ディスプレイの該位置と大きさに基いて該格納されたデ ータを決定するものとを有する装置において、 プログラム・アドレス空間内の文書ウィンドウ・マネージャ(1500)は、 可視領域データを得るためにシステム・ウィンドウ・サーバ(510、606、 1502)と通信し、アプリケーション・プログラム(610)により作成され たグラフィック情報を受信し、該グラフィック情報を該可視領域にディスプレイ するディスプレイ・デバイス(322)を直接制御する ことを特徴とする装置。 2.請求項1に記載の装置において、前記文書ウィンドウ・マネージャ(150 0)は、更新マネージャ(1504)において、親ウィンドウ・ディスプレイの 位置と大きさを変更するユーザ・ウィンドウ操作要求に、該親ウィンドウ・ディ スプレイの新しい位置と大きさを決定することにより、かつ該新しい位置と大き さをシステム・ウィンドウ・サーバに通知することにより応答する更新マネージ ャ(1504)を備えたことを特徴とする装置。 3.請求項2に記載の装置において、前記システム・ウィンドウ・サーバ(51 0)は、前記更新マネージャ(1504)からの通知(504)に、新しい位置 と大きさに基づく前記可視領域のデータを再計算することにより応答する可視領 域マネージャ(506)を備えたことを特徴とする装置。 4.請求項1に記載の装置において、複数のアプリケーション・プログラム(6 10)のそれぞれは、対応するプログラム・アドレス空間内で動作し、メイン親 ウィンドウ・ディスプレイを有し、文書ウィンドウ・マネージャ(1500)を 対応するプログラム・アドレス空間内に有し、文書ウィンドウ・マネージャ(1 500)が、該メイン親ウィンドウの前記可視領域内のグラフィック情報のディ スプレイを直接制御することを特徴とする装置。 5.請求項4に記載の装置において、複数の子ウィンドウ・ディスプレイを前記 メイン親ウィンドウ・ディスプレイ内にさらに備え、対応するアドレス空間内の 文書ウィンドウ・マネージャ(1500)は、複数の子ウィンドウ・ディスプレ イのそれぞれに対する可視領域の位置と大きさとを定義する格納された子ウィン ドウ・データを管理し、該可視領域の位置と大きさを変更するユーザ・ウィンド ウ操作要求に、該格納された子ウィンドウ・データを変更することにより応答す ることを特徴とする装置。 6.請求項5に記載の装置において、コンピュータ・システムは、スクリーン・ バッファ(412)及びディスプレイ・デバイス上のスクリーン・バッファの内 容をレンダリングする機構(416)を含み、文書ウィンドウ・マネージャ(1 500)はグラフィック情報を該スクリーン・バッファ(412)の中に子ウィ ンドウ可視領域のそれぞれの中に書き込むための描画機構を対応するプログラム ・アドレス空間内にさらに備えたことを特徴とする装置。 7.請求項1に記載の装置において、可視領域内のグラフィック情報のディスプ レイを制御するために文書ウィンドウ・マネージャ(1502)により使用され る描画セマフォをさらに備えたことを特徴とする装置。 8.請求項7に記載の装置において、前記システム・ウィンドウ・サーバ(51 0、606、1502)は、グラフィック情報が複数の親ウィンドウ・ディスプ レイのいずれかの中にディスプレイされているか否かを決めるために前記描画セ マフォを検査し、グラフィック情報がディスプレイされているときに格納された メイン・ウィンドウ可視領域データに対するいかなる変更をも防止する機構を備 えたことを特徴とする装置。 9.請求項1に記載の装置において、前記文書ウィンドウ・マネージャ(500 )は、関連するウィンドウ・ディスプレイ用の可視領域の位置及び大きさを定義 するデータのコピーを格納するキャッシュ・メモリをプログラム・アドレス空間 内に含むことを特徴とする装置。 10.請求項9に記載の装置において、前記キャッシュ・メモリは、前記可視領 域データの前記コピーが前記キャッシュ・メモリに格納された時を示すローカル ・タイム・スタンプを含むことを特徴とする装置。 11.請求項10に記載の装置において、前記システム・ウィンドウ・サーバ( 510、606、1502)は、前記可視領域データがシステム・アドレス空間 内に格納された時を示すシステム・タイム・スタンプを該システム・アドレス空 間内に格納する機構を含むことを特徴とする装置。 12.請求項11に記載の装置において、前記文書ウィンドウ・マネージャ(1 500)は、前記キャッシュ・メモリ内に格納された前記可視領域データがシス テム・アドレス空間内に格納された可視領域データのコピーであるか否かを決定 するために、ローカル・タイム・スタンプと前記システム・タイム・スタンプと を比較する機構を含むことを特徴とする装置。 13.コンピュータ・システム上で使用する複数のウィンドウ・ディスプレイを 割り当てかつ管理する方法であって、複数のアプリケーション・プログラム(6 10)が動作するシステム・アドレス空間(608)およびプログラム・アドレ ス空間(600)を含むメモリと、ディスプレイ・デバイス(322)と、複数 のクライアント・アプリケーション・プログラム(610)であって、そのそれ ぞれが親ウィンドウ・ディスプレイ内のディスプレイのためにグラフィック情報 を作成するものと、ユーザ・ウィンドウ操作要求(320)を受信するデバイス と、システム・アドレス空間(608)内のシステム・ウィンドウ・サーバ(6 06、1502)であって、複数の親ウィンドウ・ディスプレイのそれぞれに対 する可視領域の位置と大きさを定義する格納されたデータ(604)を維持し、 かつ複数の親ウィンドウ・ディスプレイの該位置と大きさに基いて該格納された データを決定するものとを有する方法において、 (a)該可視領域データを得るためにシステム・ウィンドウ・サーバ(510 、606、1502)と通信し、アプリケーション・プログラム(610)によ り作成された前記グラフィック情報を受信し、前記可視領域内の前記グラフィッ ク情報をディスプレイするためにディスプレイ・デバイス(322)を直接制御 する文書ウィンドウ・マネージャ(1500)をプログラム・アドレス空間内に 構築するステップを 備えたことを特徴とする方法。 14.請求項13に記載の方法において、ステップ(a)は、 (a1)親ウィンドウ・ディスプレイの位置と大きさを変更するユーザ・ウィ ンドウ操作要求に、親ウィンドウ・ディスプレイの新しい位置と大きさを決定す ることにより、かつ該新しい位置と大きさをシステム・ウィンドウ・サーバに通 知することにより応答する更新マネージャ(1504)を構築するステップを備 えたことを特徴とする方法。 15.請求項13に記載の方法において、複数のアプリケーション・プログラム のそれぞれは、対応するプログラム・アドレス空間内で動作し、メイン親ウィン ドウ・ディスプレイを有し、かつステップ(a)は、 (a2)文書ウィンドウ・マネージャ(1500)を対応するプログラム・ア ドレス空間に構築するステップであって、ドキュメント・ウィンドウ・マネージ ャはメイン(1500)親ウィンドウの可視領域内のグラフィック情報の前記作 成を管理するステップを 備えたことを特徴とする方法。 16.請求項15に記載の方法において、複数の子ウィンドウ・ディスプレイを メイン親ウィンドウ・ディスプレイ内にさらに備え、かつステップ(a)は、 (a3)該複数の子ウィンドウ・ディスプレイのそれぞれに対する可視領域の 位置と大きさを定義する格納された子ウィンドウ・データを管理するステップと 、 (a4)前記可視領域の前記位置と大きさを変更するユーザ・ウィンドウ操作 要求に、前記格納された子ウィンドウ・データを変更することにより応答するス テップと を備えたことを特徴とする方法。 17.請求項16に記載の方法において、コンピュータ・システムは、スクリー ン・バッファ(412)及びディスプレイ・デバイス上のスクリーン・バッファ の内容をレンダリングするための機構(416)とを含み、該方法は、 (b)該スクリーン・バッファ(412)の中に子ウィンドウ可視領域のそれ ぞれの中にグラフィック情報を書き込むために、描画機構を対応するプログラム ・アドレス空間内に生成するステップを さらに備えたことを特徴とする方法。 18.請求項13に記載の方法において、 (c)前記可視領域内のグラフィック情報の作成を制御するために前記文書ウ ィンドウ・マネージャ(1500)内に描画セマフォを使用するステップを さらに備えたことを特徴とする方法。 19.請求項18に記載の方法において、 (d)システム・ウィンドウ・サーバ(510、606、1502)に、複数 の親ウィンドウ・ディスプレイのいずれかの中にグラフィック情報を生成してい るか否かを決定するために前記描画セマフォを検査させ、グラフィック情報が作 成されているときに前記格納されたメイン・ウィンドウ可視領域データに対する いかなる変更をも防止させるステップを さらに備えたことを特徴とする方法。 20.請求項13に記載の方法において、 (e)関連するウィンドウ・ディスプレイに対する可視領域の位置と場所を定 義するデータのコピーを前記プログラム・アドレス空間内のキャッシュ・メモリ 内に格納するステップを さらに備えたことを特徴とする方法。 21.請求項20に記載の方法において、ステップ(e)は、 (e1)前記可視領域データの前記コピーが前記キャッシュ・メモリ内に格納 された時を示すローカル・タイム・スタンプを使用するステップを 備えたことを特徴とする方法。 22.請求項21に記載の方法において、 (f)前記可視領域データが前記システム・アドレス空間内に格納された時を 示すシステム・タイム・スタンプを前記システム・アドレス空間に格納するステ ップを さらに備えたことを特徴とする方法。 23.請求項22に記載の方法において、 (g)前記キャッシュ・メモリ内に格納された前記可視領域データが前記シス テム・アドレス空間内に格納された前記可視領域データのコピーであるか否かを 決定するために、前記ローカル・タイム・スタンプと前記システム・タイム・ス タンプとを比較するステップを さらに備えたことを特徴とする方法。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マーシュ,ドナルド,エム. アメリカ合衆国 94043 カリフォルニア 州 マウンテン ビュー デル アヴェニ ュ 476 (72)発明者 ミルン,スティーヴ,エイチ. アメリカ合衆国 94301 カリフォルニア 州 パロ アルト ウェブスター ストリ ート 137 (72)発明者 ジアス,ジェフ,エイ. アメリカ合衆国 95070 カリフォルニア 州 サラトガ ビューリッジ ドライブ 19823

Claims (1)

  1. 【特許請求の範囲】 1.デスクトップ・バックグランド上にディスプレイされた複数のウィンドウ領 域を有するディスプレイを作成するディスプレイ・デバイスを制御するためのコ ンピュータ・システムであって、該複数のウィンドウ領域のそれぞれは複数のク ライアントの1つにより作成されたスクリーン情報をディスプレイするコンピュ ータ・システムにおいて、該コンピュータ・システムは、 ウィンドウ・オブジェクトの生成を要求する1つ以上のクライアントと、 1つ以上の領域内のディスプレイ上に前記クライアントに関連した情報をディ スプレイするディスプレイ・デバイスと、 少なくとも1つのパラメータを前記1つ以上のクライアントから受信したこと に応答してウィンドウ・オブジェクトを生成し、前記少なくとも1つのパラメー タによって指定されている場合、種類にしたがってウィンドウ領域を順序づける ウィンドウ・サーバと を備えたことを特徴とするコンピュータ・システム。 2.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータはウィンドウ・パラメータのエクステントを備えたことを特徴とする コンピュータ・システム。 3.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータはイベント・レシーバIDを備えたことを特徴とするコンピュータ・ システム。 4.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータは前から後への順序指示部を備えたことを特徴とするコンピュータ・ システム。 5.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータは初期可視性指示部を備えたことを特徴とするコンピュータ・システ ム。 6.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータは自動消去指示部を備えたことを特徴とするコンピュータ・システム 。 7.請求項1に記載のコンピュータ・システムにおいて、前記少なくとも1つの パラメータはウィンドウ層のインデックスを備えたことを特徴とするコンピュー タ・システム。 8.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サー バは、 1つ以上のクライアントにクライアントのウィンドウ・オブジェクトに関する イベントを通知する手段 を備えたことを特徴とするコンピュータ・システム。 9.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サー バは、 各ウィンドウの更新領域を維持する手段と、 前記クライアントの更新ウィンドウが空でなくなったときにクライアントに通 知する手段と を備えたことを特徴とするコンピュータ・システム。 10.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバはハードウェア・ウィンドウ・サポートを前記ウィンドウ・サーバの拡張と して含むことを特徴とするコンピュータ・システム。 11.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバはグラフィックス機能を前記ウィンドウ・サーバの拡張として含むことを特 徴とするコンピュータ・システム。 12.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバは構成プログラムにより変更可能なデスクトップ・ディスプレイ情報を備え たことを特徴とするコンピュータ・システム。 13.請求項12に記載のコンピュータ・システムにおいて、前記デスクトップ ・ディスプレイ情報はビット深さ情報を含むことを特徴とするコンピュータ・シ ステム。 14.請求項12に記載のコンピュータ・システムにおいて、前記デスクトップ ・ディスプレイ情報はモニタ情報を含むことを特徴とするコンピュータ・システ ム。 15.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバは、構成プログラムにより問い合わせに応答して得られたデスクトップ・デ ィスプレイ情報を備えたことを特徴とするコンピュータ・システム。 16.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバは代理ウィンドウ・オブジェクトを生成する手段を備えたことを特徴とする コンピュータ・システム。 17.請求項1に記載のコンピュータ・システムにおいて、 再構成のための要求を作成する構成プログラムと、 再構成のための前記要求を管理するために前記要求を中断するディスプレイ・ デバイス・フレームワークと を備えたことを特徴とするコンピュータ・システム。 18.請求項1に記載のコンピュータ・システムにおいて、デスクトップを形成 する全ディスプレイを表現するデスクトップ・ディスプレイ・オブジェクトを備 えたことを特徴とするコンピュータ・システム。 19.請求項18に記載のコンピュータ・システムにおいて、前記デスクトップ ・ディスプレイ・オブジェクトは全ディスプレイのためのレンダリング・オブジ ェクトを有することを特徴とするコンピュータ・システム。 20.請求項1に記載のコンピュータ・システムにおいて、ハードウェア・ウィ ンドウを実装するためのオブジェクトを備えたことを特徴とするコンピュータ・ システム。 21.請求項20に記載のコンピュータ・システムにおいて、ハードウェア・ウ ィンドウを実装するための前記オブジェクトはポリモーフィック・スクリーン・ デバイス・オブジェクトであることを特徴とするコンピュータ・システム。 22.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバは、どのディスプレイ・デバイス上にウィンドウが生成されるかを調べる手 段を備えたことを特徴とするコンピュータ・システム。 23.請求項1に記載のコンピュータ・システムにおいて、前記ウィンドウ・サ ーバは、モニタをスパンするウィンドウ・クラスタ・オブジェクトを実装する手 段を備えたことを特徴とするコンピュータ・システム。 24.デスクトップ・バックグランド上にディスプレイされた複数のウィンドウ 領域を有するディスプレイを作成するためにディスプレイ・デバイスを制御する コンピュータ・システムにおけるコンピュータによる実装方法であって、該複数 のウィンドウ領域のそれぞれは複数のクライアントの1つにより作成されたスク リーン情報をディスプレイするコンピュータによる実装方法において、該コンピ ュータによる実装方法は、 システム・レベル・ウィンドウ・サーバにより、少なくとも1つのパラメータ をクライアントから受信するステップと、 前記クライアントからの前記少なくとも1つのパラメータを受信することに応 答してウィンドウ・オブジェクトを生成するステップと、 前記少なくとも1つのパラメータにより指定されたウィンドウ層にしたがって 前記ウィンドウ領域を順序づけるステップと を備えたことを特徴とするコンピュータによる実装方法。 25.請求項24に記載のコンピュータによる実装方法において、 ウィンドウの1つ又は複数の特定のパラメータは前記少なくとも1つのパラメ ータにより指定されているか否かを決定するステップと、 1つ又は複数の特定のパラメータが指定されていないと決定された場合はデフ ォルトにしたがってウィンドウの位置を決めるステップと、 1つ又は複数の特定のパラメータが指定されている決定された場合は指定され た位置にしたがってウィンドウの位置を決めるステップと を含むことを特徴とするコンピュータによる実装方法。 26.請求項24に記載のコンピュータによる実装方法において、 ウィンドウの1つ又は複数の特定のパラメータが前記少なくとも1つのパラメ ータにより指定されているか否かを決定するステップと、 1つ又は複数の特定のパラメータが指定されていないと決定された場合はすで に存在するウィンドウの層を用いるステップと を含むことを特徴とするコンピュータによる実装方法。 27.請求項24に記載のコンピュータによる実装方法において、前記ウィンド ウ・サーバにより管理されているウィンドウの特徴に関する情報をクライアント において受信するステップを含むことを特徴とするコンピュータによる実装方法 。 28.請求項24に記載のコンピュータによる実装方法において、ウィンドウ属 性の変更を要求するクライアントに応答してウィンドウ属性を変更するステップ を含むことを特徴とするコンピュータによる実装方法。 29.請求項24に記載のコンピュータによる実装方法において、代理ウィンド ウ・オブジェクトを生成するステップを含むことを特徴とするコンピュータによ る実装方法。 30.請求項24に記載のコンピュータによる実装方法において、 デバイス・マネージャに対する再構成の要求作成するステップと、 前記要求された再構成を管理するために前記要求を中断するステップと を含むことを特徴とするコンピュータによる実装方法。 31.請求項24に記載のコンピュータによる実装方法において、 ハードウェア・ウィンドウをサポートするオブジェクトを生成するステップ を含むことを特徴とするコンピュータによる実装方法。 32.請求項31に記載のコンピュータによる実装方法において、 ハードウェア・ウィンドウをサポートするオブジェクトを生成する前記ステッ プは該オブジェクトに対するポリモーフィックな特徴を提供するステップを含む ことを特徴とするコンピュータによる実装方法。 33.請求項24に記載のコンピュータによる実装方法において、 どのディスプレイ・デバイス上にウィンドウが生成されているのかを決定する ステップを含むことを特徴とするコンピュータによる実装方法。 34.請求項24に記載のコンピュータによる実装方法において、 モニタをスパンするクラスタ・オブジェクトを生成するステップを含むことを 特徴とするコンピュータによる実装方法。
JP8513878A 1994-10-25 1995-08-17 ウィンドウをサービスするためのオブジェクト指向システム Pending JPH10507853A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US32823094A 1994-10-25 1994-10-25
US08/328,230 1994-10-25
PCT/US1995/010632 WO1996013026A1 (en) 1994-10-25 1995-08-17 Object-oriented system for servicing windows

Publications (1)

Publication Number Publication Date
JPH10507853A true JPH10507853A (ja) 1998-07-28

Family

ID=23280099

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8513878A Pending JPH10507853A (ja) 1994-10-25 1995-08-17 ウィンドウをサービスするためのオブジェクト指向システム

Country Status (6)

Country Link
US (1) US5668997A (ja)
EP (1) EP0788646B1 (ja)
JP (1) JPH10507853A (ja)
CA (1) CA2202614A1 (ja)
DE (1) DE69509406D1 (ja)
WO (1) WO1996013026A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014520036A (ja) * 2011-07-12 2014-08-21 株式会社デンソー 表示のための方法、装置、コンピュータ、及び携帯機器、並びに、その装置を有する車両
JP2018055183A (ja) * 2016-09-26 2018-04-05 富士ゼロックス株式会社 画像形成装置及びプログラム

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044205A (en) * 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US5838334A (en) * 1994-11-16 1998-11-17 Dye; Thomas A. Memory and graphics controller which performs pointer-based display list video refresh operations
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6067098A (en) * 1994-11-16 2000-05-23 Interactive Silicon, Inc. Video/graphics controller which performs pointer-based display list video refresh operation
US6195710B1 (en) * 1995-06-12 2001-02-27 International Business Machines Corporation Operating system having shared personality neutral resources
US6625617B2 (en) 1996-01-02 2003-09-23 Timeline, Inc. Modularized data retrieval method and apparatus with multiple source capability
US6374287B1 (en) 1996-01-24 2002-04-16 Sun Microsystems, Inc. Method and system for allowing client processes to run on distributed window server extensions
US7035914B1 (en) 1996-01-26 2006-04-25 Simpleair Holdings, Inc. System and method for transmission of data
US5862325A (en) * 1996-02-29 1999-01-19 Intermind Corporation Computer-based communication system and method using metadata defining a control structure
US6049673A (en) * 1996-03-08 2000-04-11 Organicnet, Inc. Organicware applications for computer systems
US6593947B1 (en) 1996-05-10 2003-07-15 Apple Computer, Inc. Method and system for image rendering including polymorphic image data in a graphical user interface
US5835090A (en) * 1996-10-16 1998-11-10 Etma, Inc. Desktop manager for graphical user interface based system with enhanced desktop
US5953532A (en) * 1997-01-03 1999-09-14 Ncr Corporation Installation and deinstallation of application programs
US5815149A (en) * 1997-02-19 1998-09-29 Unisys Corp. Method for generating code for modifying existing event routines for controls on a form
DE19710250A1 (de) * 1997-03-12 1998-09-17 Siemens Nixdorf Inf Syst Parameteraktualisierungsverfahren
US6581091B1 (en) 1997-03-12 2003-06-17 Siemens Nixdorf Informationssysteme Aktiengesellschaft Program parameter updating method
US5983190A (en) * 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6175861B1 (en) 1998-02-06 2001-01-16 Henry R. Williams, Jr. Apparatus and method for providing computer display data from a computer system to a remote display device
US6259443B1 (en) * 1998-02-06 2001-07-10 Henry R. Williams, Jr. Method and apparatus for enabling multiple users to concurrently access a remote server using set-top boxes
US6202211B1 (en) 1998-02-06 2001-03-13 Henry R. Williams, Jr. Method and apparatus for providing television signals to multiple viewing systems on a network
US6195797B1 (en) 1998-02-06 2001-02-27 Henry R. Williams, Jr. Apparatus and method for providing computer display data from a computer system to a remote display device
US6412031B1 (en) * 1998-02-10 2002-06-25 Gateway, Inc. Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US6473102B1 (en) * 1998-05-11 2002-10-29 Apple Computer, Inc. Method and system for automatically resizing and repositioning windows in response to changes in display
JP3509060B2 (ja) * 1998-05-28 2004-03-22 松下電器産業株式会社 表示制御装置および方法
US7523415B1 (en) * 1999-06-24 2009-04-21 Porter Swain W Exclusive use display surface areas and persistently visible display of contents including advertisements
US6760902B1 (en) 1999-08-31 2004-07-06 James Alan Ott Method and apparatus for implicitly generating and supporting a user interface
US6850257B1 (en) 2000-04-06 2005-02-01 Microsoft Corporation Responsive user interface to manage a non-responsive application
WO2002015004A2 (en) * 2000-08-14 2002-02-21 Transvirtual Technologies, Inc. Portable operating environment for information devices
US7840691B1 (en) 2000-09-07 2010-11-23 Zamora Radio, Llc Personal broadcast server system for providing a customized broadcast
US6954933B2 (en) * 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for providing and integrating high-performance message queues in a user interface environment
US20020165875A1 (en) * 2001-05-04 2002-11-07 Verta Patrick A. Data capture and management system
US7962482B2 (en) * 2001-05-16 2011-06-14 Pandora Media, Inc. Methods and systems for utilizing contextual feedback to generate and modify playlists
US20030110050A1 (en) * 2001-12-12 2003-06-12 International Business Machines Corporation Method and system for dynamically providing default offerings for a product
AUPS145902A0 (en) * 2002-03-28 2002-05-09 Canon Kabushiki Kaisha A client server approach for interactive updates of graphical user interfaces on intranets
AU2003202442B2 (en) * 2002-03-28 2005-11-03 Canon Kabushiki Kaisha A Client Server Approach for Interactive Updates of Graphical User Interfaces on Intranets
US20060203001A1 (en) * 2002-12-18 2006-09-14 Van Der Stok Petrus D V Clipping of media data transmitted in a network
US7975117B2 (en) * 2003-03-24 2011-07-05 Microsoft Corporation Enforcing isolation among plural operating systems
US7928994B2 (en) * 2003-07-16 2011-04-19 Transpacific Image, Llc Graphics items that extend outside a background perimeter
US7274382B2 (en) * 2003-07-16 2007-09-25 Plut William J Customizable background sizes and controls for changing background size
US7830372B2 (en) 2004-08-30 2010-11-09 Qnx Software Systems Gmbh & Co. Kg Method and system for providing transparent access to hardware graphic layers
JP2006119729A (ja) 2004-10-19 2006-05-11 Sony Corp プログラム、並びに画像表示制御方法および装置
US7577749B1 (en) 2004-12-03 2009-08-18 Ux Ltd. Emulation of persistent HTTP connections between network devices
US7636899B2 (en) * 2005-07-12 2009-12-22 Siemens Medical Solutions Health Services Corporation Multiple application and multiple monitor user interface image format selection system for medical and other applications
WO2007138429A2 (en) 2006-05-25 2007-12-06 Shuki Binyamin Method and system for efficient remote application provision
US20080086700A1 (en) * 2006-10-06 2008-04-10 Rodriguez Robert A Systems and Methods for Isolating On-Screen Textual Data
US8315362B2 (en) * 2007-08-22 2012-11-20 Citrix Systems, Inc. Systems and methods for voicemail avoidance
US9137377B2 (en) 2007-08-22 2015-09-15 Citrix Systems, Inc. Systems and methods for at least partially releasing an appliance from a private branch exchange
US8750490B2 (en) * 2007-08-22 2014-06-10 Citrix Systems, Inc. Systems and methods for establishing a communication session among end-points
US8938743B2 (en) * 2007-12-21 2015-01-20 Citrix Systems, Inc. Methods and systems for providing, to a first application executed by a first operating system, an interface for communicating with at least one application executed by a second operating system
US9189250B2 (en) * 2008-01-16 2015-11-17 Honeywell International Inc. Method and system for re-invoking displays
US20090254852A1 (en) * 2008-04-03 2009-10-08 Andrew Yip User interface overlay system
US8612614B2 (en) 2008-07-17 2013-12-17 Citrix Systems, Inc. Method and system for establishing a dedicated session for a member of a common frame buffer group
US20160320938A9 (en) * 2009-03-17 2016-11-03 Litera Technologies, LLC System and Method for the Auto-Detection and Presentation of Pre-Set Configurations for Multiple Monitor Layout Display
US9100685B2 (en) 2011-12-09 2015-08-04 Microsoft Technology Licensing, Llc Determining audience state or interest using passive sensor data
US20130159555A1 (en) * 2011-12-20 2013-06-20 Microsoft Corporation Input commands
CA2775700C (en) 2012-05-04 2013-07-23 Microsoft Corporation Determining a future portion of a currently presented media program
US20140006999A1 (en) * 2012-06-27 2014-01-02 David BUKURAK Method, system and apparatus identifying workspace associations
US20140157184A1 (en) * 2012-11-30 2014-06-05 International Business Machines Corporation Control of user notification window display

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937036A (en) * 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
US4939507A (en) * 1986-04-28 1990-07-03 Xerox Corporation Virtual and emulated objects for use in the user interface of a display screen of a display processor
US4899136A (en) * 1986-04-28 1990-02-06 Xerox Corporation Data processor having a user interface display with metaphoric objects
US4821220A (en) * 1986-07-25 1989-04-11 Tektronix, Inc. System for animating program operation and displaying time-based relationships
US4885717A (en) * 1986-09-25 1989-12-05 Tektronix, Inc. System for graphically representing operation of object-oriented programs
US4908746A (en) * 1986-10-15 1990-03-13 United States Data Corporation Industrial control system
US5062060A (en) * 1987-01-05 1991-10-29 Motorola Inc. Computer human interface comprising user-adjustable window for displaying or printing information
US4891630A (en) * 1988-04-22 1990-01-02 Friedman Mark B Computer vision system with improved object orientation technique
US4953080A (en) * 1988-04-25 1990-08-28 Hewlett-Packard Company Object management facility for maintaining data in a computer system
EP0347162A3 (en) * 1988-06-14 1990-09-12 Tektronix, Inc. Apparatus and methods for controlling data flow processes by generated instruction sequences
US5041992A (en) * 1988-10-24 1991-08-20 University Of Pittsburgh Interactive method of developing software interfaces
US5133075A (en) * 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5050090A (en) * 1989-03-30 1991-09-17 R. J. Reynolds Tobacco Company Object placement method and apparatus
US5325524A (en) * 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5060276A (en) * 1989-05-31 1991-10-22 At&T Bell Laboratories Technique for object orientation detection using a feed-forward neural network
US5125091A (en) * 1989-06-08 1992-06-23 Hazox Corporation Object oriented control of real-time processing
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
JPH0833862B2 (ja) * 1989-10-23 1996-03-29 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン オブジエクト指向コンピユータ・システム
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
US5093914A (en) * 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5075848A (en) * 1989-12-22 1991-12-24 Intel Corporation Object lifetime control in an object-oriented memory protection mechanism
US5289574A (en) * 1990-09-17 1994-02-22 Hewlett-Packard Company Multiple virtual screens on an "X windows" terminal
US5313636A (en) * 1990-09-27 1994-05-17 Intellicorp, Inc. Mosaic objects and method for optimizing object representation performance in an object-oriented representation system
US5151987A (en) * 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
US5315709A (en) * 1990-12-03 1994-05-24 Bachman Information Systems, Inc. Method and apparatus for transforming objects in data models
US5388200A (en) * 1990-12-21 1995-02-07 Sun Microsystems, Inc. Method and apparatus for writing directly to a frame buffer
US5119475A (en) * 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition
US5325481A (en) * 1991-04-12 1994-06-28 Hewlett-Packard Company Method for creating dynamic user panels in an iconic programming system
US5317741A (en) * 1991-05-10 1994-05-31 Siemens Corporate Research, Inc. Computer method for identifying a misclassified software object in a cluster of internally similar software objects
US5315703A (en) * 1992-12-23 1994-05-24 Taligent, Inc. Object-oriented notification framework system
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014520036A (ja) * 2011-07-12 2014-08-21 株式会社デンソー 表示のための方法、装置、コンピュータ、及び携帯機器、並びに、その装置を有する車両
JP2018055183A (ja) * 2016-09-26 2018-04-05 富士ゼロックス株式会社 画像形成装置及びプログラム

Also Published As

Publication number Publication date
EP0788646B1 (en) 1999-04-28
US5668997A (en) 1997-09-16
CA2202614A1 (en) 1996-05-02
WO1996013026A1 (en) 1996-05-02
EP0788646A1 (en) 1997-08-13
DE69509406D1 (de) 1999-06-02

Similar Documents

Publication Publication Date Title
JPH10507853A (ja) ウィンドウをサービスするためのオブジェクト指向システム
US5555368A (en) Object-oriented multi-tasking view framework
US5973702A (en) Oriented view system having a common window manager for defining application window areas in a screen buffer and application specific view objects for writing into the screen buffer
US6750858B1 (en) Object-oriented window area display system
US5544301A (en) Object-oriented view layout system
CA2178585C (en) Object-oriented task security framework
US5621434A (en) Cursor manipulation system and method
EP0636971B1 (en) Method and apparatus for producing a composite second image in the spatial context of a first image
KR100962920B1 (ko) 비주얼 및 장면 그래프 인터페이스
US5734852A (en) Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system
US7196712B2 (en) Dynamic, live surface and model elements for visualization and modeling
JP4796499B2 (ja) 映像およびシーングラフインターフェイス
US5737559A (en) Object-oriented view hierarchy framework
US20110258534A1 (en) Declarative definition of complex user interface state changes
US7818690B2 (en) Framework for creating user interfaces containing interactive and dynamic 3-D objects
US5615326A (en) Object-oriented viewing framework having view grouping
JPH10500512A (ja) グラフィカルユーザーインタフェースの形態及び動作のカスタマイズ方法及びシステム
US5524199A (en) Object-oriented view system with background processing of update request
US5524200A (en) Object-oriented non-rectilinear viewing framework
Allison et al. The geant4 visualisation system
US5796969A (en) Object-oriented view coordinate space system
CN111813404B (zh) 基于混合图形显示的应用方法、介质及客户端
JP3640982B2 (ja) 機械操作方法