JPH08508353A - 多態グラフィック・デバイス - Google Patents

多態グラフィック・デバイス

Info

Publication number
JPH08508353A
JPH08508353A JP6517161A JP51716194A JPH08508353A JP H08508353 A JPH08508353 A JP H08508353A JP 6517161 A JP6517161 A JP 6517161A JP 51716194 A JP51716194 A JP 51716194A JP H08508353 A JPH08508353 A JP H08508353A
Authority
JP
Japan
Prior art keywords
pixel
newly created
preferred
attributes
device characterized
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.)
Granted
Application number
JP6517161A
Other languages
English (en)
Other versions
JP3462211B2 (ja
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 JPH08508353A publication Critical patent/JPH08508353A/ja
Application granted granted Critical
Publication of JP3462211B2 publication Critical patent/JP3462211B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 多態グラフィック・デバイスに関するもので、多態ピクセル・バッファを提供する方法および装置が開示されている。オブジェクト指向システム設計によれば、新しいメソッドと、データ型と、オペレーションをディジタル・ピクセル表現と処理システムに追加することを可能にする頑強で、拡張可能なピクセル仕様が得られる。

Description

【発明の詳細な説明】 多態グラフィック・デバイス 著作権所有表記 本明細書の一部には、著作権保護の対象となる内容が含まれている。著作権所 有者は、米国特許商標局の特許ファイルまたは記録に記載されている特許文書ま たは特許開示事項を第三者がファクシミリ複製することを妨げるものではないが 、その他の場合は、一切の著作権を所有する権利を留保する。 関連特許出願の相互参照 本特許出願は、特許出願(発明者: Debra L.Orton,David B.Goldsmith, Christopher P.Moeller and Andrew G.Heninger、 発明の名称:Object Oriented Fra mework System、 1992年12月23日出願、被譲渡人:Taligent)の関連出願であり、その開示事項を 引用して本明細書の一部とする。 技術分野 本発明は、コンピュータ・グラフィックスに関し、特に、ピクセル・メモリの 多態操作に関する。 背景の技術 コンピュータ・スクリーン上に描かれるコンピュータ・ピクチャやイメージは 、コンピュータ・グラフィックスと呼ばれている。コンピュータ・グラフィック ・システムは、グラフィックスをディジタルで内部にストアしている。ピクチャ は、小さな画素、すなわち、ピクセルに分割されている。従って、コンピュータ ・ピクチャまたはイメージは、実際には、個々の画素、すなわち、ピクセルの集 合体である。内部、すなわち、コンピュータのディジタル世界では、各ピクセル には、ピクセルの属性を表すディジタル値の集合が割り当てられている。ピクセ ルの属性は、例えば、ピクセルのカラーと、明度と、ロケーションを記述するこ とができる。従って、ピクセルのカラーか、明度か、あるいは、ロケーションを 変更するには、その特定の属性のディジタル値を変更するだけでよい。 慣用のコンピュータ・グラフィック・システムは、イメージか、ビットマップ か、あるいはピクセル・ マップとして知られているプリミティブを利用して、コンピュータ・イメージを ピクセルの集合体として表す。これらのプリミティブはピクセル属性と、個々の ディジタル値の2次元配列を表す。典型的には、このようなプリミティブは、ピ クセル・データを指すポインタと、ピクセルサイズと、スキャンライン・サイズ と、境界と、場合によっては、カラー・テーブルへの参照を含む「構造体」(デ ータ構造)として表される。よく行われる仮定であるが、ピクセルは、RGB(red ,green,blue)カラーか、ルミナンスか、あるいは、カラーテーブルを指すイ ンデックスを表すものとする。従って、プリミティブは2重の役割、すなわち、 フレームバッファとしての役割と、フレーム記憶としての役割をサーブする。 急成長のコンピュータ・グラフィック産業は、ピクセル表現に関する事実上の 標準の上に成り立っている。この標準に当てはまらないイメージ形体は、全て、 いやが応でも2流の市民権を得ることになる。しかし、慣用のグラフィックス・ システムは拡張不可能である。これらのシステムは、通常、特定のクラスのイメ ージに対してオペレートする特定のアプリケーションの専用になっている。これ は、急速に変化しているディジタル技術環境では認容できない。日々、新しいア プリケーションが出現し、この新しいアプリケーションを用いて、新しいイメー ジ型を新しい方法 で処理し操作する必要がある。従って、拡張不可能なグラフィック仕様をもつグ ラフィックス・システムを使用するのは、先見の明がなく、早い話、時代後れな のである。 グラフィカル・アプリケーションと、属性と、ピクセル・メモリに対する編成 上の条件は、多様化しており拡大している。従って、専用化された単一目的のグ ラフィックス・システムは、現在のユーザ要求を満たすことができない。動的環 境を提供する頑固なグラフィックシステムに対する要求があり、新しいアプリケ ーション、新しいイメージ・タイプを取り入れるため拡張することができ、しか も、新しいピクセル操作を備えた拡張可能なグラフィック仕様に対する要求があ る。 例えば、2つのアプリケーションが、同じセットのピクセル属性を必要とする ことはまれである。3次元アプリケーションはz値(奥行き配列)をストアし、 他方、アニメーションおよびペイント・アプリケーションはアルファ値をストア する。対話式マテリアル・エディタおよび3次元ペイント・システムは、3次元 の陰影情報をストアするのに対し、ビデオ作成システムはYUV 4:2:2ピクセル配 列を必要とすることができる。ハードウェアのクリッパはレイヤ(layer)タグ をストアし、高度のシステムはヒット検出のためにオブジェクトIDをストアする ことができる。さ らに、カラー空間のようなグラフィカル属性は、PhotoYCC(商標)のような一定 条件を蓄積している。等色(color matching)技法は依然として発展段階にあり 、どの量子化カラー空間が可視スペクトルをピクセルとして記録するのに最良で あるかはまだ明らかではない。従って、グラフィック世界では、データ・タイプ は様々である。記憶編成技術も様々である。 問題をさらに悪化させているのは、虞らく、アプリケーションが新しくなるた びに、異なるピクセル・メモリ編成が必要になることである。例えば、コンポー ネント・インターリーブか、あるいは、”Chunky”スキャンライン配向は、Mach intosh(登録商標)ビデオ・カードで主流の編成になっている。しかし、コンポ ーネント・インターリーブ・バンク付きスイッチ・メモリが、小規模アドレス空 間を有するホストを目標としたビデオ・カードではトレンドになっている。コン ポーネント・プレーナ・タイルと、コンポーネント・インターリーブ・タイルは 、プリプレス(prepress)およびエレクトロニック・ペイント・プログラムのト レンドになっている。しかし、複数のパスでプリントまたはスキャンする入出力 デバイスでは、コンポーネント・プレーナ形式の方が好まれている。多重解像度 またはピラミッド形式はリアルタイムの再サンプリングを必要とする静的イメー ジでは普通になっている。さらに、メモリを大量に消費するイメー ジは、種々の方法でコード化できる圧縮ピクセル・データとして表現することが できる。 グラフィック・アプリケーションと、データ・タイプと、ピクセル・メモリ操 作は、多様になり、著しく成長している。周知の全てのアプリケーションを処理 することができる多目的システムであって、まだ未知のアプリケーションを処理 するために拡張可能な多目的システムに対する要求がある。単一プログラムで解 決することは実用的でない。周知の要件をことごとく処理することはできるが、 処理は莫大で、扱いが困難になるであろう。しかし、このようなプログラムがダ ウンサイズされている場合は、最早、全てのアプリケーションを扱うことができ い。 あるいはまた、機能を幾つかの小さなプログラムに分割することも可能である 。望まなくても、この技法に従ったプログラムの数が多くなる。また、どの機能 を所定のプログラムに置くかをどのように決めるのか。一人のユーザの要件をど のプログラムに収めておくのか。ユーザが二人のときはどうするのか。従って、 多数のユーザの要求を満たす汎用プログラムに対する要求がある。しかも、個々 のユーザがカスタマイズし、特定の要求を満たすように、汎用プログラムに付加 することができる汎用プログラムに対する要求がある。 発明の概要 オブジェクト指向システムは、従来システムが遭遇する問題を解決するのに適 している。オブジェクト指向設計によると、多数のユーザの要求は満たすが、個 々のユーザが独自の要求に合うように汎用プログラムをカスタマイズし、強化で きるようにした汎用プログラムが得られる。一般的に、オブジェクトは、複数の オペレーションにより特徴付けるとともに、これらのオペレーションの効果を覚 えている状態により特徴付けることができる。 オブジェクト指向オペレーティング・システムは、システムの明確に区別され た部分か、あるいは、関数である複数のオブジェクトから構成されている。各オ ブジェクトは、そのオブジェクトに関する情報およびオブジェクトがその情報ま たは自身に渡された情報について実行できる1組のオペレーションを含む。例え ば、オブジェクトをMANと名づけることが可能である。オブジェクトMANに収めら れている情報、すなわち、その属性としては、年齢、アドレス、職業などがある 。これらの属性はオブジェクトMANを記述している。また、オブジェクトは、そ こに収められている情報について実行できる1組のオペレーションも含む。従っ て、MANは、あるオペレーションを実行して、その職業を医者から弁護士に変更 することができる。 オブジェクトは、互にメッセージを送信して対話する。これらのメッセージは 、受信オブジェクトを刺激して、なんらかのアクション、すなわち、そのオブジ ェクトに含まれるオペレーションの1つ以上を実行する。本発明では、通信オブ ジェクトは多数存在する。オブジェクトの中には、共通の特性をもち、あるクラ スにグループ化される。クラスとはテンプレートであり、同一クラスの他のメン バーと同じ情報とオペレーションを含む新しいオブジェクトを作成することがで きる。 あるクラスから作成されたオブジェクトは、そのクラスのインスタンスと呼ば れる。クラスは、あるインスタンスに最初から入っているオペレーションと情報 を定義している。これに対して、インスタンスの現在状態はそのインスタンスに 対してパフォームされるオペレーションによって定義される。従って、所定のク ラスの全てのインスタンスは、同等に作成される。これに対して、その後のオペ レーションは、同じ親クラスから派生したその兄弟および姉妹と異なり、各イン スタンスを一意のオブジェクトにすることができる。 多態とは、刺激またはメッセージの送信側が、受信インスタンスのクラスを知 っている必要がないことを意味する。どのオブジェクトがそのオペレーションを パフォームするか、そのオブジェクトがどのクラスに 属しているかは関係なく、送信側は、受信側があるオペレーションをパフォーム することができることだけを知る必要がある。 インスタンスはそのクラスの属性を継承する。従って、親クラスの属性を変更 すると、種々インスタンスの属性も変更される。その変更はサブクラスにより継 承される。新しいクラスは、既存クラスに対する変更を記述することにより作成 することができる。新しいクラスはそのクラスの属性を継承するので、ユーザは 新しいクラスに一意の何かを追加することができる。従って、新しいクラスまた はオブジェクトがその親クラスまたはオブジェクトとどのように異なるかを記述 するだけで、クラスを定義することができる。継承階層において、別のクラスの 下位にあるクラスは、親クラスの子孫または子供と呼ばれる。子孫または子供は 親クラスの下位にあり、親クラスから継承する 多態環境では、受信オブジェクトは、刺激メッセージを受信したとき、どのオ ペレーションをパフォームするかを判断する責任がある。オペレーションとは、 あるクラス内のオブジェクトに適用できるか、あるいはオブジェクトにより適用 できる関数または変換のことである。従って、刺激オブジェクトは受信オブジェ クトについてほとんどなにも知っている必要がないので、オペレーションのパフ ォームが単純化される。各オブジェクトは、自身のオペレーションをどのように パフォームするか、自身がパフォームできないオペレーションをパフォームする ために誰をコールすべきかを知っているだけでよい。 同一オペレーションが多数の異なるクラスに適用されるとき、それは多態オペ レーションである。同一オペレーションはクラスが異なるごとに、異なる形体に なっている。メソッドとは、所定のクラスの特定のオペレーションを実装したも のである。例えば、Documentというクラスには、Readと呼ばれるオペレーション を含むことができる。Documentのデータ型によって、例えば、ASCIIであるか、B INARYであるかによって、Readオペレーションをパフォームするために異なるメ ソッドが使用できる。従って、どちらのメソッドも、論理的には同一タスクRead をパフォームするので、同一名前で呼ばれている。しかし、実際には、これらは パフォーム可能コードの異なる部分で実装された異なるメソッドである。オペレ ーションReadは幾つかのクラスに属するメソッドをもつことができるが、これは 、同数で同一型の引数をもっている。つまり、そのシグニチャは同一のままにな っている。 従って、本発明の目的は、オブジェクト指向設計として、ジェネリックな汎用 グラフィックス・ユーティリティを提供することにあり、各ユーザが独自の、可 能ならば、要件の一意の組み合わせを満たすように、この汎用ユーティリティの 特定バージョンまたはイン スタンス化したものをカスタマイズすることにより多くのユーザの要求を満たす ことにある。 ユーザ全員が使用することができるジェネリックなツールをユーザは要求して いる。しかし、そのツールは、そのツールにより、ユーザが汎用プログラムをカ スタマイズして、ユーザ独自の特定の要求を満たすようにできるものである。本 発明によれば、抽象基本クラスTPixelBufferが用意されている。これは、メモリ にピクセルとしてストアされるピクセル属性を矩形配列で表したものである。上 に挙げたアプリケーションは、いずれも、特定のアプリケーションがユーザまた はクライアントとして必要とする特定の属性によりインスタンス化されたTPixel Bufferサブクラスにより、その要求が満たされる。 サブクラスにより、ユーザは、独自の要求を満たすように汎用プログラムを調 整(tailor)することができる。また、量子化トレードオフと、ピクセル属性の セットと、ピクセル・メモリ編成を、それぞれ、異なったものにすることができ る。各サブクラスは独自のピクセル・データ・クラスをどのように割り振り、管 理し、ストリーム化し、変換し、修正するかの知識をカプセル化することができ る。本発明によれば、全てのサブシステムは、多態アクセス機構を使用するので 、ユーザは、レンダリングまたはコピーすることができるPixelBuffer型を拡張 することができる。 幸いなことに、種々の型のPixelBufferには共通点が幾つかある。明らかに、 多くのクライアントの要求を満たすために必要な基本関数またはカテゴリは8つ ある。クライアントは、大多数が、多態管理を必要とし、離散空間と連続空間と の関係を指定する能力を望んでいる。クライアントは正確なカラー再現により使 用するために、カラー機能を特徴づけようとしている。クライアントはピクセル ・メモリ変更のための望んでいる機構は、GetとSetPixel、スキャン変換を行う クライアント用に調整されたSpecialized”blitloop”と、BitBltと、CopyImage の形式のものである。クライアントは、クライアントが与えた属性の組合せから 作られたキーに一致する4bの変種をユーザに与える機構を望んでいる。クライア ントは、特徴またはストアされた属性に関して多態照会を行うことができること を望んでいる。クライアントはクライアントがPixelBufferキャッシュを、多態 に作成し、維持し、照会できるような機構を望んでいる。最後に、クライアント は、クライアントが相互に関連をもつバックバッファを多態に作成し、維持でき るような機構を望んでいる。 従って、本発明の目的は、多態ピクセル管理を可能にする方法と装置を提供す ることにある。本発明の別の目的は、ユーザが離散空間と連続空間との関係を指 定できるようにする方法と装置を提供することにあ る。本発明の他の目的は、ユーザが正確なカラー再現で使用するためにカラー機 能を特徴づけることができる方法と装置を提供することにある。本発明の別の目 的は、ピクセル・メモリ変更の機構をGetおよびSetPixelと、スキャン変換を行 うクライアント用に調整されたSpecialized”blitloops”と、BitBltと、CopyIm ageの形で提供する方法と装置を提供することである。 本発明の他の目的は、クライアントが与えた属性の組合せから作られたキーに 一致する4bの変種をクライアントに与える機構を提供する方法と装置を提供する ことである。本発明の別の目的は、特徴またはストアされた属性に関して多態照 会を行うことを可能にする方法と装置を提供することである。本発明の他の目的 は、クライアントがPixelBufferキャッシュを多態に作成し、維持し、照会する ことを可能にする機構を提供する方法と装置を提供することである。本発明の他 の目的は、特徴またはストアされた属性に関して多態照会を行うことを可能にす る方法と装置を提供することである。本発明の別の目的は、クライアントが相互 に関連をもつバックバッファを多態に作成し、維持することを可能にする機構を 提供する方法と装置を提供することである。 本発明の他の目的は、ピクセル・メモリを多態にアクセスし、操作することを 可能にする方法と装置を提 供することにある。本発明の別の目的は、新しいイメージ型をサポートする拡張 可能なディジタル・グラフィックス環境を提供する方法と装置を提供することに ある。本発明の別の目的は新しい転送モードか、新しいTPaintか、あるいは新し いディザリング手法に対するレンダリング・サポートを追加するように拡張可能 である、任意のイメージ型をサポートするディジタル・グラフィックス環境を提 供する方法と装置を提供することにある。本発明の別の目的は、イメージ・エデ ィタと、時間的/空間的イメージ圧縮手法と、イメージ収集デバイス・ドライバ と、イメージ出力デバイス・ドライバのピクセル操作要求を満たすために汎用的 に解決することができる拡張可能ディジタル・グラフィックス環境を提供する方 法と装置を提供することにある。 本発明の他の目的は、幾何学的イメージ変換アクションを変更することができ る拡張可能ディジタル・グラフィックス環境を提供する方法と装置を提供するこ とにある。本発明の別の目的は、高速化イメージ変換または”blitloops”を実 装することができる拡張可能なディジタル・グラフィックス環境を提供する方法 と装置を提供することにある。 図面の簡単な説明 第1図は本発明による好ましいハードウェア環境の例を示す図である。 第2図は本発明のためにMCollectibleクラスから派生した好ましいサブクラス TPixelBufferの例を示す図である。 第3図は本発明による好ましい座標系の例を示す図である。 第4図は本発明による好ましいアクティブ境界の例を示す図である。 第5図は本発明による好ましい参照解像度の例を示す図である。 第6図は本発明による好ましい参照配向の例を示す図である。 第7図は本発明による連続座標平面と離散座標平面との間の好ましい変換の例 を示す図である。 第8図は本発明による好ましい比色特徴づけの例を示す図である。 第9図は本発明による好ましいTColorProfileの例を示す図である。 第10図は本発明による好ましい32ビットARGBの例を示す図である。 第11図は本発明によるPaintBlockの好ましい使用例を示す図である。 第12図は本発明によるPaintBufferedSpanと、FlushBufferedSpansと、PaintSp ansの好ましい使用例を示す図である。 第13図は本発明によるPaintBufferedSpanと、不透明スパン上のFlushBuffered Spansと、CompositeSpan好ましい使用例を示す図である。 第14図は本発明による不透明ピクセル上のPaintBlockおよび既存ピクセルとブ レンドされたピクセル上のCompositeSpanの好ましい使用例を示す図である。 第15図は本発明による不透明ピクセルに対するPaintBufferedSpan、FlushBuff eredSpansの好ましい使用例を示す図である。 第16図は本発明による好ましいTHairLinePainterの例を示す図である。 第17図は本発明による好ましいTAntialiasedHairLinePainterの例を示す図で ある。 第18図は本発明の好ましいアウトライングリフおよびビットマップグリフの例 を示す図である。 第19図は本発明の好ましいTGlyphPainterの例を示す図である。 第20図は本発明の好ましいTAntialisedGlyphPainterの例を示す図である。 第21図は本発明による好ましいBitBlt(ビット・ブロック−転送)の例を示す 図である。 第22図は本発明によるPixelStreamReaderおよび/またはPixelStreamWriterを 使用した好ましい変換の例を示す図である。 第23図は本発明によるStreamPixelBlockの好ましい使用例を示す図である。 第24図は本発明によるStreamRectilinearRotatedPixelBlockの好ましい使用例 を示す図である。 第25図は本発明によるStreamScaledPixelBlockの好ましい使用例を示す図であ る。 第26図は本発明によるStreamAndFilterScaledPixelBlockの好ましい使用例を 示す図である。 第27図は本発明によるStreamPixelIntoConvexPolygonの好ましい使用例を示す 図である。 第28図は本発明によるStreamAndFilterPixelIntoConvexPolygonの好ましい使 用例を示す図である。 第29図は本発明による好ましい多態照会の例を示す図である。 第30図は本発明によるPixelBufferクラス階層の例を示す図である。 第31図は本発明によるPixe1Bufferコンポーネントの例とその使用例を示す図 である。 第32図は本発明による好ましいTComponentInterleavedPixelBufferの例を示す 図である。 第33図本発明による好ましいTA8R8G8BPixelBufferの例を示す図である。 第34図は本発明による好ましいTAlpha8GrayPixelBufferの例を示す図である。 第35図は本発明による好ましいTIndexdPixelBufferの例を示す図である。 第36図は本発明による好ましいTClut2PixelBufferの例を示す図である。 第37図は本発明による好ましいTClut4PixelBufferの例を示す図である。 第38図は本発明による好ましいTClut8PixelBufferの例を示す図である。 第39図は本発明による好ましいTGlay4PixelBufferの例を示す図である。 第40図は本発明による好ましいTGlay8PixelBufferの例を示す図である。 第41図は本発明による好ましいTAlpha8PixelBufferの例を示す図である。 第42図は本発明による好ましい TBitmappedPixelBufferの例を示す図である。 第43図は本発明による好ましい THalftonedBitmappedPixelBufferの例を示す図であ る。 第44図は本発明による好ましいTAlphalPixelBufferの例を示す図である。 第45図は本発明による好ましいTB8R8G8B8PixelBufferの例を示す図である。 第46図は本発明による好ましいTZ32PixelBufferの例を示す図である。 第47図は本発明による好ましいTA8R8G8B8Z32PixelBufferの例を示す図である 。 第48図は本発明による好ましいTA1R5TR5G5B5PixelBufferの例を示す図である 。 第49図は本発明による好ましいTB1R5G5BPixelBufferの例を示す図である。 第50図は本発明による好ましいTR8G8B8PixelBufferの例を示す図である。 第51図は本発明による好ましいTGImageの例を示す図である。 以下、図面を参照して以下の詳細説明と例を考慮にいれて、本発明について詳 しく説明するが、これらは本発明の方法と装置を例示したにすぎないものである 。 本発明の好ましい実施例の詳細説明 本発明は、オペレーティング・システムよりなるオ ブジェクト指向ソフトウェア・プラツトフォームと開発環境の下で作成されたオ ブジェクト群から構成されている。 好ましいハードウェア環境 第1図に示すように、本発明は、IBM社のPS/2またはApple社のMacintoshコン ピュータのようなパーソナル・コンピュータ上に置かれたオペレーティング・シ ステムの下で実施されることが好ましい。代表的なハードウェア環境を第1図に 示す。第1図は従来のマイクロプロセツサのようなCPU(central processingunit )110と、システム・バス112を介して相互に接続された複数の他のユニットとを 有する、本発明によるワークステーションの代表的なハードウェア構成を示す。 第1図のワークステーションは、RAM(randomaccess memory)114、ROM(read only memory)116、およびディスク・ユニット120のような周辺デバイスをバスに接続 するためのI/0アダプタ118と、キーボード124、マウス126、スピーカ128、マイ クロホン132、および/またはタッチ・スクリーン・デバイス(図示せず)のよ うな他のユーザ・インタフェースをバスに接続するためのユーザ・インタフェー ス・アダプタ122と、ワークステーションをデータ処理ネットワークに接続する ための通信アダプタ134と、バスを ディスプレイデバイス138に接続するためのディスプレイアダプタ136とを備えて いる。ワークステーションには、IBM 0S/2オペレーティング・システムやApple 社のSystem/7オペレーティング・システムなどのオペレーティング・システムが 置かれている。 多態管理(polymorphic management) 第2図を説明する。好ましい実施例では、多態管理されるオブジェクトは、共 通の特性をもち、これらの特性は、好ましくは、親クラスであるMCollectibleか ら派生したサブクラスに入っている。サブクラスは、派生した親クラスの属性を 継承する。好ましい実施例では、サブクラスはMCollectible 140から派生する。 これらの派生サブクラスにおいて作成されたオブジェクトは、属性をMCollectib le 140から継承する。好ましい実施例では、派生サブクラスTPixe1Buffer 142は 、ユーザによって追加されたMCollectible 140 の属性を、ユーザが追加できる 属性とともに継承する。従って、ユーザはMCollectibleから派生したサブクラス において作成されたオブジェクトをカスタマイズして、そのオブジェクトをユー ザ独自の要求に合わせることができる。オブジェクトは要求が変化したとき、変 更または作成することができる。 MCollectible 140をサブクラス化することにより、 セーブと、リストアと、クローニングと、収集、比較、割当てのような機能は、 多態オペレートすることができる。好ましい実施例では、MCollectibleから生成 されたサブクラスであるサブクラスTPixelBuffer 142は、オブジェクトがTPixel Bufferから派生したサブクラスにおいて作成されるように、この概念を拡張した ものである。従って、好ましい実施例では、PixelBufferの内容のセーブは、MCo llectibleメソッドFlattenPtrにより行われ、リストアはMCollectibleメソッドR esurrectPtrにより行われ、クローニングはMCollectibleのCloneメソッドにより 行われる。=operatorと==operatorは、割当ておよび比較オペレーションを行う ためのものである。 座標規則 次に、第3図に示すように、好ましい実施例では、PixelBufferは各座標系の 同じ仕様およびその座標系と連続座標系との関係を共用している。好ましい実施 例では、PixelBufferは整数サイズ化(integral-sized)されたピクセル配列に なっているので、ピクセルは整数ロケーションに存在すると共に、PixelBuffer のエリアは整数矩形によって記述される。第3図に示すように、PixelBuffer 14 6の起点144はイメージの左上隅であり、正の座標148は右方 向および/または下方向に伸びている。好ましくは、座標は無限に薄く、ピクセ ル140間に位置している。 好ましくは、ピクセルのロケーションはその左上隅の座標によって指定される 。直線方向のエリアはTLongRectクラスとして記述される。ピクセルが座標平面 上の点と点の間にあるとすると、TLongRect内に含まれる両端ピクセルのロケー ションは、第3図に示すように、(fleft,fTop)152および(fRight-1,fBottom- 1)である。 アクテイブ境界(active boundary) 第4図を説明する。好ましい実施例では、Pixe1Buffersは、それぞれのピクセ ル・メモリ配列のどの部分がアクティブであるかを指定する。この境界矩形156 はTLongRectとして定義され、DeviceBoundsと呼ばれるのが好ましい。クライア ントはこの境界矩形156内に存在するピクセルに対してリードライトを行うのが 好ましい。PixelBuffersは、見かけ上、ピクセル記憶のために、大きさが正確に なっているが、種々のサブクラスは、実際に、空間的および時間的にコード化さ れるピクセル・メモリを実装することができる。GetDeviceBoundsは、DeviceBou ndsのゲッタである。すなわち、GetDeviceBoundsからは、 PixelBufferの左上隅158と右下隅160の値が返される。 参照解像度(reference resolution) 第5図を説明する。好ましい実施例では、PixelBufferピクセルは、単位当た りのピクセル数の関係として指定できるある種の測定可能エリアを表している。 デフォルトの測定単位は点で指定されるので、一貫性が維持されている。多くの ハードウェア・デバイスは、非正方形ピクセルになっているので、好ましくは、 垂直方向164と水平方向166の両方の仕様が用意されている。好ましい実施例では 、これらの数は単位インチ当たりの垂直方向と水平方向のピクセル数であり、こ れは小数点以下の精度をもつ数と値として指定される。GetVerticalDPIとGetHor izontalDPIはゲッタである。SetVerticalDPIとSetHorizontalDPIはセッタである 。この値はクライアントのための参照情報であり、好ましくは、PixelBufferに よって保存される。 参照配向(reference orientation) 第6図を説明する。本発明の好ましい実施例では、ピクセル配列は直線的配向 を持つことができ、これ は、好ましくは、それが表示または編集されるとき考慮される。第6図に示すよ うに、それぞれ、中心を軸にした回転および/または垂直軸を中心とした鏡像( ミラー)の回転の結果であるピクセル配列の配向は、好ましくは、8つまで可能 である。好ましくは、ピクセル配列の配向は8つの選択の中から指定され、配向 (Orientation)と名づけられている。Get0rientationはゲッタであり、SetOrie ntationはセッタである。 これはクライアントのための参照情報であり、好ましくは、PixelBufferによ って保存されている。第6図に示すように、正しく表示される166配向を表す可 能な8つの値は、無回転168と、鏡像170と、90度回転172と、鏡像90度回転174と 、180度回転176と、鏡像180度回転178と、270度回転180と、鏡像270度回転182で ある。 連続G座標から離散ピクセルへ 第7図を説明する。好ましい実施例では、PixelBufferの連続座標平面と離散 座標平面との間の正しい変換を作成するために使用されるPixelBufferの属性は 、好ましくは4つある。好ましくは、CreateDeviceTransformは、正しい変換マ ツピングと共にTGrafMatrixを作成するメソッドである。好ましくは、CreateDev iceTranformの唯一の引数は、連続空間における起点であるTGPointである。好ま しい実施例では、座標をこのマトリックスを通して連続空間へマッピングし、連 続空間からピクセル空間へマッピングするのはクライアントの責任になっている 。 比色特徴づけ(colorimetric characterization) 好ましい実施例では、PixelBuffersは、PixelBuffersが作成できるカラーとあ る種の絶対測定基準との間の関係を指定できるのが好ましい。第8図を説明する 。TColorProfileオブジェクト184は、この関係を指定する設計になっている。好 ましくは、このオブジェクトは8つのTxyYColorsを含み、それぞれ、PixelBuffe rにより表されるハードウェア・デバイスの出力または入力から測定したデータ ・ポイントを記録する。これらのカラーは、PixelBufferを再現 できる全てのカラーを包み込むCIEカラー立体の頂点を形成する。 測定のうちの2つは、PixelBufferの白点と黒点で行われる。残りの6つのカ ラーは、このPixelBufferで再現できる最大飽和シアンと、緑と、黄と、赤と、 マゼンタと、青を含む。好ましくは、PixelBufferの非線形応答特性も記録され る。好ましい実施例では、この情報は7つの色調再現曲線(Tonal Reproduction Curve)またはTRC 186で獲得される。好ましくは、このTRCグループは、白と、 シアンと、緑と、黄と、赤と、マゼンタと、青から黒点までの256個の一様な入 力ステップからの応答を測定する。 好ましくは、全てのPixelBufferは第9図に示すように、TColorProfile 184へ の参照を含む。好ましい実施例では、CIE空間にピクセルをストアするPixelBuff erは、TColorProfile 184を有する。例えば、次に、CIE空間に基づくPixelBuffe rの場合の等色シナリオについて検討する。純粋な比色はポイント・プロセスで あるので、プロフィールを必要としないのが好ましい。ソース・プロフィールで 定義された3次元カラーからデスティネーションのカラー立体へのマッピングま たは態(morph)を作成する知覚的等色は、プロフィールをもっているのが好ま しい。 好ましい実施例では、PixelBufferのカラー・プロフィール184は、SetColorPr ofileメソッドにより セットされ、GetColorProfileメソッドにより取り出される。記憶と効率性を考 慮して、これらのTColorProfile 184は参照カウントをとることにより共用され る。実際の等色プロセスの詳細については、次のセクションで説明する。 ピクセル・メモリの変更 エンドユーザは、グラフィック・システムに対してハイレベルのパフォーマン スを期待している。この期待に応えるためには、レンダリングまたはスキャン変 換プロセスが、ピクセルメモリを非常に特殊な方法で変更できることが要求され る。好ましい実施例では、これらのプロセスは共用になっている。PixelBuffer では、複数のタスクが同時に描画してそこに入れたり、そこから読み出したりす ることがあるので、これらの機構はマルチタスクセーフ(safe)であるのが好ま しい。すなわち、ピクセル・プロセスが秩序正しく共用される。 GetPixelとSetPixel 好ましい実施例では、SetPixelとGetPixelルーチンを使用してレンダリングす るのが特に効率的でない場合であっても、これらが有用であることが実証されて いる。好ましい使い方の1つは、他のアクセス機構のデフォルト・バージョンを サポートすることである。TPixelBuffer 142には、好ましくは、これらのルーチ ンを頼りとする基本アクセス機構のデフォルトバージョンが用意されている。こ れらは多態オペレーションであり、第10図に示すように、32ビットARGB値186を 受け取り、あるいは返す。 サブクラスは、好ましくは、GetPixelとSetPixelメソッドをオーバライドする 。しかし、eyedropperのようなツールでは、パフォーマンスは充分である。好ま しくは、GetCIElabPixelとSetCIElabPixelメソッドはロスのないカラーのセット とゲットを行うために用意されている。 オブジェクト・ベースの”Blitloops” 現在、市販されているグラフィックス・システムには、レンダリングされたプ リミティブの可視的表示を、ユーザが指定するときに使用するボキャブラリが用 意されているのが普通である。本発明の方法および装置とは異なり、これらのボ キャブラリは拡張不可能であるのが典型的である。これらには、特性、例えば、 カラーと、パターンと、転送モードと、等色と、ディザリングの指定に対するサ ポートが含まれる。これらの特性は3つの目的に使用される。すなわち、あ るピクセルでの所望カラーの指定と、そのピクセルと現在のデスティネーション ・ピクセルとの間のやりとりの指定と、時間および/または品質とのトレードオ フとが与えられているとき、優先するものを述べたヒントの指定である。 これらのプロパティを一緒に使用すると、ある程度の自由度が得られる。好ま しい実施例では、あるPixelBufferでは、これらの属性で指定された状態にピク セルをセットするサブルーチンが存在する。これらのサブルーチンは一般に”bl itloops”と呼ばれている。各自由度ごとに一定の選択項目がセットで用意され ているので、従来のグラフィック・システムでは、ネストされたテストによるか 、あるいは、blitloopsを指すポインタ配列にインデックスすることによって、 該当のblitloopを選択する。 好ましい実施例では、クライアントも、TGrafBundleとTPortBundleの設定可能 な属性により、これらの自由度にアクセスすることができる。これらのblitloop sは2つの特性を有するのが好ましい。異なるセマンチックを有するblitloopsを 利用する異なるレンダリング・パイプラインと、異なるアピアランス属性を得る ために異なるアルゴリズムを使用するblitloopである。レンダリング・パイプラ インの詳しい説明は、GrafDeviceと、3次元レンダリング・パイプラインを参照 されたい。これらは、引用によっ て本明細書の一部とする。 クライアントには、必要とするアクセス機構ごとに個々のPixelBufferメソッ ドを用意することも可能であるが、この解決手法にはいくつかの問題がある。第 1は、異なるアルゴリズムを得るために、異種のメソッドを作成する必要がある ことである。本発明の方法と装置によれば、各属性および自由度が個々のメソッ ドを際限なく規律することができる。もう1つの設計上の考慮事項は機構をマル チタスクから安全にし、効率化することである。このことは、あるメソッド・コ ールから次のメソッド・コールまでの間にキャッシュできる情報がタスクセーフ でキャッシュされることを意味する。 従って、好ましい実施例では、PixelBuffer内の個々のメソッドは”blitloop ”オブジェクトを作成することができる。これらのオブジェクトは、ペインタ( painter)と総称される。好ましい実施例では、クライアントがピクセル・メモ リを変更するときの特殊な方法ごとに、抽象基本・ペインタ・クラスがPixelBuf fer内の対応するCreateメソッドを使用して作成される。好ましくは、特定のCre ateメソッドから戻された全てのペインタは、特定のペインタ基本クラスのサブ クラスである。どのペインタ・サブクラスを返すかの選択は、クライアントの希 望のアルゴリズムによって駆動されるのが好ましい。ペインタ・サブク ラス選択プロセスは、別のセクションで詳しく説明する予定である。好ましくは 、複数のレンダリング・オペレーションで記憶割振りを行う必要があるために起 こるスピード/パフォーマンス・コストを分散化するために、キャッシング・ス トラテジが採用されている。 好ましい実施例では、クライアントの特殊な要求を満たすために5つの基本ク ラスが用意されている。すなわち、TSpanPainterと、THairLinePainterと、TAnt iAliasedHairLinePainterと、TGlyphPainterと、BitBltである。 TSpanPainter スキャン変換プリミティブを塗りつぶし、フレーム化することは、グラフィッ クス・システムの基本オペレーションである。好ましい実施例では、この種のク ライアントをサポートするため、4種類の機構が用意されている。これらのオペ レーションはピクセル・メモリ変更と併用できるので、好ましくは、これらは同 じペインタ基本クラスのメソッドになっている。好ましい実施例では、これらの メソッドとは、1)「スパン」の塗りつぶし、2)矩形ブロックの塗りつぶし、3 )ブレンド・スパンの塗りつぶし、4)隣接エッジからのカラーとブレンドされ た個々のピクセルの塗りつぶし である。TSpanPainterオブジェクトはTPixelBuffersCreateSpanPainterメソッド により取得されるのが好ましい。 ラスタ化の期間、多くの2次元プリミティブはエッジ・リストに挿入されるの が好ましい。好ましい実施例では、このカテゴリに属するクライアントはTSimpl eFillEdgeEngineと、 TSimpleFillAndFrameEdgeEngineパイプライン・オブジェクトである。スキャン 変換は、エッジ・リストを初めから終わりまで調べ、塗りつぶすべき「スパン」 を生成することにより行われるのが好ましい。好ましい実施例では、スパンとは 、ある行の列(カラム)のハーフオープン・インタバル(half-open interval) のことである。 オーバヘッド・コストを軽減するために、スパンはグループでクライアントの スタック上に蓄積されるのが好ましい。これは抽象クラスから継承した複数のイ ンライン・メソッドにより行われるのが好ましい。好ましい実施例では、クライ アントは、PaintBufferedSpanをコールすることにより、スパンを各自のローカ ル・スタックに追加する。好ましい実施例では、このメソッドは、ローカル・ス パン・スタックが大きくなり過ぎると、ローカル・スパン・スタックをフラッシ ュする。クライアントはレンダリングを終えたとき、FlushBufferedSpansをコー ルしてス タックに残っているスパンをクリアするのが好ましい。クライアントがスパンを バッファに置くことを望まない場合は、PaintSpansメソッドを使用することがで きる。PaintSpansメソッドは、この反復を制御するカウントとともに、スパン引 数に入れて渡されたスキャンライン・スパンの配列を反復する。 矩形ピクセル・エリアを効率よく塗りつぶすことは好ましい実施例で用意され ているもう1つの機構である。好ましくは、この機構を利用するクライアントは TRectilinearFillEdgeEngine 188と、TRectilinearFillAndFrameEdgeEngineと、 TRectilinearAntialiasedFillEngineと、TRectilinearAntialiasedFillAndFrame EdgeEngineである。好ましい実施例では、このメソッドはPaintBlockと呼ばれ、 エリアは列と、開始行と、行カウントのハーフオープン範囲として指定される。 スキャン変換がアンチエリアスされている場合、本発明によれば、クライアン トは、最終ピクセルの透明性を変更すると、サブピクセルが位置付けまたはカバ レッジされたとの印象を得ることができるのが好ましい。好ましい実施例では、 このカテゴリに属するクライアントはTAntialiasedFillEdgeEngineと、TAntiali asedFillAndFrameEdgeEngineと、TRectilinearAntialiasedFillEdgeEngineと、T RectininearAntialiasedFillAndFrameEdgeEngineパ イプライン・オブジェクトである。 この種のピクセル・メモリ変更はCompositeSpanメソッドにより行われる。そ の引数はスパンおよび加重値の配列を指すポインタである。全体がカバーされた ピクセルはPaintSpansまたはPaintBlockメソッドにより塗りつぶされるのが好ま しい。 好ましい実施例では、最後のピクセル変更メソッドは、異なるペインタを使用 するアンチエリアスされた隣接エッジをペイントするときの通路となる。このよ うなことは、塗りつぶされフレーム化されたプリミティブをレンダリングすると き起こる。このような状況に置かれるクラアイントは、TAntialiasedFillAndFra meEdgeEngineと、TRectilinearAntialiasedFillAndFrameEdgeEngineパイプライ ン・オブジェクトである。好ましい実施例では、メソッドPaintAbuttingEdgePai ntの引数は、TLongPointとブレンド重み(blending weight)である。ブレンド 重みは、用意されているTColorと、このTSpanPainterがそのロケーションで必要 とするカラーとの間でブレンドを行うために使用される。 隣接エッジのカラーは、SetAbuttingEdgeColorメソッドによりセットされるの が好ましい。ブレンドを容易にするために、2つの追加メソッドが用意されてい るのが好ましい。クライアントは、ペインタが、あるロケーションでどのカラー を必要としているのかを 照会する。このメソッドはGetDesiredColorAtであり、これはTColorとTLongPtを 引数として使用する。GetDesiredColorは、ペインタがTLongPtロケーションで必 要としているカラーを、TColorに入れて返す。好ましい実施例では、クライアン トは隣接エッジを見つけると、一方のペインタGetDesiredColorを使用し、必要 とするカラーを他方のペインタGetAbuttingEdgeColorメソッドに渡してから、Pa intAbuttingEdgepixelを使用する。 最後のメソッドにより、ペインタが1つのべた(solid)カラーとIsShadingCo nstantで塗りつぶしている隣接エッジに対して、この対話を効率よく行なうこと ができる。IsShadingConstantがTRUEのとき、GetDesiredColorAt/SetAbuttingEd geColorコンボを一度だけ実行するだけでよい。これらのメソッドがないと、現 れた内部シーム(internal seam)を、塗りつぶされフレーム化されたプリミテ ィブで正しくアンチエリアスすることは不可能である。 好ましい実施例では、クライアントの要求を満たすために、メソッドはペイン タとして1つにパッケージ化されている。パッケージ化すると、複数のユーザの 要求を満たすことができる。メソッドは次のような種々のクライアント要求に応 じるように1つにパッケージ化されているのが好ましい。すなわち、1)TRectil inearFillEdgeengineのように、エリアスさ れたピクセル・ブロックを塗りつぶすクライアントと、2)TSimpleFillEdgeEngi neのように、スキャン変換プリミティブからのエリアスされたスパンを塗りつぶ すクライアントと、3)アンチエリアスされたスキャン変換プリミティブを塗り つぶすクライアントと、4)TRectilinearAntialiasedFillEdgeEngineのように、 アンチエリアスされた位置付けブロックを塗りつぶすクライアントと、5)TAnti aliasedFillAndFrameEdgeEngineのように、2つのペインタからのアンチエリア スされた隣接エッジを含んでいるピクセルを塗りつぶすクライアントである。 次に、第12図を説明する。最初のクライアントはPaintBlock 190を排他的に使 用することができるのが好ましい。2番目のクライアントはPaintBufferedSpan 200と、第12図に示すように、内部的にPaintSpans 204メソッドをコールするFlu shBufferedSpans 202を使用する。第13図に示すように、3番目のクライアント は、不透明スパンではPaintBufferedSpan 206とFlushBufferedSpans 208を使用 し、既存のピクセルとブレンドされたピクセルではCompositeSpan 210を使用す ることができる。 第14図を説明する。4番目のクライアントは不透明ピクセルではPaintBlock 2 10を使用し、既存のピクセルとブレンドする必要のあるピクセルでは、 CompositeSpan 212を使用することができる。 第15図を説明する。5番目のクライアントのケースはもっと複雑である。5番 目のクライアントは不透明ピクセルに対して該当のスパン・ペインタのPaintBuf feredSpan 214とFlushBufferedSpans 216メソッドを使用することができる。フ レームの外側エッジは、フレームスパンペインタのCompositeSpan 218を通して レンダリングされるのが好ましい。フレームと、塗りつぶされたエッジとの間の 内部シームは、SetAbuttingEdgeColorAt 222が、フレーム化スパンペインタのGe tDesiredColor 224メソッドから返されたカラーと共にコールされた後だけ、塗 りつぶしスパンペインタのPaintAbuttingEdgePixel 220メソッドによりレンダリ ングされるのが好ましい。 THairlinePainter 第16図を説明する。好ましい実施例では、THairlineFrameVertexEngineのよう なクライアントは、細線または微細線(hairline)を描くために特殊な機構を利 用する。微細線はピクセルバッファの最精細解像度で描かれる線と定義されてい る。ラスタ・デバイスでは、これは単一ピクセル幅の線である。微細線が、ライ ンと、ポリライン(polyline)と、枠付き多角形と、曲線と、3次元ワイヤフレ ームの結果としてレ ンダリングされ、Hairline属性をTGrafBundleでオンにしてドローイングされる 。 微細線の終端点226,228は、小数点以下の精度で指定されるのが好ましい。TGr afBundleはTPixelBuffersCreateHairlinePainterメソッドにより取得される。サ ブクラスはPaintHairlineをオーバライドするのが好ましい。好ましい実施例で は、PaintHairlineは、例えば、DVIイメージやフラットスクリーン技術に見られ る非正方形アスペクト比を考慮する。LongRectに対してクリップする、オーバロ ードされたPaintHairlineメソッドが用意されているのが好ましい。 TAntialiasedHairlinePainter 第17図を説明する。好ましい実施例では、 TAntialiasedHairlineFrameVertexEngineのようなクライアントは、アンチエリ アスされた微細線をドローイングするには特殊な機構を必要とする。アンチエリ アスされた微細線とは、サブピクセルの位置付けとカバレッジを変換している間 にレンダリングできる最も細い線である。これらは、普通、3ピクセル幅である 。微細線の終端点は小数点以下の精度で指定されるのが好ましい。好ましい実施 例では、このオブジェクトは TPixelBuffersCreateAntialiasedHairlinePainterメソッドにより取得される。 サブクラスはPaintAntiAliasedHairlineとSetFilterPixelをオーバライドするの が好ましい。PaintAntiAliasedHairlineと、SetFilterPixelは、例えば、DVIイ メージやフラットスクリーン技術に見られる非正方形アスペクト比を考慮するの が好ましい。好ましい実施例では、TLongRectに対してクリップする、オーバロ ードされたPaintAntiAliasedHairlineメソッドが用意されている。 TGlyphPainter 第18図を説明する。好ましい実施例では、グリフ(glyph)は高速化されてい る。グリフはハイレベル輪郭記述からなっている。好ましい実施例では、TFrame buffer::RenderGlyphRunのようなクライアントは、任意のTFontのビットマップ またはグレースケール・ピクセルマップをTFontServerに要求する。TFontServer は、グリフのハイレベル輪郭描写を取り出し、ビットマップまたはグレースケー ル・ピクセルマップを作るように該当のTFontHandlerに要求するのが好ましい。 好ましい実施例では、TFramebufferが結果を得た後、ビットマップまたはピクセ ルマップを合成してTPixelBufferに置くための効率のよいメソッド が用意されている。ビットマップの場合は、好ましいオブジェクトはTGlyphPain terである。 第19図を説明する。好ましい実施例では、TGlyphPainterはビットマップ形体 のグリフをレンダリングするために必要なメソッドを含む。これらのビットマッ プは不透明マットの働きをし、ユーザが与えたペイントがこれを通して合成され るのが好ましい。これらのメソッドの最初のものは、デスティネーション起点を dstx引数とdsty引数に入れて受け取るPaintSmallGlyphであり、これはTGlyphPix mapと同じである。このメソッドはクリップされていないグリフに対するもので ある。次のメソッドはオーバロードされたPaintSmallGlyphである。好ましい実 施例では、PaintSmallGlyphは、デスティネーションの矩形クリップ・エリアで ある別の引数を受け取る。このオブジェクトはTPixelBuffersCreateBitmapGlyph Painterメソッドにより取得される。サブクラスは両方のPaintSmallGlyph メソ ッドをオーバライドするのが好ましい。代替実施例では、グリフはバッチにされ て、PaintSmallGlyphではなく、PaintSmallGlyp hs メソッドへ送られる。 TAntialiasedGlyphPainter 第20図を説明する。好ましい実施例のグリフには、 2つの低レベル表現がある。一方はビットマップであり、他方はグレースケール ・ピクセルマップである。グレースケール・ピクセルマップはグリフのサブピク セル位置付けとカバレッジを伝達するために必要な透明情報を含んでいる。これ らのピクセルマップは半透明マットの働きをし、ユーザが与えたペイントはこれ を通して合成される。好ましい実施例では、TAntialiasedGlyphPainterはグレー スケール・ピクセルマップをレンダリングするためのメソッドを含む。 これらのメソッドは、グレースケール・ピクセルマップを扱う点を除けば、TG lyphPainterに入っているものと同じであるのが好ましい。好ましい実施例では 、このオブジェクトはTPixelBuffersCreateGrayscaleGlyphPainterメソッドによ り取得される。サブクラスは両方のCompositeSmallGlyph メソッドをオーバライ ドするのが好ましい。好ましい実施例では、グリフのサブピクセル位置付けのタ スクは、フォント・サーバーの責任である。代替実施例では、グリフはバッチに して、CompositeSmallGlyphではなく、CompositesmallGlyphsメソッドへ送るこ とができる。さらに別の代替実施例では、交差するグリフは、デスティネーショ ンに合成する前に、そのマットを一緒に加えることにより、アセンブルしてスト ライク (strike)にすることが可能である。好ましくは、CompositeSmallGlyphsにより 、隣接グリフからのグレースケール・マットの総和をとって、より高品質の結果 を得ることができる。 BitBlt(ビットブロック転送) 好ましい実施例では、機構は、例えば、エンド・ユーザがウィンドゥの内容を スクロールしたり、同じモニタ上でウィンドゥを再位置付けするときのように、 素早い対話のグラフィック基盤を形成する。スクロールまたは再位置付けされた ウィンドゥの内容を消去し、再ドローイングする代わりに、ウィンドゥの内容を 構成するピクセルは、ブロックで移動されるのが好ましい。このオペレーション はメモリ移動オペレーションであり、より汎用的な働きをするCopyImage メソッ ドと混同してはならない。 このオペレーションは、まだ読み取られていないで残っているピクセルに書く のを避けるように、ピクセル・メモリをコピーするのが好ましい。好ましい実施 例では、TPixelBufferのMovePixelBlockメソッドはTLongRectをソースとして、T LongPtをデスティネーション起点として受け取る。オペレーションをある領域に クリップするこのメソッドには、若干の捩じれがあるのが好ましい。領域を受け 取るオーバロードされ たMovePixelBlockはクリッピングを行うのが好ましい。グラフィックス・アクセ ラレータ・カードは、頻繁にこの機能を実行する。変更可能であれば、サブクラ スはこのメソッドのアンクリップ版をオーバライドするのがこのましい。 あるピクセルバッファから同じタイプの別のピクセルバッファヘピクセルをブ ロック移動するとき、非常に似た機構が使用されるのが好ましい。好ましい実施 例では、このメソッドはMovePixelBlockと名づけられている。このメソッドはソ ース矩形のTLongRectと、デスティネーション起点のTLongptと、ソース・ピクセ ルを含むTPixelBufferへの定数参照を受け取る。実行時のタイプキャストの結果 、PixelBuffersが同じクラス系統でないことが分かったとき、例外が発生するの が好ましい。(このタイプの機能のための低レベル入口点がないのは、Macintos h開発者がオフスクリーンでするときQuickdrawをバイパスしている主な理由の1 つである。) 好ましい実施例では、追加のオーバロードされたMovePixelBlockメソッドは領 域を受け取り、これを通して結果がクリップされる。(これは、グラフィック・ アクセラレータ・カードにより、頻繁に実行されるオペレーションである。)変 更可能ならば、サブクラスはこのメソッドのアンクリップ版をオーバライドする のが好ましい。MovePixelBlockのクリップ版のデ フォルト版はアンクリップ版を使用する好ましい。サブクラスはビットマップを 基本クラスとするもののように、別の方法でクリッピングした方が好ましければ 、これらをオーバライドすることができるのが好ましい。 上記方法を多態使用するためには、ピクセルバッファが同じタイプのものであ るかを確かめるだけでは充分でない場合がある。カラー・テーブルが同等かどう かを検査するといった、追加のテストを行うことができるのが好ましい。好まし い実施例では、これは、デスティネーションのPixelBufferで実行できるテスト になっている。好ましい実施例では、このメソッドはCanBlockMovePixelsと名づ けられ、別のPixelBufferへの定数参照を受け取り、ブール計算結果を返却する 。サブクラスは、これらが変更可能であればこのメソッドを用意し、クラス名の 比較よりも高い精度を使用するのが好ましい。 CopyImage オブジェクト 好ましい実施例では、グラフィック・システムがレンダリングするプリミティ ブの1つは、イメージである。Pixe1BufferのCopyImage メソッドはソースPixel BufferをデスティネーションPixelBuffer上にレンダリングするが、これはそれ 自身であるのが好ま しい。ソースピクセルは、アフィン変換または射影変換(projective transform ation)を受けて、デスティネーションにされるのが好ましい。ソース・イメー ジのピクセルに収められた属性は、転送モードのようなハイレベルの変換か、あ るいは、別のピクセル形式への変換のような低レベルの変換を受ける場合がある 。 好ましい実施例では、CopyImage はソース・ピクセルバッファと、ソース幾何 形状仕様と、デスティネーション幾何形状仕様と、グラフ状態(grafstate)を 受け取る。これらの幾何形状仕様は、変換タイプと、最大境界と、変換された幾 何形状に関する情報と、クリッピング情報とを含んでいるのが好ましく。これら の仕様はCopyImage またはCopyImageTo メソッドで2つの異なるフレームバッフ ァによって計算されるのが好ましい。TPixelBufferのCopyImage はこれらの仕様 を一緒に評価する最初のメソッドであるのが好ましい。これは、ピクセルを変換 する正しいメソッドを判断し、必要なセットアップを行い、CopyImageパイプラ インの次のステージに入る。 拡張可能なCopyImageエンジンとPixelStreamers 好ましい実施例では、追加のpixelbufferサブクラスがシステムに追加される ので、CopyImageはオペ レーションを多態実行するように作られているのが好ましい。好ましい実施例で は、拡張可能なピクセル変換エンジンを備えた最初のグラフィックス・システム を提供している。好ましい実施例では、この制約により、TPixelBufferレベルで 存在するCopyImageを実装することも可能であるが、この場合、ピクセル・メモ リの編成に関してはなにも仮定していない。 好ましい実施例では、”blitloop”機構により、CopyImage エンジンは、ピク セルを一方のPixelBuffer から他方のPixelBuffer へ多態移動することが可能で ある。PixelBufferサブクラスが現在多様化していることを考えると、PixelBuff erは。それぞれ、他のピクセル・メモリ編成の全てについては”blitloop”を含 んでいないのが好ましい。その代わり、好ましい実施例では、各PixelBufferは 、少数の標準ピクセル・バッファ・タイプについて知っているものと期待されて いる。そのタイプとは、TAlpha8Gray8PixelBufferと、TA 8R8G8B8PixelBufferと 、TL12A12B12PixelBufferである。 このデフォルトでのふるまいにより、CopyImage エンジンは、未知の編成のピ クセルバッファからのピクセルをストリーム化し、3つの標準形式にすることが できる。デスティネーションPixelBufferには、ピクセルをこの中間PixelBuffer からデスティ ネーションに移動し、TTransferModeとTDitherHintを反映した結果が得られる別 の”blitloop”機構が用意されているのが好ましい。好ましい実施例では、TPix elStreamReaderとTPixelStreamWriterオブジェクトがこれらの要求を達成する。 この2つのオブジェクトはピクセル・ストリーマと総称されている。これらのピ クセル・ストリーマは、目標と設計上考慮する点が、多くの面で、ペインタと共 通している。 好ましい実施例では、3つの共通PixelBuffer形式は共通項的解決手法を提供 している。しかし、これらの3つの中間形式だけでは、ピクセルまたは属性スト リーミング・エンジンはルースになり低速になってしまう。この問題を解決する ために、好ましい実施例では、各PixelBufferには、実効セット(working set) を構成するピクセルストリーマがセットで用意されている。この問題は、新しい ペイントと、新しいペインタと、旧PixelBufferの問題と本質的に類似している 。この問題の解決の仕方も類似している。CreatePixelStreamWriterメソッドが どのように実現されているかについては、あとで詳しく検討する予定である。 各ピクセルバッファは、その一意のキーであるトークンを生成することができ るのが好ましい。このキーはIsA関係を指定するのが好ましい。好ましい実施例 では、GetNativeKeyメソッドからこのトークン が返される。GetNativeKeyにより、サブクラスは、GetClassNameAsTokenではで きない形で、インスタンス化が可能なサブクラスに影響力を及ぼすことができる 。これらのキーにより、CopyImage エンジンはソース・ピクセルバッファとデス ティネーション・ピクセルバッファとの間で共通の基盤で型をネゴシエートする ことができるのが好ましい。好ましい実施例では、このキーの有効性に依存する メソッドは、実行時の型識別を使用して保証を得ることができる。 CopyImage エンジンは、ピクセルバッファのCreatePixelStreamReader メソッ ドにより、ソースピクセルバッファ・ピクセルを、所定のキーを有するピクセル バッファに移動することができるPixelStreamReaderを獲得するのが好ましい。 好ましい実施例では、ソース・ピクセルバッファがその所定のキーと一致しな場 合は、nilを返す。PixelBuffersは、適正な型を返す、CreateA8R8G8BPixelStrea mReaderと、CreateAlpha8Gray8PixelStreamReaderと、CreateL12A12B12PixelStr eamReaderとを有するのが好ましい。好ましい実施例では、ペインタ・サーチ機 構のように、新たに特殊化されたPixelStreamReadersが動的にピクセスバッファ に追加されている場合は、これらを返すことができる。 好ましい実施例では、CopyImageエンジンはデス ティネーションPixelBufferからのPixelStreamWriterを使用して、ピクセルを所 定のキーを有するPixelBufferから自身に移動すると共に、供給されたTTranster ModeとTDitherHintsを反映することができる。CopyImageはPixelStreamWriterを 、デスティネーションCreatePixelStreamReader メソッドにより取得することが できるのが好ましい。好ましい実施例では、デスティネーションPixelBufferに 所定のキーと、TTransferModeと、TDitherHintに一致しない場合は、nilが返さ れる。PixelBuffersには、キーと、単純転送モードと、単純ディーザ・ヒントに 一致するPixelStreamWriterを返すCreateA8R8G8BPixelStreamWriterと、CreateA lpha8Gray8PixelStreamWriterと、CreateL12A12B12PixelStreamWriterメソッド とがあるのが好ましい。ペインタ・サーチ機構のように、新たに特殊化されたPi xelStreamWritersが動的にPixelBuffersに追加されている場合は、これらを返す ことができるのが好ましい。 好ましい実施例では、PixelStreamReadersは、PixelBufferサブクラス・ピク セルのストリームを効率よく読み取るために必要なプロトコルを有する。ピクセ ル移動メソッドとしては、GetRowと、GetColum nAsRowと、GetPixelAlongAffine DDAと、GetPixelAlongPerspectiveDDAとを有するのが好まし い。好ましい実施例では、PixelStreamReaderサブクラスは、ピクセルの行か、 列か、あるいは補間された座標スパンのフェッチを高度に最適化することができ る。好ましくは、PixelStreamReadersは、一方のピクセル形式から直接に別の形 式に移る効率的なパスを作るためにサブクラス化されている。 好ましい実施例では、AdviseWillReadは補足的メソッドであり、これはピクセ ル移動メソッドのコール前にコールされるのが好ましい。このメソッドにより、 PixelStreamReaderは、圧縮や他の目的のために必要なバッファを効率よく割り 振ることができる。 PixelStreamWritersは、所定のPixelBufferサブクラス・ピクセルの1行また は複数行を、デスティネーション形式に効率よく書くために必要なプロトコルを 有するのが好ましい。ピクセル移動メソッドはPutRowとPutRowsを備えている。 結果はTIransferModeとTDitherHint属性を反映しているのが好ましい。所定のPi xelStreamWriterサブクラスは、形式変換と、転送モードと、ディザリング手法 の対象となるピクセル行(1行または複数行)を書くことを最適化することがで きるのが好ましい。2つの補足的メソッドがPixelStreamWriterを補助するのが 好ましい。好ましい実施例では、これらは、AdviseWillModifyとRequiresScanli neOrderedSetsである。AdviseWillModifyはSetsメソッドをコールする前に コールされるのが好ましい。これにより、PixelStreamWriterサブクラスはバッ ファ割振りなどを最適化することができるのが好ましい。ReaquiresScanlineOrd eredSetsメソッドは、エラー拡散の場合のように、行が順次に書かれる場合は、 TRUEを返す。 TPixelBufferのサブクラスは、そのネイティブの型である、TA8R8G8B8PixelBu fferと、TAlpha8Gray8PixelBufferと、TL12A12B12PixelBufferに対してPixelStr eamersを実装するのが好ましい。そうでない場合は、デフォルトのgetとSetPixe lベースのPixelStreamersが返されることになる。中間フォーマットがどれであ るかの型ネゴシエーションがTPixelBufferのCreateMatchingPixelStreamersメソ ッドによって実装されるのが好ましい。サブクラスはこのメソッドをオーバライ ドして、最も効率的な中間基盤を最初に探索するのが好ましい。デフォルト版は ソースまたはデスティネーションのピクセルバッファ形式を読み書きできるペア のPixelStreamersを最初に探索するのが好ましい。 最初の探索が失敗した場合、CreateMatchingPixelStreamersは必要とする型の 1つに戻るのが好ましい。より高度のサーチ方式では、GetTypesFromPixelStrea mersメソッドを使用することができる。GetTypesFromPixelStreamersメソッドは 可能な限りの型を全てTDequeに挿入するためにコールされるのが好ましい。その 後、デスティネーション・ピクセルバッファは、そのリストから、それがサポー トしている中間基盤型を選択する。ピクセルバッファのピクセルストリーマは実 行時に変更できる辞書に保存されているので、これらのメソッドは、周知のデフ ォルト値だけをそこに入れる代わりに、このTDequeに入れるために、この辞書に 照会するのが好ましい、 CreateMatchingPixelStreamersは、CopyImageの2つのケースを除き、全ての 場合にコールされるのが好ましい。CopyImage オペレーションが幾何学的変換だ けである場合であって、CanBlockMovePixelsメソッドにより、ブロック移動が可 能であると判断された場合、デスティネーションのMovePixelBlockメソッドがコ ールされる。2番目のケースは、CopyImageオペレーションが変換だけのときに も生起される。デスティネーション・ピクセルバッファが、ソースPixelBuffer を理解するPixelStreamWriterを生成できる場合は、PixelStreamReaderは必要と されない。好ましい実施例では、他の変換は型デスティネー ションされたPixelStreamer に依存して、読み書きを行い、異種の型のPixelBuf fers間の変換を行う。 次に述べるCopyImage メソッドは、そのプライベイト・セクションに置かれて いるのが好ましい。これらのメソッドの実装は特定のサブクラスから独立してい る。サポートされるアフィン変換と射影変換は次の手法の1つに送ることができ るのが好ましい。好ましい実施例では、各手法は独自の固有セットアップとメソ ッドをもっており、これはTPixelBufferオブジェクトのプロテクト・メソッドと して現れる。これらのメソッドはPixelStreamReadersとPixelStreamWritersを採 用しているので、これらは該当のサブクラス化されたPixelBuffersと協働するの が好ましい。 MovePixelBlockはソース・ピクセルからデスティネーションへの変換をメモリ 移動により行う。StreamPixelBlockは、ソース・ピクセルからデスティネーショ ンへの変換をPixelStreamWriterを使用して行う。StreamRectilinearPixelBlock は、ソース・ピクセルのスケール不変線的回転をPixelStreamReaderとPixelStre amWriterにより行う。StreamScaledPixelBlockは、ソース・ピクセルの直線的回 転を伴うか、あるいは伴わないポイント・サンプル・スケールを、PixelStreamR eaderとPixelStreamWriterを使用して行う。StreamAndFilterScaledPixelBlock は、ソース・ピク セルからの直線的回転を伴うか、あるいは伴わないフィルタ・スケールを、Pixe lStreamReaderとPixelStreamWriterにより行う。StreamPixelConvexPolygonは、 ソースからのソース・ピクセルのポイント・サンプル変換を、PixelStreamReade rにより行い、その結果をPixelStreamWriterによりデスティネーションの凸面多 角形に書き入れる。StreamAndFilterPixelsintoCovexPolygonは、ソースからの ソース・ピクセルのフィルタ変換をPixelStreamReaderにより行い、その結果をP ixelStreamWriterによりデスティネーションの凸面多角形に書き入れる。 StreamPixelBlock 第23図を説明する。好ましい実施例では、StreamPixelBlockメソッドは、デス ティネーションのPixelStreamWriterのPutRows メソッドをコールすることによ りそのタスクをパフォームする。従って、ピクセル形式変換と、転送モードと、 ディザリングが高速化される。第23図に示すように、好ましい実施例では、TPix elBuffer::CopyImage 310はTFrameBuffer 312によってコールされる。その後、T PixelBuffer::CopyImage 310は自身の CreatePixelStreamWriter 314メソッドを呼び出す。CreatePixelStreamWriter 3 14メソッドは、ソースPixelBuffer 300を読み取ることができるかどうかを、ソ ースPixelBufferのGetNativeType 316によりその型をソースPixelBuffer 300 に 要求することにより判断するのが好ましい。その後、CreatePixelStreamWriter 314は、その型および該当のバンドル属性に一致するPixelStreamWriterを返すの が好ましい。好ましい実施例では、TPixelBuffer::CopyImageは、次に、ソース ・ピクセルバッファを使用してPixelStreamWriterのPutRows 320メソッドを呼び 出し、自身のStreamPixelBlock 318メソッドを呼び出す。 StreamRectilinearRotatedPixelBlock 好ましい実施例では、StreamRectilinearRotatedPixelBlockメソッドは、ソー スPixelStreamReaderのGetRowまたはGetColumnAsRowメソッドを多態的にコール し、ピクセルを一時ピクセルバッファに入れている。デスティネーションPixelS treamWriterのPutRowメソッドを用いて、ピクセルを書き出すのが好ましい。従 って、ピクセルメモリを同一の型との間で、高速度スケール不変直線的転送か、 あるいは形式変換と、転送モード と、ディザリングを行う同転送を行うことができる。 第24図を説明する。好ましい実施例では、TPixelBuffer::CopyImage 322はTFr ameBufferメソッドによってコールされる。TPixelBuffer::CopyImage 322は、そ の後、自身のCreateMatchingStreamers 324 メソッドを呼び出すのが好ましい。 PixelBufferフォーマットを型デスティネートすることができるかどうかを、Cre ateMatchingStreamers メソッド32が判断するのが好ましい。PixelBufferフォー マットに対して、ソース・ピクセルバッファがPixelStreamerReaderを作成でき 、しかも、デスティネーション自身がPixelStreamWriterを作成できる この場合も、ソースPixelBufferはソースPixelBufferのGetNativeType メソッ ドによりその型が要求される。好ましい実施例では、CreateMatchingStreamers 324は、次に、この形式で、デスティネーションPixelBuffer のCreatePixelStre amWriter 326を呼び出す。CreatePixelStreamWriter 326は、この型および該当 のバンドル属性に一致するPixelStreamWriterを返すのが好ましい。好ましい実 施例では、CreateMatchingStreamers 324は、その後、ソースのCreatePixelStre amReader 328メソッドにより PixelStreamerReaderを作成するようにソースPix elBufferに要求する。 このペアのPixelStreamReadersとCreateStreamWritersが、その後、TPixelBuf fer::CopyImageに返されるのが好ましい。次に、TPixelBuffer::CopyImageは自 身のStreamRectilinearRotatedPixelBlock 330メソッドを呼び出す。好ましい実 施例では、TPixelBuffer::StreamRectilinearRotatedPixelBlock 330は、その後 、PixelStreamReaderのGetRow 332またはGetColumnAsRowのどちらかのメソッド を繰り返しコールし、中間 PixelBufferを一杯にし、その後、PixelStreamWrit erのPutRow 334メソッドをコールする。 StreamSclePixelBlock 第25図を説明する。好ましい実施例では、StreamScaledPixelBlock 340メソッ ドは、ソースPixelStreamReaderのGetPixelsAlongAffineDDA メソッドをコール して、ピクセルを一時ピクセルバッファに入れる。デスティネーションPixelStr eamWriter 342のPutRow 344メソッドは、ピクセルを書き出すために使用される のが好ましい。よって、ピクセル・メモリを同一型との間で、高速ポイント・サ ンプル直線スケール転送するか、あるいは、フォーマット変換と、転送モードと 、ディザリン グを行う同転送を行うことができる。好ましい実施例では、StreamScaledPixelB lock 340は、ソースPixelBufferがMipMapまたは多重解像度ピラミッドである場 合には、フィルタ変換を行うことができる。 第25図に示すように、好ましい実施例では、TPixelBuffer::CopyImage 346はT FrameBuffer 348メソッドによって呼び出される。そして、TPixelBuffer::Copy Image 346は自身のCreateMatchingStreamers 352メソッドを呼び出し、ついで、 上記のStreamRectilinearRotatedPixelBlockの例で説明したように、アクション を行うのが好ましい。一度、CreateMatchingStreamers 352がペアのPixelStream Readers 354およびPixelStreamWriters 342をTPixelBuffer::CopyImage 346に返 すと、TPixelBuffer::Copyimage 346は自身のStreamScaledPixelBlock 340を呼 び出すのが好ましい。そして、好ましい実施例では、TPixelBuffer::StreamScal edPixelBlock 340は、PixelStreamReaderのGetPixelsAlongAffineDDAメソッドを 繰り返しコールして、中間PixelBufferを一杯にし、ついで、PixelStreamWriter のPutRow 344メソッドをコールする。 StreamAndFilterScaledPixelBlock 第26図を説明する。好ましい実施例では、StreamAndFilterScaledPixelBlock 356メソッドは、ソースPixelStreamReaderのGetRow 360またはGetColumnAsRow 3 62メソッドを多態的にコールしてピクセルをA8R8G8B8またはAlpha8Gray8フォー マットにロードする。このピクセル・データはそのあとフィルタに通され、総和 されて出力ピクセルが得られるのが好ましい。フィルタリングが完了して出力ス キャンラインが得られると、デスティネーションPixelStreamWriterのPutRow 36 4メソッドがコールされてピクセルを書き出すのが好ましい。 PixelStreamWriterのPutRow 364メソッドは、畳み込みオペレーションの回数 を大幅に減少させる効率的な2パス・アルゴリズムを採用しているのが好ましい 。好ましい実施例では、使用されるフィルタ・カーネルはTGrafBundleからのTIm ageSamplingControl属性に指定されているものである。よって、同一の型との間 のピクセル・メモリの直線スケール転送か、あるいは、フォーマット変換と、転 送モードと、ディザリング行う同転送が効率よくフィルタリングされる。 第26図に示すように、好ましい実施例では、TPixelBuffer::CopyImage 366はT FrameBuffer 368メソッドによってコールされる。そして、 TPixelBuffer::CopyImage 366は自身のCreateFilteringStreamers 370メソッド を呼び出し、ついで、StreamRectilinearRotatedPixelBlockで記載したように、 同一のアクションをパフォームする。ただし、グレースケールまたはRGB間ピク セル・バッファだけが使用されることになる。一度、CreateFilteringStreamers 370がペアのPixelStreamReadersとPixelStreamWritersをTPixelBuffer::CopyIm age 366に返すと、TPixelBuffer::CopyImage 366が自身のStreamAndFilterScale dPixelBlock 356メソッドを呼び出すのが好ましい。そして、好ましい実施例で は、TPixelBuffer::StreamAndFilterScaledPixelBlockは、PixelStreamReader 3 72のGetRow 374またはGetColumnAsRow 362メソッドをコールして、中間ピクセル バッファを一杯にし、ついで、フィルタリングされたスキャンラインが準備され ると、PixelStreamWriter 376のPutRow 364メソッドをコールする。 StreamPixelsIntoConvexPolygon 第27図を説明する。好ましい実施例では、StreamPixelsIntoConvexPolygon 38 0スキャンは、エッジに添ってx,y,u,v,wを内挿して、凸面多角 形を変換し、塗りつぶすスパンごとに、ソースPixelStreamReader 386のGetPixe lsAongAffineDDA 382またはGetPixelsAlongPerspectiveDDA 384メソッドをコー ルしてピクセルを一時ピクセルバッファに入れる。デスティネーションPixelStr eamWriter 388のPutRow 390メソッドは、ピクセルを書き出すために使用される のが好ましい。よって、同一型との間のピクセル・メモリのポイント・サンプル 回転、スキュー、スケール、または射影転送またはフォーマット変換、転送モー ド、およびディザリングを受ける転送の効率が向上する。好ましい実施例では、 StreamPixelsIntoConvexPolygon 380は、ソース・ピクセルバッファがMipMapま たは多重解像度ピラミッドである場合にはフィルタ変換を行うことができる。 第27図に示すように、好ましい実施例では、TPixelBuffer::CopyImage 390はT FrameBuffer 392メソッドによってコールされる。そして、TPixelBuffer::CopyI mage 390は自身のCreateMatchingStreamers 394メソッドを呼び出し、ついで、 上記のStreamRectilinearRotatedPixelBlockで記載したように、同じアクション をパフォームするのが好ましい。一度、CreateMatchingStreamers 394がペアのP ixelStreamReadersとPixelStreamWritersをPixelBuffer::CopyImage 390に返す と、 PixelBuffer::CopyImage 390は自身のStreamPixelsIntoConvexPolygon 380メソ ッドを呼び出すのが好ましい。 そして、 TPixelBuffer::StreamPixelsIntoConvexPolygon 380は、PixelStreamReader 386 のGetPixelsAlongAffineDDA 382またはGetPixelsAlongPerspectiveDDA 384メソ ッドを繰り返しコールして、中間ピクセルバッファを一杯にし、その後、PixelS treamWriter 388のPutRow 390メソッドをコールする。 StreamAndFilterPixelsIntoConvexPolygon 第28図を説明する。好ましい実施例では、StreamAndFilterPixelsIntoConvexP olygon 400メソッドは、ソース・ピクセルバッファを、デスティネーションの凸 面多角形に区分ごとに2パスでフィルタ変換する。ソースPixelStreamReader 41 0のGetRow 412またはGetColumnAsRow 414メソッドがコールされ、ピクセルをA8R 8G8B8またはAlpha8Gray8 フォーマットにロードするのが好ましい。そして、こ のピクセル・データは2パスでフィルタにかけられ、総和がとられて出力ピクセ ルが得られるのが好ましい。フィルタリングが完了して出力ピクセル・ブロック が得られる と、デスティネーションPixelStreamWriter 416のPutRows 418メソッドがコール され、ピクセルを書き出すのが好ましい。好ましい実施例では、このPutRows 41 8メソッドは、畳み込みオペレーション回数を大幅に減少させるる効率的な区分 ごとの2パス・アルゴリズムを採用している。これは、2次元変換を2つの1次 元スケールとスキュー変換に縮減することによって行われるのが好ましい。好ま しい実施例では、使用されるフィルタ・カーネルはTGrafBundleからのTImageSam plingControl属性オブジェクトから取り出される。よって、同一型との間の効率 的なフィルタ回転か、スキューか、スケーリングか、あるいは、射影転送を行う ことができるか、あるいは、フォーマット変換と、転送モードと、ディザリング 行う同転送を行うことができる。 第28図に示すように、好ましい実施例では、TPixelBuffer::CopyImage 420はT FrameBuffer 422メソッドによってコールされる。そして、TPixelBuffer::CopyI mage 420は自身のCreateFilterStreamers 422メソッドを呼び出し、その後、こ れは、上記StreamRectilinearRotatedPixelBlockで記載したように、同じアクシ ョンをパフォームする。ただし、グレースケールまたはRGB中間ピクセルバッフ ァだけが使用されることになる。一度、 CopyFilteringStreamers 422がペアのPixelStreamReadersとPixelStreamWriters をTPixelBuffer::CopyImage 420に返すと、TPixelBuffer::CopyImage 420は自身 のStreamAndFilterPixelsIntoConvexPolygon 400メソッドを呼び出すのが好まし い。そして、好ましい実施例では、TPixelBuffer::StreamAndFilterPixelsIntoC onvexPolygon 400は、PixelStreamReader 410のGetRow 412またはGetColomnAsRo w414メソッドをコールして、中間ピクセルバッファを一杯にし、その後、フィル タ・ブロックが2パスで変換されると、PixelStreamWriter 416のPutRows 418を コールする。 多態照会(Polymorphic Query) TPixelBufferサブクラスの数はシステムの使用と共に増加していくのが好まし い。好ましい実施例では、各サブクラスはクライアントにとって不定数の属性の コンテナに過ぎない。好ましい実施例において、クライアントがTPixelBufferへ の多態参照をもっている場合を検討する。この場合、このクライアントは、カラ ーか、不透明か、あるいはZ奥行き値などの特定の属性がストアされているかど うかを知ることが必要である。イメージ編集データ・エンカプスレータ (image editing data encapsulator)は、カラー属性を含んでいないイメージ をスクリーン・アウトすることを望む場合がある。Zバッファ・レンダリング・ パイプラインは、Z平面が存在しない場合、別個のZ平面を作るのが好ましい。 好ましい実施例では、TGimageでのポイント・コンテインメント・テスト(point containment test)は、不透明がストアされているかどうかを判定し、肯定判 定された場合は、問題のピクセルが完全に透明であるかどうかを判定する必要が ある。 上記要求を全て解決するには、どのような手法をとるべきか。コンテナの名前 はMCollectibleメソッドのGetClassNameAsTokenにより得ることができるが、こ れは好ましい方法ではない。属性の型は拡張しているので、ピクセルバッファに 課されるだけの問題の包括的なリストを作成するのは好ましくない。これに対し 、型ネゴシエーションに類似したメカニズムは、はるかにクリーンで拡張可能で あり、オブジェクト指向であることが実証されている。 第29図を説明する。好ましい実施例では、属性のハイレベル記述子はTPixelAt tributes 452を通して指定される。TPixelAttributes 452は、記憶の明細を記述 することを目的としていないのが好ましい。好ましい実施例では、メソッドCont ainsPixelAttributeにより、ピクセルバッファは、これらに特定の属性が含ま れているかどうかについて答えることができる。ContainsPixelFieldはTPixelAt tributeを受け取り、Booleanのtrueかfalse結果を返すのが好ましい。別の実施 例では、GetPixelAttributesメソッドは、特定のピクセルバッファ内に含まれる 属性を全て列挙する。 GetPixelAttributesはTDequeへの参照を受け取り、この参照は、返されたとき 、ピクセルバッファにストアされている全てのピクセル属性を含んでいるのが好 ましい。好ましい実施例では、多数の事前に定義されたTPixelAttributesが用意 されているので、共通属性の標準ボキャブラリを作成することができる。サブク ラスはこれらのメソッドを提供するのが好ましい。 好ましい実施例では、PixelBuffersの主なユーザは、TFramebufferと、TGImag eと、TImageSequenceである。PixelBuffersは2つの機能を持っているのが好ま しい。一方はリードオンリピクセルをコレクションすることであり、他方は変更 可能なピクセルをコレクションすることである。好ましい実施例では、メソッド ArePixelsReadOnlyはピクセルバッファが変更可能かどうかを質問するために使 用され、BooleanのTRUEまたはFALSEを返す。ピクセルバッファは修正可能である のが好ましい。好ましい実施例では、システムには、ピクセルメモリを変更する ための機構が用意されている。 多態ピクセルバッファ・キャッシュ 好ましい実施例では、システムには、クライアントがピクセルバッファ・キャ ッシュを作成し、保守し、照会することができるメソッドが用意されている。こ れらのキャッシュはスプライト(sprite)およびキャッシュ・グラフィック・ク ライアントによって使用されるのが好ましい。これらのキャッシュは、同種の実 行時属性をもつ同じサブクラスのインスタンスに高速にブリット(blit)するた めに使用することもできる。 多態バック・バッファリング/ 相関ピクセルバッファ 追加のメソッドにより、クライアントは相関ピクセルバッファまたは「バック バッファ」(BackBuffers)を作成し、保守することができるのが好ましい。上 述したキャッシュと異なり、好ましい実施例では、これらのバックバッファと、 サブクラスのこのインスタンスとは緊密に結合されている。 TPixleBufferサブクラス 上述したように、ピクセル・メモリの編成方法は数多くある。その幾つかを挙 げると、コンポーネント・ インタリーブと、コンポーネント・プレーナと、ビット・プレーナと、タイルと 、これらの階層バージョンがある。可能なものは、絶えず拡張されている。好ま しい実施例では、クラス階層はサブクラスがメモリ編成を見せているかどうか、 ピクセス・データへのアクセスがプライベートか、パブリックかを考慮に入れて いる。 ピクセルメモリ編成と記憶 サブクラスはピクセル編成を見せることは自由であるが、そうする必要はない 。好ましい実施例では、パワーは実装を隠蔽するのではなく、クライアントのピ クセル記憶に多態アクセスすることにより導出される。さらに、サブクラスのク ライアントは、ピクセル・メモリの特定の実装に依存することができる。例えば 、8ビット・ポインタを利用するようにプログラムされたハードウェア・ルック アップ・テーブルをもつカードの場合は、Clut8PixelBuffersメモリ編成を再定 義することは歓迎されない。この8ビット・ポインタは使用されるなくなる虞が ある。 サブクラスがそのピクセル・メモリ編成を他へエクスポートしない場合は、外 部クライアントがペインタとピクセルストリーマのサブクラスのアーセナルを拡 張することは、不可能ではないにしても困難である。 これはサブクラスに依存する。あるサブクラスは、そのパワーを、実装を隠蔽す ることにより得ている。他のサブクラスは、メモリ・レイアウトをパブリックに し、クライアントがピクセル値を不正確な状態にセットするのを防止するために 、アクセスをプライベートにしている。 好ましいサブクラス 好ましい実施例では、多数のイメージ形式がサポートのために選択されている 。この選択プロセスは、現在のビデオ・カード標準と、交換形式と、非インテリ ジェント・バイレベル・プリンタと、3次元レンダリングと、等色と、2次元イ メージ合成をサポートする必要から行われたものである。好ましい実施例では、 全てのサブクラスは、初期状態では、コンポーネント・インタリーブ・メモリ編 成になっている。好ましい実施例では、TComponentInterleavedPixelBufferはTP ixelBufferのサブクラスである。全てのPixelBufferはTPixelBufferから派生さ れるのが好ましい。第30図はクラス階層図であり、TPixelBufferクラス系統を示 す。 TComponentInterleavedPixelBuffer 第32図を説明する。好ましい実施例では、TComponentInterleavedPixelBuffer 500は、コンポーネント・インタリーブまたはチャンキ(chunky)ピクセルバッ ファの指定を基本クラスレベルでサポートするTPixelBufferのサブクラスである 。これが追加する新しい成分は、ピクセル・メモリを指す単一のポインタと、4 バイトの倍数で指定されるスキャンライン・サイズであるのが好ましい。 好ましい実施例では、サブクラスはGetPixelSizeを純粋な仮想メソッドとして 追加し、これには、MovePixelBlockメソッドのデフォルト版が用意されている。 従って、好ましい実施例では、GetBestScanlineSize メソッドは、クライアント が自身のピクセル・メモリを割り振るときに利用できる。好ましくは、返される サイズは、プラットフォームに合わせて最適化されているが、結果は4の倍数に なっていることが必要である。 メモリがPixelBuffer により割り振られており、しかも、コンストラクタに渡 されていない場合、ピクセルバッファは、削除時に、そのピクセル・メモリを処 分するのが好ましい。よって、フレームバッファのマッピング・インが可能にな る。好ましい実施例では、ピクセル・メモリの先頭を指すポインタは、 GetBaseAddressメソッドにより取得することができ、スキャンライン・サイズは GetScanlineSize メソッドにより取得することができる。 TA8R8G8B8PixelBuffer 第33図を説明する。好ましい実施例では、TA8R8G8B8PixelBufferは4つの8ビ ット・コンポーネントを備えた32ビット・ピクセルのためのコンテナである。こ れらのコンポーネントとは、第33図に示すように、アルファと、赤と、緑と、青 であるのが好ましい。赤と、緑と、青のコンポーネントは、RGB空間に座標を形 成する。PixelBufferのTColorProfileメソッドは、このRGBの3つのコンポーネ ントからXYZカラーを得るのが好ましい。好ましい実施例では、アルファ・コン ポーネントは不透明を指定する。カラー・コンポーネントはアルファ値よりも前 に重み付けされないのが好ましい。好ましい実施例では、これは、kRGBPixelFie ldと、kAlphaPixelFieldと、kColorPixelFieldピクセル・フィールドを含むこと が考慮されている。(ピクセル・メモリ編成のここでの説明と以下の説明は、好 ましい実施例においてピクセル・レイアウトが高レベル言語からどのように見え るかを中心に述べる。) TL12A12B12PixelBuffer CIElabは可視スペクトルの全てではないとしも、その大部分をストアするため の離散化カラー空間であるのが好ましい。CIElabコンポーネントは8または12ビ ット値に非線形的にマッピングされるのが好ましい。 TAlpha8Gray8PixelBuffer 第34図を説明する。好ましい実施例では、TAlpha8Gray8PixelBufferは、2つ の8ビット・コンポーネントを含む16ビット・ピクセルのためのコンテナである 。これらのコンポーネントはアルファとグレーを備えているのが好ましい。好ま しい実施例では、グレー・コンポーネントはルミナンス空間に座標を作成する。 PixelBufferのTColorProfileはこのグレー値からXYZ カラーを得るのが好ましい 。アルファ・コンポーネントは不透明を指定するのが好ましい。好ましい実施例 では、グレー・コンポーネントはアルファ値よりも前に重み付けされない。好ま しい実施例では、kGrayscalePixelFieldと、kAlphaPixelFieldと、kColorPixelF ieldピクセル・フィールドを含むことが考慮される。 TIndexedPixelBuffer 第35図に示すように、好ましい実施例では、TIndexedPixelBuffer 510は、1 つのコンポーネントを含むピクセルのための抽象基本クラスコンテナである。こ のコンポーネントはPixelBufferのTColorlist512へのインデックスであるのが好 ましい。このインデックスからXYZカラーを導出するため、これは、インデック スとTXYZC カラーの参照で、TColorList 512のGetColorメソッドをコールするの が好ましい。好ましい実施例では、TColorList 512のTColorProfileは、PixelBu fferによって参照されるものと同じである。TColorを該当のインデックスにマッ ピングするには、colorlistを引数としてTColorsFindIndexがコールされるのが 好ましい。 TIndexPixelBuffer 510は、TColorListの参照をストアしているのが好ましい 。好ましい実施例では、カラーリストはGetColorListメソッドによりアクセスで きる。2〜256個のカラーを有するTColorListsは、サブクラスにより処理される のが好ましい。 TClut2PixelBuffer 第36図に示すように、好ましい実施例では、TClut2PixelBuffer は1つの2ビ ット・コンポーネン トを含むピクセルのためのコンテナである。このコンポーネントは、PixelBuffe rのTColorListへのインデックスである。TColorListは4つのカラー・エントリ を含んでいるのが好ましい。これは、kRGBPixelFieldlとkColorPixelFieldピク セル・フィールドを含んでいるのが好ましい。 TClut4PixelBuffer 第37図に示すように、好ましい実施例では、TClut4PixelBufferは1つの4ビ ット・コンポーネントを含むピクセルのためのコンテナである。このコンポーネ ントは、PixelBufferのTColorListへのインデックスである。TColorListは16個 のカラー・エントリを含んでいるのが好ましい。これは、kRGBPixelFieldlとkCo lorPixelFieldピクセル・フィールドを含んでいるのが好ましい。 TClut8PixelBuffer 第38図に示すように、好ましい実施例では、TClut8PixelBufferは1つの8ビ ット・コンポーネントを含むピクセルのためのコンテナである。このコンポーネ ントは、PixelBufferのTColorListへのインデックスである。TColorListは256個 のカラー・エン トリを含んでいるのが好ましい。好ましい実施例では、kRGBPixelFieldlとkColo rPixelFieldピクセル・フィールドを含むことが考慮される。 TSystemClut8PixelBuffer 好ましい実施例では、TSystemClut8PixelBufferはTClut8PixelBufferのサブク ラスである。ピクセルはまだカラー・リストへの8ビット・インデックスを表し ているが、カラー・リストは、好ましい実施例では、一定のデフォルト・カラー ・リストである。よって、TColorを正しいインデックスに変換するとき、仮定す ることができる。TSystemClut8PixelBufferのペインタとピクセルストリーマは 、これらの仮定を用いて、パフォーマンスを向上させることができる。 TGray4PixelBuffer 第39図に示すように、好ましい実施例では、TGray4PixelBuffer は1つの4ビ ット・コンポーネントを含むピクセルのためのコンテナである。このコンポーネ ントはピクセルバッファのTGrayColorListへのインデックスである。TGrayColor Listは、白から黒までの16個のグレー・カラーの固定ランプである。kGrayscale PixelFieldとkColorPixelFieldピクセル・ フィールドを含むことが考慮される。 TGray8PixelBuffer 第40図に示すように、好ましい実施例では、TGray8PixelBufferは1つの8ビ ット・コンポーネントを含んでいるピクセルのためのコンテナである。このコン ポーネントはPixelBufferのTGrayColorListへのインデックスである。TGrayColo rListは白から黒までの256個のグレーカラーの固定ランプであるのが好ましい。 好ましい実施例では、kGrayscalePixelFieldlとkColorPixelFieldピクセル・フ ィールドを含んでいる。 TAlpha8PixelBuffer 第41図を説明する。好ましい実施例では、TAlpha8PixelBufferはTGray8PixelB ufferのサブクラスであるが、唯一の違いは、グレー値がルミナンスではなく、 不透明を指定していることである。これはkAlphaPixelFieldピクセル・フィール ドを含んでいるのが好ましい。 TBitMappedPixelBuffer 第42図に示すように、好ましい実施例では、TBitmappedPxelBufferは、1ビッ ト・コンポーネントを含むピクセルのためのコンテナである。このコンポーネン トはピクセルバッファのTGrayColorListへのインデックスである。TGrayColorLi stは2つのグレー値だけを含んでおり、それは黒と白である。これはkGrayscale PixelFieldとkColorPixelFieldピクセル・フィールドを含んでいるのが好ましい 。 THalftoneBitmappedPixelBuffer 第43図を説明する。好ましい実施例では、THalftoneBitmappedPixelBufferはT BitmappedPixelBufferのサブクラスである。唯一の違いは、到来するTColorから 導出されたグレー値が周期的パターンに対する閾値であるのが好ましい。このTH alftoneオブジェクトはGetHalftoneメソッドにより取り出すことができる。これ はSetHalftoneメソッドによりセットできる。周期的閾値パターンはfThresholdA rrayフィールドの中で参照されたハーフトーン・マトリックスにストアされる。 これはアンインテリジェント・バイレベル・プリンタで使用されるサブクラスで あるのが好ましい。 TAlphalPixelBuffer 第44図を説明する。好ましい実施例では、TAlpalPixelBufferはTBitmappedPix elBufferのサブクラスである。唯一の違いは、グレー値がルミナンスではなく不 透明を指定していることである。これはkAlphaPixelFieldピクセル・フィールド を含んでいるのが好ましい。 Tb8R8G8B8PixelBuffer 第45図を説明する。好ましい実施例では、Tb8R8G8BPixelBufferは、4つの8 ビット・コンポーネントを含む32ビット・ピクセルのためのコンテナである。最 上位コンポーネントは未定義であり、残りのコンポーネントは赤、緑、および青 であるのが好ましい。赤、緑および青コンポーネントはRGB空間に座標を形成す る。ピクセルバッファのTColorProfileはこのRGB3成分からXYZカラーを導出す るために使用されるのが好ましい。このピクセルバッファは、見かけ上32ビット ・ピクセルをサポートしていても、最上位バイトをサポートする物理メモリがな いビデオ・カードを表すために使用される。これはkRGBPixelFieldとkColorPixe lFieldピクセル・フィールドを含んでいるのが好ましい。 TZ32PixelBuffer 第46図に示すように、好ましい実施例では、TZ32PixelBufferは、Z奥行きを 表す1つの32ビット・コンポーネントを含む32ビット・ピクセルのためのコンテ ナである。Z奥行き値はピクセルの3次元奥行きまたは層を指定している。しば しば、個々の3次元オブジェクトはレンダリングされて個々のTPixelBufferに入 れられる。好ましい実施例では、z奥行き値により、個々のピクセルバッファは 、個々のオブジェクトの前方から後方への配列を正確に反映した最終的シーンに アセンブルすることができる。これはkZDepthPixelFieldピクセルフィールドを 含んでいるのが好ましい。 TA8R8G8B8Z32PixelBuffer 第47図に示すように、好ましい実施例では、TA8MG8B8232PixelBufferは、32ビ ット・コンポーネントと4つの8ビット・コンポーネントを含む64ビット・ピク セルのためのコンテナである。これらのコンポーネントはZ奥行きと、アルファ と、赤と、緑と、青である。赤と、緑と、青はRGB 空間に座標を形成する。好ま しくは、ピクセルバッファのTColorProfileはこのRGB 3成分からXYZカラーを導 出する。好まし い実施例では、アルファ・コンポーネントは不透明を指定している。カラー・コ ンポーネントはアルファ値よりも前に重み付けされないのが好ましい。 好ましい実施例では、Z奥行き値はピクセルの3次元奥行きまたは層を指定し ている。3次元オブジェクトはレンダリングされて別々のTA8R8G8Z32PixelBuffe rに入れられるのが好ましい。z奥行き値により、個々のピクセルバッファは、 個々のオブジェクトの前方から後方への配列を正確に反映した最終的シーンにア センブルすることができる。これはkRGBPixelField、kAlphaPixelFieldと、kZDe pthPixelFieldと、kColorPixelFieldピクセルフィールドを含んでいるのが好ま しい。 TAlR5G5B5PixelBuffer 第48図に示すように、好ましい実施例では、TAlR5G5B5PixelBufferは、1つの 1ビット・コンポーネントと、3つの5ビット・コンポーネントを含む16ビット ・ピクセルのためのコンテナである。これらのコンポーネントはアルファと、赤 と、緑と、青である。赤、緑および青コンポーネントはRGB空間に座標を形成す る。RGB 3成分からXYZカラーを導生するには、ピクセルバッファのTColorProfi leを使用する必要がある。アルファ・コンポーネントは不透明を指定 する。カラー・コンポーネントはアルファ値よりも前に重み付けされない。これ はkRGBPixelFieldと、kAlphaPixelFieldと、kColorPixelFieldピクセルフィール ドを含んでいる。 TblR5G5B5PixelBuffer 第49図に示すように、好ましい実施例では、TblR5G5B5PixelBufferは、1つの 1ビット・コンポーネントと、3つの5ビット・コンポーネントを含む16ビット ・ピクセルのためのコンテナである。最上位コンポーネントは未定義である。残 りのコンポーネントは赤、緑および青である。赤、緑および青コンポーネントは RGB空間に座標を形成する。RGB 3成分からXYZカラーを導出するには、ピクセル バッファのTColorProfileを使用する必要がある。これはkRGBPixelFieldおよびk ColorPixelFieldピクセルフィールドを含んでいるのが好ましい。 TR8G8B8PixelBuffer 好ましい実施例では、第50図に示すように、TR8G8B8PixelBufferは、3つの8 ビット・コンポーネントを含む24ビット・ピクセルのためのコンテナである。最 上位コンポーネントは未定義である。残りの コンポーネントは赤、緑および青である。赤、緑および青コンポーネントはRGB 空間に座標を形成する。このRGB 3成分からXYZカラーを導出するには、ピクセ ルバッファのTColorProfileを使用する必要がある。このピクセルバッファは、 不透明RGBイメージを表すための記憶の点でより効率的である。これはkRGBPixel FieldとkColorPixelFieldピクセルフィールドを含むのが好ましい。 TPixelBufferのサブクラス化 好ましい実施例では、CMYKのように新しいサブクラスを必要とするデバイス固 有のカラー・モデルをサポートするためか、あるいはイメージ・エディタのため に、追加のPixelBufferクラスを追加して、コンポーネント・インタリーブ・タ イラか、あるいはコンポーネント・プレーナ・ピクセルバッファ・サブクラスを 追加し、参照の局所性をレバリッジすることができる。さらに、ハードウェア・ プラットフォーム・ベンダーは、真正のカラー・イメージをピクセル当たり12-1 6ビットで再現できるTYUVPixelBufferを書くことにより、品質を犠牲にしないで 、ビデオRAM所用量を低減することができる。ビデオイフェクトカード・ベンダ ーは、そのカードをグラフィックス・システムとデスクトップに統合化すること ができる。ネット ワークからのビデオフィードは、TPixelBufferおよびTGImageサブクラスにより デスクトップに迅速に統合することができるのが好ましい。 再編成されたピクセル・メモリのサポートの不必要に複雑なのは、慣用のシス テムでは、抑制することができる。例えば、Apple社のQuickDraw32では、約1年 かかって、16ビットと32ビット・ピクセル・マップのサポートを追加した。最初 の塗りつぶされた矩形をこのようなデバイス上に表示するには、無駄な努力であ った。好ましい実施例では、TPixelBufferのサブクラスは、デフォルト・レンダ リングのふるまいをget するSetおよびGetPixelメソッドをオーバライドするだ けでよい。TPixelBufferのCreatePainterとCreatePixelStreamerメソッドは、仮 想GetおよびSetPixelメソッドに依存する幾つかのジェネリック・ペインタとピ クセルストリーマを有する。TPixelBufferのMovePixelBlockメソッドはSetおよ びGetPixelに基づいて実装もされる。このデフォルトのふるまいは出荷プロダク トに必要なパフォーマンスが最適化されない場合もあるが、これは、開発目的の ためのインリクメンタルモデルを作成する。 一度、新しいPixelBufferサブクラスに独自のペインタとピクセルストリーマ のアーセナルがあると、他の共通のピクセルバッファに対して、サブクラスのピ クセル・メモリを理解するPixelStreamWriterを書く ことは、価値があるかもしれない。この機構により、サード・パーティは、TMPE GPixelBufferのような新しいPixelBufferサブクラスを開発することができるの が好ましい。新しいPixelBufferサブクラスは、ピクセルをスクリーン・デバス に転送する前にピクセルをある種の共通のフォーマットに変換する必要がない。 TPixelBuffer/TGImage 第51図を説明する。好ましい実施例では、ピクセル・メモリのエンカプスレー タとして、TPixelBufferは2つの目的をサーブする。TPixelBufferはレンダリン グ・デスティネーション・オブジェクトであると同時に、イメージと呼ばれるレ ンダリング・プリミティブとして使用されるオブジェクトでもある。好ましい実 施例では、TPixelBufferは、好ましい成分を全て含んでいなくても、イメージ・ プリミティブを完全に記述することができる。 TGImageは、TPixelBufferを、TGrafPortレベルでエクスポーズする必要のない クラスであるのが好ましい。TGImage はレンダリングを行うときに必要になる追 加成分も含んでいる。TGImageはTPixelBufferと、TGRect境界矩形と、デバイス 変換を含んでいる。これは、好ましい実施例では、イメージ・プリミティブを 幾何形状で表したものと同じである。
【手続補正書】特許法第184条の8 【提出日】1994年12月14日 【補正内容】 (原文第1頁ないし第3頁の翻訳文) 明細書 多態グラフィック・デバイス 著作権所有表記 本特許出願は、著作権保護の対象となる内容を含んでいる。この著作権保護の 対象となる内容を、情報を得る目的で、本特許出願の一部として複製してもそれ を妨げるものではないが、他の権利、特に、本内容を商業的に利用する権利を全 て留保する。 技術分野 本発明は、コンピュータ・グラフィックスに関し、特に、ピクセル・メモリの 多態操作に関する。 背景の技術 コンピュータ・スクリーン上に描かれるコンピュータ・ピクチャやイメージは 、コンピュータ・グラフィックスと呼ばれている。コンピュータ・グラフィック ・システムは、グラフィックスをディジタルで内部にストアしている。ピクチャ は、小さな画素、すなわち、ピクセルに分割されている。従って、コンピュータ ・ピクチャつまりグラフィックは、実際には、個々の画素、すなわち、ピクセル の集合体である。内部、すなわち、コンピュータのディジタル世界では、各ピク セルには、ピクセルの属性を表すディジタル値の集合が割り当てられている。ピ クセルの属性は、例えば、ピクセルのカラーと、明度と、ロケーションを記述す ることができる。従って、ピクセルのカラーか、明度か、あるいは、 ロケーションを変更するには、その特定の属性のディジタル値を変更するだけで よい。 慣用のコンピュータ・グラフィック・システムは、イメージか、ビットマップ か、あるいはピクセル・マップとして知られているプリミティブを利用して、コ ンピュータ・イメージをピクセルの集合体として表す。これらのプリミティブは ピクセル属性と、個々のディジタル値の2次元配列を表す。典型的には、このよ うなプリミティブは、ピクセル・データを指すポインタと、ピクセルサイズと、 スキャンライン・サイズと、境界と、場合によっては、カラー・テーブルへの参 照を含む「構造体」(データ構造)として表される。よく行われる仮定であるが 、ピクセルは、RGB(red,green,blue)カラーか、ルミナンスか、あるいは、 カラーテーブルを指すインデックスを表すものとする。従って、プリミティブは 2重の役割、すなわち、フレームバッファとしての役割と、フレーム記憶指定( frame storage specification)としての役割をサーブする。 急成長のコンピュータ・グラフィック産業は、ピクセル表現に関する事実上の 標準の上に成り立っている。この標準に当てはまらないイメージ形体は、全て、 いやが応でも2流の市民権を得ることになる。しかし、慣用のグラフィックス・ システムは拡張不可能である。これらのシステムは、通常、特定のクラスのイメ ージに対してオペレートする特定のアプリケーションの専用になっている。これ は、急速に変化しているディジタル技術環境では認容できない。日々、新しいア プリケーションが出現し、この新しいアプリケーションを用いて、新しいイメー ジ型を新しい方法で処理し操作する必要がある。従って、拡張不可能なグラフィ ック仕様をもつグラフィックス・システムを使用するのは、先見の明がなく、早 い話、時代後れなのである。 グラフィカル・アプリケーションと、属性と、ピクセル・メモリに対する編成 上の条件は、多様化しており拡大している。従って、専用化された単一目的のグ ラフィックス・システムは、現在のユーザ要求を満たすことができない。動的環 境を提供する頑強なグラフィックシステムに対する要求があり、新しいアプリケ ーション、新しいイメージ・タイプを取り入れるため拡張することができ、しか も、新しいピクセル操作を備えた拡張可能なグラフィック仕様に対する要求が ある。 例えば、2つのアプリケーションが、同じセットのピクセル属性を必要とする ことはまれである。3次元アプリケーションはz値(奥行き配列)をストアし、 他方、アニメーションおよびペイント・アプリケーションはアルファ値をストア する。対話式マテリアル・エディタおよび3次元ペイント・プログラムは、3次 元の陰影情報をストアするのに対し、ビデオ作成システムはYUV 4:2:2 ピクセル 配列を必要とする。ハードウェアのクリッパはレイヤ(layer)タグをストアし 、高度のシステムはヒット検出のためにオブジェクトIDをストアすることができ る。さらに、カラー空間のようなグラフィカル属性は、PhotoYCC(商標)のよう な一定の付加物を蓄積している。等色(color matching)技法は依然として発展 段階にあり、どの量子化カラー空間が可視スペクトルをピクセルとして記録する のに最良であるかはまだ明らかではない。従って、グラフィック世界では、デー タ・タイプは様々である。記憶編成技術も様々である。 問題をさらに悪化させているのは、虞らく、アプリケーションが新しくなるた びに、異なるピクセル・メモリ編成が必要になることである。例えば、コンポー ネント・インターリーブか、あるいは、”Chunky”スキャンライン配向は、Mach intosh(登録商標)ビデオ・カードで主流の編成になっている。しかし、コンポ ーネント・インターリーブ・バンク付きスイッチ・メモリが、小規模アドレス空 間を有するホストを目標としたビデオ・カードではトレンドになっている。コン ポーネント・プレーナ・タイルと、コンポーネント・インターリーブ・タイルは 、プリプレス(prepress)と、エレクトロニック・ペイント・プログラムのトレ ンドになっている。しかし、複数のパスでプリントまたはスキャンする入出力デ バイスでは、コンポーネント・プレーナ形式の方が好まれている。多重解像度ま たはピラミッド形式はリアルタイムの再サンプリングを必要とする静的イメージ では普通になっている。さらに、メモリを大量に消費するイメージは、種々の方 法でコード化できる圧縮ピクセル・データとして表現することができる。 グラフィック・アプリケーションと、データ・タイプと、ピクセル・メモリ操 作は、多様になり、著しく成長している。周知の全てのアプリケーションを処理 することができる多目的システムであって、まだ未知のアプリケーションを処理 するために拡張可能な多目的システムに対する要求がある。単一プログラムで解 決することは実用的でない。周知の要件をことごとく処理することはできるが、 処理は莫大で、扱いが困難になるであろう。しかし、このようなプログラムがダ ウンサイズされている場合は、最早、全てのアプリケーションを扱うことができ い。 あるいはまた、機能を幾つかの小さなプログラムに分割することも可能である 。望まなくても、この技法に従ったプログラムの数が多くなる。また、どの機能 を所定のプログラムに置くかをどのように決めるのか。一人のユーザの要件をど のプログラムに収めておくのか。ユーザが二人のときはどうするのか。従って、 多数のユーザの要求を満たす汎用プログラムに対する要求がある。しかも、個々 のユーザがカスタマイズし、特定の要求を満たすように、汎用プログラムに付加 することができる汎用プログラムに対する要求がある。 NOVATICA,Vol.17,No.90,1991,Spain,pp.83-89,Navarro‘Que Son La He rienca Y El Polimofismo’には、ラスタディスプレイ上にピクセルから構成さ れる幾何学形状を描くグラフィック・エディタが開示されている。幾何学形状は 、矩形、正方形そしてその他の基本幾何学形状を含む。エディタは、C++プログ ラミング言語を使いクラスとしての図形を表示することを含む。 発明の概要 オブジェクト指向システムは、従来システムが遭遇する問題を解決するのに適 している。オブジェクト指向設計によると、多数のユーザの要求を満たす汎用プ ログラムは得られるものの、個々のユーザが独自の要求に合うように汎用プログ ラムをカスタマイズし、強化できるようにした汎用プログラムは得られない。一 般的に、オブジェクトは、多くのオペレーションにより特徴付けられるとともに 、これらのオペレーションの効果を覚えている状態により特徴付けられる。 オブジェクト指向オペレーティング・システムは、システムの明確に範囲が定 められたパーツか、あるいは、関数である多くのオブジェクトを備えている。各 オブジェクトは、そのオブジェクトに関する情報と、オブジェクトがその情報ま たは自身に渡された情報に対して実行できる1組のオペレーションを含む。例え ば、オブジェクトをMANと名づけることが可能である。オブジェクトMANに収めら れている情報、すなわち、その属性としては、年齢、アドレス、職業などがある 。これらの属性はオブジェクトMANを記述している。また、オブジェクトは、そ こに収められている情報に対して実行できる1組のオペレーションも含む。従っ て、MANは、あるオペレーションを実行して、その職業を医者から弁護士に変更 することができる。 オブジェクトは、互にメッセージを送信して対話する。これらのメッセージは 、受信オブジェクトを刺激して、なんらかのアクション、すなわち、そのオブジ ェクトに含まれるオペレーションの1つ以上を実行する。本発明では、通信オブ ジェクトは多数存在する。オブジェクトの中には、共通の特性をもち、あるクラ スにグループ化される。クラスとはテンプレートであり、同一クラスの他のメン バーと同じ情報とオペレーションを含む新しいオブジェクトを作成することがで きる。 あるクラスから作成されたオブジェクトは、そのクラスのインスタンスと呼ば れる。クラスは、あるインスタンスに最初から入っているオペレーションと情報 を定義している。これに対して、インスタンスの現在状態はそのインスタンスに 対して実行されるオペレーションによって定義される。従って、所定のクラスの 全てのインスタンスは、同等に作成される。これに対して、その後のオペレーシ ョンは、同じ親クラスから派生したその兄弟および姉妹と異なり、各インスタン スを一意のオブジェクトにすることができる。 多態とは、刺激またはメッセージの送信側が、受信インスタンスのクラスを知 っている必要がないことを意味する。どのオブジェクトがそのオペレーションを パフォームするか、そのオブジェクトがどのクラスに属しているかは関係なく、 送信側は、受信側があるオペレーションをパフォームすることができることだけ を知る必要がある。 【手続補正書】特許法第184条の8 【提出日】1995年4月6日 【補正内容】 請求の範囲 1.コンピュータ(10)のメモリ(14)にストアされたピクセル・データ(38, 38)を、幾何形状(158)を表現するクラス(140,142)として管理し表示する装 置であり、ユーザとインタフェースするオブジェクト指向オペレーティング・シ ステム(140)と、該オペレーティング・システムに制御されるデータ・プロセ ッサ手段(10)と、該データ・プロセッサ手段により制御されるデバイスであっ て、グラフィック・イメージ(158)を作成するため複数のピクセル(154)を表 示するカラー・ディスプレイ・デバイス(38)と、ピクセル・データをストアす る複数のロケーション(190)をもつ記憶手段を有する装置であり、前記クラス から導出されたグラフィック・オブジェクトを多態に管理する手段をさらに含む 装置(10,12,14,18,20)であって、 複数のカラー属性を有する抽象基本クラスであり、前記複数のカラー属性が前 記カラー・ディスプレイ・デバイス(38)に表示するためのカラー符号化フォー マットを指定し、前記配列(164)により表現される前記ピクセルにそれぞれ適 用可能である抽象基本クラスであり、 予め定めた方法で前記複数のピクセルのアピアランスを変更するため、前記複 数のロケーションのうち選択したロケーションにあるピクセル・データを修正す る複数のメソッド(184,188,200)を有する抽象基本クラスであり、前記複数の メソッドがカラー属性(452)に対応する抽象基本クラスと、 前記複数のピクセルは、前記カラー・ディスプレイ・デバイス(38)では、そ れぞれ、前記オブジェクト指向オペレーティング・システムで、グラフィック・ オブジェクトを前記抽象基本クラスの子孫として表現する前記複数のピクセルに 対するアピアランスを表示するため、前記カラー・ディスプレイ・デバイスを制 御するピクセル・データ(186)を有し、 前記ピクセス・データを多態に管理するピクセル・バッファ・オブジェクトで あって、前記メモリと前記ピクセル・バッファにストアされた前記ピクセルの実 際のデータ・フォーマットとは独立して、前記ピクセル・データを表現する抽象 配列(164)を有するピクセル・バッファ・オブジェクト(142)と、 前記複数の記憶ロケーション(190)のうちの選択された記憶ロケーションを 参照する手段であって、前記選択された記憶ロケーションは前記配列(164)に より表現されたピクセルに対応する手段と、 前記ピクセル・バッファ・オブジェクトがその抽象基本クラスから作成される 時点で、前記ストアされたピクセル・データ・フォーマットに適するメソッドを 、抽象基本クラスから選択する手段と、 前記カラー属性に応答して、前記カラー属性(452)に対応する前記選択され たメソッドを含む多態ペインタ・オブジェクト(450)を作成し、しかも、前記 ピクセル・データ・フォーマットに基づき前記ピクセル・データを多態に操作す る手段と を備えたことを特徴とする装置。 2.ユーザとインタフェースするオブジェクト指向オペレーティング・システ ム(140)と、該オペレーティング・システムにより制御されるデータ・プロセ ッサ手段(10)と、該データ・プロセッサ手段により制御される装置であって、 グラフィック・イメージ(158)を形成するために複数のピクセル(154)を表示 するカラー・ディスプレイ・デバイス(38)と、複数のロケーション(190)を 有し、ピクセル・データをストアする記憶装置を用いて、コンピュータ(10)の メモリ(14)にストアされた前記ピクセル・データ(36,38)を、幾何形状(158 )を表わすクラス(140,142)として管理および表示する方法であり、クラスか ら導出されたグラフィック・オブジェクトを多態に管理する方法であって、 前記カラー・ディスプレイ・デバイス(38)上に表示するために、カラー符号 化フォーマットを指定する複数のカラー属性であって、前記配列(164)により 表現された各ピクセルに適用可能な複数のカラー属性(452)を有する抽象基本 クラスを作成するステップであり、 前記抽象基本クラスが、予め定めた方法で前記複数のピクセルのアピアランス を変更するため、前記の複数のロケーションのうちの選択されたロケーションの ピクセルデータを修正する複数のメソッド(184,188,200)を有し、前記複数の メソッドがそれぞれカラー属性(452)に対応するステップであり、 前記複数のピクセルは、前記カラー・ディスプレイ・デバイス(38)では、そ れぞれ、前記オブジェクト指向オペレーティング・システムで、グラフィック・ オブジェクトを前記抽象基本クラスの子孫として表現する前記複数のピクセルに 対するアピアランスを表示するため、前記カラー・ディスプレイ・デバイスを制 御するピクセル・データ(186)を有するステップと、 前記ピクセル・データを多態に管理するためのピクセル・バッファ・オブジェ クトを作成するステップであり、 前記ピクセル・バッファ・オブジェクト(142)が、前記メモリと前記ピクセ ル・バッファにストアされた前記ピクセルの実際のデータ・フォーマットとは独 立して、前記ピクセル・データを表現する抽象配列(164)を有するステップと 、 前記複数の記憶ロケーション(190)のうちの選択された記憶ロケーションに 対する参照を作成するステップであって、前記選択された記憶ロケーションが前 記配列(164)により表現されたピクセルに対応するステップと、 前記ピクセル・バッファ・オブジェクトがその抽象基本クラスから作成された 時点で、前記ストアされたピクセル・データ・フォーマットに適するメソッドを 、抽象基本クラスから選択するステップと、 前記カラー属性(452)に対応する前記選択されたメソッドを含む多態ペイン タ・オブジェクト(450)を前記カラー属性に応答して作成し、しかも、前記ピ クセル・データ・フォーマットに基づき前記ピクセル・データを多態に操作する ステップと を備えたことを特徴とする方法。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CZ,DE,DK,ES,FI,GB,H U,JP,KP,KR,KZ,LK,LU,LV,MG ,MN,MW,NL,NO,NZ,PL,PT,RO, RU,SD,SE,SK,UA,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.ピクセルデータを多態管理する装置であって、 (a)データ処理手段と、 (b)ピクセル記憶手段と、 (c)ユーザ・インタフェース手段と、 (d)データ・プロセッサ上で稼働するオブジェクト指向オペレーティング・ システムと、 (e)複数のピクセルを表し、複数の属性を有する抽象基本クラスと、 (f)抽象基本クラスの属性をもつ新しいオブジェクトを、ユーザが作成する ことができるオブジェクト作成手段であって、新しいオブジェクトが抽象基本ク ラスの子孫としてオブジェクト指向オペレーティング・システムに存在するオブ ジェクト作成手段と を具備したことを特徴とする装置。 2.請求の範囲第1項において、オブジェクトに照会して、ストアされた属性を 判断するプロセッサ手段を含むことを特徴とする装置。 3.請求の範囲第1項において、追加の属性を、新しく作成されたオブジェクト にカプセル化するオブジェクト編集手段を含むことを特徴とする装置。 4.請求の範囲第3項において、新しく作成されたオブジェクトは、レンダリン グまたはコピーすることができるピクセルバッファを備えたことを特徴とする装 置。 5.請求の範囲第3項において、新しく作成されたオブジェクトは、blitloopを 備えたことを特徴とする装置。 6.請求の範囲第3項において、新しく作成されたオブジェクトは、Getピクセ ル・メモリ変更機構を備えたことを特徴とする装置。 7.請求の範囲第3項において、新しく作成されたオブジェクトは、SetPixelピ クセル・メモリ変更機構を備えたことを特徴とする装置。 8.請求の範囲第3項において、新しく作成されたオブジェクトは、BitBltピク セル・メモリ変更機構を備えたことを特徴とする装置。 9.請求の範囲第3項において、新しく作成されたオブジェクトは、CopyImage ピクセル・メモリ変更機構を備えたことを特徴とする装置。 10.請求の範囲第3項において、新しく作成されたオブジェクトは、相関バック ・バッファを備えたことを特徴とする装置。 11.請求の範囲第3項において、新しく作成されたオブジェクトは、ピクセル転 送モード備えたことを特徴とする装置。 12.請求の範囲第3項において、新しく作成されたオブジェクトは、新しいイメ ージ型を備えたことを特徴とする装置。 13.請求の範囲第1項において、基本クラスは、MCollectibleから導出されたTP ixelBufferであることを特徴とする装置。 14.請求の範囲第3項において、新しく作成されたオブジェクト属性は、アクテ ィブ境界オブジェクトを含むことを特徴とする装置。 15.請求の範囲第13項において、新しく作成されたオブジェクト属性は、参照解 像度を含むことを特徴とする装置。 16.請求の範囲第13項において、新しく作成されたオ ブジェクト属性は、参照配向を含むことを特徴とする装置。 17.請求の範囲第3項において、新しく作成されたオブジェクトは、連続座標と 離散ピクセル・オブジェクトとの間の変換を含むことを特徴とする装置。 18.請求の範囲第3項において、新しく作成されたオブジェクトは、比色特徴付 けオブジェクトを含むことを特徴とする装置。 19.請求の範囲第3項において、新しく作成されたオブジェクトは、TSpanPaint erオブジェクトを含むことを特徴とする装置。 20.請求の範囲第3項において、新しく作成されたオブジェクトは、THairLineP ainterオブジェクトを含むことを特徴とする装置。 21.請求の範囲第3項において、新しく作成されたオブジェクトは、TAntialias HairLinePainterオブジェクトを含むことを特徴とする装置。 22.請求の範囲第3項において、新しく作成されたオブジェクトは、TGlyphPain terオブジェクトを含む ことを特徴とする装置。 23.請求の範囲第3項において、新しく作成されたオブジェクトは、TAntialias edGlyphPainterオブジェクトを含むことを特徴とする装置。 24.請求の範囲第3項において、新しく作成されたオブジェクトは、BitBltオブ ジェクトを含むことを特徴とする装置。 25.請求の範囲第3項において、新しく作成されたオブジェクトは、CopyImage オブジェクトを含むことを特徴とする装置。 26.請求の範囲第3項において、新しく作成されたオブジェクトは、CopyImage オブジェクトを含むことを特徴とする装置。 27.請求の範囲第3項において、新しく作成されたオブジェクトは、StreamPixe lBlockオブジェクトを含むことを特徴とする装置。 28.請求の範囲第3項において、新しく作成されたオブジェクトは、StreamRect ilinearRotatedPixelBlockオブジェクトを含むことを特徴とする装置。 29.請求の範囲第3項において、新しく作成されたオブジェクトは、StreamScal edPixelBlockオブジェクトを含むことを特徴とする装置。 30.請求の範囲第3項において、新しく作成されたオブジェクトは、StreamAndF ilterScaledPixelBlockオブジェクトを含むことを特徴とする装置。 31.請求の範囲第3項において、新しく作成されたオブジェクトは、StreamPixe lsIntoConvexPolygonオブジェクトを含むことを特徴とする装置。 32.請求の範囲第3項において、新しく作成されたオブジェクトは、 StreamAndFilterPixelsIntoConvexPolygonオブジェクトを含むことを特徴とする 装置。 33.請求の範囲第3項において、新しく作成されたオブジェクトは、TComponent InterleavedPixelBufferオブジェクトを含むことを特徴とする装置。 34.ピクセル・データを多態管理する方法であって、 (a)データ処理手段を供給するステップと、 (b)ピクセル記憶手段を供給するステップと、 (c)ユーザ・インタフェース手段を供給するステップと、 (d)データ・プロセッサ上で稼働するオブジェクト指向オペレーティング・ システムを供給するステップと、 (e)複数のピクセルを表し、複数の属性をもつ抽象基本クラスを供給するス テップと、 (f)オブジェクト作成手段を供給し、抽象基本クラスの属性をもつ新しいオ ブジェクトを作成し、新しいオブジェクトは抽象基本クラスの子孫としてオブジ ェクト指向オペレーティング・システムに存在するステップと を備えたことを特徴とする方法。 35.請求の範囲第34項において、オブジェクトに照会してオブジェクト属性を判 断するステップを含むことを特徴とする方法。 36.請求の範囲第34項において、新しく作成したオブジェクトを編集して追加の 属性を、新しく作成されたオブジェクトにカプセル化し、多態ピクセル・データ 管理を行うステップを含むことを特徴とする方法。 37.データを多態管理する装置であって、 (a)処理手段と、 (b)記憶手段と、 (c)インタフェース手段と、 (d)プロセッサ上で稼働するオペレーティング・システムと、 (e)複数のデータを表し、複数の属性をもつ抽象基本クラスと、 (f)抽象基本クラスの属性を有する新しいオブジェクトをユーザが作成する のを可能にするオブジェクト作成手段であって、新しいオブジェクトは抽象基本 クラスの子孫としてオペレーティング・システムに存在するオブジェクト作成手 段と を具備したことを特徴とする装置。
JP51716194A 1993-01-22 1994-01-06 多態グラフィック・デバイス Expired - Lifetime JP3462211B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/007,992 US5394523A (en) 1993-01-22 1993-01-22 Polymorphic graphic device
US08/007,992 1993-01-22
PCT/US1994/000651 WO1994017495A1 (en) 1993-01-22 1994-01-06 Polymorphic graphic device

Publications (2)

Publication Number Publication Date
JPH08508353A true JPH08508353A (ja) 1996-09-03
JP3462211B2 JP3462211B2 (ja) 2003-11-05

Family

ID=21729229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51716194A Expired - Lifetime JP3462211B2 (ja) 1993-01-22 1994-01-06 多態グラフィック・デバイス

Country Status (7)

Country Link
US (1) US5394523A (ja)
EP (1) EP0673524B1 (ja)
JP (1) JP3462211B2 (ja)
AU (1) AU6090794A (ja)
CA (1) CA2135521A1 (ja)
DE (1) DE69404440D1 (ja)
WO (1) WO1994017495A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5610828A (en) * 1986-04-14 1997-03-11 National Instruments Corporation Graphical system for modelling a process and associated method
US5664086A (en) * 1993-04-16 1997-09-02 Adobe Systems Incorporated Method and apparatus for generating digital type font, and resulting fonts using generic font and descriptor file
JP3557208B2 (ja) * 1993-05-10 2004-08-25 アプル・コンピュータ・インコーポレーテッド 高性能複数層zバッファを有するコンピュータ・グラフィックス・システム
CA2147847C (en) * 1993-07-27 2002-06-11 John Peterson Object-oriented rendering system
US5500929A (en) * 1993-08-30 1996-03-19 Taligent, Inc. System for browsing a network resource book with tabs attached to pages
US5519825A (en) * 1993-11-16 1996-05-21 Sun Microsystems, Inc. Method and apparatus for NTSC display of full range animation
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5644691A (en) * 1994-10-14 1997-07-01 Compaq Computer Corporation Method and apparatus for accelerated filling of polygons on a computer display by rectangular decomposition
US5666475A (en) * 1995-01-03 1997-09-09 University Of Washington Method and system for editing multiresolution images at fractional-levels of resolution using a wavelet representation
US5880739A (en) * 1995-06-06 1999-03-09 Compaq Computer Corporation Blitting of images using instructions
US5675730A (en) * 1995-07-07 1997-10-07 Sun Microsystems, Inc. Method and apparatus for extensible type-specific data presentation by a debugger
US6307559B1 (en) * 1995-07-13 2001-10-23 International Business Machines Corporation Method and apparatus for color space conversion, clipping, and scaling of an image during blitting
US5920688A (en) * 1995-11-13 1999-07-06 International Business Machines Corporation Method and operating system for manipulating the orientation of an output image of a data processing system
US6023302A (en) * 1996-03-07 2000-02-08 Powertv, Inc. Blending of video images in a home communications terminal
US5778106A (en) * 1996-03-14 1998-07-07 Polaroid Corporation Electronic camera with reduced color artifacts
US5809172A (en) * 1996-04-17 1998-09-15 Canon Kabushiki Kaisha Non-linear aggregation mapping compression of image data and method
US5844569A (en) * 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
US6078942A (en) * 1996-04-25 2000-06-20 Microsoft Corporation Resource management for multimedia devices in a computer
US6044408A (en) * 1996-04-25 2000-03-28 Microsoft Corporation Multimedia device interface for retrieving and exploiting software and hardware capabilities
US5850232A (en) * 1996-04-25 1998-12-15 Microsoft Corporation Method and system for flipping images in a window using overlays
US6008816A (en) * 1996-04-25 1999-12-28 Microsoft Corporation Method and system for managing color specification using attachable palettes and palettes that refer to other palettes
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
US6038590A (en) * 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5987245A (en) * 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US5897670A (en) * 1996-07-12 1999-04-27 Sun Microsystems, Inc. Method and system for efficient organization of selectable elements on a graphical user interface
US6112015A (en) * 1996-12-06 2000-08-29 Northern Telecom Limited Network management graphical user interface
JP3890132B2 (ja) * 1997-01-31 2007-03-07 キヤノン株式会社 ネットワークサーバ及び画像処理方法
US5936641A (en) * 1997-06-27 1999-08-10 Object Technology Licensing Corp Graphics hardware acceleration method, computer program, and system
US6275225B1 (en) 1997-10-24 2001-08-14 Sun Microsystems, Inc. Method, apparatus, system and computer program product for a user-configurable graphical user interface
US6433885B1 (en) * 1997-11-24 2002-08-13 Hewlett-Packard Company Method and apparatus for manipulating bitmap raster data using a modular processing pipeline
US6313847B1 (en) * 1997-12-22 2001-11-06 Adobe Systems Incorporated Blending graphics objects in a frame buffer
US6760019B1 (en) * 2000-06-01 2004-07-06 Sun Microsystems, Inc. Methods and apparatus for facilitating the sharing of computer graphics operations
JP4218200B2 (ja) * 2000-09-26 2009-02-04 コニカミノルタビジネステクノロジーズ株式会社 画像処理システム、画像処理方法および画像処理方法をコンピュータに実行させるためのプログラムを記録した記録媒体
US6646647B1 (en) * 2000-09-29 2003-11-11 Intel Corporation Display of images from tiled memory
US6922812B2 (en) * 2001-07-12 2005-07-26 International Business Machines Corp. System and method for presenting text upon the display of a server that employs and X window graphical interface
US6937249B2 (en) * 2003-11-07 2005-08-30 Integrated Color Solutions, Inc. System and method for display device characterization, calibration, and verification
US8171426B2 (en) * 2003-12-29 2012-05-01 International Business Machines Corporation Method for secondary selection highlighting
US8151214B2 (en) * 2003-12-29 2012-04-03 International Business Machines Corporation System and method for color coding list items
US7421664B2 (en) 2003-12-29 2008-09-02 International Business Machines Corporation System and method for providing a category separator in a list of documents
US7908566B2 (en) * 2003-12-29 2011-03-15 International Business Machines Corporation System and method for scrolling among categories in a list of documents
TWI293454B (en) * 2004-09-20 2008-02-11 Processor and related method for adjusting color attributes of a pixel
US9710950B2 (en) 2012-04-27 2017-07-18 Adobe Systems Incorporated Extensible sprite sheet generation mechanism for declarative data formats and animation sequence formats
US9870554B1 (en) 2012-10-23 2018-01-16 Google Inc. Managing documents based on a user's calendar
US8819587B1 (en) 2012-10-30 2014-08-26 Google Inc. Methods of managing items in a shared workspace
US10140198B1 (en) 2012-10-30 2018-11-27 Google Llc Networked desktop environment
US9377940B2 (en) * 2013-02-28 2016-06-28 Facebook, Inc. Predictive pre-decoding of encoded media item
US9842113B1 (en) 2013-08-27 2017-12-12 Google Inc. Context-based file selection
US9973462B1 (en) 2013-10-21 2018-05-15 Google Llc Methods for generating message notifications
WO2019156697A1 (en) * 2018-02-06 2019-08-15 Chromera, Inc. Polymorphic electro-optic displays

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3658427A (en) * 1969-11-28 1972-04-25 Anthony B Decou Attitude sensor, and system for controlling attitude of an object
US3881605A (en) * 1973-06-29 1975-05-06 Ibm Object orienting device to assist robot manipulator
US4082188A (en) * 1976-06-23 1978-04-04 Hoffmann-La Roche Inc. Apparatus for color recognition and defect detection of objects such as capsules
US4677576A (en) * 1983-06-27 1987-06-30 Grumman Aerospace Corporation Non-edge computer image generation system
US4635208A (en) * 1985-01-18 1987-01-06 Hewlett-Packard Company Computer-aided design of systems
US4742356A (en) * 1985-12-09 1988-05-03 Mcdonnell Douglas Corporation Method and apparatus for determining remote object orientation and position
US4704694A (en) * 1985-12-16 1987-11-03 Automation Intelligence, Inc. Learned part system
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
US4939648A (en) * 1987-12-02 1990-07-03 Schlumberger Technology Corporation Apparatus and method for monitoring well logging 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
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
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
US5168441A (en) * 1990-05-30 1992-12-01 Allen-Bradley Company, Inc. Methods for set up and programming of machine and process controllers
US5177685A (en) * 1990-08-09 1993-01-05 Massachusetts Institute Of Technology Automobile navigation system using real time spoken driving instructions
US5265206A (en) * 1990-10-23 1993-11-23 International Business Machines Corporation System and method for implementing a messenger and object manager in an object oriented programming environment
US5151987A (en) * 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
US5119475A (en) * 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition

Also Published As

Publication number Publication date
DE69404440D1 (de) 1997-09-04
JP3462211B2 (ja) 2003-11-05
EP0673524A1 (en) 1995-09-27
WO1994017495A1 (en) 1994-08-04
CA2135521A1 (en) 1994-08-04
EP0673524B1 (en) 1997-07-23
US5394523A (en) 1995-02-28
AU6090794A (en) 1994-08-15

Similar Documents

Publication Publication Date Title
JPH08508353A (ja) 多態グラフィック・デバイス
US7397946B2 (en) Color distribution for texture and image compression
JP4564718B2 (ja) 3−dコンピュータ・グラフィックス・レンダリングシステム
EP1272977B1 (en) Shape processor
KR100516704B1 (ko) 이미지 랜더링 방법 및 랜더링 장치
US5943058A (en) Texture mapping circuit for performing data interpolations
CN101421761B (zh) 视件和场景图接口
EP0588243A1 (en) Method and apparatus for storing and retrieving generalized image data
EP1462936A2 (en) Visual and scene graph interfaces
US20050093874A1 (en) Apparatus and methods for texture mapping
JPH11511277A (ja) グラフィック対象物をチャンク映像に変換し、かつ、映像層を結合して表示画像に換える方法、および、装置
US20050243101A1 (en) Image generation apparatus and image generation method
WO1996036011A1 (en) Graphics system utilizing homogeneity values for depth for occlusion mapping and texture mapping
US20030020726A1 (en) Method and system for displaying graphics information
JP2003256865A (ja) 立体オブジェクトデータからの漫画的表現の2次元画像の生成方法および生成プログラム
US6567098B1 (en) Method and apparatus in a data processing system for full scene anti-aliasing
JPH11506846A (ja) 効率的なディジタル・モデリング及びテクスチャ・マッピングのための方法並びに装置
US6285373B1 (en) Method and apparatus for texture transmission and storage
US7116333B1 (en) Data retrieval method and system
Peterson et al. The Utah Raster Toolkit
US20030020748A1 (en) Method and system for displaying graphics information
US6801214B1 (en) Three-dimensional graphics system reducing color data/bits in drawing operations for faster processing
JPH1074248A (ja) 減色装置および減色方法
Wallace Perl Graphics Programming: Creating SVG, SWF (Flash), JPEG and PNG Files with Perl
JP2000057370A (ja) デ―タ転送速度制限環境で三次元図形デ―タを画像をレンダリングする方法および装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20080815

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080815

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090815

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090815

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100815

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100815

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100815

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110815

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110815

Year of fee payment: 8

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

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

Free format text: PAYMENT UNTIL: 20110815

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120815

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130815

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term