JPH09504894A - Graphic state processing - Google Patents

Graphic state processing

Info

Publication number
JPH09504894A
JPH09504894A JP7513186A JP51318695A JPH09504894A JP H09504894 A JPH09504894 A JP H09504894A JP 7513186 A JP7513186 A JP 7513186A JP 51318695 A JP51318695 A JP 51318695A JP H09504894 A JPH09504894 A JP H09504894A
Authority
JP
Japan
Prior art keywords
graphic
state
graphics
graphic state
information
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
JP7513186A
Other languages
Japanese (ja)
Other versions
JP3425954B2 (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 JPH09504894A publication Critical patent/JPH09504894A/en
Application granted granted Critical
Publication of JP3425954B2 publication Critical patent/JP3425954B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Abstract

(57)【要約】 グラフィックから分離しているグラフィック状態オブジェクトが状態情報を含む、グラフィック状態処理の方法およびシステム。状態オブジェクトは、描画する以外の間にアクセスすることができる。オブジェクトは、特別のグラフィック処理状態を表すサブ状態から成る。グラフィックは、グラフィック階層を送ることのみを必要とし、グラフィック状態オブジェクトは、グラフィック状態をレンダリング装置へ送ることを、自動的に引き受けて処理する。グラフィック状態オブジェクトは、描画されるグラフィックとは分離した実体である。   (57) [Summary] A method and system for graphic state processing in which a graphic state object separate from the graphic contains state information. State objects can be accessed while not drawing. Objects consist of substates that represent a particular graphics processing state. The graphic only needs to send the graphic hierarchy, and the graphic state object automatically undertakes and handles sending the graphic state to the rendering device. A graphic state object is an entity separate from the graphic being drawn.

Description

【発明の詳細な説明】 グラフィック状態処理 著作権の告示 この特許出願の一部は、著作権保護のもとにある資料を含む。著作権者は、複 写物が特許文献または特許の開示のいずれかによるもの、たとえば特許商標庁の 特許ファイルまたは記録に現れるようなものならば、異議はないが、何であれそ の他の場合には、すべての著作権を留保する。 関連出願へのクロス・リファレンス(CROSS-REFERENCE) この特許出願は、1993年11月3日に出願されたオブジェクト指向グラフ ィック・システム(OBJECT ORIENTED GRAPHIC SYSTEM)と称する特許出願に関連し 、Taligent社に譲渡されたものであり、開示は参照によりここに組み込まれてい る。 発明の分野 本発明は、一般的にはコンピュータ・システムにおける改良に関し、特にグラ フィック状態処理のシステムおよび方法に関する。 発明の背景 以前のグラフィックス・アーキテクチャでは、あるグラフィックがその状態( たとえば色、転送モード、クリップ領域(clip area)等)を典型的にはプライベ ートに(privately)ストアしている。描画(draw)を頼まれると、そのグラフィッ クはこれらの状態変数をGrafPortの中へ手続き的にコピーし、これら の変数はレンダリング・コード(rendering code)によりアクセスされる。したが って、このグラフィックの状態が利用可能であるのは、この明白な描画操作(dra wing operation)間だけである。これは、オブジェクト指向ではなく、グラフィ ック・システムが行うことができない制限である。 従来技術のグラフィックス・アーキテクチャの別の問題は、グラフィック階層 (hierarchy)をグラフィック・オブジェクト内に強制することであり、これはそ のオブジェクトが、そのグラフィックの描画中にそのオブジェクトと相互作用す るためである。 発明の要約 それゆえに、本発明の第1の目的はグラフィック状態を処理するシステムと方 法を提供することにある。 本発明の第1の目的とは別の目的は、グラフィック状態を使用するグラフィッ クとは別のグラフィック状態へのアクセスを提供するシステムと方法を提供する ことにある。 本発明のこれらと他の目的は、あるグラフィックによりそのグラフィックをレ ンダ(render)するのに使われるグラフィック状態オブジェクトを有する方法およ びシステムを実現することにある。グラフィック状態オブジェクトはまた、レン ダリング(rendering)・デバイスおよび関連するキャッシュ(cache)との関係を確 立する能力を含むことができる。さらに、状態オブジェクトは多くのサブ状態(s ub-states)を含む。 図面の簡単な説明 図1は、本発明によるコンピュータの典型的なハードウェア構成を説明する図 である。 図2は、TGrafStateの全構造を示す図である。 図3は、デバイスおよびデバイス・キャッシュにアクセスするメソッド (method)を追加したTgrafPortを示す図である。 図4は、グラフィック・オブジェクトが適宜その内容をTGrafDeviceオブジェ クトへ「ダンプ(dump)する」ことができるTGrafPortを示す図である。 図5は、簡単な階層的グラフィックを示す図である。 図6は、TPolygonのDrawコール内にあるオブジェクトを示す図である。 図7は、一時的(transient)階層を示す図である。 図8は、各サブ状態についてデフォルト値を含むTRootGrafPortクラス(class) を示す図である。 図9は、「親(parent)」TGrafPortオブジェクトとTGrafBundleオブジェクトの 連結(concatenation)の役割を果たすTLinkedBundlePortクラスを示す図である。 図10は、TSimpleMatrixStateクラスの関係を示す図である。 図11は、TClipStateサブクラス(subclass)の関係を示す図である。 図12は、TMatrix3DStateについて確立された関係を示す図である。 図13は、グラフィック階層の例を示す図である。 図14は、MGraphicの図である。 図15は、TMyGroup::Drawへのコールがされるときに起こることの例を示すフ ローチャートである。 発明の詳細な説明 本発明の詳細な実施例はここで開示される。しかしながら理解しなければなら ないのは、この開示された実施例は本発明の単なる例示にすぎず、種々の形態で 実施されるということである。したがって、ここで開示された詳細は、制限的な ものとして解釈されてはならず、単に、請求の範囲の基礎として、本発明をする および/または使用する方法を当業者に教示する基礎として、解釈される。 オブジェクト指向プログラミングの歴史とフレームワークの開発は、文献にお いて完全に確立されている。C++とSmalltalkはよく文献化されているので、詳 細はここでは述べない。同様に、オブジェクトの性質、たとえばカプセル化 (encapsulation)、多様性(polymorphism)、継承(inheritance)は文献および特許 において十分に説明されている。オブジェクト指向システムの良い概説として、 読者はGrady Boochの“Object Oriented Design With Applications”を参照す るとよい。 多くのオブジェクト指向システムは、基本的な入出力を実行する基本オペレー ティング・システム上で動くように設計されているが、本システムはシステム・ レベルのサポートを特殊なフィーチャ(feature)に対して提供するのに使われて いる。 本発明の好ましい実行状況は、IBM(登録商標)社のPS/2(登録商標) またはApple(登録商標)社のMacintosh(登録商標)のようなパーソナル・ コンピュータに常駐するオペレーティング・システムのもとでの実行である。代 表的なハードウェア環境は図1に描かれている。図1は、主たる発明による、コ ンピュータの典型的ハードウェア構成を描く図であり、中央処理装置100、た とえば通常のマイクロプロセッサと、システム・バス132を介して相互に接続 した多くの他のユニットを持っている。図1に示されるコンピュータが有するの は、リード・オンリ・メモリ(ROM)104、ランダム・アクセス・メモリ( RAM)106、周辺装置、たとえばディスク・ユニット108および110に より表される他の入出力周辺機器をシステム・バス132へ接続する入出力アダ プタ112、キーボード130、マウス126、スピーカ122、マイクロフォ ン124、および/または他のユーザ・インタフェース装置、たとえばバスへ接 続されたタッチ・スクリーン装置(示されていない)をバスに接続するユーザ・ インタフェース・アダプタ128,114で表されるデータ・プロセッシング・ ネットワークへワークステーションを接続する通信アダプタ116である。ディ スプレイ・アダプタ120がバスとディスプレイ装置118を接続する。ワーク ステーションは、その上に常駐しているオペレーティング・システム、たとえば Apple System/7(登録商標)オペレーティング・システムを有している。 定義 グラフィック状態(Graphic State)−幾何図形を描画するのに必要な、すべて のグラフィカルな状態変数(あるときは属性(attribute)と呼ばれる)のことで あり、ペイント(paint)、転送モード(transfer mode)、ペン幾何(pen geometry )、マトリック(matrix),クリップ領域(clip area)等を含む。 グラフィック階層(Graphic Hierarchy)−グラフィカルなプリミティブ(primit ive)の階層的配置(arrangement)であり、座標系およびクリッピング情報のよう なグラフィック状態は、親グラフィックから子グラフィックへ継承されることが できる。 GrafPort−グラフィック状態、デバイス、デバイス・キャッシュの完全なセッ トのコンテナ(container)。 開示されたグラフィック状態処理システムは、グラフィック処理の応用の全体 的な効率を上げる多くの目標を達成する。それらの目標の1つは、すべてのグラ フィカルな状態の集合(collection)を表現する抽象ベース・クラス(abstract ba se class)をサポートすること、および状態の階層的動作(hierarchical behavio r)(concatenation:連結)をサポートすることである。サブクラスは、状態変数の 記憶と連結についての特定の実現を提供する。別の目的は、子グラフィック状態 の親状態への連結が子において分離(isolate)されていなければならないことを 要求することである。親の状態は、連結によって影響されてはならない。さらに 、子はある変数の最終的な値の決定において、最終的決定権を持つ。したがって 、親はある変数の値の指示はできない。 また目標であるのは、グラフィック状態がTGrafDeviceオブジェクトと容易に 通信できることである。さらに別の目標は、グラフィックのDrawコールのコンテ キスト(context)外で、グラフィック状態がアクセスされることを許容するフレ ームワークをサポートすることである。たとえば、スプライト(sprite)はビュー (view)の中へ描画するために、グラフィック状態オブジェクトへアクセスする必 要があるであろう。別の目標は、TGrafDevideクラスの中へグラフィック階層に 関するどのような仮定も焼き固め(bake)ないことである。グラフィック階 層は、グラフィック自身の中で自然に実現される。したがって、何の特別の設計 も、TGarfDeviceによる階層上には押しつけられない。 最後に別の目標は、すべてのデバイス依存の(device-dependent)データ型は、 その装置にプライベート(private)なものとすることである。たとえば、すべて のクリッピングは領域ではなくTGAreasにより指定される。 発明の背景において説明されたように、以前のグラフィック・アーキテクチャ においては、グラフィックはプライベートにその状態(たとえば色、転送モード 、クリップ領域等)を典型的にはストアしている。描画が要求されると、グラフ ィックはGrafPortの中へこれらの状態変数を手続き的にコピーし、レンダリング ・コードによりアクセスされる。したがって、グラフィック状態は、この明示的 な描画操作の間に限り利用可能である。本システムは、グラフィックがその状態 をストアするフレームワークを提供する。このフレームワークがサポートするア ーキテクチャでは、クライアント(client)が「描画(draw)」関数のコンテキスト 外で、グラフィック状態にアクセスできる。グラフィック状態のセットは、一連 のコードのかわりに単一のオブジェクトにより表すことができる。これはTGrafP ortクラスの目標である。抽象(abstract)クラスが、状態変数にアクセスするイ ンタフェースを定義する。具体化(concrete)サブクラスは、状態変数の現実のス トレージ(storage)と連結動作(concatenation behavior)を定義する。古い方法 は、 であり、新しい方法は、 である。 TGrafStateおよびTGrafPort 図2は、TGrafStateの全体構造を示す図である。この構造は、すべてのグラフ ィック状態を6つの異なるグループに分類し、つぎにTGrafState200と呼ばれ る単一のクラスにまとめている。6つの「サブ状態(sub-states)」202は、TA ttributeState(グラフィックの外観を決定する属性の集合)、2つのTMatrixSt ates(2Dビューおよびモデル座標系)、TClipState(2Dクリッピング情報)、 TSceneState(3Dカメラと光)、TMatrix3DState(3Dモデル座標系)である。T GrafStateオブジェクト200は、全部のグラフィック状態へのアクセスを必要 とするクラスにより使用される。そのうえ、TGrafStateクラスの抽象的設計のた めに、子グラフィック状態はその親状態に、親状態を実際に変化させないで連結 される。 図2は、網羅的ではないことに留意するべきである。ここで示された6つのサ ブ状態は、所望の設計により、6つより大きくまたは小さくできる。さらに、6 つのサブ状態を作っている要素は、網羅的ではない。たとえば属性は、グラフィ ック処理において知られているどのようなグラフィック属性も仮想的に含むこと ができる。 図2においてまた示されているのは、上で概説した6つのサブ状態202の例 示的要素204である。特に、GetAttributeStateはGetDrawOperation、GetFill Paint、GetFramePaintおよびGetAntialiasingを有し;GetViewMatrixStateはGet Matrixを有し;GetModelMatrixはGetMatrixを有し;GetClipStateはGetClipArea を有し;GetSceneStateはCreateLightIteratorと た、サブ状態を備えるこれらの要素は単なる例であり、多くのものはここに示さ れ説明されたより多くを含む。 TGrafPortクラスは、TGrafStateのサブクラスである。図3に示されるように 、TGrafPortはメソッド302を追加して、デバイスおよびデバイス・キャッシ ュへアクセスする。GetDeviceは、レンダリングがなされるデバイスへのポイン タを返す。GetCacheは、デバイス依存のオブジェクトをキャッシュするデバイス により使用される、キャッシュへのポインタを返す。TGrafPortはまた6つのサ ブ状態を含む。 6つのサブ状態を含む、TGrafPort300をサブクラス化する主な目的は、グ ラフィック状態、デバイス、デバイス・キャッシュのストレージと連結がなされ る方法を、定義することである。サブ状態は、共通に使用されるグループに状態 変数を分けるのを支援する。状態変数のより簡単でフラットなグループは、状態 変数のサブセットについて、状態連結のカスタム化を認めるほど、十分に柔軟で はない。たとえば、簡単なグラフィックは、TGrafBundle(便利なTAttributeStat eサブクラス)のみを典型的に必要とする。より複雑なグラフィック・オブジェク トはマトリックスと、場合によりクリップ領域を必要とする。これらのクラスの より多くの情報については、サブ状態の章を参照すること。 MGraphicのようなグラフィックス・クラスは、幾何図形の基本セットによって 、TGrafDevideに自分自身を記述しなければならず、各幾何図形は、それに関連 した1組のTGrafStateオブジェクトを持たなければならない(必ずしもユニーク なものでなくてもよい)。図4に示されるように、TGrafPort402は、グラフ ィック・オブジェクト400がその内容をTGrafDeviceオブジェクトに、適宜「 ダンプする」ことを認める。これは、セットのDraw関数をTGrafPortクラスに供 給することにより達成され、それらの関数はTGrafDeviceクラスで与えられるRen der関数のセットを反映させたものである。各Draw関数は幾何図形をとり、それ とポート(port)のグラフィック状態404を、デバイス408の適当なRenderコ ールに渡す。便宜のために、オーバライドするバンドル(bundle)とモデル・マト リックス(model matrix)は404で渡すこともできる。TGrafPortクラスは以 下に示される。 これらは2DDrawコールである。それらは便宜のためにのみ存在している。そ れらは、対応するTGrafDevide::Renderコールをコールして、グラフィック状態 とデバイス・キャッシュを渡す。 多数の、共通部分を持たない(disjoint)コール(多様的(polymorphic)単一コ ールの反対)の目的は、基本的2D幾何図形の小さい良く定義されたセットのみ が、グラフィック・デバイスによりサポートされるという規則を強制するためで ある。 これらは、付加的なバンドルおよびモデル・マトリックスをとる2DDrawコー ルである。それらは、ある種の特殊な条件のためにのみ便宜上存在している。そ れらは、対応するTGrafDevide::Renderコールをコールして、グラフィック状態 と装置キャッシュを渡す。 適当なTGrafDevice::Render関数が呼ばれる前に、バンドルおよびモデル・マ トリックスが、TGrafPortオブジェクトの404において示されるように、状態 に連結される。バンドルおよびオプショナルなマトリックスの目的は、幾何図形 から幾何図形に典型的に変化する状態の連結を容易にするためである。しかしな がら、この連結はコールされるたびに起きるので、バンドルまたはマトリックス が多重幾何図形により共用されるときには、これらの使用はすすめられない。 これらは、3DDrawコールである。それらは、便宜のためにのみ存在している 。それらは、対応するTGrafDevice::Renderコールをして、グラフィック状態と 装置キャッシュを渡す。 2Dコールと同様に、多数の、共通部分を持たないコールの目的は、基本的3 D幾何図形の小さい良く定義されたセットのみが、グラフィック・デバイスによ りサポートされるという規則を強制するためである。 これらは、付加的なバンドルおよび3Dモデル・マトリックスをとる3DDraw コールである。それらは、ある種の特殊な条件のためにのみ便宜上存在している 。それらは、対応するTGrafDevice::Renderコールをして、グラフィック状態と デバイス・キャッシュ406を渡す。キャッシュ406がデバイス408内にあ るように示されているが、これは説明の目的のためにすぎない。キャッシュ40 6は、メモリが与えられるところならばどこでも実際にあってよく、デバイス4 08から分離したメモリであってもよいし、特定のグラフィック・レンダリング が実行されているところに直接的に関連していない別のデバイス内であってもよ い。 適当なTGrafDevice::Render関数が呼ばれる前に、バンドルおよびモデル・ マトリックスが、TGrafPortオブジェクトの404において示されるように、状 態に連結される。バンドルおよびオプショナルなマトリックスの目的は、幾何図 形から幾何図形に典型的に変化する状態の連結を容易にするためである。しかし ながら、この連結はコールされるたびに起きるので、バンドルまたはマトリック スが多重幾何図形の間で共用されるときには、これらの使用はすすめられない。 A.デバイス・キャッシュ デバイス・キャッシュ406は大きいオブジェクトに潜在的になり得るので、 それらが思いがけずにシステムを通して増殖しないように保証する配慮が必要で ある。デフォルト動作(behavior)に対する2つのアプローチがある。 1.各GrafPortが自分自身のデバイス・キャッシュを持ち得るが、しかし高価な ものになる。まつわりつく非常に多くのキャッシュが存在することになる。これ は、望ましいデフォルト動作ではない。 2.各TGrafPortが、親より与えられなかった場合に、自分自身のキャッシュを 生成する。デフォルトにより、これが意味するのは、各グラフィック階層のトッ プにおけるGrafPortのみがキャッシュを持ち得るということである。これは、た ぶん受け入れられるデフォルト動作である。同じルートGrafPortが一束の階層と して使用される場合は、この階層はルートGrafPortにおいてキャッシュを自動的 に共用する。キャッシュが各GrafPortにおいて求められる場合は、GrafPortサブ クラスが、それを実現するために書かれる。 ある場合には、デフォルトのキャッシュ動作をオーバライドすることが望まし い。ビュー(view)がそう望むかもしれない。古いビュー・システムでは、各ビュ ーはデバイス依存の領域をキャッシュした。領域の生成は非常に高価なものなの で、良い最適化であった。本システムでは、ビューは自分自身のデバイス・キャ ッシュを保持できる(それは、他のデバイス依存のオブジェクトと同様に領域を キャッシュする)。 B.グラフィック状態連結(Graphic State Concatenation) 図5は、簡単な階層的グラフィックを提供する。図5のグラフィックは、グル ープ500における多角形502および楕円506から成る。階層における各グ ラフィックは、グラフィック状態の任意のサブセットをストアできる。たとえば 、多角形と楕円はTGrafBundle504と508を各々持っているが、TGroupは何 のグラフィック状態もストアしない。 これは、階層的状態、たとえばマトリックスが考慮されるまでは、非常に簡単 に思える。正確な、ローカル対グローバル(local-to-global)・マトリックスを 作成するために、グラフィックのローカル・マトリックスは、その親のローカル 対グローバル・マトリックスと連結しなければならない。この連結したマトリッ クスは、それを提供したグラフィックによりキャッシュされる。本アーキテクチ ャは、この型の動作を提供する。 グラフィック状態は、その親グラフィックの状態に「連結」されなければなら ず、グラフィックに適用する状態の新しいフル・セット(full set)を作成する。 TGroup::Drawがコールされると、その親のTGrafPortオブジェクトが渡される。T Group500は自分自身の状態を持っていないので、どのような連結も実行しな いそれは,親のTGrafPortオブジェクトを多角形のDrawコールへ、つぎに楕円の Drawコールへと、単に渡す。 多角形502は、TGrafBundle504を持ちそれはその親のTGrafPortオブジェ クトに連結されなければならない。これは、この連結を実行できる「リンクされ た」TGrafPortサブクラス(TLinkedBundlePort)を生成することでなされる。つぎ に、TLinkedBundlePort::Draw(const TGPolygon&)へのコールがなされる。 図6は、TPolygonのDrawコール内にあるオブジェクトを示す。要素600、6 02、604、610、612は、図5に関してすでに説明された対応する要素 を持っている。図6はまたTGafState608を有する。TLinkedBundlePortオブジ ェクト606は、TPolygonの602Drawコールに対してローカルに生成されるた め、この型の連結は一時的に現存する。これはある型のグラフィック階層には必 要である。たとえば、グラフィック階層が、特定のグラフィックに対して、2つ またはそれ以上の他のグラフィックスにより共用されることを許容するならば、 その共用されたグラフィックが多重の親を持つために、一時的な連結を実現しな ければならない。 たとえば、図7において、曲線706は、グラフィックB702およびC71 0により共用されている。各GraphicB702、GraphicC710、TCurve706 は、関連するTGrafBundle704、712、708をそれぞれ持つ。GraphicA7 00から、分岐(branch)がGraphicB702またはGraphicC710のいずれか にとることができる。連結が一時的でなければならないのは、連結の結果が、と られた分岐(BまたはC)依存して異なるためである。こらが一時的階層の作用 の方法である。 永続的な階層におけるグラフィック・オブジェクトは、親が実際には描画され ないでも、親の状態を使ってグラフィックが描画ができる親情報の知識を要求す る。そのようなグラフィック階層の例として、ビュー・システムがある。 永続的な階層について言える2〜3のことがある。 1.この階層におけるグラフィックは多重の親により共用されることはできな い。 2.特別なセマンティックス(semantics)、たとえばLinkToおよびUnlinkコー ル、パラメータ無しのDrawコールは、この階層において使用されているグラフィ ック・クラスに追加されなければならない。 3.たとえば2Dビュー・マトリックス状態とクリップ状態オブジェクトのよ うな、よりプライベートなサブ状態オブジェクトをストアする、TGarfPortサブ クラスを使用することもできる。したがって、各グラフィックは、それ自身のプ ライベートなデバイス・キャッシュの保持を望むだろう。 4.マルチタスク・セーフ(mutitask-safe)が必要なら、実現される。 効率 多数のグラフィック状態オブジェクトがシステム中を動き回っているため、効 率について注意を向けることは重要である。2つの重要事項がある。 1.簡単なMGraphicsは、親の状態の「デルタ(deltas)」または変更のみを含 むべきである。たとえば、TPolygonオブジェクトは、TGrafBundleオブジェクト のみを含むべきである。 2.いくつかの状態変数は、多重のグラフィックスにより共用される。 第1の重要事項は、このアーキテクチャの抽象的な性質により注意を向けられ るものであり、異なるTgrafPortサブクラスは、必要な部分のみを含むことを認 められる。第2の重要事項は、共用された属性を使用することにより、注意を向 けられるものである。 サブ状態(Sub-States) 以下のクラスは、TGrafPortクラスを通してアクセスされる「サブ状態」クラ スである。それらは、実際のグラフィック状態変数へのアクセスを提供する。TG rafPortのように、それらのほとんどは、「ゲッタ(getter)」のみを定義する抽 象クラスである。サブクラスは、状態変数が「得られる(gotten)」方法の実現を 提供する。 サブ状態クラスは、親と連結する異なるセマンティックスを持つ。LinkTo関数 は、子オブジェクトからその親への一時的な結合(connection)を提供して、連結 が起きる。Unlink関数はこの結合の役にたつ。2つの理由により、これらのセマ ンティックスが使用される。 1.連結された値は、子にキャッシュできる。 2.子から親への結合は、より典型的な一時的場合よりも、永続的である必要 もある。 LinkToおよびUnlinkに関するより多くの情報については、以下の「LinkToおよ びUnlinkの使用」の章を参照のこと。サブ状態は以下に示される。 A.TAttributeState TAttributeStateクラスは、グラフィックスが描画されるときのそれらの外観 に関する情報を含む。 このクラス定義は以下に示される。 B.TMatrixState TMatrixStateクラスは2D座標系を定義する。TMatrixStateは、ローカル座標 系からあるグローバル座標系(典型的にはワールド座標系(world coordinate system))へ変換するマトリックスへアクセスする、プロトコルを含む。 TLinkableMatrixStateクラスは、別のTMatrixStateオブジェクトとの、リンキ ング(linking)または連結をサポートするプロトコルを定義する。このリンキン グ動作は、サブクラスにおいて2つの理由がある。1)マトリックス(たとえばT GrafDevice)にアクセスするクライアント(client)によって必要とされない。2 )異なるリンキング・インタフェースが、アドバンスド・クライアント(advance d client)により使用されることもある。クラス定義は以下に示される。 C.TClipState TClipStateクラスは、クリップする形状(shape)または境界(boundary)を定 義する。それはクリップ領域にアクセスするプロトコルを含み、レンダリングの 間、デバイスにより使用される。 TLinkableClipStateクラスは、別のTClipStateオブジェクトとのリンキングま たは連結をサポートするプロトコルを定義する。この連結動作は、サブクラスに おいて2つの理由がある。1)クリップ領域(たとえばTGrafDevice)にアクセス するクライアント(client)によって必要とされない。2)異なるリンキング・イ ンタフェースが、アドバンスド・クライアント(advanced client)により使用さ れることもある。クラス定義は以下に示される。 D.TSceneState TSceneStateクラスは、全体としてシーン(scene)に関する情報を含む。この情 報は、正常には、シーンごとにただ1度指定される。それは、以下のメンバを含 む。 光(Lights) カメラ(Camera) クラス定義は、以下に示される。 E.TMatrix3DState TMatrix3DStateクラスは3D座標系を定義する。TMatrix3DStateは、ローカル 座標系からあるグローバル3D座標系(典型的には3Dワールド座標系(3D worl d coordinate system))へ変換するマトリックスへアクセスする、プロトコルを 含む。 TLinkableMatrix3DStateクラスは、別のTMatrix3DStateオブジェクトとの、リ ンキングまたは連結をサポートするプロトコルを定義する。このリンキング動作 は、サブクラスにおいて2つの理由がある。1)マトリックス(たとえばTGrafDe vice)にアクセスするクライアント(client)によって必要とされない。2)異な るリンキング・インタフェースが、アドバンスド・クライアント(advanced clie nt)により使用されることもある。クラス定義は以下に示される。 F.LinkToおよびUnlinkの使用 LinkToおよびUnlink関数は、「リンクされた」TGrafPortオブジェクトの中か らのみ典型的にコールされるので、それらを直接コールする必要はほとんどない だろう。それらを直接コールすることは、例外ホスタイルな(exception-hostile )コードをもたらす。例外がLinkToコールおよびUnlinkコールの間でス ロー(throw)されると、Unlinkコールがされることはない。悪いニュースである 。 良いニュースは、コード中で直接コールされる必要があるならば、供給された TgrafPortサブクラスを使用することができるし、または特殊な動作が必要なら 自分自身でTGrafPortをサブクラス化することもできる、ということである。他 のリンクされたポート・クラス(port class)のように、LinkTo関数をコンストラ クタ(constructor)の中で、Unlink関数をデストラクタ(destructor)の中でコー ルするべきである。 システムが提供する(System-Supplied)サブクラス 本グラフィック・システムは、グラフィック状態クラスのいくつかの役に立つ サブクラスを提供する。以下でそのいくつかが説明される。 A.TGrafPortサブクラス 図8で示されるように、TRootGrafPortクラス902は各サブ状態904〜9 12についてデフォルト値を含む。すべてのサブ状態は、TRootGrafPort902 を経由してTGrafPort900に到達する。したがって、それは無限のクリップ領 域を有するワールド座標空間(World Coordinate space)を表す。それは、TGrafD eviceオブジェクトへのポインタを持ち、デバイスから得るデバイス・キャッシ ュを所有する。このクラスの使用は、クライアントによりオフ・スクリーン(off -screen)のみの描画にするべきである。オン・スクリーン(on-screen)内の使用 は、全スクリーンを越える描画をもたらす。 図9で示されるように、TLinkedBundlePortクラス1002は、「親」TGrafPo rtオブジェクト1000とTGrafBundleオブジェクト1004の連結としての役 に立つ。それが使われるのは、ローカル・バンドルが親TGrafPortオブジェクト 1000における属性状態オブジェクト(attribute state object)に連結する必 要があるときである。親状態の残りは継承される。 TLinkedViewMatrixPortクラス1006は、親TGrafPortオブジェクト1000 と指定されたビュー・マトリックス1008との連結として役に立つ。 それが使用されるのは、ローカル・ビュー座標系が所望されるときである。それ は、指定されたマトリックスを、親TGrafPortオブジェクト1000におけるビ ュー・マトリックスへ連結する。親の状態の残りは継承される。連結されたマト リックスのキャッシュ化が所望であれば、代替的に、マトリックス状態オブジェ クトはマトリックスのかわりに渡される。 TLinkedModelMatrixPortクラス1010は、親TGrafPortオブジェクト100 0と指定されたモデル・マトリックス1012との連結として役に立つ。それが 使用されるのは、ローカル・モデル座標系が所望されるときである。それは、指 定されたマトリックスを、親TGrafPortオブジェクト1000におけるモデル・ マトリックスへ連結する。親の状態の残りは継承される。連結されたマトリック スのキャッシュ化が所望であれば、代替的に、マトリックス状態オブジェクトは マトリックスのかわりに渡される。 TLinkedClipAreaPortクラス1014は、親TGrafPortオブジェクト1000と TGArea1016との連結として役に立つ。それが使用されるのは、ローカル・ク リップ領域が、親TGrafPortオブジェクト1000におけるクリップ領域と交差 するる(intersect)必要があるときである。親の状態の残りは継承される。連結 されたクリップ領域のキャッシュ化が所望であれば、代替的に、クリップ状態オ ブジェクトは、クリップ領域のかわりに渡される。 TLinkedScenePortクラス1018は、親TGrafPortオブジェクト1000とTSc eneStateオブジェクト1020との連結として役に立つ。それが使用されるのは 、ローカル・シーン状態が、親TGrafPortオブジェクトにおけるシーン状態と、 連結する必要があるときである。親の状態の残りは継承される。 TLinkedModelMatrix3DPortクラス1022は、親TGrafPortオブジェクト10 00と指定された3Dモデル・マトリックス1024との連結として役に立つ。 それが使用されるのは、ローカル3Dモデル座標系が所望されるときである。そ れは、指定されたマトリックスを、親TGrafPortオブジェクトにおける3Dモデ ル・マトリックスへ連結する。親の状態の残りは継承される。連結されたマトリ ックスのキャッシュ化が所望であれば、代替的に、マトリックス状態オブジェク トは、マトリックスのかわりに渡される。 B.TAttributeStateサブクラス これらのサブクラスは、グラフィック処理システムの任意の外観(appearance) 属性を仮想的に有する。 C.TMatrixStateサブクラス 図10において示されるように、TSimpleMatrixState1104は、ローカル2 Dマトリックス1106を含む。そのローカル・マトリックスは、1102を経 由して親のローカル対グローバルのマトリックスと連結して、それ自身のローカ ル対グローバルのマトリックス1100を作成する。これは、GetMatrixにより 返されるものである。 D.TClipStateサブクラス 図11は、TClipStateサブクラス1200の関係を示す図である。TSimpleCli pStateクラス1204は、単一のTGAreaオブジェクト1206をそのローカル・ クリップ領域として含む。そのローカル・クリップ領域は、その親のクリップ領 域と交差して、GetClipAreaにより返されるクリップ領域を作成する。GetClipAr eaWithChildrenは 同じクリップ領域を返す。ビュー・システムが定義する、よ り精巧なTinkableClipStateサブクラス1202は、その子らのクリップ領域を 等式の中へ組み込む。それは、子らのクリップ領域を自分自身から減じて、GetC lipAreaにより返される新しいクリップ領域を作成する。より多くの情報につい ては、ビュー・システム文献を参照のこと。 E.TSceneStateサブクラス TSceneStateサブクラスは、全体としてシーンに関する情報を有する。たとえ ば、このサブクラスは、光とカメラを有することもある。 F.TMatrix3DStateサブクラス 図12は、TMatrix3DState1300について確立した関係を示す図である。TS impleMatrix3DStateクラス1304はローカル3Dマトリックス1306を含む 。そのローカル・マトリックスは、親のローカル対グローバルのマトリックスと 連結して、それ自身のローカル対グローバルのマトリックスを作成する。これは 、GetMatrixにより返されるものである。TLinkkableMatrix3DState1302 はTSimpleMatrix3DState1304とTMatrix3DState1300をリンクするメカニ ズム(mechanism)を提供する。 MGraphicによる使用法 MGraphic階層をサポートするために、親の状態は、MGraphic::Drawコールに渡 されなければならず、その結果子は自分の状態を親の状態と連結できる。 void Draw(TGrafPort& parentPort); MGraphicサブクラスは、より特殊な動作(すなわちビュー)を必要とし、それ をサポートするために、特別なセマンティックスを定義しなければならない。 使用法の例 A.グラフィック階層 特定のマトリックス状態オブジェクトが、「ローカル対グローバルのモデル・ マトリックスを与えてほしい。」と依頼された場合、その答は、親の状態のロー カル対グローバルのモデル・マトリックスに時々依存する。図13のグラフィッ ク階層を考慮のこと。このグラフィックは、グラフィックスの小さい2つののグ ループ、1400で示されるグループ1、1402で示されるグループ2から成 る。グループ2は、多角形を含み、グループ1内に置かれていて、グループ1は また、楕円を含む。双方のグループが含むTSimpleMatrixStateオブジェクトは、 それらのモデル座標系を定義する。 グループ1はスクリーンを表し、その親マトリックスは同一であることを意味 する。「ローカル対グローバルのモデル・マトリックスを与えてほしい。」と依 頼された場合、グループ1は自分自身のローカル・マトリックスを単に返す。グ ループ2が同じ質問をされると、自分自身のローカル・モデル・マトリックスを 、グループ1のローカル対グローバルのモデル・マトリックスとあらかじめ連結 して、その結果を返す。たぶん結果をキャッシュするだろう。 B.具体例 上記の抽象クラスの異なるサブクラスは、特殊化された動作を実現する。特殊 化された動作が有するのは、 1.階層的状態変数の異なる連結動作、たとえばクリップ領域の計算。 2.非階層的変数の異なるオーバライド動作、たとえばアンチエイリアシング(a ntialiasing)制御。 3.異なるストレージ(storage)要求。状態のサブセットをストアする必要のみ がほとんどである。 1.簡単なMGraphics(TPolygon) TPolygonの様な簡単なMGraphicsは、TGrafBundleクラスに含まれる属性(描画 操作、塗りつぶしとフレーム・ペイント(fill and frame paints)等)の指定の みを必要とする。TPolygonのDrawコールは以下に示される。 TGrafPort::Drawコールのオーバライドするバンドル・パラメータを使用する ことに留意すること。 2.より複雑なMGraphics いくつかのMGraohicsはTGrafBundleオブジェクトより多くの状態を要求する。 以下に示されるのは、TTGrafBundleとローカル・モデル・マトリックスをストア するグラフィックのDrawコールである。 3.スクリーンへの直接描画 スクリーンへの直接描画はこのようになされる。 4.クリップ境界(Clip Boundaries)を有するスクリーンへの直接描画 ネストされた(nested)クリップ境界と座標系を使用する、スクリーンへの直接 描画は、このように実行される。 5.バックバッファされた(Back-Buffered)グラフィックの描画 バックバッファリング(back-buffering)グラフィックは、子らの「キャッシュ 」としての役割をするデバイスを所有する。たとえば、フレーム・バッファにつ いて、バック・バッファはTGImageである。親との連結が起きるとき、バック・ バッファは渡されるデバイスに関して有効化(validate)される。渡されたデバイ スについて有効なバック・バッファであれば、デバイスに描画される。さもなけ れば、それは削除されて、新しいバック・バッファと置き換えられる。この動作 は、TLinkedBackBufferGrafPortクラスの中に包まれる。以下は、この特徴(feat ure)が実現されるいくつかの方法の1つである。 TBackBufferingGraphicクラスはバックバッファリングに関してなにも知らない 別のMGraphicについての「ラッパ(wrapper)」としての役割をすることができる ことに留意すること。 C.例 図14のMGraphicを考慮してほしい。それは、単一のTPolygon1506を含む 単一のTGroup1500から成る。双方ともいくつかのローカル状態を含む。TMyG roup1500は、ローカル状態TGrafBundle1502とTSimpleMatrixState15 04を含む。TPolygon1506は、ローカル状態TGrafBundle1508を含む。 図15は、好適実施例による詳細なロジックのフローチャートである。処理は 関数ブロック1600において開始する。ここでは、関数ブロック1640と1 650におけるロジックを使用してマトリックスを連結する、グラフポートが生 成される。関数ブロック1640と1650では、マトリックス状態オブジェク トが生成され、親ポートのマトリックス状態オブジェクトにリンクされて、連結 を容易化する。次に、関数ブロック1610において、ループが開始されて、ち ょうど生成されたポートの中に描画する。これは次のようにして達成される。多 角形または他の幾何図形を、関数ブロック1660におけるグラフポートへ渡す 。順に、グラフポートは、多角形または他の幾何図形と関数ブロック1670に おけるそのグラフィック状態オブジェクトを、グラフィック・デバイスへ渡す。 次に、関数ブロック1680において、デバイスは、渡されたグラフィック状態 オブジェクトからマトリックスを得る。次に、判断ブロック1690においてテ ストが実行されて、連結されたマトリックスが親マトリックスとローカル・マト リックスに関して古いかどうかを決定する。もし古ければ、親マトリックスとロ ーカル・マトリックスは、関数1692において連結されて、その結果が関数ブ ロック1694においてグラフィック・デバイスに返される。 関数ブロック1610において開始したループは、判断ブロック1620にお けるテストを含み、最後のグラフィック・オブジェクトが処理されたかどうかを 決定する。もしそうなら、関数ブロック1600において生成されたグラフポー トは、関数ブロック1630において削除され、グラフポートのマトリックス状 態は、関数ブロック1632において親とのリンクがはずされる。 本発明は、好適実施例により説明されてきたが、当業者は、以下の請求の範囲 の精神と範囲内における変更で、本発明を実施することができることを認めるだ ろう。DETAILED DESCRIPTION OF THE INVENTION Graphic State Handling Copyright notices A portion of this patent application contains material which is subject to copyright protection. The copyright owner has no objection if the copy is either in the patent document or the disclosure of the patent, such as would appear in the Patent and Trademark Office patent file or records, but in any other case, All copyrights are reserved. CROSS-REFERENCE This patent application is related to a patent application called OBJECT ORIENTED GRAPHIC SYSTEM filed on November 3, 1993, and is assigned to Taligent. The disclosure of which is incorporated herein by reference. FIELD OF THE INVENTION The present invention relates generally to improvements in computer systems, and more particularly to systems and methods for graphic state processing. BACKGROUND OF THE INVENTION In previous graphics architectures, a graphic typically stored its state (eg, color, transfer mode, clip area, etc.) privately. When asked to draw, the graphic procedurally copies these state variables into the GrafPort, which are accessed by the rendering code. Therefore, the state of this graphic is available only during this explicit drawing operation. This is a limitation that graphic systems, not object-oriented, cannot do. Another problem with prior art graphics architectures is forcing a graphics hierarchy within a graphic object because that object interacts with that object while it is drawing. is there. SUMMARY OF THE INVENTION Therefore, a first object of the present invention is to provide a system and method for processing graphic states. It is a further object of the present invention to provide a system and method that provides access to a graphic state other than the graphic that uses the graphic state. These and other objects of the invention are to provide a method and system having a graphics state object used by a graphic to render that graphic. Graphic state objects may also include the ability to establish relationships with rendering devices and associated caches. In addition, the state object contains a number of sub-states. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a diagram illustrating a typical hardware configuration of a computer according to the present invention. FIG. 2 is a diagram showing the entire structure of TGrafState. FIG. 3 is a diagram showing a TgrafPort to which a method for accessing a device and a device cache is added. FIG. 4 is a diagram showing a TGrafPort that allows a graphic object to "dump" its contents into a TGrafDevice object as appropriate. FIG. 5 is a diagram showing a simple hierarchical graphic. FIG. 6 is a diagram showing an object in the Draw call of TPolygon. FIG. 7 is a diagram showing a transient hierarchy. FIG. 8 is a diagram showing a TRootGrafPort class (class) including default values for each sub-state. FIG. 9 is a diagram showing a TLinkedBundlePort class that plays a role of concatenating a “parent” TGrafPort object and a TGrafBundle object. FIG. 10 is a diagram showing the relationship of the TSimpleMatrixState class. FIG. 11 is a diagram showing a relationship between TClipState subclasses. FIG. 12 is a diagram showing relationships established for TMatrix3DState. FIG. 13 is a diagram showing an example of a graphic hierarchy. FIG. 14 is a diagram of MGraphic. FIG. 15 is a flow chart showing an example of what happens when a call to TMyGroup :: Draw is made. DETAILED DESCRIPTION OF THE INVENTION Detailed embodiments of the present invention are disclosed herein. However, it should be understood that the disclosed embodiments are merely illustrative of the invention and may be embodied in various forms. Therefore, the details disclosed herein should not be construed as limiting, but merely as a basis for the claims, as a basis for teaching those skilled in the art how to make and / or use the invention. Be interpreted. The history of object-oriented programming and the development of frameworks are fully established in the literature. C ++ and Smalltalk are well documented and will not be described in detail here. Similarly, the properties of objects, such as encapsulation, polymorphism, inheritance, are well explained in the literature and patents. For a good overview of object-oriented systems, readers should refer to Grady Booch's “Object Oriented Design With Applications”. Many object-oriented systems are designed to run on the underlying operating system that performs the basic I / O, but this system provides system-level support for special features. It is used to The preferred implementation of the invention is under an operating system residing on a personal computer, such as IBM's PS / 2 (R) or Apple (R) Macintosh (R). It is the execution in. A typical hardware environment is depicted in Figure 1. FIG. 1 is a diagram depicting a typical hardware configuration of a computer according to the main invention, showing a central processing unit 100, for example a normal microprocessor, and many other units interconnected via a system bus 132. have. The computer shown in FIG. 1 has a read only memory (ROM) 104, a random access memory (RAM) 106, peripherals, such as other I / O peripherals represented by disk units 108 and 110. An input / output adapter 112 that connects the device to the system bus 132, a keyboard 130, a mouse 126, a speaker 122, a microphone 124, and / or other user interface device, such as a touch screen device (shown) connected to the bus. Communication interface 116 that connects the workstation to the data processing network represented by the user interface adapters 128, 114 that connect the (not) to the bus. A display adapter 120 connects the bus to the display device 118. The workstation has an operating system residing on it, for example the Apple System / 7® operating system. Definition Graphic State-All graphical state variables (sometimes called attributes) needed to draw a geometry, such as paint and transfer mode. ), Pen geometry, matrix, clip area, etc. Graphic Hierarchy-A hierarchical arrangement of graphical primitives in which graphic states, such as coordinate system and clipping information, can be inherited from a parent graphic to a child graphic. GrafPort-A container for a complete set of graphic states, devices, and device caches. The disclosed graphics state processing system achieves many goals of increasing the overall efficiency of graphics processing applications. One of those goals is to support an abstract base class that represents a collection of all graphical states, and a hierarchical behavior of states (concatenation: Support). Subclasses provide specific implementations for storage and concatenation of state variables. Another purpose is to require that the connection of the child graphic state to the parent state must be isolated at the child. The parent's condition should not be affected by the concatenation. Furthermore, the child has the final say in determining the final value of a variable. Therefore, the parent cannot indicate the value of a variable. The goal is also that the graphic state can easily communicate with the TGrafDevice object. Yet another goal is to support a framework that allows graphics state to be accessed outside the context of the graphics Draw call. For example, a sprite would need access to a graphic state object to draw into a view. Another goal is to not bake any assumptions about the graphic hierarchy into the TGrafDevide class. The graphic hierarchy is naturally realized within the graphic itself. Therefore, no special design can be imposed on the hierarchy by TGarfDevice. Finally, another goal is to make all device-dependent data types private to the device. For example, all clipping is specified by TGAreas, not the area. As explained in the background of the invention, in previous graphic architectures, the graphic typically privately stores its state (eg, color, transfer mode, clip area, etc.). When drawing is requested, the graphic procedurally copies these state variables into the GrafPort and is accessed by the rendering code. Therefore, the graphics state is only available during this explicit drawing operation. The system provides a framework for graphics to store their state. The architecture supported by this framework allows clients to access graphics state outside the context of a "draw" function. The set of graphic states can be represented by a single object instead of a series of codes. This is the goal of the TGrafP ort class. An abstract class defines the interface for accessing state variables. The concrete subclass defines the actual storage and concatenation behavior of the state variables. The old way is And the new way is It is. TGrafState and TGrafPort FIG. 2 is a diagram showing the overall structure of TGrafState. This structure groups all graphic states into 6 different groups and then puts them together in a single class called TGrafState200. The six “sub-states” 202 are TA ttributeState (set of attributes that determine the appearance of the graphic), two TMatrixStates (2D view and model coordinate system), TClipState (2D clipping information), TSceneState ( 3D camera and light), TMatrix3DState (3D model coordinate system). The T GrafState object 200 is used by classes that need access to all graphic states. Moreover, due to the abstract design of the TGrafState class, the child graphic state is linked to its parent state without actually changing the parent state. It should be noted that FIG. 2 is not exhaustive. The six sub-states shown here can be larger or smaller than six depending on the desired design. Moreover, the elements that make up the six substates are not exhaustive. For example, the attributes can virtually include any of the graphic attributes known in graphic processing. Also shown in FIG. 2 are exemplary elements 204 of the six sub-states 202 outlined above. In particular, GetAttributeState has GetDrawOperation, GetFill Paint, GetFramePaint and GetAntialiasing; GetViewMatrixState has Get Matrix; GetModelMatrix has GetMatrix; GetClipState has GetClipArea; GetSceneState has CreateLightIterator and these substates with Elements are merely examples, and many include more than those shown and described herein. The TGrafPort class is a subclass of TGrafState. As shown in FIG. 3, TGrafPort adds method 302 to access devices and device caches. GetDevice returns a pointer to the device where the rendering is done. GetCache returns a pointer to the cache used by devices that cache device-dependent objects. TGrafPort also contains 6 substates. The main purpose of subclassing the TGrafPort 300, including the six sub-states, is to define how graphics state, devices, and storage of device caches are tied together. Substates help divide state variables into commonly used groups. Simpler, flatter groups of state variables are not flexible enough to allow customization of state concatenation for a subset of state variables. For example, simple graphics typically only require TGrafBundle, a useful TAttributeStat e subclass. More complex graphic objects require a matrix and possibly a clip area. See the substates section for more information on these classes. Graphics classes such as MGraphic must describe themselves to TGrafDevide by a basic set of geometries, and each geometry must have a set of TGrafState objects associated with it (not necessarily unique). It doesn't have to be). As shown in FIG. 4, TGrafPort 402 allows graphic object 400 to "dump" its contents into a TGrafDevice object as appropriate. This is accomplished by supplying a set of Draw functions to the TGrafPort class, which reflects the set of Render functions provided by the TGrafDevice class. Each Draw function takes a geometry and passes it and the port's graphic state 404 to the appropriate Render call of device 408. For convenience, the overriding bundle and model matrix can also be passed at 404. The TGrafPort class is shown below. These are 2D Draw calls. They exist for convenience only. They call the corresponding TGrafDevide :: Render calls to pass the graphics state and device cache. The purpose of multiple, disjoint calls (as opposed to polymorphic single calls) is that only small, well-defined sets of basic 2D geometries are supported by the graphics device. This is to enforce the rule. These are 2DDraw calls that take an additional bundle and model matrix. They exist for convenience only due to certain special conditions. They call the corresponding TGrafDevide :: Render calls to pass the graphics state and device cache. Before the appropriate TGrafDevice :: Render function is called, the bundle and model matrix are bound to the state, as shown at 404 in the TGrafPort object. The purpose of the bundles and optional matrix is to facilitate the coupling of typically changing states from geometry to geometry. However, since this concatenation occurs each time it is called, their use is discouraged when bundles or matrices are shared by multiple geometries. These are 3D Draw calls. They exist only for convenience. They make the corresponding TGrafDevice :: Render calls and pass the graphics state and device cache. Similar to 2D calls, the purpose of many disjoint calls is to enforce the rule that only a small, well-defined set of basic 3D geometries is supported by a graphics device. . These are 3DDraw calls that take an additional bundle and a 3D model matrix. They exist for convenience only due to certain special conditions. They make the corresponding TGrafDevice :: Render call and pass the graphics state and device cache 406. Although cache 406 is shown as residing in device 408, this is for illustration purposes only. The cache 406 may actually be anywhere memory is provided, may be memory separate from the device 408, or may be directly related to where a particular graphics rendering is being performed. Not in another device. Before the appropriate TGrafDevice :: Render function is called, the bundle and model matrix is bound to the state, as shown at 404 in the TGrafPort object. The purpose of the bundles and optional matrix is to facilitate the coupling of typically changing states from geometry to geometry. However, since this concatenation occurs each time it is called, their use is discouraged when bundles or matrices are shared between multiple geometries. A. Device Cache Since device cache 406 can potentially be large objects, care must be taken to ensure that they do not inadvertently propagate through the system. There are two approaches to the default behavior. 1. Each GrafPort can have its own device cache, but it will be expensive. There will be too many caches to hang around. This is not the desired default behavior. 2. Each TGrafPort creates its own cache if it is not given by the parent. By default, this means that only the GrafPort at the top of each graphics hierarchy can have a cache. This is probably the default behavior that is acceptable. If the same root GrafPort is used as a bunch of layers, this layer will automatically share the cache at the root GrafPort. If a cache is required for each GrafPort, a GrafPort subclass will be written to achieve that. In some cases it is desirable to override the default cache behavior. The view may want so. In the old view system, each view cached a device-dependent area. Region generation was very expensive, so it was a good optimization. In the present system, views can maintain their own device cache (which caches regions like other device-dependent objects). B. Graphic State Concatenation FIG. 5 provides a simple hierarchical graphic. The graphic of FIG. 5 consists of polygons 502 and ellipses 506 in group 500. Each graphic in the hierarchy can store any subset of the graphic states. For example, a polygon and an ellipse have TGrafBundles 504 and 508 respectively, but TGroup does not store any graphic state. This seems quite straightforward until hierarchical states, eg matrices, are considered. To create an accurate, local-to-global matrix, the graphic's local matrix must be concatenated with its parent's local-to-global matrix. This concatenated matrix is cached by the graphic that provided it. The architecture provides this type of behavior. The graphic state must be "concatenated" to the state of its parent graphic, creating a new full set of states that apply to the graphic. When TGroup :: Draw is called, its parent TGrafPort object is passed. Since T Group 500 does not have its own state, it does not perform any concatenation, it simply passes the parent's TGrafPort object to the polygon's Draw call, then to the ellipse's Draw call. Polygon 502 has a TGrafBundle 504 that must be connected to its parent TGrafPort object. This is done by creating a "linked" TGrafPort subclass (TLinkedBundlePort) that can perform this concatenation. Next, a call to TLinkedBundlePort :: Draw (const TGPolygon &) is made. FIG. 6 shows the objects in the TPolygon Draw call. Elements 600, 602, 604, 610, 612 have corresponding elements already described with respect to FIG. FIG. 6 also has TGafState 608. The TLinkedBundlePort object 606 is created locally for the TPolygon's 602Draw call, so this type of concatenation is temporarily present. This is necessary for some types of graphic hierarchy. For example, if a graphic hierarchy allows a particular graphic to be shared by two or more other graphics, then the shared graphic may have multiple parents, so Must be realized. For example, in FIG. 7, curve 706 is shared by graphics B702 and C710. Each GraphicB 702, GraphicC 710, TCurve 706 has an associated TGrafBundle 704, 712, 708, respectively. From GraphicA 700, a branch can be taken to either GraphicB 702 or GraphicC 710. The concatenation must be temporary because the result of the concatenation will be different depending on the branch taken (B or C). This is how the temporary hierarchy works. Graphical objects in the persistent hierarchy require knowledge of the parent information that the graphic can be drawn using the parent's state even though the parent is not actually drawn. A view system is an example of such a graphic hierarchy. A few things can be said about the persistent hierarchy. 1. Graphics in this hierarchy cannot be shared by multiple parents. 2. Special semantics, such as LinkTo and Unlink calls, parameterless Draw calls must be added to the graphics class used in this hierarchy. 3. You can also use the TGarfPort subclass, which stores more private substate objects, such as the 2D View Matrix State and Clip State objects. Therefore, each graphic will want to maintain its own private device cache. 4. If multitask-safe is needed, it will be realized. Efficiency It is important to pay attention to efficiency as many graphic state objects move around the system. There are two important things. 1. Simple MGraphics should only include "deltas" or changes in the parent's state. For example, a TPolygon object should only contain TGrafBundle objects. 2. Some state variables are shared by multiple graphics. The first important point is that the abstract nature of this architecture draws attention, and it is recognized that different TgrafPort subclasses contain only the necessary parts. The second important thing is that attention is paid to using shared attributes. Sub-States The following classes are "sub-states" classes accessed through the TGrafPort class. They provide access to the actual graphic state variables. Most of them, like TG rafPort, are abstract classes that define only "getters". Subclasses provide implementations of how state variables are "gotten". Substate classes have different semantics that connect with their parents. The LinkTo function provides a temporary connection from a child object to its parent so that concatenation occurs. The Unlink function serves this purpose. These semantics are used for two reasons. 1. The concatenated value can be cached by the child. 2. The child-to-parent binding also needs to be more durable than the more typical transient case. For more information on LinkTo and Unlink, see the chapter "Using LinkTo and Unlink" below. Substates are shown below. A. TAttributeState The TAttributeState class contains information about the appearance of graphics as they are drawn. This class definition is shown below. B. TMatrixState The TMatrixState class defines a 2D coordinate system. TMatrixState contains a protocol that accesses a matrix that transforms from a local coordinate system to some global coordinate system (typically the world coordinate system). The TLinkableMatrixState class defines a protocol that supports linking or concatenation with another TMatrixState object. This linking action has two reasons in the subclass. 1) Not required by clients accessing the matrix (eg T Graf Device). 2) Different linking interfaces may be used by advanced clients. The class definition is shown below. C. TClipState The TClipState class defines a shape or boundary to clip. It contains the protocol to access the clip area and is used by the device during rendering. The TLinkableClipState class defines a protocol that supports linking or concatenation with another TClipState object. This concatenation operation has two reasons in the subclass. 1) Not required by clients accessing the clip area (eg TGrafDevice). 2) Different linking interfaces may be used by advanced clients. The class definition is shown below. D. TSceneState The TSceneState class contains information about a scene as a whole. This information is normally only specified once per scene. It contains the following members: The Lights Camera class definition is shown below. E. FIG. TMatrix3DState The TMatrix3DState class defines a 3D coordinate system. TMatrix3DState contains a protocol to access a matrix that transforms from a local coordinate system to some global 3D coordinate system (typically a 3D world coordinate system). The TLinkableMatrix3DState class defines a protocol that supports linking or concatenation with another TMatrix3DState object. This linking action has two reasons in the subclass. 1) Not required by clients to access the matrix (eg TGrafDevice). 2) Different linking interfaces may be used by advanced clients. The class definition is shown below. F. Using LinkTo and Unlink The LinkTo and Unlink functions are typically called only from within "linked" TGrafPort objects, so you'll rarely need to call them directly. Calling them directly results in exception-hostile code. If an exception is thrown between the LinkTo and Unlink calls, the Unlink call will never be made. Bad news. The good news is that you can use the supplied TgrafPort subclass if it needs to be called directly in your code, or you can subclass TGrafPort yourself if you need special behavior. That is. Like other linked port classes, you should call the LinkTo function in the constructor and the Unlink function in the destructor. System-Supplied Subclasses The graphics system provides several useful subclasses of the Graphic State class. Some of them are explained below. A. TGrafPort Subclass As shown in FIG. 8, the TRootGrafPort class 902 contains default values for each substate 904-912. All substates reach TGrafPort 900 via TRootGrafPort 902. Therefore, it represents a World Coordinate space with an infinite clip area. It has a pointer to the TGrafDvice object and owns the device cache that it gets from the device. Use of this class should render only off-screen by the client. Use within on-screen results in drawing across the entire screen. As shown in FIG. 9, the TLinkedBundlePort class 1002 serves as the concatenation of the “parent” TGrafPort object 1000 and TGrafBundle object 1004. It is used when a local bundle needs to be bound to an attribute state object in the parent TGrafPort object 1000. The rest of the parent state is inherited. The TLinkedViewMatrixPort class 1006 serves as a connection between the parent TGrafPort object 1000 and the specified view matrix 1008. It is used when a local view coordinate system is desired. It concatenates the specified matrix to the view matrix in the parent TGrafPort object 1000. The rest of the parent's state is inherited. Alternatively, if caching of a concatenated matrix is desired, the matrix state object is passed instead of the matrix. The TLinkedModelMatrixPort class 1010 serves as a connection between the parent TGrafPort object 1000 and the specified model matrix 1012. It is used when a local model coordinate system is desired. It concatenates the specified matrix to the model matrix in the parent TGrafPort object 1000. The rest of the parent's state is inherited. Alternatively, if caching of a concatenated matrix is desired, the matrix state object is passed instead of the matrix. The TLinkedClipAreaPort class 1014 serves as a connection between the parent TGrafPort object 1000 and the TGArea1016. It is used when the local clip region needs to intersect with the clip region in the parent TGrafPort object 1000. The rest of the parent's state is inherited. Alternatively, if caching of the attached clip areas is desired, the clip state object is passed instead of the clip areas. The TLinkedScenePort class 1018 serves as a connection between the parent TGrafPort object 1000 and the TSceneState object 1020. It is used when the local scene state needs to be concatenated with the scene state in the parent TGrafPort object. The rest of the parent's state is inherited. The TLinkedModelMatrix3DPort class 1022 serves as a concatenation of the parent TGrafPort object 1000 and the specified 3D model matrix 1024. It is used when a local 3D model coordinate system is desired. It concatenates the specified matrix into the 3D model matrix in the parent TGrafPort object. The rest of the parent's state is inherited. Alternatively, if caching of a concatenated matrix is desired, the matrix state object is passed instead of the matrix. B. TAttributeState Subclasses These subclasses virtually have any appearance attributes of the graphics processing system. C. TMatrixState Subclass As shown in FIG. 10, TSimpleMatrixState 1104 contains a local 2D matrix 1106. The local matrix concatenates via 1102 with the parent's local-to-global matrix to create its own local-to-global matrix 1100. This is what is returned by GetMatrix. D. TClipState Subclass FIG. 11 is a diagram showing the relationship of the TClipState subclass 1200. The TSimpleClipState class 1204 contains a single TGArea object 1206 as its local clip area. The local clip area intersects with its parent clip area to create the clip area returned by GetClipArea. GetClipAreaWithChildren returns the same clip area. A more sophisticated TinkableClipState subclass 1202, defined by the view system, incorporates its children's clip regions into the equation. It subtracts their clip area from itself to create a new clip area returned by GetC lipArea. See the View Systems literature for more information. E. FIG. TSceneState Subclass The TSceneState subclass holds information about the scene as a whole. For example, this subclass may have a light and a camera. F. TMatrix3DState Subclass FIG. 12 is a diagram showing relationships established for TMatrix3DState 1300. The TSimpleMatrix3DState class 1304 contains a local 3D matrix 1306. The local matrix is concatenated with the parent's local-to-global matrix to create its own local-to-global matrix. This is what is returned by GetMatrix. TLinkkableMatrix3DState 1302 provides a mechanism for linking TSimpleMatrix3DState 1304 and TMatrix3DState 1300. Usage by MGraphic In order to support the MGraphic hierarchy, the parent state must be passed to the MGraphic :: Draw call so that the child can concatenate its own state with the parent state. void Draw (TGrafPort &parentPort); MGraphic subclasses need more specialized behavior (ie views) and must define special semantics to support it. Examples of usage A. Graphic Hierarchy When a particular matrix state object is asked, "Give me a local-to-global model matrix," the answer sometimes depends on the local-to-global model matrix of the parent state. Consider the graphic hierarchy of FIG. This graphic consists of two groups of smaller graphics, group 1 shown at 1400 and group 2 shown at 1402. Group 2 contains polygons and is located within Group 1, which also contains ellipses. The TSimpleMatrixState objects that both groups contain define their model coordinate system. Group 1 represents the screen, meaning that its parent matrix is the same. If asked "Give me a local vs. global model matrix", Group 1 simply returns its own local matrix. When Group 2 is asked the same question, it pre-concatenates its own local model matrix with the Group 1 local versus global model matrix and returns the result. Maybe it will cache the result. B. Example Different subclasses of the above abstract class implement specialized behaviors. The specialized operations have: 1. Different connection behaviors of hierarchical state variables, eg clipping region calculation. 2. Different override behavior of non-hierarchical variables, eg antialiasing control. 3. Different storage requests. Most of the time it is only necessary to store a subset of the states. 1. Simple MGraphics (TPolygon) Simple MGraphics like TPolygon only need to specify the attributes (drawing operations, fill and frame paints, etc.) contained in the TGrafBundle class. The TPolygon Draw call is shown below. Note that you use the overriding bundle parameter of the TGrafPort :: Draw call. 2. More Complex MGraphics Some MGraohics require more state than TGrafBundle objects. Shown below is a Draw call for a graphic that stores a TTGrafBundle and a local model matrix. 3. Direct drawing on the screen Direct drawing on the screen is done in this way. 4. Direct Drawing on Screen with Clip Boundaries Direct drawing on the screen using nested clip boundaries and coordinate system is performed in this way. 5. Drawing Back-Buffered Graphics Back-buffering graphics own a device that acts as a "cache" for their children. For example, for frame buffer, the back buffer is TGImage. When concatenation with the parent occurs, the back buffer is validated for the passed device. If it is a valid back buffer for the given device, it will be drawn to the device. Otherwise it is deleted and replaced with a new back buffer. This behavior is wrapped in the TLinkedBackBufferGrafPort class. The following is one of several ways this feature can be implemented. Note that the TBackBufferingGraphic class can act as a "wrapper" for another MGraphic that knows nothing about backbuffering. C. Example Consider the MGraphic in Figure 14. It consists of a single TGroup 1500 containing a single TPolygon 1506. Both contain some local state. The TMyGroup 1500 includes a local state TGrafBundle 1502 and a TSimpleMatrixState 1504. The TPolygon 1506 contains a local state TGrafBundle 1508. FIG. 15 is a detailed logic flow chart according to the preferred embodiment. Processing begins at function block 1600. Here, a graph port is generated that connects the matrices using the logic in function blocks 1640 and 1650. In function blocks 1640 and 1650, matrix state objects are created and linked to parent port matrix state objects to facilitate concatenation. Next, in function block 1610, a loop is started to draw into the port just created. This is achieved as follows. Pass the polygon or other geometry to the graph port in function block 1660. In turn, the graph port passes the polygon or other geometry and its graphic state object in function block 1670 to the graphics device. Next, in function block 1680, the device obtains a matrix from the passed graphic state object. Next, a test is performed at decision block 1690 to determine if the concatenated matrix is old with respect to the parent and local matrices. If old, the parent and local matrices are concatenated in function 1692 and the result is returned to the graphics device in function block 1694. The loop started at function block 1610 includes the test at decision block 1620 to determine if the last graphic object has been processed. If so, the graph port created in function block 1600 is deleted in function block 1630, and the matrix state of the graph port is unlinked from its parent in function block 1632. Although the present invention has been described in terms of a preferred embodiment, those skilled in the art will recognize that the invention can be practiced with modification within the spirit and scope of the following claims.

【手続補正書】特許法第184条の8 【提出日】1995年11月20日 【補正内容】 (原文明細書第1頁) 明細書 グラフィック状態処理 著作権の告示 この特許出願の一部は、著作権保護のもとにある資料を含む。著作権者は、複 写物が特許文献または特許の開示のいずれかによるもの、たとえば特許商標庁の 特許ファイルまたは記録に現れるようなものならば、異議はないが、何であれそ の他の場合には、すべての著作権を留保する。 関連出願へのクロス・リファレンス(CROSS-REFERENCE) この特許出願は、1993年11月3日に出願されたオブジェクト指向グラフ ィック・システム(OBJECT ORIENTED GRAPHIC SYSTEM)と称する特許出願に関連し 、Taligent社に譲渡されたものであり、開示は参照によりここに組み込まれてい る。 発明の分野 本発明は、一般的にはコンピュータ・システムにおける改良に関し、特にグラ フィック状態処理のシステムおよび方法に関する。 発明の背景 以前のグラフィックス・アーキテクチャでは、あるグラフィックがその状態( たとえば色、転送モード、クリップ領域(clip area)等)を典型的にはプラ イベートに(privately)ストアしている。描画(draw)を頼まれると、そのグラフ ィックはこれらの状態変数をGrafPortの中へ手続き的にコピーし、これらの変数 はレンダリング・コード(rendering code)によりアクセスされる。したがって、 このグラフィックの状態が利用可能であるのは、この明白な描画操作(drawing o peration)間だけである。これは、オブジェクト指向ではなく、グラフィック・ システムが行うことができない制限である。従来技術のグラフィックス・アーキ テクチャの別の問題は、グラフィック階層(hierarchy)をグラフィック・オブジ ェクト内に強制することであり、これはそのオブジェクトが、そのグラフィック の描画中にそのオブジェクトと相互作用するためである。Haralick,R.M.等によ る“The Image Understanding Environment(画像理解の環境)”、SPIE、vol.165 9,Imaging processing and Interchangeは、手続き的プログラミング・システム におけるグラフィック幾何図形の標準を開示している。種々の幾何図形が、特別 な幾何図形について、適当な型のデータを含むものとして定義されている。曲線 の幾何図形のカテゴリの定義は、その論文で示された特定の情報である。Foley, J.D.による“Computer Graphics:Principles and Practice(コンピュータ・グ ラフィックス:原理と実際)”、Addison,Wesley Publishers,1992,2nd edition ,pp.292-4,318-321および332は、リテイン・モード・グラフィック・システム(r etain mode graphic system)の簡単な概観を開示する。この論文は、オブジェク ト指向設計の使用について説明も示唆もしていない。まして、オブジェクトが、 本発明に関して以下で説明される特殊化されたグラフィック・オブジェクトに関 するメソッドおよびデータから成っていることは、説明も示唆もしていない。ま た、この論文は、ディスプレイ上に現れる各幾何図形において、幾何図形と関連 したすべての情報のコピーを重複する通常のリテイン・モード・フィーチャ(ret ain mode features)を要求している。この論文はまた、継承技術を実現する手続 き的データ構造によって、ディスプレイ上のグラフィック・エンティティ(entit y)の属性を継承する技術を、説明している。 発明の要約 それゆえに、本発明の第1の目的はグラフィック状態を処理するシステムと方 法を提供することにある。 本発明の第1の目的とは別の目的は、グラフィック状態を使用するグラフィッ クとは別のグラフィック状態へのアクセスを提供するシステムと方法を提供する ことにある。 本発明のこれらと他の目的は、あるグラフィックによりそのグラフィックをレ ンダ(render)するのに使われるグラフィック状態オブジェクトを有する方法およ びシステムを実現することにある。グラフィック状態オブジェクトはまた、レン ダリング(rendering)・デバイスおよび関連するキャッシュ(cache)との関係を確 立する能力を含むことができる。さらに、状態オブジェクトは多くのサブ状態(s ub-states)を含む。 請求の範囲 1.グラフィック状態処理の装置(10−38)において、 (a)プロセッサ手段と、 (b)前記プロセッサ手段(10)に付けられたストレージ手段(16、14 )と、 (c)前記プロセッサ手段(10)の制御下にあるグラフィック・デバイス( 36、38)手段と、 (d)1つまたはそれ以上の幾何図形(302)の性質および前記1つまたは それ以上の幾何図形(1402)と関連したグラフィック状態情報(904、9 06、908、910、および912)を定義する論理およびデータを含むグラ フィック・オブジェクト(400)と、 (e)アプリケーション手段であって、前記グラフィック・オブジェクト(1 610)に置かれている幾何図形(1600、1660)を処理し、かつ、該ア プリケーション手段(1600)および該グラフィック・オブジェクト(161 0)から前記グラフィック状態(1680)を利用して前記グラフィック・デバ イス(1670、36、38)上に前記幾何図形(1660)を提示するアプリ ケーション手段 を備えたことを特徴とする装置。 2.請求項1記載の装置において、前記グラフィック状態(904、906、9 08、910および912)に複数のサブ状態を含むことを特徴とする装置。 3.請求項2記載の装置において、前記グラフィック状態(904、906、9 08、910および912)のサブ状態に外観のレンダリング手段を含むことを 特徴とする装置。 4.請求項2記載の装置において、前記グラフィック状態(906、910)の サブ状態に座標手段を含むことを特徴とする装置。 5.請求項2記載の装置において、前記グラフィック状態(908)のサブ状態 にクリッピング手段を含むことを特徴とする装置。 6.請求項2記載の装置において、前記グラフィック状態(912)のサブ状態 にシーン手段を含むことを特徴とする装置。 7.請求項1記載の装置において、該装置(34、23)に付けられた1組のデ バイスに属する情報を通信する通信手段を含むことを特徴とする装置。 8.請求項1記載の装置において、グラフィック情報(406)をストアするキ ャッシュ手段を含むことを特徴とする装置。 9.請求項1記載の装置において、 (a)前記アプリケーション(14)から描画する関数を受け取るストレージ 手段と、 (b)グラフィック状態の情報(14)を受け取るストレージ手段と、 (c)該装置(404、34および23)に付けられた装置の前記組へ、前記 描画する関数と前記グラフィック状態を送る手段と を含むことを特徴とする装置。 10.請求項9記載の装置において、情報(406)をキャッシュする手段を含 むことを特徴とする装置。 11.請求項9記載の装置において、前記グラフィック・デバイスがディスプレ イ(38)であることを特徴とする装置。 12.請求項1記載の装置において、グラフィック状態オブジェクト(1002 、1006、1010、1014、1018および1024)の連結を実行する 手段を含むことを特徴とする装置。 13.請求項9記載の装置において、前記グラフィック・デバイスがプリンタ( 20)であることを特徴とする装置。 14.請求項9記載の装置において、前記グラフィック・デバイスがプロッタ( 21)であることを特徴とする装置。 15.付けられたストレージおよびディスプレイを有するプロセッサにおけるグ ラフィック状態処理の方法において、 (a)1つまたはそれ以上の幾何図形(302)の性質および前記1つまたは それ以上の幾何図形(1402)と関連したグラフィック状態情報(904、9 06、908、910、および912)を定義する論理およびデータを含むグラ フィック・オブジェクト(400)を定義するステップと、 (b)前記グラフィック・オブジェクト(1610)に置かれた幾何図形(1 600、1660)を処理するステップと、 (c)前記グラフィック・オブジェクト(1610)から前記グラフィック状 態(1680)を利用して前記グラフィック・デバイス(1670、36、38 )上に前記幾何図形(1660)を提示するステップと を備えたことを特徴とする方法。 16.請求項15記載の方法において、前記グラフィック状態(904、906 、908、910および912)に複数のサブ状態をストアするステップを含む ことを特徴とする方法。 17.請求項16記載の方法において、前記グラフィック状態(904、906 、908、910および912)のサブ状態に基づいて外観のレンダリングを実 行するステップを含むことを特徴とする方法。 18.請求項16記載の方法において、前記グラフィック状態(906、910 )のサブ状態における情報に基づいて座標処理を実行するステップを含む ことを特徴とする方法。 19.請求項16記載の方法において、前記グラフィック状態(908)のサブ 状態における情報に基づいて前記グラフィック上のクリッピングを実行するステ ップを含むことを特徴とする方法。 20.請求項16記載の方法において、前記グラフィック状態(912)のサブ 状態にストアされた情報に基づいてシーンのレンダリングを実行するステップを 含むことを特徴とする方法。 21.請求項15記載の方法において、1組の装置(34および23)に属する 情報を通信するステップを含むことを特徴とする方法。 22.請求項15記載の方法において、キャッシュ(406)にグラフィック情 報をストアするステップを含むことを特徴とする方法。 23.請求項15記載の方法において、 (a)アプリケーション(14)から描画する関数を受け取るステップと、 (b)グラフィック状態の情報(14)を受け取るステップと、 (c)1組の装置(404、34および23)へ前記描画する関数および前記 グラフィック状態を送るステップと を含むことを特徴とする方法。 24.請求項23記載の方法において、前記キャッシュ手段(406)へ前記グ ラフィック状態を送るステップを含むことを特徴とする方法。 【図2】 [Procedure Amendment] Patent Act Article 184-8 [Submission date] November 20, 1995 [Amendment content] (Original specification page 1) Specification Graphic status processing Copyright notice , Including materials under copyright protection. The copyright owner has no objection if the copy is either in the patent document or the disclosure of the patent, such as would appear in the Patent and Trademark Office patent file or records, but in any other case, All copyrights are reserved. CROSS-REFERENCE This patent application is related to a patent application called OBJECT ORIENTED GRAPHIC SYSTEM filed on November 3, 1993, and is assigned to Taligent. The disclosure of which is incorporated herein by reference. FIELD OF THE INVENTION The present invention relates generally to improvements in computer systems, and more particularly to systems and methods for graphic state processing. BACKGROUND OF THE INVENTION In previous graphics architectures, a graphic typically stored its state (eg, color, transfer mode, clip area, etc.) privately. When asked to draw, the graphic procedurally copies these state variables into the GrafPort, which are accessed by the rendering code. Therefore, the state of this graphic is only available during this explicit drawing operation. This is a limitation that graphic systems, not object-oriented, cannot do. Another problem with prior art graphics architectures is forcing a graphics hierarchy within a graphic object because that object interacts with that object while it is drawing. is there. Haralick, RM. Et al., "The Image Understanding Environment", SPIE, vol.165 9, Imaging processing and Interchange, discloses a standard for graphic geometry in procedural programming systems. Various geometries are defined for a particular geometry as containing the appropriate type of data. The definition of a category of curved geometry is the specific information presented in that paper. "Computer Graphics: Principles and Practice" by Foley, JD, Addison, Wesley Publishers, 1992, 2nd edition, pp.292-4, 318-321 and 332 are retained mode graphics. A brief overview of the system (retain mode graphic system) is disclosed. This paper does not describe or suggest the use of object-oriented design. Furthermore, there is no explanation or suggestion that the object consists of methods and data for specialized graphic objects as described below with respect to the present invention. The article also requires that for each geometry that appears on the display, ordinary ret ain mode features that duplicate a copy of all the information associated with the geometry. This paper also describes a technique for inheriting the attributes of graphic entities on a display by means of a procedural data structure that implements the inheritance technique. SUMMARY OF THE INVENTION Therefore, a first object of the present invention is to provide a system and method for processing graphic states. It is a further object of the present invention to provide a system and method that provides access to a graphic state other than the graphic that uses the graphic state. These and other objects of the invention are to provide a method and system having a graphics state object used by a graphic to render that graphic. Graphic state objects may also include the ability to establish relationships with rendering devices and associated caches. In addition, the state object contains a number of sub-states. Claims 1. In the graphic state processing apparatus (10-38), (a) processor means, (b) storage means (16, 14) attached to the processor means (10), and (c) the processor means (10). A graphics device (36, 38) means under control of (d) the nature of one or more geometry (302) and the graphics state associated with said one or more geometry (1402) A graphic object (400) containing logic and data defining information (904, 906, 908, 910, and 912); and (e) an application means located in said graphic object (1 610). The geometrical figures (1600, 1660) that are present, and the application means (1600). And an application means for presenting the geometric figure (1660) on the graphic device (1670, 36, 38) from the graphic object (1610) using the graphic state (1680). And the device. 2. The apparatus of claim 1, wherein the graphic states (904, 906, 908, 910 and 912) include a plurality of sub-states. 3. 3. The apparatus according to claim 2, wherein the graphic state (904, 906, 908, 910 and 912) sub-states includes appearance rendering means. 4. Device according to claim 2, characterized in that sub-states of the graphic states (906, 910) include coordinate means. 5. 3. The apparatus of claim 2, including clipping means in a substate of the graphic state (908). 6. 3. The apparatus of claim 2, including scene means in a substate of the graphic state (912). 7. An apparatus according to claim 1, including communication means for communicating information belonging to a set of devices attached to said apparatus (34, 23). 8. The apparatus of claim 1, including cache means for storing graphic information (406). 9. The device according to claim 1, wherein: (a) a storage unit that receives a function for drawing from the application (14); (b) a storage unit that receives the graphic state information (14); and (c) the device (404, 34 and 23), including means for sending the drawing function and the graphic state to the set of devices attached to 34 and 23). 10. 10. The apparatus of claim 9, including means for caching information (406). 11. Apparatus according to claim 9, characterized in that the graphics device is a display (38). 12. The apparatus of claim 1 including means for performing a concatenation of graphic state objects (1002, 1006, 1010, 1014, 1018 and 1024). 13. 10. The apparatus according to claim 9, wherein the graphic device is a printer (20). 14. Device according to claim 9, characterized in that the graphic device is a plotter (21). 15. A method of graphic state processing in a processor having attached storage and display, comprising: (a) the nature of one or more geometry (302) and the graphics associated with said one or more geometry (1402). Defining a graphic object (400) containing logic and data defining state information (904, 906, 908, 910, and 912); and (b) geometry placed on said graphic object (1610). Processing a graphic (1 600, 1660), (c) utilizing the graphic state (1680) from the graphic object (1610) onto the graphic device (1670, 36, 38) S which presents (1660) Method which is characterized in that a-up. 16. The method of claim 15 including the step of storing a plurality of sub-states in the graphic state (904, 906, 908, 910 and 912). 17. The method of claim 16, comprising performing a rendering of an appearance based on substates of the graphic states (904, 906, 908, 910 and 912). 18. The method of claim 16 including the step of performing coordinate processing based on information in substates of the graphic state (906, 910). 19. The method of claim 16, including performing clipping on the graphic based on information in substates of the graphic state (908). 20. The method of claim 16, including performing a rendering of a scene based on information stored in substates of the graphics state (912). 21. 16. The method according to claim 15, comprising the step of communicating information belonging to a set of devices (34 and 23). 22. The method of claim 15, comprising storing graphic information in a cache (406). 23. The method of claim 15, wherein (a) receiving a function to draw from the application (14), (b) receiving information (14) on the graphic state, and (c) a set of devices (404, 34). And 23) sending the drawing function and the graphics state to 23). 24. 24. The method of claim 23 including the step of sending the graphics state to the cache means (406). [Fig. 2]

───────────────────────────────────────────────────── フロントページの続き (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,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SK,UA,UZ,VN (72)発明者 ワタナベ リョウジ アメリカ合衆国 95014 カリフォルニア 州 クパチーノ パーム アヴェニュ 22284────────────────────────────────────────────────── ─── Continuation of front page    (81) Designated countries 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, CN, CZ, DE, DK, ES, FI, G B, HU, JP, KP, KR, KZ, LK, LU, LV , MG, MN, MW, NL, NO, NZ, PL, PT, RO, RU, SD, SE, SK, UA, UZ, VN (72) Inventor Ryoji Watanabe             United States 95014 California             Province Cupertino Palm Avenue             22284

Claims (1)

【特許請求の範囲】 1.グラフィック状態処理の装置において、 (a)プロセッサ手段と、 (b)前記プロセッサ手段に付けられたストレージ手段と、 (c)前記プロセッサ手段の制御下にあるグラフィック・デバイス手段と、 (d)グラフィック状態を有する前記ストレージ手段中のグラフィック状態オ ブジェクトと、 (e)アプリケーション手段であって、前記ストレージ手段に置かれている幾 何図形を処理し、かつ、該アプリケーション手段および前記グラフィック状態を 利用して前記グラフィック・デバイス上に前記幾何図形を提示するアプリケーシ ョン手段と を備えたことを特徴とする装置。 2.請求項1記載の装置において、前記グラフィック状態に複数のサブ状態を含 むことを特徴とする装置。 3.請求項2記載の装置において、前記グラフィック状態のサブ状態に外観のレ ンダリング手段を含むことを特徴とする装置。 4.請求項2記載の装置において、前記グラフィック状態のサブ状態に座標手段 を含むことを特徴とする装置。 5.請求項2記載の装置において、前記グラフィック状態のサブ状態にクリッピ ング手段を含むことを特徴とする装置。 6.請求項2記載の装置において、前記グラフィック状態のサブ状態にシーン手 段を含むことを特徴とする装置。 7.請求項1記載の装置において、該装置に付けられた1組のデバイスに属する 情報を通信する通信手段を含むことを特徴とする装置。 8.請求項1記載の装置において、グラフィック情報をストアするキャッシュ手 段を含むことを特徴とする装置。 9.請求項1記載の装置において、 (a)前記アプリケーションから描画する関数を受け取るストレージ手段と、 (b)グラフィック状態の情報を受け取るストレージ手段と、 (c)該装置に付けられた装置の前記組へ、前記描画する関数と前記グラフィ ック状態を送る手段と を含むことを特徴とする装置。 10.請求項9記載の装置において、情報をキャッシュする手段を含むことを特 徴とする装置。 11.請求項9記載の装置において、前記グラフィック・デバイスがディスプレ イであることを特徴とする装置。 12.請求項1記載の装置において、グラフィック状態オブジェクトの連結を実 行する手段を含むことを特徴とする装置。 13.請求項9記載の装置において、前記グラフィック・デバイスがプリンタで あることを特徴とする装置。 14.請求項9記載の装置において、前記グラフィック・デバイスがプロッタで あることを特徴とする装置。 15.付けられたストレージおよびディスプレイを有するプロセッサにおけるグ ラフィック状態処理の方法において、 (a)前記ストレージにグラフィック状態を有するグラフィック状態オブジェ クトを構築するステップと、 (b)前記ストレージ手段に置かれたグラフィックを処理するステップと、 (c)前記グラフィック状態に基づいて前記ディスプレイ上に前記グラフィッ クをディスプレイするステップと を備えたことを特徴とする方法。 16.請求項15記載の方法において、前記グラフィック状態に複数のサブ状態 をストアするステップを含むことを特徴とする方法。 17.請求項16記載の方法において、前記グラフィック状態のサブ状態に基づ いて外観のレンダリングを実行するステップを含むことを特徴とする方法。 18.請求項16記載の方法において、前記グラフィック状態のサブ状態におけ る情報に基づいて座標処理を実行するステップを含むことを特徴とする方法。 19.請求項16記載の方法において、前記グラフィック状態のサブ状態におけ る情報に基づいて前記グラフィック上のクリッピングを実行するステップを含む ことを特徴とする方法。 20.請求項16記載の方法において、前記グラフィック状態のサブ状態にスト アされた情報に基づいてシーンのレンダリングを実行するステップを含むことを 特徴とする方法。 21.請求項15記載の方法において、1組の装置に属する情報を通信するステ ップを含むことを特徴とする方法。 22.請求項15記載の方法において、キャッシュにグラフィック情報をストア するステップを含むことを特徴とする方法。 23.請求項15記載の方法において、 (a)アプリケーションから描画する関数を受け取るステップと、 (b)グラフィック状態の情報を受け取るステップと、 (c)1組の装置へ前記描画する関数および前記グラフィック状態を送るステ ップと を含むことを特徴とする方法。 24.請求項23記載の方法において、前記キャッシュ手段へ前記グラフィック 状態を送るステップを含むことを特徴とする方法。 25.請求項23記載の方法において、該方法に付けられた装置の前記組へ特殊 化された条件を送るステップを含むことを特徴とする方法。 26.請求項15記載の方法において、グラフィック状態オブジェクトの連結を 実行するステップを含むことを特徴とする方法。[Claims] 1. In the graphic state processing device,   (A) processor means,   (B) storage means attached to the processor means,   (C) a graphics device means under the control of said processor means;   (D) a graphic state in the storage means having a graphic state Object and   (E) Application means, which are stored in the storage means How many graphics are processed and the application means and the graphic state Application to utilize to present the geometry on the graphics device And means An apparatus comprising: 2. The apparatus of claim 1, wherein the graphic state includes a plurality of substates. Device. 3. 3. The apparatus according to claim 2, wherein the appearance of the sub-state of the graphic state is changed. An apparatus comprising a soldering means. 4. The apparatus according to claim 2, wherein the sub-state of the graphic state is coordinate means. An apparatus comprising: 5. The apparatus according to claim 2, wherein the sub-state of the graphic state is clipped. A device comprising a plugging means. 6. The apparatus according to claim 2, wherein a scene state is added to a sub state of the graphic state. An apparatus comprising a step. 7. The device according to claim 1, which belongs to a set of devices attached to the device. An apparatus comprising communication means for communicating information. 8. The cache device for storing graphic information according to claim 1, An apparatus comprising a step. 9. The device of claim 1, wherein   (A) storage means for receiving a drawing function from the application,   (B) storage means for receiving information on the graphic state,   (C) To the set of devices attached to the device, the drawing function and the graphics And a means to send An apparatus comprising: 10. The apparatus of claim 9 including means for caching information. Device to collect. 11. 10. The apparatus of claim 9, wherein the graphics device is a display. A device characterized by being a. 12. The apparatus of claim 1, wherein the connection of graphic state objects is implemented. An apparatus comprising means for performing. 13. The apparatus of claim 9, wherein the graphics device is a printer. An apparatus, comprising: 14. The apparatus of claim 9, wherein the graphics device is a plotter. An apparatus, comprising: 15. In a processor with attached storage and display In the method of rough state processing,   (A) A graphic state object having a graphic state in the storage The steps to build   (B) processing a graphic placed in said storage means;   (C) The graphic is displayed on the display based on the graphic state. And the step of displaying A method comprising: 16. The method of claim 15, wherein the graphic state includes a plurality of substates. A method comprising: storing a. 17. The method of claim 16 based on a sub-state of the graphic state. And performing a rendering of the appearance. 18. The method of claim 16, wherein the substate of the graphic state is A method comprising performing coordinate processing based on the information provided. 19. The method of claim 16, wherein the substate of the graphic state is Performing clipping on the graphic based on the information A method characterized by the following. 20. The method of claim 16, wherein sub-states of the graphic state are stored. The step of performing a rendering of the scene based on the information provided. Features method. 21. The method according to claim 15, wherein a step of communicating information belonging to a set of devices. A method comprising: 22. The method according to claim 15, wherein graphic information is stored in a cache. A method comprising the steps of: 23. The method of claim 15, wherein   (A) receiving a drawing function from the application,   (B) a step of receiving information on a graphic state,   (C) A step of sending the drawing function and the graphic state to a set of devices. And A method comprising: 24. 24. The method of claim 23, wherein the graphics to the cache means. A method comprising sending a state. 25. 24. The method of claim 23, wherein the set of devices attached to the method is special. A method comprising sending an encrypted condition. 26. The method of claim 15, wherein the linking of graphic state objects is A method comprising performing steps.
JP51318695A 1993-11-05 1994-01-03 Graphic state processing Expired - Lifetime JP3425954B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/148,052 US6040838A (en) 1993-11-05 1993-11-05 Graphic state processing
US08/148,052 1993-11-05
PCT/US1994/000015 WO1995012864A1 (en) 1993-11-05 1994-01-03 Graphic state processing

Publications (2)

Publication Number Publication Date
JPH09504894A true JPH09504894A (en) 1997-05-13
JP3425954B2 JP3425954B2 (en) 2003-07-14

Family

ID=22524033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51318695A Expired - Lifetime JP3425954B2 (en) 1993-11-05 1994-01-03 Graphic state processing

Country Status (7)

Country Link
US (1) US6040838A (en)
EP (1) EP0719436B1 (en)
JP (1) JP3425954B2 (en)
AU (1) AU5988494A (en)
CA (1) CA2174839C (en)
DE (1) DE69404471T2 (en)
WO (1) WO1995012864A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002531899A (en) * 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド State model for process monitoring
US6577905B1 (en) * 2000-06-29 2003-06-10 International Business Machines Corporation Apparatus and method for providing a transient port
WO2005122310A1 (en) * 2004-06-14 2005-12-22 Matsushita Electric Industrial Co., Ltd. Storing method and storably treated body of high polymer electrolyte fuel cell stack
JP5153139B2 (en) * 2004-07-06 2013-02-27 パナソニック株式会社 Gas diffusion electrode and method for producing polymer electrolyte fuel cell
CN108846791B (en) * 2018-06-27 2022-09-20 珠海豹趣科技有限公司 Rendering method and device of physical model and electronic equipment

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756678B2 (en) * 1985-11-01 1995-06-14 株式会社日立製作所 Interactive shape modeling 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
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
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
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
US5675720A (en) * 1993-09-14 1997-10-07 Fujitsu Limited Method of searching for points of closest approach, and preprocessing method therefor

Also Published As

Publication number Publication date
AU5988494A (en) 1995-05-23
CA2174839C (en) 2005-07-26
JP3425954B2 (en) 2003-07-14
EP0719436B1 (en) 1997-07-23
DE69404471T2 (en) 1998-02-19
DE69404471D1 (en) 1997-09-04
WO1995012864A1 (en) 1995-05-11
US6040838A (en) 2000-03-21
EP0719436A1 (en) 1996-07-03
CA2174839A1 (en) 1995-05-11

Similar Documents

Publication Publication Date Title
JP3454828B2 (en) Object-oriented graphic system
JP3462211B2 (en) Polymorphic graphic device
US6570564B1 (en) Method and apparatus for rapid processing of scene-based programs
US7554550B2 (en) Non-destructive processing of digital image data
US20060290705A1 (en) Performing a pre-rendering pass in digital image processing
US20110234587A1 (en) Method and system for rendering or interactive lighting of a complex three dimensional scene
US7295208B2 (en) Translating layers into effect graphs in digital image processing
US7619628B2 (en) Caching digital image data
JPH09500994A (en) Object-oriented rendering system
JPH09502040A (en) Object-oriented constructive area system
US20020063713A1 (en) Creating a parallel structure for scene-based rendering
US6456291B1 (en) Method and apparatus for multi-pass texture mapping
EP1255227A1 (en) Vertices index processor
Müller et al. Fast radiosity repropagation for interactive virtual environments using a shadow-form-factor-list
US20070008337A1 (en) Accumulating transforms through an effect graph in digital image processing
EP0607136A1 (en) Graphics output system with bounded updating
JP2003510704A (en) Method and system for high-speed processing of scene-based programs
JPH09504894A (en) Graphic state processing
To et al. A method for progressive and selective transmission of multi-resolution models
JPH10511485A (en) 3D graphics rendering system
US6816162B2 (en) Data management to enable video rate anti-aliasing convolution
AU772753B2 (en) Incremental update of computer graphics
Naef et al. Multimedia integration into the blue-c api
Sutherland et al. Chapter 14: 3D Graphics Programming
Syme et al. Building Graphical User Interfaces

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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: 20090509

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100509

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110509

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110509

Year of fee payment: 8

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: 20110509

Year of fee payment: 8

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: 20110509

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120509

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120509

Year of fee payment: 9

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: 20130509

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130509

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term