JP3392870B2 - 図形エッジ・システム - Google Patents
図形エッジ・システムInfo
- Publication number
- JP3392870B2 JP3392870B2 JP50345695A JP50345695A JP3392870B2 JP 3392870 B2 JP3392870 B2 JP 3392870B2 JP 50345695 A JP50345695 A JP 50345695A JP 50345695 A JP50345695 A JP 50345695A JP 3392870 B2 JP3392870 B2 JP 3392870B2
- Authority
- JP
- Japan
- Prior art keywords
- edge
- scan line
- pixel
- engine
- geometry
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Description
を含んでいる。特許書類または特許開示事項を、米国特
許商標庁の特許ファイルまたは記録の通り、何人がファ
クシミリ複製しても、著作権者はそれを妨げるものでは
ないが、そうでない場合は、一切の著作権を留保する。
に、グラフィック・ディスプレイ上のエッジ情報を処理
するシステムおよび方法に関する。
ッジ情報をグラフィック処理することは非常に厄介なこ
とである。したがって、最新のグラフィック・システム
は、テキストおよび図形情報を含む広範囲な情報を処理
する情報ハンドリング・システムを利用しているが、こ
のシステムはこのような情報をより人間工学的な方法で
処理するため、ますます精巧になっている。例えば、選
択された方法で、図形エッジ情報をプログラミングする
か、あるいは処理するコンピュータ・プログラマまたは
コンピュータ・ユーザの能力には限界がある。
界があった。その限界の1つには、OSアーキテクチャが
所定の周辺デバイス用に設計されていないが、所定の周
辺デバイスをサポートできるようにOSアーキテクチャを
修正することができない場合、OSアーキテクチャはその
周辺デバイスをサポートすることができないということ
が挙げられる。また、従来のアーキテクチャは図形エッ
ジ情報を予め定義された単一の方法で処理できるだけで
ある。
Method for Raster Scan Displays",IEEE Transactions
on Computer,vol.C−30,no.1,January 1981,pages 41
−47には、ラスタ・スキャン・ディスプレイのための多
数の周知の輪郭塗り潰しアルゴリズムが記載され、評価
されている。ordered edge listアルゴリズムは、order
ed edge listのセットからスパンを生成し、輪郭を塗り
潰している。このアルゴリズムはスキャン・ライン順で
適用され、現在のスキャンラインと交差するエッジのテ
ーブルであるアクティブなエッジ・リストにエントリを
付加するか、あるいは、そのアクティブなエッジ・リス
トからエントリを削除する。前ラインの結果に基づき、
差分方程式を用いて、アクティブな各エッジの交差点を
現在のスキャンラインを用いて評価している。そして、
x値を増加させて、これらの交差点が並べられ、内部
(interior)スパンのセットが生成される。あるいはま
た、このアルゴリズムは、まず、各ポリゴンを、エッジ
・ソートの量を減少させる台形または三角形のセットに
分解している。OELアルゴリズムが必要とする処理は、
大部分、フレーム・ストアをワーキング・メモリとして
用いることにより除去することができる。これはシード
塗り潰しアルゴリズムにより行われ、このアルゴリズム
に従って、塗り潰される図形の接続された輪郭が、ま
ず、フレーム・ストアのワーキング・プレーン上にドロ
ーイングされる。ついで、この図形の内部にあるシード
点が選択され、このアルゴリズムにより、当該図形の境
界を与える周知の内部の点の近傍の点を連続的に検査す
ることにより、その図形のextentが交差していないこと
が判定される。
レーン上にドローイングされた輪郭の内部を判定するパ
リティ・チェックである。そのピクセルから境界まで引
かれたラインが輪郭と奇数回交差する場合、あるピクセ
ルがその図形の内部に割り当てられる。記載された別の
アルゴリズムはエッジ塗り潰し技法であり、一連のピク
セルにより表されるアウトライン・ドローイングにより
塗り潰される輪郭を定義することを避けて、その代わ
り、輪郭を数学的に記述する技法である。パリティ・チ
ェック形アルゴリズムを用いて、実際の塗り潰しが行わ
れている。スキャン・ライン当たりのエッジ・チェック
の回数を減少させることによりエッジ塗り潰し技法を改
善するために、Ackland et alの文献では、エッジ・フ
ラグ・アルゴリズムを提案している。このアルゴリズム
よれば、1つのピクセルのみがエッジ/スキャン交差ご
とにマークされ、その後、実際の塗り潰しがコピー・ル
ーチンにより行われる。交点でピクセルを補完すること
によりマークする。このアルゴリズムは訂正塗り潰しを
行なうため、パリティ・チェックを簡単にしている。
グラミングか、マイクロコードか、あるいは、ハードウ
ェアによるインプリメンテーションが示されているもの
がある。これら記載されているアルゴリズムのどれも、
オブジェクト指向環境で用いられるものではないが、あ
るオペレーティング・システム・アーキテクチャには存
在していない。これらのアルゴリズムは輪郭塗り潰しに
限定されている。
スケルトン表現を修正する種々の方法が良く知られてい
る。Chin et al,“A One−Pass Thinning Algorithm an
d its Parallel Implementation"と、COMPUTER VISION,
GRAPHICS AND IMAGE PROCESSING,vol.40,no.1,October
1987,pages 30−34,Academic Press,Inc.,Duluth,MN,US
Aと、Naccache et al,“An Investigation into the Sk
eletonizaton Approach of Hilditch",PATTERN RECOGNI
TION,vol.17,no.3,1984,pages 279−284,Pergamon Pres
s,Ltd.,Oxford,GBを参照されたい。これらの方法は、上
述した周知のエッジ処理の欠点を解消するのにもまた適
さない。
プレイを有するコンピュータによって、図形オブジェク
トと、これらの図形オブジェクトに関係付けをしたエッ
ジを柔軟に処理することにある。本発明の目的は、図形
オブジェクトをメモリにロードし、この図形オブジェク
トを複数のエッジ・オブジェクトに変換し、このエッジ
・オブジェクトを複数の走査線ピクセルに変換し、この
走査線ピクセルをディスプレイ上に表示することによっ
て達成される。
で定義されている。その他の請求の範囲には本発明の改
善を記載している。
ュータ・システムのブロック図である。
図である。
ある。
則を示す図である。
(winding number)規則を採用する星型多角形を示す図
である。
星型多角形の有心フレームを示す図である。
数規則に従う星型多角形の有心フレームを示す。
に従う星型多角形のインセット・フレームを示す図であ
る。
ンセット・フレームを示す図である。
則に従う星型多角形のアウトセット・フレームを示す図
である。
ディング数規則に従う星型多角形のアウトセット・フレ
ームを示す図である。
用されるエッジ・エンジンを示す図である。
する領域プリミティブである。
定する方法を示す図である。
図である。
を示す図である。
す図である。
トである。
すフローチャートである。
すフローチャートである。
すブロック図である。
(登録商標)のPS/2(登録商標)またはApple(登録商
標)のマッキントッシュ(登録商標)のようなパーソナ
ルコンピュータに駐在するOSのコンテキストで実施され
るのが好ましい。代表的なハードウェア環境を第1図に
示す。この代表的なハードウェア環境は、本発明に係る
コンピュータの典型的なハードウェア構成を示してお
り、このコンピュータはCPU(central processing uni
t)10、例えば、慣用のマイクロプロセッサを有し、不
揮発性メモリ11が内蔵されており、システムバス12を介
して多数の他の装置が相互接続されている。第1図に示
すワークステーションは、RAM(random access memor
y)14と、ROM(read only memory)16と、I/Oアダプタ1
8と、ユーザ・インタフェース・アダプタ22と、通信ア
ダプタ34と、ディスプレイ・アダプタ36を含む。I/Oア
ダプタ18は周辺装置、例えば、ディスク・ユニット20お
よびディスケット・ユニット21のような周辺装置をシス
テムバスに接続するためのものである。ユーザ・インタ
フェース・アダプタ22はキーボード24、マウス26、スピ
ーカ28、マイクロホン32および/またはユーザ・インタ
フェース装置、例えば、タッチ・スクリーン装置(図示
せず)のようなユーザ・インタフェース装置をシステム
バスに接続するためのものである。通信アダプタ34はワ
ークステーションをデータ処理ネットワーク23に接続す
るためのものである。ディスプレイ・アダプタ36はシス
テムバスをディスプレイ装置38に接続するためのもので
ある。このコンピュータには、OS、例えば、Apple Syst
em/7(登録商標)のようなOSが駐在している。
ented programming)技術を用いて、C++プログラミ
ング言語で実装される。当業者にとって当然のことであ
るが、OOPオブジェクトは、データ構造と、データに対
するオペレーションとを備えたソフトウェア・エンティ
ティである。同時に、これらの要素により、オブジェク
トはデータ要素により表される特性と、データ操作機能
によって表されるその振る舞いの観点から、任意のリア
ル・ワールド・エンティティをバーチャルにモデル化す
ることができる。このように、オブジェクトは人間およ
びコンピュータのような具体的な事物をモデル化するこ
とができ、しかも、オブジェクトは数または幾何学的概
念のような抽象的な概念をモデル化することができる。
オブジェクト技術の利点は、3つの基本原理、すなわ
ち、カプセル化と、ポリモフィズム(多形)と、継承か
ら生じる。
クトが機能するアルゴリズムを隠蔽、すなわちカプセル
化する。これらの実装の細部を露出する代わりに、オブ
ジェクトは、外部からの情報を一切有しない抽象化を完
全に表すインタフェースを表示する。その多形はさらに
1ステップだけカプセル化する。そのアイディアとは多
くの形態、1つのインタフェースである。ソフトウェア
・コンポーネントは、そのコンポーネントが何であるか
を正確に知らないので、他のコンポーネントを要求する
ことができる。この要求を受けるコンポーネントは、そ
の要求を解釈し、その変数およびデータに従って、その
要求をどのように実行するかを理解する。第3の原理は
継承である。この継承により、デベロパーは前から存在
する設計およびコードを再使用することができる。よっ
て、デベロパーは初めからソフトウェアを作成しなくて
済むことになる。それどころか、継承によって、デベロ
パーは振る舞いを継承するサブクラスを導出しており、
デベロパーはサブクラスをデベロパーの特定の要求を満
足させるためにカスタマイズしている。
を階層化し、ライブラリをクラス化している。市販のア
プリケーション・フレームワークは、この設計アプロー
チを採っているものが多い。この設計では、モノリシッ
クOSの頂上に1つ以上のオブジェクト層が存在する。こ
のアプローチでは、オブジェクト層で、カプセル化と、
多形と、継承という全ての原理を利用しており、しか
も、このアプローチは手続きプログラミング技術を実質
的に改良したものであるが、この方法には限界がある。
この方法の限界は次のようなことから生じる。すなわ
ち、デベロパーが手続きプログラミング技術のオブジェ
クトを再使用することは容易であるが、他のシステムか
らオブジェクトを使用することは困難であり、しかも、
デベロパーは、依然、手続きOSコールにより、下位の非
オブジェクト層に到達する必要があることから生じる。
ン開発へのアプローチである。フレームワークの定義と
して、the University of IllinoisのRalph E.Jonson
と、PurdueのVincent F.Russoから最も合理的な定義が
得られた。1991年の論文、すなわち、Reusing Object−
Oriented Designs,University of Illinois tech repor
t UIUCDCS91−1696で、Ralph E.JonsonとVincet F.Russ
oは次のように定義している。すなわち、「抽象クラス
とは、責任のセットを遂行するために協働するオブジェ
クトのセットの設計である。従って、フレームワークと
は、コンピューティング責任の定義されたセットを実行
するため協働するオブジェクト・クラスのセットであ
る。」と定義している。プログラミングの観点からいう
と、フレームワークは、本質的には、ワーキング・アプ
リケーションの前もって作成された構造を提供するオブ
ジェクト・クラスであって、相互接続されたオブジェク
ト・クラスのグループである。例えば、ユーザ・インタ
フェース・フレームワークであれば、ウィンドウと、ス
クロールバーと、メニュー等のドローイングをサポート
し、それらの「デフォルト」なる振る舞いを提供するこ
とができる。フレームワークがオブジェクト技術に基づ
いているので、デベロパーはこの振る舞いを継承、か
つ、オーバライドして、フレームワークを拡張し、カス
タマイズされた解決法を、専門的知識の特定の領域で生
み出すことができる。この点は伝統的なプログラミング
に勝る主な利点である。というのは、プログラマはオリ
ジナルなコードを変更しないが、ソフトウェアを拡張す
るからである。さらに、デベロパーはコードの層を無闇
に行き来していない。というのは、フレームワークはア
ーキテクチャを導き、アーキテクチャをモデル化し、同
時に、コードの層を解放して、問題ドメインに特有の特
定のアクションを供給するからである。
的知識を特定の知識領域でカプセル化するかあるいは具
体化する1つの方法として見ることができる。企業の開
発組織と、独立のソフトウェア・ベンダー(ISV)と、
システム・インテグレータは、既に例を挙げたが、特定
の領域、例えば、製造、金融、または為替のような特定
の領域で、専門的な知識を獲得してきた。この専門的な
知識は自らのコードで具体化される。企業は、その企業
のコードで、その専門的知識をフレームワークにより具
体化して、その専門的知識の共通の特性を獲得し、パッ
ケージ化することができる。最初に、このようにして、
デベロパーは専門的な知識を利用するアプリケーション
を作成するか拡張することができ、従って、この問題が
一度解決され、ビジネス規則および設計が絶えず強化さ
れ使用される。また、フレームワークと、これらフレー
ムワークの背後にある専門的知識は、戦略資産として、
垂直市場(vertical market)、例えば、製造、金融の
ような垂直市場で、専門的な知識を獲得してきた企業に
影響を与えている。さもないと、バイオ技術なんかが、
これらの専門的知識をパッケージ化し、リセリング(re
selling)し、展開し、さらに技術の進歩および普及を
促進するための販売機構を持つことになるのである。
ソナル・コンピューティング・プラットホームに関する
主流の概念として出現した。このマイグレーションが支
えられているのは、C++のようなオブジェクト指向言
語が利用可能になったからである。伝統的には、C++
は、商業的背景のパーソナル・コンピュータよりも、UN
IXシステムや、研究者のワークステーション上で使用さ
れるのがほとんどである。多くの大学および研究プロジ
ェクトにより、今日の商用フレームワークおよびクラス
・ライブラリの先駆者を作らせたのが、C++のような
言語と、Smalltalkのようなオブジェクト指向言語、等
々である。例えば、Stanford UniversityのInterViews
と、Carnegie−Mellon UniversityのAndrew toolkit
と、University of ZurichのET++フレームワークがあ
る。
問題の性質に依存している。フレームワークのタイプ
は、ユーザ・インタフェース開発を支援するアプリケー
ション・フレームワークから、基本的なシステム・ソフ
トウェア・サービス、例えば、通信と、印刷と、ファイ
ル・システム・サポートと、グラフィックス等のような
サービスを提供する低レベルフレームワークに及んでい
る。市販のアプリケーション・フレームワークとして
は、MacAPP(Apple)と、Bedrock(Symantec)と、OWL
(Borland)と、NeXTStep App Kit(NeXT)と、Smallta
lk−80 MVC(ParcPlace)がある。
のシステムに慣れたデベロパーに新しい思考法を要求す
るものだ。実際、フレームワークを用いたプログラミン
グは、伝統的な意味では、「プログラミング」に似つか
わしくないのである。DOSまたはUNIXのような旧いタイ
プのOSでは、デベロパー自身のプログラムが全ての構造
を提供するのであり、OSはシステム・コールによってサ
ービスを提供する。すなわち、デベロパーのプログラム
がサービスを必要とするとき、そのプログラムがコール
を行い、サービスが提供されたとき、制御を戻すのであ
る。プログラム構造は、デベロパーにより書かれたコー
ドで具体化された制限のフローに基づいている。
れる。デベロパーはもはや制御の流れに責任を負わない
のである。デベロパーは実行のフローによってプログラ
ミング作業を理解するという風潮より先んじていなけれ
ばいけない。この考え方は、いつタスクが実行されるか
を決定するために、フレームワークを信頼しなければな
らず、オブジェクトの責任によらなければならない。デ
ベロパーが書いたルーチンは、デベロパーが書いてもい
ないし、見てもいないコードによって活動化される。こ
のように制御フローが突然転換することは、手続きプロ
グラミングのみの経験を積んだデベロパーの大きな心理
的な障げになり得るのである。しかしながら、このこと
が一旦理解されると、フレームワーク・プログラミング
は他のタイプのプログラミングよりも作業量が非常に少
なくなる。
レハブ機能を提供するのと同様の方法で、システム・フ
レームワーク、例えば、好ましい実施態様で含まれるよ
うなシステム・フレームワークは、システム・レベル・
サービスを提供して同一の概念をレバレッジする。この
同一の概念を用いて、システム・プログラマのようなデ
ベロパーはサブクラス化/オーバライドし、カスタマイ
ズされた解決法を作成する。例えば、マルチメディア・
フレームワークを考えてみよう。マルチメディア・フレ
ームワークは新して多様な装置、例えば、オーディオ
と、ビデオと、MIDIと、アニメーションと、等々のよう
な装置をサポートするための基盤を提供する。新しい種
類の装置をサポートするのに必要なデベロパーは、デバ
イス・ドライバを書かなければならなくなる。フレーム
ワークを用いてデバイス・ドライバを書くには、デベロ
パーは新しい装置の特性と、その新しい装置に特有の振
る舞いを供給するだけでよい。
ークによってコールされるあるメンバー関数にインプリ
メンテーションを供給する。デベロパーが直接得る利益
は、装置の各カテゴリに対して必要なジェネリックなコ
ードが、マルチメディア・フレームワークによって既に
提供されていることである。これは、デバイス・ドライ
バ・デベロパーが書き、試験し、デバッグするコードが
少ないことを意味する。システム・フレームワークを使
用する他の例を挙げると、SCSI装置と、NuBusカード
と、グラフィックス・ドライバに対する別々のI/Oフレ
ームワークを有することにある。継承された機能が存在
するため、各フレームワークはそのデバイス・カテゴリ
ーにある共通の機能をサポートする。従って、他のデベ
ロパーは、全ての種類のデバイスに対するインタフェー
スに一貫して依存することができる。
しており、その概念をシステム全体に適用している。企
業のデベロパーか、システム・インテグレータか、ある
いはOEMにとって、このことは次のようなことを意味す
る。すなわち、MacAppのようなフレームワークのために
説明してきた利点を、テキストおよびユーザ・インタフ
ェースのような事物に対しては、アプリケーション・レ
ベルでレバレッジできるだけでなく、サービス、例え
ば、グラフィックスと、マルチメディアと、ファイル・
システムと、I/Oと、試験と、等々のようなサービスに
とっては、システム・レベルでレバレッジすることがで
きる。
ンを作成することは、本質的には、フレームワーク・プ
ロトコルに付着するドメイン特有のパズルのピースを書
くのに似ている。このように、プログラミングの全概念
は変化する。多重API階層をコールするコードの行ごと
に書く代わりに、この環境内に前から存在していたフレ
ームワークからクラスを導出し、ついで、新しい振る舞
いを付加し、かつ/あるいは、継承された振る舞いをオ
ーバライドして、ソフトウェアが開発されることにな
る。
コードのコレクションであって、他の全フレームワーク
・アプリケーションと共有されるコードのコレクション
になる。デベロパーは互いの作品の上に築きあげること
ができるので、これは強力な概念である。この概念も必
要なだけカスタマイズする柔軟性をデベロパーに与え
る。フレームワークの中には、そのまま用いられものも
ある。カスタマイズの程度は最少なので、デベロパーが
加担するパズルのピースは小さくなることがある。デベ
ロパーが非常に細な修正をして、何か全く新しいものを
作成する場合もある。好ましい実施態様では、第1図で
示すように、RAM14に常駐し、しかも、CPU10により制御
されるプログラムは、オブジェクト指向のグラフィック
・フレームワークを使用して、種々のタスクを管理する
ことを担当する。
るためにレンダリング・パイプラインのエッジ・エンジ
ンを採用している。エッジ・エンジンは個別のデバイス
だけで使用されている。例えば、TFrameBufferデバイス
では、エッジ・エンジンは、プリミティブのうちの塗り
潰されかつフレーム化(framed)された部分を表すエッ
ジから走査線のスパンを生成する。この処理は走査変換
として公知である。
対の図形エッジを第2図に示す。図形エッジ230,240
は、それぞれ、最小Y値が210、開始X値が200、高さ22
0であり、virtualStepメソッドを有する。virtualStep
メソッドは次の走査線(次の整数Y値)に対してX値を
更新する。従って、TGrafEdgeはYが単調な任意の曲線
を記述することができる。すなわち、TGrafEdgeはスパ
ンされる走査線ごとに単一のX値を有する。TGrafEdge
も単一のCAGノード・オブジェクトに対してリファレン
スを有する。このレファレンスを用いて、ある点が全幾
何学形状の内部にあるか外部にあるかを判定するのに用
いられる。
る。簡単なプリミティブは、ある点が幾何学形状の内部
にあるか外部にあるかを判定するための単一のラップ・
カウントを有する。一方、TGAreaプリミティブは、任意
に複雑にすることができる。サブ・プリミティブはそれ
ぞれ独立のラップ・カウントを有する。サブ・プリミテ
ィブのラップ・カウント値は全て全プリミティブの状態
を計算するのに用いることができる。内部/外部の計算
を行うための構造はTGAreaによってセットアップされ、
エッジ・エンジンに渡される。しかし、TGAreaプリミテ
ィブに対してのみ、より複雑な内部/外部計算に関連す
るオーバヘッドがある。エッジ・エンジンのサブクラス
はアンチ・エイリアシング走査変換を行うことになり、
加速されたエッジ、例えば、直線エッジのようなエッジ
に対して、エッジ・エンジンのサブクラスをmakeするこ
とができる。
エッジ・エンジンにとって重要である。というのは、エ
ッジ・エンジンが個別のデバイス・ユニットへの走査変
換を行うからである。ピクセル・パーフェクションは、
どのピクセルが変更され、どのピクセルに、デバイス空
間の領域を規定するエッジのセットが付与されるかを規
定する。たとえ「ピクセル」という用語を用いるとして
も、ピクセル・パーフェクションは他の個別のデバイス
に対しても有用である。というのは、個別のユニットが
デバイス座標系のどこにあるのかが、ピクセル・パーフ
ェクションにより規定されるからである。
ーイングすることができる幾何学形状を、水平走査ライ
ン・スパンに変換する処理である。幾何学形状を、塗り
潰すか、フレーム化するか、あるいは塗り潰しかつフレ
ーム化することができる。塗り潰しおよび/またはフレ
ーム化された幾何学形状をドローイングするためのアル
ゴリズムは、どの領域も2度ドローイングされないし、
変換(transfer)モードが正確に機能し、正確に透過す
ることができることを保証する。エッジ・エンジンによ
り、輪郭を表すTGrafEdgeのリストにより規定される幾
何学形状が塗り潰される。ユーザは、幾何学形状の周辺
を任意の方向にトレースすることにより、幾何学形状の
輪郭を指定することができる。こうすることにより、リ
スト中の各エッジの符号が決定される。エッジが+y方
向を指す場合は、エッジの符号は+である。出力に影響
を与えないエッジは廃棄される。
ッジは、最初に、降順にy値によりソートされ、つい
で、特定のy値内のx値によりソートされる。エッジを
交差する各走査線に対して、x方向に1つ以上のスパン
が生成される。これは、エッジの「アクティブ」リス
ト、すなわち、現走査線を交差するエッジを常に保持す
ることにより達成される。各走査線に対して、アクティ
ブ・エッジ・リストが作成される。そして、エッジが交
差されると、次の規則、すなわち、奇偶規則(Even−od
d rule)またはワインディング数規則(Winding number
rule)のいずれかにより、走査線に対して適正なスパ
ンが生成される。
終了のいずれかが行われる。第4図は好ましい実施態様
に係る各エッジ対に対して生成された星型スパンの例で
ある。
エッジの符号がワインディング数に付加される。ワイン
ディング数はゼロに初期設定される。ワインディング数
が非ゼロであると、スパンが開始される。このワインデ
ィング数がゼロになると、スパンが終了する。その結
果、多角形の外部境界内の全ての領域が塗り潰される。
第5図は好ましい実施態様に係るワインディグ数規則を
用いる星型多角形の例を示す。
ィブに依存する。例えば、多角形の図形オブジェクトを
定義するTGPolygonプリミティブは、どの規則を使用す
るかを指定するパラメータを含む。他方、TGEllipseプ
リミティブはいずれかの規則を用いることができる。と
いうのは、内部に交点を持たない(non−self−interse
cting)幾何学形状に両方の規則が適用されたとき、そ
れらの規則により、同一の結果を生じるからである。2
種類のフレームを、フレーム(ヘヤライン・フレームお
よび太いフレーム)の意図された目的に従って、オブジ
ェクトの周囲にドローイングすることができる。これら
のフレームは次に説明する。
エンド・キャップ(end cap)と、ジョイント・スタイ
ル(joint style)と、ダッシング(dashing)を、希望
どおり適用することができる。エッジ・エンジン走査に
より、太いフレームおよび塗り潰しが同時に変換され
る。フレームの両側(右側および左側)を表すTGrafEdg
eが生成され、かつ塗り潰しエッジを有するリストに挿
入される。フレーム・エッジの方向、従って、フレーム
・エッジの符号は、フレーム・エッジから作成された塗
り潰しエッジの方向と同一である。プリミティブが走査
変換されると、2つのワインディング数、すなわち、左
フレーム・エッジに対するワインディング数と、右フレ
ーム・エッジに対するワインディング数が保持される。
フレームに対して生成されたスパンは、どの塗り潰し規
則が用いられたかに依存する。
エッジの符号が適正なワインディング数(左側または右
側)に付加される。2つのワインディング数が等しくな
くなると、スパンが開始される。2つのワインディング
数が再び等しくなると、スパンが終了される。
と、フレーム・エッジの符号が適正なワインディング数
(左側または右側)に付加される。2つのワインディン
グ数の符号が等しくなくなると、スパンが開始される。
符号が再び等しくなると、スパンが終了される。
された領域にフレームを重ね合わすことができる。しか
しながら、塗り潰された領域とフレームが一緒にドロー
イングされるので、その領域はどの部分も2度はドロー
イングされない。
の輪郭に集中する。これは、フレームのために生成され
たスパンが、塗り潰すために生成されたスパンに取って
代わることができる場合に達成される。
星型多角形の有心フレームを示し、第7図は好ましい実
施態様に係る有心ワインディング数規則に従う星型多角
形の有心フレームを示す。インセット・ペン(inset pe
n)の場合、フレームの太さは、塗り潰された領域の輪
郭の完全に内側にある。フレームのために生成されたス
パンは、塗り潰すために生成されたスパンにとって代わ
るが、これらは、充填スパンが生成されたときだけドロ
ーイングされる。言い換えると、そのフレームはクリッ
プされ塗り潰し幾何学形状に付加される。これはアウト
セット・フレーム(outset frame)の逆になる。第8図
は好ましい実施態様に係るインセット奇偶規則に従う星
型多角形のインセット・フレーム(inset frame)を示
す。第9図はワインディング数規則に従う星型多角形の
インセット・フレームを示す。
し領域の輪郭の完全に外側にある。フレームのために生
成されたスパンは、塗り潰しスパンがドローイングされ
ないときだけドローイングされる。言い換えると、フレ
ームは塗り潰し幾何学形状の内側には決してドローイン
グされることはない。第10図は好ましい実施態様に係る
アウトセット奇偶規則に従う星型多角形のアウトセット
・フレームを示す。第11図は好ましい実施態様に係るア
ウトセット・ワインディング数規則に従う星型多角形の
アウトセット・フレームを示す。
ジンを示す。アンチ・エイリアシングされたエッジ・エ
ンジンは図示されていない。TEdgeEngineは抽象クラス
であり、その抽象クラスから全てのエッジ・エンジンが
導出される。TEdgeEngineはTGrafEdgeを受取るpureな仮
想関数を含む。TGrafEdgeはpureな仮想Render関数を含
む。
幾何学形状に対して、エイリアシングされた塗り潰しを
行う。エッジは任意のタイプが可能である。
リストで記載された幾何学形状のエイリアシングされた
塗り潰しを行う。それは、TFillEdgeEngineの最適化で
ある。各TGrafEdgeが垂直線であるものと仮定する。
載された幾何学形状のエイリアシングされた塗り潰しを
行い、エイリアシングされたフレーム化を行う。エッジ
は任意のタイプが可能である。
fEdgeのリストで記載された幾何学形状に対してエイリ
アシングされた塗り潰しを行い、エイリアシングされた
フレーム化を行う。それはTFillEdgeEngineの最適化で
ある。各TGrafEdgeが垂直線であるものと仮定する。
ス エッジ・エンジンをサブクラス化するための他の理由
は、アンチ・エイリアシングに適応させることにある。
有効な実装により、フィルタ・カーネル(kernel)によ
りエッジの周りの領域のみを巻き込む共通の最適化が行
なわれる。この最適化により、その形の内部で行われる
多量のフィルタリング演算が回避され、同様に、用いら
れる簡単なnon compositing TSpanPainterメソッド、例
えば、PaintSpanのようなメソッドを使用することもで
きる。アンチ・エイリス・エッジ・エンジンの場合は、
エッジを巻き込む2つのアプローチを行うことができ
る。
像度で、レンダリングを、サブピクセル・レベルで詳細
に表現するサブピクセル・ビットマップに変換する。あ
るいはまた、サブピクセル走査変換を予め計算して、次
のようなテーブルにする。このテーブルは、幾つかの有
意ビットにより、エッジの入口および出口座標の小部分
(fractional)コンポーネントからインデックスされる
ものである。これらのビットマップは典型的には4×8
ピクセルである。ボックス・フィルタが使用されている
場合は、必要とされるものは全てビットマップ母集団の
タリーである。0.5を超える大きさの支持体サイズ(sup
port size)を有するより高品質のフィルタが使用され
た場合は、出力されたピクセルの透過は、それぞれ、そ
れ自身のビットマップと、隣接のビットマップの重み付
け平均値から決定される。
課せられる。その寄与しているサブピクセル・ビットマ
スクが、全て、フィルタ・カーネルで巻き込まれ、かつ
加算されるまで、走査線を出力することはできない。こ
れは、エッジ・エンジンがその走査変換より1,2走査線
遅れてスパンを出力することになることを意味する。こ
れらのアプローチは、頂点が整数であるか、あるいは隠
れた面を解明する必要があるときに採られるのが典型的
である。予めフィルタリングするアプローチは、エッジ
を含む各ピクセルで、正確な領域計算を採用している。
これは高価であるようであるが、そのことには、実際に
は、有効なインクリメンタル解法がある。走査線上の所
定のエッジ対の場合は、注目する高々3つの領域、すな
わち、左エッジと、中間かあるいは完全にカバーされた
ピクセルと、右エッジが存在することができる。エッジ
が交差した全てのピクセルは、その領域が計算されてい
なければならない。幾つかの隣接したピクセルが共通エ
ッジによって交差された場合は、引き続き交差するピク
セルに対する領域を、インクリメントに計算することが
できる。所定の傾斜を有するエッジの場合は、ピクセル
からピクセルまでの領域の差は一定である。この仮定に
基づいたアプローチはより魅力的である。
のケースがかち合うかもしれない。分離されたエッジの
第1のケースは最も普通である。全てのエンジンはこの
ケースに遭遇する。フレーム化のみエッジ・エンジン
か、塗り潰しのみエッジ・エンジンからのエッジは、全
ては、このカテゴリに属する。塗り潰しおよびフレーム
化エッジ・エンジンは、フレームの外部エッジ上でこの
ケースに遭遇する。エッジの不透明性(edge opacity)
が判定された後、不透明でないピクセルは、TSpanPaint
erのCompositeSpanメソッドによってデスティネーショ
ン・ピクセルと合成されなければならない。
ャートである。処理は機能ブロック1800で開始され、所
定の幾何学形状、例えば、矩形か、楕円か、あるいは多
角形のような幾何学形状からエッジを生成する。そし
て、機能ブロック1810にて、エッジのy値を、1次ソー
ト・フィールドとして、昇順でソートし、エッジのx値
を、2次ソート・フィールドとして、昇順でソートす
る。ついで、機能ブロック1820にて、現在の走査線を第
1のエッジのy値に初期設定し、機能ブロック1830に
て、新しいエッジをコレクトしてアクティブ・エッジ・
リストに入れる。(アクティブ・エッジ・リストとは、
現在の走査線を交差するエッジのリストである)。機能
ブロック1840にて、エッジが現在の走査ラインを最早交
差しない場合は、エッジはアクティブ・エッジ・リスト
から除去される。機能ブロック1850にて、ステップ関数
が全アクティブ・エッジに対してコールされ、エッジの
順序が狂っているかどうかを検出する。(エッジのステ
ップ関数は現在の走査線に対応する次のx値を計算す
る)、そして、判定ブロック1860にて、試験を行って、
エッジをx値でソートする必要があるかどうかを判定す
る。新しいエッジが付加される場合か、古いエッジが除
去される場合か、あるいは、エッジが交差した場合は、
x値でソートする必要がある。ソートが必要な場合に
は、機能ブロック1870にて、アクティブ・リストをx値
で昇順でソートし、制御を機能ブロック1880に渡す。ソ
ートする必要がない場合は、制御を機能ブロック1880に
直接渡す。
て、試験を行って、エッジを交差した結果、幾何学形状
の外部に遷移し、しかも、現在の走査線上にピクセルを
ドローイングすることになるかどうかを判定する。エッ
ジ遷移関数を用いて、内部/外部検出を行う機構を一般
化することができる。その論理の検討は第19図、第20図
および第21図を参照して行う。第19図、第20図および第
21図はこの処理の種々の実施態様を示す。ついで、判定
ブロック1890にて、試験を行って全てのエッジが処理さ
れたかどうかを判定する。処理された場合は、終了端子
1891にて、その処理が完了する。処理されない場合は、
機能ブロック1892にて、現在の走査ラインをインクリメ
ントし、上述した論理と一致する処理をさらに行うた
め、制御を機能ブロック1830に渡す。
本発明に係るエッジ遷移処理の実施態様を示すフローチ
ャートである。処理が機能ブロック1900にて開始され、
機能ブロック1900にて、エッジの符号が現在のラップ・
カウントに付加される。判定ブロック1910にて、試験を
行い、ラップ・カウントがゼロになったかどうかを判定
する。ゼロになった場合は、セーブされたx値から機能
ブロック1940で示されるようなエッジのx値まで、ピク
セルが現在の走査ライン上にドローイングされる。ゼロ
でない場合には、試験を行って、ラップ・カウントが非
ゼロになったか否かを判定する。ラップ・カウントが非
ゼロである場合は、機能ブロック1930にてエッジのx値
をセーブする。
明に係るエッジ遷移処理の実施態様を示すフローチャー
トである。処理が機能ブロック2000で開始され、機能ブ
ロック2000にて、エッジの符号が現在のラップ・カウン
トに付加される。判定ブロック2010にて、試験を行っ
て、ラップ・カウントが偶数であるかどうかを判定す
る。エッジ・カウントが偶数である場合は、機能ブロッ
ク2030にて、セーブされたx値からそのエッジのx値ま
で、ピクセルを現在の走査ライン上にドローイングす
る。エッジ・カウントが偶数でない場合には、機能ブロ
ック2020にて、エッジのx値をセーブする。
ロック図である。このブロック図は矩形と楕円のブール
和を用いて、遷移処理を明確にしている。結果ブロック
2100にて、結果値を記憶する。ブール和オブジェクト21
10は、2つの奇偶値を取り、2つの値の論理和を計算す
る。奇偶オブジェクト2120は、奇偶論理を用いて、各幾
何学形状の内部または外部をトレースする。エッジが交
差されると、ブロック2130を介して、その遷移関数をコ
ールする。矩形および楕円のエッジはブロック2140に示
す。
Claims (20)
- 【請求項1】複数のエッジを有する閉じた幾何学的形状
であって前記複数のエッジを記述するデータにより定義
された幾何学的形状を、複数の走査線ピクセルに走査変
換する方法であって、メモリを有するコンピュータシス
テム上でオペレートする方法において、 (a)前記幾何学的形状のエッジデータを前記メモリに
ロードするステップと、 (b)前記幾何学的形状内及び前記エッジ上における走
査線ピクセル位置を識別する複数のエッジ遷移機能を有
するノードオブジェクトを作成するステップと、 (c)前記エッジをそれぞれ表す複数のエッジオブジェ
クトであって、前記エッジの開始及び高さを指定する情
報を含み、垂直位置を受け取って前記エッジの対応する
水平位置を返すステップ関数を含む複数のエッジオブジ
ェクトを、前記幾何学的形状データから作成するステッ
プと、 (d)前記走査線を順番に処理し、各走査線に対して、
当該走査線におけるピクセル位置を試験し、前記エッジ
オブジェクト及び前記エッジ遷移機能を用いて、各ピク
セル位置が前記幾何学的形状内にあるかどうかを判定す
るエッジエンジンオブジェクトに、前記エッジオブジェ
クトを供給するステップと、 (e)前記幾何学的形状内の各ピクセル位置に走査線ピ
クセルをドローするステップと を備えたことを特徴とする方法。 - 【請求項2】請求項1において、前記ステップ(b)
は、 (b1)前記幾何学的形状に固有のエッジ遷移機能を有す
るノードオブジェクトを作成するステップ を備えたことを特徴とする方法。 - 【請求項3】請求項2において、前記ステップ(b)
は、 (b1)奇偶処理規則を利用して、前記ピクセル位置が前
記幾何学的形状内にあるかどうか判定するノードオブジ
ェクトを作成するステップ を備えたことを特徴とする方法。 - 【請求項4】請求項2において、前記ステップ(b)
は、 (b1)ワインディング数処理規則を利用して、前記ピク
セル位置が前記幾何学的形状内にあるかどうかを判定す
るノードオブジェクトを作成するステップ を備えたことを特徴とする方法。 - 【請求項5】請求項1において、前記ステップ(d)
は、 (d1)走査線処理中において、前記エッジオブジェクト
を利用して、任意のエッジが前記走査線と交差するかど
うかを判定するステップと、 (d2)前記ステップ(d1)において判定されたエッジを
表すエッジオブジェクトを選択するステップと を備えたことを特徴とする方法。 - 【請求項6】請求項5において、前記ステップ(d)
は、 (d3)前記選択されたエッジオブジェクトのステップ関
数を用いて、エッジが前記走査線と交差するピクセル位
置を判定するステップと (d4)前記ステップ(d3)において判定されたピクセル
位置と、前記エッジ遷移機能とを用いて、各ピクセル位
置が前記幾何学的形状内にあるかどうかを判定するステ
ップと を備えたことを特徴とする方法。 - 【請求項7】請求項6において、前記ステップ(d4)
は、前記選択されたエッジオブジェクトをソートし、前
記オブジェクトにより表されたエッジを、ピクセル位置
の昇順に、走査線に沿って配置するステップを備えたこ
とを特徴とする方法。 - 【請求項8】請求項5において、前記ステップ(d1)
は、各エッジオブジェクト内の前記エッジ開始及びエッ
ジ高さ情報と、前記走査ライ垂直位置とを用いて、前記
各エッジオブジェクトにより表される前記エッジが前記
走査線と交差するかどうかを判定するステップを備えた
ことを特徴とする方法。 - 【請求項9】請求項1において、前記ステップ(e)
は、エイリアシングエッジエンジンを使用して、前記幾
何学的形状内の各ピクセル位置に走査線ピクセルをドロ
ーするステップを備えたことを特徴とする方法。 - 【請求項10】請求項1において、前記ステップ(e)
は、アンチエイリアシングエッジエンジンを使用して、
前記幾何学的形状内の各ピクセル位置に、走査線ピクセ
ルをドローするステップを備えたことを特徴とする方
法。 - 【請求項11】複数のエッジを有する閉じた幾何学的形
状であって前記複数のエッジを記述するデータにより定
義された幾何学的形状を、複数の走査線ピクセルに走査
変換する装置であって、メモリを有するコンピュータシ
ステム上でオペレートする装置において、 前記幾何学的形状のエッジデータを前記メモリにロード
する手段と、 前記幾何学的形状内及び前記エッジ上における走査線ピ
クセル位置を識別する複数のエッジ遷移機能を有するノ
ードオブジェクトを作成する手段と、 前記エッジをそれぞれ表す複数のエッジオブジェクトで
あって、前記エッジの開始及び高さを指定する情報を含
み、垂直位置を受け取り、前記エッジの対応する水平位
置を返すステップ関数を含む複数のエッジオブジェクト
を、前記幾何学的形状データから作成する手段と、 前記走査線を順番に処理し、各走査線に対して、当該走
査線におけるピクセル位置を試験し、前記エッジオブジ
ェクト及び前記エッジ遷移機能を用いて、各ピクセル位
置が前記幾何学的形状内にあるかどうかを判定するエッ
ジエンジンオブジェクトに、前記エッジオブジェクトを
供給する手段と、 前記幾何学的形状内の各ピクセル位置に走査線ピクセル
をドローする手段と を備えたことを特徴とする装置。 - 【請求項12】請求項11において、前記ノードオブジェ
クトは、前記幾何学的形状に固有のエッジ遷移機能を備
えたことを特徴とする装置。 - 【請求項13】請求項12において、前記ノードオブジェ
クトは、ピクセル位置が前記幾何学的形状内にあるかど
うかを判定するための奇偶処理規則を備えたことを特徴
とする装置。 - 【請求項14】請求項12において、前記ノードオブジェ
クトは、ピクセル位置が前記幾何学的形状内にあるかど
うかを判定するためのワインディング数処理規則を備え
たことを特徴とする装置。 - 【請求項15】請求項11において、前記エッジエンジン
オブジェクトは、 走査線処理中において、前記エッジオブジェクトを用い
て、任意のエッジが前記走査線と交差するかどうかを判
定する手段と、 前記走査線と交差するエッジを表すエッジオブジェクト
を選択する手段と を備えたことを特徴とする装置。 - 【請求項16】請求項15において、前記エッジエンジン
は、前記選択されたエッジオブジェクトのステップ関数
を用いて、エッジが前記走査線と交差するピクセル位置
を判定する手段と、 該判定する手段により判定されたピクセル位置と、前記
エッジ遷移機能とを用いて、各ピクセル位置が前記幾何
学的形状内にあるかどうかを判定する手段と を備えたことを特徴とする装置。 - 【請求項17】請求項16において、前記エッジエンジン
は、前記選択されたエッジオブジェクトをソートし、前
記オブジェクトにより表されたエッジを、ピクセル位置
の昇順に、走査線に沿って配置するステップを備えたこ
とを特徴とする装置。 - 【請求項18】請求項15において、前記エッジエンジン
は、各エッジオブジェクト内の前記エッジ開始及びエッ
ジ高さ情報と、前記走査線垂直位置とを用いて、前記各
エッジオブジェクトにより表される前記エッジが前記走
査線と交差するかどうかを判定する手段を備えたことを
特徴とする装置。 - 【請求項19】請求項11において、前記ドローする手段
は、前記幾何学的形状内の各ピクセル位置に、走査線ピ
クセルをドローするエイリアシングエッジエンジンを備
えたことを特徴とする装置。 - 【請求項20】請求項11において、前記ドローする手段
は、前記幾何学的形状内の各ピクセル位置に、走査線ピ
クセルをドローするアンチエイリアシングエッジエンジ
ンを備えたことを特徴とする装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/085,340 | 1993-06-30 | ||
US08/085,340 US5471568A (en) | 1993-06-30 | 1993-06-30 | Object-oriented apparatus and method for scan line conversion of graphic edges |
PCT/US1994/000013 WO1995001615A1 (en) | 1993-06-30 | 1994-01-03 | Graphic edge system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08512156A JPH08512156A (ja) | 1996-12-17 |
JP3392870B2 true JP3392870B2 (ja) | 2003-03-31 |
Family
ID=22190953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP50345695A Expired - Lifetime JP3392870B2 (ja) | 1993-06-30 | 1994-01-03 | 図形エッジ・システム |
Country Status (8)
Country | Link |
---|---|
US (1) | US5471568A (ja) |
EP (1) | EP0691012B1 (ja) |
JP (1) | JP3392870B2 (ja) |
CN (1) | CN1113666A (ja) |
AU (1) | AU6081794A (ja) |
CA (1) | CA2144870A1 (ja) |
DE (1) | DE69410458D1 (ja) |
WO (1) | WO1995001615A1 (ja) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684261B1 (en) * | 1993-07-19 | 2004-01-27 | Object Technology Licensing Corporation | Object-oriented operating system |
US5379432A (en) | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
CN1116009A (zh) * | 1993-07-27 | 1996-01-31 | 塔里根特公司 | 面向目标的再现系统 |
JP3483946B2 (ja) * | 1994-08-19 | 2004-01-06 | 三菱電機株式会社 | フォント処理装置及びフォント処理方法 |
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 |
US5657436A (en) * | 1995-06-08 | 1997-08-12 | Hewlett-Packard Company | Preprocessing apparatus and method for line scan conversion in a computer graphics system |
JP3785700B2 (ja) * | 1995-12-18 | 2006-06-14 | ソニー株式会社 | 近似化方法および装置 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
US6407736B1 (en) | 1999-06-18 | 2002-06-18 | Interval Research Corporation | Deferred scanline conversion architecture |
US6714214B1 (en) * | 1999-12-07 | 2004-03-30 | Microsoft Corporation | System method and user interface for active reading of electronic content |
US7337389B1 (en) | 1999-12-07 | 2008-02-26 | Microsoft Corporation | System and method for annotating an electronic document independently of its content |
US9424240B2 (en) | 1999-12-07 | 2016-08-23 | Microsoft Technology Licensing, Llc | Annotations for electronic content |
US6820111B1 (en) | 1999-12-07 | 2004-11-16 | Microsoft Corporation | Computer user interface architecture that saves a user's non-linear navigation history and intelligently maintains that history |
US6992687B1 (en) | 1999-12-07 | 2006-01-31 | Microsoft Corporation | Bookmarking and placemarking a displayed document in a computer system |
US7458014B1 (en) | 1999-12-07 | 2008-11-25 | Microsoft Corporation | Computer user interface architecture wherein both content and user interface are composed of documents with links |
US7185274B1 (en) | 1999-12-07 | 2007-02-27 | Microsoft Corporation | Computer user interface architecture wherein users interact with both content and user interface by activating links |
US6957233B1 (en) | 1999-12-07 | 2005-10-18 | Microsoft Corporation | Method and apparatus for capturing and rendering annotations for non-modifiable electronic content |
US7028267B1 (en) | 1999-12-07 | 2006-04-11 | Microsoft Corporation | Method and apparatus for capturing and rendering text annotations for non-modifiable electronic content |
AU765466B2 (en) * | 1999-12-22 | 2003-09-18 | Canon Kabushiki Kaisha | Anti-aliased polygon rendering |
AU767108B2 (en) * | 2000-03-08 | 2003-10-30 | Canon Kabushiki Kaisha | Edge merging via lookup table |
AUPQ697100A0 (en) * | 2000-04-18 | 2000-05-11 | Canon Kabushiki Kaisha | Rendering graphic object based images |
US7243299B1 (en) | 2000-04-21 | 2007-07-10 | Microsoft Corporation | Methods and apparatus for displaying multiple contexts in electronic documents |
AU769956B2 (en) * | 2000-05-03 | 2004-02-12 | Canon Kabushiki Kaisha | Conversion of vectorized paths into a renderable format |
US6828983B1 (en) * | 2000-05-12 | 2004-12-07 | S3 Graphics Co., Ltd. | Selective super-sampling/adaptive anti-aliasing of complex 3D data |
US6766281B1 (en) * | 2000-05-12 | 2004-07-20 | S3 Graphics Co., Ltd. | Matched texture filter design for rendering multi-rate data samples |
US6760019B1 (en) | 2000-06-01 | 2004-07-06 | Sun Microsystems, Inc. | Methods and apparatus for facilitating the sharing of computer graphics operations |
US7234108B1 (en) | 2000-06-29 | 2007-06-19 | Microsoft Corporation | Ink thickness rendering for electronic annotations |
US7126600B1 (en) * | 2000-08-01 | 2006-10-24 | Ati International Srl | Method and apparatus for high speed block mode triangle rendering |
AU771813B2 (en) * | 2001-04-19 | 2004-04-01 | Canon Kabushiki Kaisha | Converting path with non-zero winding fill rule or odd-even winding fill rule to a simple outline path |
JP4164272B2 (ja) * | 2001-04-24 | 2008-10-15 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
AUPR860901A0 (en) * | 2001-10-31 | 2001-11-29 | Canon Kabushiki Kaisha | Activating a filling of a graphical object |
AUPR970501A0 (en) * | 2001-12-21 | 2002-01-24 | Canon Kabushiki Kaisha | A method for performing set operations on two or more arbitrary paths to produce a simple outline path |
AU2002318793B2 (en) * | 2001-12-21 | 2005-02-17 | Canon Kabushiki Kaisha | A Method for Performing Set Operations on Two or More Arbitrary Paths to Produce a Simple Outline Path |
US20040174364A1 (en) * | 2003-03-03 | 2004-09-09 | Shehane Patrick D. | Rendering patterned lines in a graphics system |
US7864179B1 (en) * | 2007-04-13 | 2011-01-04 | Adobe Systems Incorporated | Fractional parametric polystar methods and apparatus |
CN101685544B (zh) * | 2008-09-28 | 2011-11-23 | 北大方正集团有限公司 | 一种简化复杂路径的方法及装置 |
JP5744574B2 (ja) * | 2011-03-07 | 2015-07-08 | キヤノン株式会社 | 画像処理装置、画像処理方法及びプログラム |
EP2701090A1 (en) * | 2012-08-22 | 2014-02-26 | Aahlstö OÜ | Method and system for enforcing 3D restricted rights in a rapid manufacturing and prototyping environment |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1184305A (en) * | 1980-12-08 | 1985-03-19 | Russell J. Campbell | Error correcting code decoder |
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 |
US5063375A (en) * | 1987-07-27 | 1991-11-05 | Sun Microsystems, Inc. | Method and apparatus for shading images |
US4891630A (en) * | 1988-04-22 | 1990-01-02 | Friedman Mark B | Computer vision system with improved object orientation technique |
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 |
DE3916314A1 (de) * | 1989-05-19 | 1990-11-22 | Ford Werke Ag | Verfahren und vorrichtung zum feststellen der erforderlichen anstellung von waelzlagern in getrieben |
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 |
-
1993
- 1993-06-30 US US08/085,340 patent/US5471568A/en not_active Expired - Lifetime
-
1994
- 1994-01-03 WO PCT/US1994/000013 patent/WO1995001615A1/en active IP Right Grant
- 1994-01-03 DE DE69410458T patent/DE69410458D1/de not_active Expired - Lifetime
- 1994-01-03 AU AU60817/94A patent/AU6081794A/en not_active Abandoned
- 1994-01-03 EP EP94907132A patent/EP0691012B1/en not_active Expired - Lifetime
- 1994-01-03 JP JP50345695A patent/JP3392870B2/ja not_active Expired - Lifetime
- 1994-01-03 CN CN94190617A patent/CN1113666A/zh active Pending
- 1994-01-03 CA CA002144870A patent/CA2144870A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US5471568A (en) | 1995-11-28 |
JPH08512156A (ja) | 1996-12-17 |
CA2144870A1 (en) | 1995-01-12 |
EP0691012A1 (en) | 1996-01-10 |
AU6081794A (en) | 1995-01-24 |
CN1113666A (zh) | 1995-12-20 |
WO1995001615A1 (en) | 1995-01-12 |
EP0691012B1 (en) | 1998-05-20 |
DE69410458D1 (de) | 1998-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3392870B2 (ja) | 図形エッジ・システム | |
US5428744A (en) | Object-oriented system for building a graphic image on a display | |
EP1462998B1 (en) | Markup language and object model for vector graphics | |
Bederson et al. | Jazz: an extensible zoomable user interface graphics toolkit in Java | |
EP0713594B1 (en) | Object-oriented rendering system | |
JP4796499B2 (ja) | 映像およびシーングラフインターフェイス | |
US7126606B2 (en) | Visual and scene graph interfaces | |
US6392651B1 (en) | Interactive timeline visualization | |
WO1995008147A1 (en) | Object-oriented audio record/playback system | |
EP0405496B1 (en) | A method of manipulating images larger than a viewport | |
EP0607136A1 (en) | Graphics output system with bounded updating | |
Willman et al. | Graphics and Animation in PyQt | |
Mena-Quintero et al. | The {GNOME} Canvas: A Generic Engine for Structured Graphics | |
Oswald | A generic 2D graphics API with object framework and applications | |
AU2004279179B8 (en) | Visual and scene graph interfaces | |
LAI et al. | Structural Modeling of Flowcharts | |
White | Pro. NET 2.0 Graphics Programming | |
Juneau et al. | Java 2D Graphics | |
Syme et al. | Working with Windows Forms and Controls | |
Churchill et al. | Programming Fresco | |
Sun | Software reengineering system visualizer | |
JPH08503324A (ja) | オブジェクト指向要素シェイディングとカラーリング |
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: 20080124 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090124 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090124 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100124 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110124 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110124 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: 20110124 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: 20110124 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120124 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120124 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: 20130124 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130124 Year of fee payment: 10 |
|
EXPY | Cancellation because of completion of term |