JPH08512156A - 図形エッジ・システム - Google Patents

図形エッジ・システム

Info

Publication number
JPH08512156A
JPH08512156A JP7503456A JP50345695A JPH08512156A JP H08512156 A JPH08512156 A JP H08512156A JP 7503456 A JP7503456 A JP 7503456A JP 50345695 A JP50345695 A JP 50345695A JP H08512156 A JPH08512156 A JP H08512156A
Authority
JP
Japan
Prior art keywords
edge
processing
graphic
scan line
objects
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
JP7503456A
Other languages
English (en)
Other versions
JP3392870B2 (ja
Inventor
ウェッブ,リチャード,ディー.
カブラル,オーサー,ダブリュ.
Original Assignee
タリジェント インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by タリジェント インコーポレイテッド filed Critical タリジェント インコーポレイテッド
Publication of JPH08512156A publication Critical patent/JPH08512156A/ja
Application granted granted Critical
Publication of JP3392870B2 publication Critical patent/JP3392870B2/ja
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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

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)

Abstract

(57)【要約】 図形オブジェクトをメモリにロードし、この図形オブジェクトを複数のエッジ・オブジェクトに変換し、このエッジ・オブジェクトを複数の走査線ピクセルに変換し、かつディスプレイ上にこの走査線ピクセルおよび図形オブジェクトを表示することによって、メモリおよび付属ディスプレイを有するコンピュータ上で、図形オブジェクトを処理する方法およびシステム。

Description

【発明の詳細な説明】 図形エッジ・システム 著作権通知書 本特許出願は、一部に、著作権保護の対象となる内容を含んでいる。何人が特 許書類または特許開示事項を、米国特許商標局の特許ファイルまたは記録の通り 、ファクシミリ複製しても、著作権者はそれを妨げるものではないが、そうでな い場合は一切の著作権を留保する。 技術分野 本発明は、コンピュータ・システムの改良に関し、特に、グラフィック・ディ スプレイ上のエッジ情報を処理するシステムおよび方法に関する。 背景技術 美学的、人間工学的方法で情報を表示するために、エッジ情報をグラフィック 処理することは非常に厄介なことである。したがって、最新のグラフィック・シ ステムは、テキストおよび図形情報を含む広範囲の情報を処理する情報ハンドリ ング・システムを利用しているが、このシステムはこのような情報をより人間工 学的な方法で処理するため、ますます精巧になっている。例えば、選択された方 法で、図形エッジ情報をプログラミングするか、あるいは処理するコンピュータ ・プログラマまたはコンピュータ・ユーザの能力には限界がある。 従来のソフトウェアOS(operationg system)アーキテクチャは、エッジ処理能 力に限界があった。その限界の1つには、OSアーキテクチャが所定の周辺デバイ ス用に設計されていないか、所定の周辺デバイスをサポートできるようにOSアー キテクチャを修正することができない場合、OSアーキテクチャはその周辺デバイ スをサポートすることができないということが挙げられる。また、従来のアーキ テクチャは図形エッジ情報を予め定義された単一の方法で処理できるだけである 。 発明の開示 従って、本発明の主な目的は、メモリおよび付属のディスプレイを有するコン ピュータによって、図形オブジェクトと、これらの図形オブジェクトに関係付け をしたエッジを柔軟に処理することにある。本発明の目的は、図形オブジェクト をメモリにロードし、この図形オブジェクトを複数のエッジ・オブジェクトに変 換し、このエッジ・オブジェクトを複数の走査線ピクセルに変換し、この走査線 ピクセルをディスプレイ上に表示することによって達成される。 図面の簡単な説明 第1図は好ましい実施態様に係るパーソナル・コンピュータ・システムのブロ ック図である。 第2図は好ましい実施態様に係る図形エッジ対を示す図である。 第3図は好ましい実施態様に係るソート順を示す図である。 第4図は好ましい実施態様に係る星型多角形、奇偶規則を示す図である。 第5図は好ましい実施態様に係るワインディング数(winding number)規則を採 用する星型多角形を示す図である。 第6図は好ましい実施態様に係る有心奇偶規則に従う星型多角形の有心フレー ムを示す図である。 第7図は好ましい実施態様に係る有心ワインディング数規則に従う星型多角形 の有心フレームを示す。 第8図は好ましい実施態様によるインセット奇偶規則に従う星型多角形のイン セット・フレームを示す図である。 第9図はワインディング数規則に従う星型多角形のインセット・フレームを示 す図である。 第10図は好ましい実施態様に係るアウトセット奇偶規則に従う星型多角形のア ウトセット・フレームを示す図である。 第11図は好ましい実施態様に係るアウトセットワインディング数規則に従う星 型多角形のアウトセット・フレームを示す図である。 第12図は好ましい実施態様に係る個別装置によって使用されるエッジ・エンジ ンを示す図である。 第13図は好ましい実施態様に係る図示された構造を有する領域プリミティブで ある。 第14図は好ましい実施態様に係る現在位置の状態を決定する方法を示す図であ る。 第15図は好ましい実施態様に係る種々のエッジを示す図である。 第16図は好ましい実施態様に係る+y方向の走査変換を示す図である。 第17図は好ましい実施態様に係る直線エッジの例を示す図である。 第18図は好ましい実施態様に係る論理のフローチャートである。 第19図は本発明に係るエッジ遷移処理の実施態様を示すフローチャートである 。 第20図は本発明に係るエッジ遷移処理の実施態様を示すフローチャートである 。 第21図は本発明に係るエッジ遷移処理の実施態様を示すブロック図である。 発明の実施するための最良の形態 本発明は、パーソナル・コンピュータ、例えば、IBM(登録商標)のPS/2(登 録商標)またはApp1e(登録商標)のマッキントッシュ(登録商標)のようなパ ーソナルコンピュータに駐在する0Sのコンテキストで実施されるのが好ましい。 代表的なハードウェア環境を第1図に示す。この代表的なハードウェア環境は、 本発明に係るコンピュータの典型的なハードウェア構成を示しており、このコン ピュータはCPU(central processing unit)10、例えば、慣用のマイクロプロセッ サを有し、不揮発性メモリ11が内蔵されており、システムバス12を介して多数の 他の装置が相互接続されている。第1図に示すワークステーションは、RAM(rand om access memory)14と、ROM(read only memory)16と、I/Oアダプタ18と、ユー ザ・インタフェース・アダプタ22と、通信アダプタ34と、ディスプレイ・アダプ タ36を含む。I/Oアダプタ18は周辺装置、例えば、ディスク・ユニット20および ディスケット・ユニット21のような周辺装置をシステムバスに接続するためのも のである。ユーザ・インタフェース・アダプタ22はキーボード24、マウス26、ス ピーカ28、マイクロホン32および/またはユーザ・インタフェース装置、例えば 、タッチ・スクリーン装置(図示せず)のようなユーザ・インタフェース装置を システムバスに接続するためのものである。通信アダプタ34はワークステーショ ンをデータ処理ネットワーク23に接続するためのものである。ディスプレイ・ア ダプタ36はシステムバスをディスプレイ装置38に接続するためのものである。こ のコンピュータには、OS、例えば、App1e System/7(登録商標)のようなOSが駐 在している。 好ましい実施態様では、本発明は、OOP(object-oriented programming)技術を 用いて、C++プログラミング言語で実装される。当業者にとって当然のことであ るが、0OPオブジェクトは、データ構造と、データに対するオペレーションとを 備えたソフトウェア・エンティティである。同時に、これらの要素により、オブ ジェクトはデータ要素により表される特性と、データ操作機能によって表される その振る舞いの観点から、任意のリアル・ワールド・エンティティをバーチャル にモデル化することができる。このように、オブジェクトは人間およびコンピュ ータのような具体的な事物をモデル化することができ、しかも、オブジェクトは 数または幾何学的概念のような抽象的な概念をモデル化することができる。オブ ジェクト技術の利点は、3つの基本原理、すなわち、カプセル化と、ポリモフィ ズム(多形)と、継承から生じる。 オブジェクトは、そのデータの内部構造と、オブジェクトが機能するアルゴリ ズムを隠蔽、すなわちカプセル化する。これらの実装の細部を露出する代わりに 、オブジェクトは、外部からの情報を一切有しない抽象化を完全に表すインタフ ェースを表示する。その多形はさらに1ステップだけカプセル化する。そのア イディアとは多くの形態、1つのインタフェースである。ソフトウェア・コンポ ーネントは、そのコンポーネントが何であるかを正確に知らないので、他のコン ポーネントを要求することができる。この要求を受けるコンポーネントは、その 要求を解釈し、その変数およびデータに従って、その要求をどのように実行する かを理解する。第3の原理は継承である。この継承により、デベロパーは前から 存在する設計およびコードを再使用することができる。よって、デベロパーは初 めからソフトウェアを作成しなくて済むことになる。それどころか、継承によっ て、デベロパーは振る舞いを継承するサブクラスを導出しており、デベロパーは サブクラスをデベロパーの特定の要求を満足させるためにカスタマイズしている 。 従来のアプローチでは、手続き環境で、オブジェクトを階層化し、ライブラリ をクラス化している。市販のアプリケーション・フレームワークは、この設計ア プローチを採っているものが多い。この設計では、モノリシックOSの頂上に1つ 以上のオブジェクト層が存在する。このアプローチでは、オブジェクト層で、カ プセル化と、多形と、継承という全ての原理を利用しており、しかも、このアプ ローチは手続きプログラミング技術を実質的に改良したものであるが、この方法 には限界がある。この方法の限界は次のようなことから生じる。すなわち、デベ ロパーが手続きプログラミング技術のオブジェクトを再使用することは容易であ るが、他のシステムからオブジェクトを使用することは困難であり、しかも、デ ベロパーは、依然、手続きOSコールにより、下位の非オブジェクト層に到達する 必要があることから生じる。 OOPの他の態様は、フレームワークのアプリケーション開発へのアプローチで ある。フレームワークの定義として、the University of IllinoisのRalph E.Jo nsonと、PurdueのVincent F.Russoから最も合理的な定義が得られた。1991年の 論文、すなわち、Reusing Object−Oriented Designs,University of Illinois tech report UIUCDCS91−1696で、Ralph E.JonsonとVincent F.Russoは次のよう に定義している。すなわち、「抽象クラスとは、責任のセットを遂行するために 協働するオブジェクトのセットの設計である。従って、フレームワークとは、コ ンピューティング責任の定義されたセットを実行す るため協働するオブジェクト・クラスのセットである。」と定義している。プロ グラミングの観点からいうと、フレームワークは、本質的には、ワーキング・ア プリケーションの前もって作成された構造を提供するオブジェクト・クラスであ って、相互接続されたオブジェクト・クラスのグループである。例えば、ユーザ ・インタフェース・フレームワークであれば、ウィンドウと、スクロールバーと 、メニュー等のドローイングをサポートし、それらの「デフォルト」な振る舞い を提供することができる。フレームワークがオブジェクト技術に基づいているの で、デベロパーはこの振る舞いを継承、かつ、オーバライドして、フレームワー クを拡張し、カスタマイズされた解決法を、専門的知識の特定の領域で生み出す ことができる。この点は伝統的なプログラミングに勝る主な利点である。という のは、プログラマはオリジナルなコードを変更しないが、ソフトウェアを拡張す るからである。さらに、デベロパーはコードの層を無闇に行き来していない。と いうのは、フレームワークはアーキテクチャを導き、アーキテクチャをモデル化 し、同時に、コードの層を解放して、問題ドメインに特有の特定のアクションを 供給するからである。 ビジネスの観点から言うと、フレームワークは、専門的知識を特定の知識領域 でカプセル化するかあるいは具体化する1つの方法として見ることができる。企 業の開発組織と、独立のソフトウェア・ベンダー(ISV)と、システム・インテグ レータは、既に例を挙げたが、特定の領域、例えば、製造、金融、または為替の ような特定の領域で、専門的な知識を獲得してきた。この専門的な知識は自らの コードで具体化される。企業は、その企業のコードで、その専門的知識をフレー ムワークにより具体化して、その専門的知識の共通の特性を獲得し、パッケージ 化することができる。最初に、このようにして、デベロパーは専門的な知識を利 用するアプリケーションを作成するか拡張することができ、従って、この問題が 一度解決され、ビジネス規則および設計が絶えず強化され使用される。また、フ レームワークと、これらフレームワークの背後にある専門的知識は、戦略資産と して、垂直市場(vertical market)、例えば、製造、金融のような垂直市場で、 専門的な知識を獲得してきた企業に影響を与えている。さもないと、バイオ技術 なんかが、これらの専門的知識をパッケージ化し、リセリング(reselling)し、 展開し、さらに技術の進歩および普及を促進するための販売機構を持つことにな るのである。 歴史的に言えば、フレームワークは、つい最近、パーソナル・コンピューティ ング・プラットホームに関する主流の概念として出現した。このマイグレーショ ンが支えられているのは、C++のようなオブジェクト指向言語が利用可能になっ たからである。伝統的には、C++は、商業的背景のパーソナル・コンピュータよ りも、UNIXシステムや、研究者のワークステーション上で使用されるのがほとん どである。多くの大学および研究プロジェクトにより、今日の商用フレームワー クおよびクラス・ライブラリの先駆者を作らせたのが、C++のような言語と、Sma lltalkのようなオブジェクト指向言語、等々である。例えば、Stanford Univers ityのInterViewsと、Carnegie-Mellon UniversityのAndrew toolkitと、Univers ity of ZurichのET++フレームワークがある。 種々のタイプのフレームワークはシステムのレベルと問題の性質に依存してい る。フレームワークのタイプは、ユーザ・インタフェース開発を支援するアプリ ケーション・フレームワークから、基本的なシステム・ソフトウェア・サービス 、例えば、通信と、印刷と、ファイル・システム・サポートと、グラフィックス 等のようなサービスを提供する低レベルフレームワークに及んでいる。市販のア プリケーション・フレームワークとしては、MacAPP(Apple)と、Bedrock(Symante c)と、OWL(Borland)と、NeXTStep App Kit(NeXT)と、Smalltalk-80 MVC(ParcPla ce)がある。 フレームワークを用いたプログラミングは、他の種類のシステムに慣れたデベ ロパーに新しい思考法を要求するものだ。実際、フレームワークを用いたプログ ラミングは、伝統的な意味では、「プログラミング」に似つかわしくないのであ る。DOSまたはUNIXのような旧いタイプのOSでは、デベロパー自身のプログラム が全ての構造を提供するのであり、OSはシステム・コールによってサービスを提 供する。すなわち、デベロパーのプログラムがサービスを必要とするとき、その プログラムがコールを行い、サービスが提供されたとき、制御を戻すのである。 プログラム構造は、デベロパーにより書かれたコードで具体化された制御のフロ ーに基づいている。 このことはフレームワークが使用されたときは撤回される。デベロパーはもは や制御の流れに責任を負わないのである。デベロパーは実行のフローによってプ ログラミング作業を理解するという風潮より先んじていなければいけない。この 考え方は、いつタスクが実行されるかを決定するために、フレームワークを信頼 しなければならず、オブジェクトの責任によらなければならない。デベロパーが 書いたルーチンは、デベロパーが書いてもいないし、見てもいないコードによっ て活動化される。このように制御フローが突然転換することは、手続きプログラ ミングのみの経験を積んだデベロパーの大きな心理的な障げになり得るのである 。しかしながら、このことが一旦理解されると、フレームワーク・プログラミン グは他のタイプのプログラミングよりも作業量が非常に少なくなる。 アプリケーション・フレームワークがデベロパーにプレハブ機能を提供するの と同様の方法で、システム・フレームワーク、例えば、好ましい実施態様で含ま れるようなシステム・フレームワークは、システム・レベル・サービスを提供し て同一の概念をレバレッジする。この同一の概念を用いて、システム・プログラ マのようなデベロパーはサブクラス化/オーバライドし、カスタマイズされた解 決法を作成する。例えば、マルチメディア・フレームワークを考えてみよう。マ ルチメディア・フレームワークは新して多様な装置、例えば、オーディオと、ビ デオと、MIDIと、アニメーションと、等々のような装置をサポートするための基 盤を提供する。新しい種類の装置をサポートするのに必要なデベロパーは、デバ イス・ドライバを書かなければならなくなる。フレームワークを用いてデバイス ・ドライバを書くには、デベロパーは新しい装置の特性と、その新しい装置に特 有の振る舞いを供給するだけでよい。 この場合、デベロパーはマルチメディア・フレームワークによってコールされ るあるメンバー関数にインプリメンテーションを供給する。デベロパーが直接得 る利益は、装置の各カテゴリに対して必要なジェネリックなコードが、マルチメ ディア・フレームワークによって既に提供されていることである。これは、デバ イス・ドライバ・デベロパーが書き、試験し、デバッグするコードが少ないこと を意味する。システム・フレームワークを使用する他の例を挙げると、SCSI装置 と、NuBusカードと、グラフィックス・ドライバに対する別々のI/Oフレーム ワークを有することにある。継承された機能が存在するため、各フレームワーク はそのデバイス・カテゴリーにある共通の機能をサポートする。従って、他のデ ベロパーは、全ての種類のデバイスに対するインタフェースに一貫して依存する ことができる。 好ましい実施態様では、フレームワークの概念を採用しており、その概念をシ ステム全体に適用している。企業のデベロパーか、システム・インテグレータか 、あるいはOEMにとって、このことは次のようなことを意味する。すなわち、Mac Appのようなフレームワークのために説明してきた利点を、テキストおよびユー ザ・インタフェースのような事物に対しては、アプリケーション・レベルでレバ レッジできるだけでなく、サービス、例えば、グラフィックスと、マルチメディ アと、ファイル・システムと、I/Oと、試験と、等々のようなサービスにとって は、システム・レベルでレバレッジすることができる。 好ましい実施態様のアーキテクチャでアプリケーションを作成することは、本 質的には、フレームワーク・プロトコルに付着するドメイン特有のパズルのピー スを書くのに似ている。このように、プログラミングの全概念は変化する。多重 API階層をコールするコードの行ごとに書く代わりに、この環境内に前から存在 していたフレームワークからクラスを導出し、ついで、新しい振る舞いを付加し 、かつ/あるいは、継承された振る舞いをオーバライドして、ソフトウェアが開 発されることになる。 従って、デベロパーのアプリケーションは、書かれたコードのコレクションで あって、他の全フレームワーク・アプリケーションと共有されるコードのコレク ションになる。デベロパーは互いの作品の上に築きあげることができるので、こ れは強力な概念である。この概念も必要なだけカスタマイズする柔軟性をデベロ パーに与える。フレームワークの中には、そのまま用いられものもある。カスタ マイズの程度は最少なので、デベロパーが加担するパズルのピースは小さくなる ことがある。デベロパーが非常に細な修正をして、何か全く新しいものを作成す る場合もある。好ましい実施態様では、第1図で示すように、RAM 14に常駐し、 しかも、CPU10により制御されるプログラムは、オブジェクト指向のグラフィッ ク・フレームワークを使用して、種々のタスクを管理することを担当する。 好ましい実施態様では、TGrafEdgeのリストを操作するためにレンダリング・ パイプラインのエッジ・エンジンを採用している。エッジ・エンジンは個別のデ バイスだけで使用されている。例えば、TFrameBufferデバイスでは、エッジ・エ ンジンは、プリミティブのうちの塗り潰されかつフレーム化(framed)された部分 を表すエッジから走査線のスパンを生成する。この処理は走査変換として公知で ある。 TGrafEdgeは多形の走査変換プリミティブである。一対の図形エッジを第2図 に示す。図形エッジ230,240は、それぞれ、最小Y値が210、開始X値が200、高 さが220であり、virtualStepメソッドを有する。virtualStepメソッドは次の走 査線(次の整数Y値)に対してX値を更新する。従って、TGrafEdgeはYが単調 な任意の曲線を記述することができる。すなわち、TGrafEdgeはスパンされる走 査線ごとに単一のX値を有する。TGrafEdgeも単一のCAGノード・オブジェクトに 対してリファレンスを有する。このレファレンスを用いて、ある点が全幾何学形 状の内部にあるか外部にあるかを判定するのに用いられる。 簡単なプリミティブはレンダリングするのが容易である。簡単なプリミティブ は、ある点が幾何学形状の内部にあるか外部にあるかを判定するための単一のラ ップ・カウントを有する。一方、TGAreaプリミティブは、任意に複雑にすること ができる。サブ・プリミティブはそれぞれ独立のラップ・カウントを有する。サ ブ・プリミティブのラップ・カウント値は全て全プリミティブの状態を計算する のに用いることができる。内部/外部の計算を行うための構造はTGAreaによって セットアップされ、エッジ・エンジンに渡される。しかし、TGAreaプリミティブ に対してのみ、より複雑な内部/外部計算に関連するオーバヘッドがある。エッ ジ・エンジンのサブクラスはアンチ・エイリアシング走査変換を行うことになり 、加速されたエッジ、例えば、直線エッジのようなエッジに対して、エッジ・エ ンジンのサブクラスをmakeすることができる。 ピクセル・パーフェクション(pixel perfection)はエッジ・エンジンにとって 重要である。というのは、エッジ・エンジンが個別のデバイス・ユニットへの走 査変換を行うからである。ピクセル・パーフェクションは、どのピクセルが変更 され、どのピクセルに、デバイス空間の領域を規定するエッジのセットが付与さ れるかを規定する。たとえ「ピクセル」という用語を用いるとしても、ピクセル ・パーフェクションは他の個別のデバイスに対しても有用である。というのは、 個別のユニットがデバイス座標系のどこにあるのかが、ピクセル・パーフェクシ ョンにより規定されるからである。 走査変換は、個別のグラフィック・デバイス上にドローイングすることができ る幾何学形状を、水平走査ライン・スパンに変換する処理である。幾何学形状を 、塗り潰すか、フレーム化するか、あるいは塗り潰しかつフレーム化することが できる。塗り潰しおよび/またはフレーム化された幾何学形状をドローイングす るためのアルゴリズムは、どの領域も2度ドローイングされないし、変換(trans fer)モードが正確に機能し、正確に透過することができることを保証する。エッ ジ・エンジンにより、輪郭を表すTGrafEdgeのリストにより規定される幾何学形 状が塗り潰される。ユーザは、幾何学形状の周辺を任意の方向にトレースするこ とにより、幾何学形状の輪郭を指定することができる。こうすることにより、リ スト中の各エッジの符号が決定される。エッジが+y方向を指す場合は、エッジ の符号は+である。出力に影響を与えないエッジは廃棄される。 第3図は好ましい実施態様に係るソート順を示す。エッジは、最初に、降順に y値によりソートされ、ついで、特定のy値内のx値によりソートされる。エッ ジを交差する各走査線に対して、x方向に1つ以上のスパンが生成される。これ は、エッジの「アクティブ」リスト、すなわち、現走査線を交差するエッジを常 に保持することにより達成される。各走査線に対して、アクティブ・エッジ・リ ストが作成される。そして、エッジが交差されると、次の規則、すなわち、奇偶 規則(Even-odd rule)またはワインディング数規則(Winding number rule)のいず れかにより、走査線に対して適正なスパンが生成される。 奇偶規則: エッジに出会う度に、スパンの開始または終了のいずれかが行わ れる。第4図は好ましい実施態様に係る各エッジ対に対して生成された星型スパ ンの例である。 ワインディング数規則: エッジが交差されると、そのエッジの符号がワイン ディング数に付加される。ワインディング数はゼロに初期設定されている。ワイ ンディング数が非ゼロであると、スパンが開始される。このワインディング数が ゼロになると、スパンが終了される。その結果、多角形の外部境界内の全ての領 域が塗り潰される。第5図は好ましい実施態様に係るワインディング数規則を用 いる星型多角形の例を示す。 適用される規則は、レンダリングされているプリミティブに依存する。例えば 、多角形の図形オブジェクトを定義するTGPolygonプリミティブは、どの規則を 使用するかを指定するパラメータを含む。他方、TGEllipseプリミティブはいず れかの規則を用いることができる。というのは、内部に交点を持たない(nonself −intersecting)幾何学形状に両方の規則が適用されたとき、それらの規則によ り、同一の結果を生じるからである。2種類のフレームを、フレーム(ヘヤライ ン・フレームおよび太いフレーム)の意図された目的に従って、オブジェクトの 周囲にドローイングすることができる。これらのフレームは次に説明する。 太いフレームは、任意の太さを有することができる。エンド・キャップ(end c ap)と、ジョイント・スタイル(joint style)と、ダッシング(dashing)を、希望 どおり適用することができる。エッジ・エンジン走査により、太いフレームおよ び塗り潰しが同時に変換される。フレームの両側(右側および左側)を表すTGra fEdgeが生成され、かつ塗り潰しエッジを有するリストに挿入される。フレーム ・エッジの方向、従って、フレーム・エッジの符号は、フレーム・エッジから作 成された塗り潰しエッジの方向と同一である。プリミティブが走査変換されると 、2つのワインディング数、すなわち、左フレーム・エッジに対するワインディ ング数と、右フレーム・エッジに対するワインディング数が保持される。フレー ムに対して生成されたスパンは、どの塗り潰し規則が用いられたかに依存する。 奇偶規則: フレーム・エッジが出合うと、フレーム・エッジの符号が適正な ワインディング数(左側または右側)に付加される。2つのワインディング数が 等しくなくなると、スパンが開始される。2つのワインディング数が再び等しく なると、スパンが終了される。 ワインディング数規則: フレーム・エッジが出合うと、フレーム・エッジの 符号が適正なワインディング数(左側または右側)に付加される。2つのワイン ディング数の符号が等しくなくなると、スパンが開始される。符号が再び等しく なると、スパンが終了される。 どのペン・バランスが使用されるかによって、塗り潰された領域にフレームを 重ね合わすことができる。しかしながら、塗り潰された領域とフレームが一緒に ドローイングされるので、その領域はどの部分も2度はドローイングされない。 有心ペンの場合、フレームの太さは塗り潰された領域の輪郭に集中する。これ は、フレームのために生成されたスパンが、塗り潰すために生成されたスパンに 取って代わることができる場合に達成される。 第6図は好ましい実施態様に係る有心奇偶規則に従う星型多角形の有心フレー ムを示し、第7図は好ましい実施態様に係る有心ワインディング数規則に従う星 型多角形の有心フレームを示す。インセット・ペン(inset pen)の場合、フレー ムの太さは、塗り潰された領域の輪郭の完全に内側にある。フレームのために生 成されたスパンは、塗り潰すために生成されたスパンにとって代わるが、これら は、充填スパンが生成されたときだけドローイングされる。言い換えると、その フレームはクリップされ塗り潰し幾何学形状に付加される。これはアウトセット ・フレーム(outset frame)の逆になる。第8図は好ましい実施態様に係るインセ ット奇偶規則に従う星型多角形のインセット・フレーム(inset frame)を示す。 第9図はワインディング数規則に従う星型多角形のインセット・フレームを示す 。 アウトセット・ペンの場合、フレームの太さは塗り潰し領域の輪郭の完全に外 側にある。フレームのために生成されたスパンは、塗り潰しスパンがドローイン グされないときだけドローイングされる。言い換えると、フレームは塗り潰し幾 何学形状の内側には決してドローイングされることはない。第10図は好ましい実 施態様に係るアウトセット奇偶規則に従う星型多角形のアウトセット・フレーム を示す。第11図は好ましい実施態様に係るアウトセット・ワインディング数規則 に従う星型多角形のアウトセット・フレームを示す。 エッジ・エンジン・エイリアシング・サブクラス 第12図は個別の装置によって使用されるエッジ・エンジンを示す。アンチ・エ イリアシングされたエッジ・エンジンは図示されていない。TEdgeEngineは抽象 クラスであり、その抽象クラスから全てのエッジ・エンジンが導出される。TEdg eEngineはTGrafEdgeを受取るpureな仮想関数を含む。TGrafEdgeはpureな仮想Ren der関数を含む。 TFillEdgeEngineは、TGrafEdgeのリストで記載された幾何学形状に対して、エ イリアシングされた塗り潰しを行う。エッジは任意のタイプが可能である。 TRectilinearFillEdgeEngineは、直線のTGrafEdgeのリストで記載された幾何 学形状のエイリアシングされた塗り潰しを行う。それは、TFillEdgeEngineの最 適化である。各TGrafEdgeが垂直線であるものと仮定する。 TFillAndFrameEdgeEngineは、TGrafEdgeのリストで記載された幾何学形状のエ イリアシングされた塗り潰しを行い、エイリアシングされたフレーム化を行う。 エッジは任意のタイプが可能である。 TRectilinearFillAndFrameEdgeEngineは、直線のTGrafEdgeのリストで記載さ れた幾何学形状に対してエイリアシングされた塗り潰しを行い、エイリアシング されたフレーム化を行う。それはTFillEdgeEngineの最適化である。各TGrafEdge が垂直線であるものと仮定する。 エッジ・エンジン・アンチ・エイリアシング・サブクラス エッジ・エンジンをサブクラス化するための他の理由は、アンチ・エイリアシ ングに適応させることにある。有効な実装により、フィルタ・カーネル(kernel) によりエッジの周りの領域のみを巻き込む共通の最適化が行なわれる。この最適 化により、その形の内部で行われる多量のフィルタリング演算が回避され、同様 に、用いられる簡単なnon compositing TSpanPainterメソッド、例えば、PaintS panのようなメソッドを使用することもできる。アンチ・エイリス・エッジ・エ ンジンの場合は、エッジを巻き込む2つのアプローチを行うことができ る。 スーパ・サンプリング・アプローチ走査は、より高解像度で、レンダリングを 、サブピクセル・レベルで詳細に表現するサブピクセル・ビットマップに変換す る。あるいはまた、サブピクセル走査変換を予め計算して、次のようなテーブル にする。このテーブルは、幾つかの有意ビットにより、エッジの入口および出口 座標の小部分(fractional)コンポーネントからインデックスされるものである。 これらのビットマップは典型的には4×8ピクセルである。ボックス・フィルタ が使用されている場合は、必要とされるものは全てビットマップ母集団のタリー である。0.5を超える大きさの支持体サイズ(support size)を有するより高品質 のフィルタが使用された場合は、出力されたピクセルの透過は、それぞれ、それ 自身のビットマップと、隣接のビットマップの重み付け平均値から決定される。 より高品質のフィルタにより、1つの付加的な問題が課せられる。その寄与し ているサブピクセル・ビットマスクが、全て、フィルタ・カーネルで巻き込まれ 、かつ加算されるまで、走査線を出力することはできない。これは、エッジ・エ ンジンがその走査変換より1,2走査線遅れてスパンを出力することになること を意味する。これらのアプローチは、頂点が整数であるか、あるいは隠れた面を 解明する必要があるときに採られるのが典型的である。予めフィルタリングする アプローチは、エッジを含む各ピクセルで、正確な領域計算を採用している。こ れは高価であるようであるが、そのことには、実際には、有効なインクリメンタ ル解法がある。走査線上の所定のエッジ対の場合は、注目する高々3つの領域、 すなわち、左エッジと、中間かあるいは完全にカバーされたピクセルと、右エッ ジが存在することができる。エッジが交差した全てのピクセルは、その領域が計 算されていなければならない。幾つかの隣接したピクセルが共通エッジによって 交差された場合は、引き続き交差するピクセルに対する領域を、インクリメント に計算することができる。所定の傾斜を有するエッジの場合は、ピクセルからピ クセルまでの領域の差は一定である。この仮定に基づいたアプローチはより魅力 的である。 どちらのアルゴリズムが採用されても、2つのエッジのケースがかち合うかも しれない。分離されたエッジの第1のケースは最も普通である。全てのエンジン はこのケースに遭遇する。フレーム化のみエッジ・エンジンか、塗り潰しのみエ ッジ・エンジンからのエッジは、全ては、このカテゴリに属する。塗り潰しおよ びフレーム化エッジ・エンジンは、フレームの外部エッジ上でこのケースに遭遇 する。エッジの不透明性(edge opacity)が判定された後、不透明でないピクセル は、TSpanPainterのCompositeSpanメソッドによってデスティネーション・ピク セルと合成されなければならない。 第18図は好ましい実施態様に係るロジックのフローチャートである。処理は機 能ブロック1800で開始され、所定の幾何学形状、例えば、矩形か、楕円か、ある いは多角形のような幾何学形状からエッジを生成する。そして、機能ブロック18 10にて、エッジのy値を、1次ソート・フィールドとして、昇順でソートし、エ ッジのx値を、2次ソート・フィールドとして、昇順でソートする。ついで、機 能ブロック1820にて、現在の走査線を第1のエッジのy値に初期設定し、機能ブ ロック1830にて、新しいエッジをコレクトしてアクティブ・エッジ・リストに入 れる。(アクティブ・エッジ・リストとは、現在の走査線を交差するエッジのリ ストである)。機能ブロック1840にて、エッジが現在の走査ラインを最早交差し ない場合は、エッジはアクティブ・エッジ・リストから除去される。機能ブロッ ク1850にて、ステップ関数が全アクティブ・エッジに対してコールされ、エッジ の順序が狂っているかどうかを検出する。(エッジのステップ関数は現在の走査 線に対応する次のx値を計算する)、そして、判定ブロック1860にて、試験を行 って、エッジをx値でソートする必要があるかどうかを判定する。新しいエッジ が付加される場合か、古いエッジが除去される場合か、あるいは、エッジが交差 した場合は、x値でソートする必要がある。ソートが必要な場合には、機能ブロ ック1870にて、アクティブ・リストをx値で昇順でソートし、制御を機能ブロッ ク1880に渡す。ソートする必要がない場合は、制御を機能ブロック1880に直接渡 す。 機能ブロック1880にて、各アクティブ・リストに対して、試験を行って、エッ ジを交差した結果、幾何学形状の外部に遷移し、しかも、現在の走査線上にピク セルをドローイングすることになるかどうかを判定する。エッジ遷移関数を用い て、内部/外部検出を行う機構を一般化することができる。その論理の検討は第 19図、第20図および第21図を参照して行う。第19図、第20図および第21図はこの 処理の種々の実施態様を示す。ついで、判定ブロック1890にて、試験を行って全 てのエッジが処理されたかどうかを判定する。処理された場合は、終了端子1891 にて、その処理が完了する。処理されない場合は、機能ブロック1892にて、現在 の走査ラインをインクリメントし、上述した論理と一致する処理をさらに行うた め、制御を機能ブロック1830に渡す。 ワインディング数規則 第19図は第18図の機能ブロック1880で示されたような本発明に係るエッジ遷移 処理の実施態様を示すフローチャートである。処理が機能ブロック1900にて開始 され、機能ブロック1900にて、エッジの符号が現在のラップ・カウントに付加さ れる。判定ブロック1910にて、試験を行い、ラップ・カウントがゼロになったか どうかを判定する。ゼロになった場合は、セーブされたx値から機能ブロック19 40で示されるようなエッジのx値まで、ピクセルが現在の走査ライン上にドロー イングされる。ゼロでない場合には、試験を行って、ラップ・カウントが非ゼロ になったか否かを判定する。ラップ・カウントが非ゼロである場合は、機能ブロ ック1930にてエッジのx値をセーブする。 奇偶規則 第20図は第18図の機能ブロックで示されたような本発明に係るエッジ遷移処理 の実施態様を示すフローチャートである。処理が機能ブロック2000で開始され、 機能ブロック2000にて、エッジの符号が現在のラップ・カウントに付加される。 判定ブロック2010にて、試験を行って、ラップ・カウントが偶数であるかどうか を判定する。エッジ・カウントが偶数である場合は、機能ブロック2030にて、セ ーブされたx値からそのエッジのx値まで、ピクセルを現在の走査ライン上にド ローイングする。エッジ・カウントが偶数でない場合には、機能ブロック2020 にて、エッジのx値をセーブする。 第21図は本発明に係るエッジ遷移の実施態様を示すブロック図である。このブ ロック図は矩形と楕円のブール和を用いて、遷移処理を明確にしている。結果ブ ロック2100にて、結果値を記憶する。ブール和オブジェクト2110は、2つの奇偶 値を取り、2つの値の論理和を計算する。奇偶オブジェクト2120は、奇偶論理を 用いて、各幾何学形状の内部または外部をトレースする。エッジが交差されると 、ブロック2130を介して、その遷移関数をコールする。矩形および楕円のエッジ はブロック2140に示す。
【手続補正書】特許法第184条の8 【提出日】1995年7月5日 【補正内容】 (原文明細書第1頁) 明細書 図形エッジ・システム 著作権通知書 本特許出願は、一部に、著作権保護の対象となる内容を含んでいる。特許書類 または特許開示事項を、米国特許商標庁の特許ファイルまたは記録の通り、何人 がファクシミリ複製しても、著作権者はそれを妨げるものではないが、そうでな い場合は、一切の著作権を留保する。 技術分野 本発明は、コンピュータ・システムの改良に関し、特に、グラフィック・ディ スプレイ上のエッジ情報を処理するシステムおよび方法に関する。 背景技術 美学的、人間工学的方法で情報を表示するために、エッジ情報をグラフィック 処理することは非常に厄介なことである。したがって、最新のグラフィック・シ ステムは、テキストおよび図形情報を含む広範囲な情報を処理する情報ハンドリ ング・システムを利用しているが、このシステムはこのような情報をより人間工 学的な方法で処理するため、ますます精巧になっている。例えば、選択された方 法で、図形エッジ情報をプログラミングするか、あるいは処理するコンピュータ ・プログラマまたはコンピュータ・ユーザの能力には限界がある。 従来のOS(operating system)はエッジ処理能力に限界があった。その限界の1 つには、OSアーキテクチャが所定の周辺デバイス用に設計されていないが、所定 の周辺デバイスをサポートできるようにOSアーキテクチャを修正することができ ない場合、OSアーキテクチャはその周辺デバイスをサポートすることができない ということが挙げられる。また、従来のアーキテクチャは図形エッジ情報を予め 定義された単一の方法で処理できるだけである。 Ackland et al,"The Edge Flag Algorithm−A Fill Method for Raster Scan Displays",IEEE Transactions on Computer,vol.C-30,no.1,January 1981 ,pages 41-47には、ラスタ・スキャン・ディスプレイのための多数の周知の輪 郭塗り潰しアルゴリズムが記載され、評価されている。ordered edge listアル ゴリズムは、ordered edge listのセットからスパンを生成して、輪郭を塗り潰 している。このアルゴリズムはスキャン・ライン順で適用され、現在のスキャン ラインと交差するエッジのテーブルであるアクティブなエッジ・リストにエント リを付加するか、あるいは、そのアクティブなエッジ・リストからエントリを削 除する。前ラインの結果に基づき、差分方程式を用いて、アクティブな各エッジ の交差点を現在のスキャンラインを用いて評価している。そして、x値を増加さ せて、これらの交差点が並べられ、内部(interior)スパンのセットが生成される 。あるいはまた、このアルゴリズムは、まず、各ポリゴンを、エッジ・ソートの 量を減少させる台形または三角形のセットに分解している。OELアルゴリズムが 必要とする処理は、大部分、フレーム・ストアをワーキング・メモリとして用い ることにより除去することができる。これはシード塗り潰しアルゴリズムにより 行われ、このアルゴリズムに従って、塗り潰される図形の接続された輪郭が、ま ず、フレーム・ストアのワーキング・プレーン上にドローイングされる。ついで 、この図形の内部にあるシード点が選択され、このアルゴリズムにより、当該図 形の境界を与える周知の内部の点の近傍の点を連続的に検査することにより、そ の図形のextentが交差していないことが判定される。 記載されている別のアルゴリズムは、ワーキング・プレーン上にドローイング された輪郭の内部を判定するパリティ・チェックである。そのピクセルから境界 まで引かれたラインが輪郭と奇数回交差する場合、あるピクセルがその図形の内 部に割り当てられる。記載された別のアルゴリズムはエッジ塗り潰し技法であり 、一連のピクセルにより表されるアウトライン・ドローイングにより塗り潰さ れる輪郭を定義することを避けて、その代わり、輪郭を数学的に記述する技法で ある。パリティ・チェック形アルゴリズムを用いて、実際の塗り潰しが行われて いる。スキャン・ライン当たりのエッジ・チェックの回数を減少させることによ りエッジ塗り潰し技法を改善するために、Ackland et alの文献では、エッジ・ フラグ・アルゴリズムを提案している。このアルゴリズムよれば、1つのピクセ ルのみがエッジ/スキャン交差ごとにマークされ、その後、実際の塗り潰しがコ ピー・ルーチンにより行われる。交点でピクセルを補完することによりマークす る。このアルゴリズムは訂正塗り潰しを行なうため、パリティ・チェックを簡単 にしている。 説明されているアルゴリズムの中には、手続き型プログラミングか、マイクロ コードか、あるいは、ハードウェアによるインプリメンテーションが示されてい るものがある。これら記載されているアルゴリズムのどれも、オブジェクト指向 環境で用いられるものではないが、あるオペレーティング・システム・アーキテ クチャには依存していない。これらのアルゴリズムは輪郭塗り潰しに限定されて いる。 さらに、輪郭線をシャープニングするか、細線化してスケルトン表現を修正す る種々の方法が良く知られている。Chin et al,"A One-Pass Thinning Algorit hm and its Parallel Implementation"と、COMPUTER VISION,GRAPHICS AND IMA GE PROCESSING,vol.40,no.1,October 1987,pages 30-34,Academic Press, Inc.,Duluth,MN,USAと、Naccache et al,"An Investigation into the Skel etonizaton Approach of Hilditch",PATTERN RECOGNITION,vol.17,no.3,198 4,pages 279-284,Pergamon Press,Ltd.,Oxford,GBを参照されたい。これら の方法は、上述した周知のエッジ処理の欠点を解消するのにもまた適さない。 発明の開示 従って、本発明の目的は、メモリおよび付属のディスプレイを有するコンピュ ータによって、図形オブジェクトと、これらの図形オブジェクトに関係付け をしたエッジを柔軟に処理することにある。本発明の目的は、図形オブジェクト をメモリにロードし、この図形オブジェクトを複数のエッジ・オブジェクトに変 換し、このエッジ・オブジェクトを複数の走査線ピクセルに変換し、この走査線 ピクセルをディスプレイ上に表示することによって達成される。 本発明は独立項である請求の範囲第1項および第12項で定義されている。その 他の請求の範囲には本発明の改善を記載している。 図形の簡単な説明 第1図は好ましい実施態様に係るパーソナル・コンピュータ・システムのブロ ック図である。 請求の範囲 1.閉じた幾何学形状を、オブジェクト指向グラフィック・フレームワークを用 いて複数のスキャン・ライン・ピクセルにスキャン変換する方法であって、メモ リ(14)を有するコンピュータ・システム(10)上でオペレートする方法であり、複 数のエッジ(230)により前記オブジェクトをそれぞれ記述するデータと、前記複 数のエッジを前記幾何学形状のアウトラインに変換するオブジェクト関数とを備 えたグラフィック・オブジェクトのクラスから導出されたオブジェクトにより、 前記幾何学形状を表現する方法において、 (a)エッジ・オブジェクトのクラスからサブクラス(1510,1570)を導出し、導出 されたサブクラスから、複数のエッジ・オブジェクト(1800)を作成し、該エッジ ・オブジェクトは、それぞれ、予め定めたエッジ形状を記述するためのデータ構 造を備え、しかも、前記予め定めたエッジ形状に沿って移動させるための関数を 含むステップと、 (b)前記グラフエッジを受ける関数を含むエッジ・エンジン・オブジェクトで あって、前記エッジ・オブジェクトのパラメータにより指定されている予め定め た処理ルールに従って、前記スキャンラインとして適正なピクセルのスパンを生 成するための遷移関数を含むエッジ・エンジン・オブジェクトの抽象クラス(TEd geEngine)をストアするステップと、 (c)前記抽象サブクラスから、少なくとも1つの塗り潰しフレーム・エッジ・ エンジン・サブクラスを作成し、前記抽象サブクラスの各エッジ・エンジン・オ ブジェクトを、前記エッジ・オブジェクト内および/またはそのエッジ上に存在 するスキャンラインのうちのサブクラスID部分の1つから導出するステップと、 (d)前記メモリのグラフィック・オブジェクトをアクセスし、そのグラフィッ ク・オブジェクト内のデータとオブジェクト関数を利用して、前記エッジ・オブ ジェクトから、前記グラフィック・オブジェクトを表すエッジ・オブジェクトを 選択するステップと、 (e)前記エッジ・オブジェクトをスキャン中にエッジが交差したとき、前記選 択されたエッジ・オブジェクトにより指定されたエッジ・エンジン・オブジェク トを用いて、前記遷移関数(1910,1920,2010)をコールするステップであって、コ ールされた前記遷移関数によりパフォームされた前記予め定めた処理ルールに従 って、前記スキャンラインのうちの指定された部分を塗り潰し、および/または 、フレーミングするためのスキャン・ライン・ピクセル(1940,2030)を作成する ステップと を備えたことを特徴とする方法。 2.請求の範囲第1項において、前記ステップ(a)は、 (a1)複数のエッジ・オブジェクトに対して単一の名前を選択するステップと、 (a2)選択された名前を前記複数のエッジ・オブジェクトにそれぞれ割り当てる ステップと、 (a3)異なるパラメータを前記複数のエッジ・オブジェクトにそれぞれ割り当て るステップと を備えたことを特徴とする方法。 3.請求の範囲第1項において、前記ステップ(a)は、 (a3)追加のオブジェクトを作成することができるパラメータのセットを選択す るステップを備えたことを特徴とする方法。 4.請求の範囲第1項において、前記ステップ(e)は、 (e1)作成されるスキャン・ライン・ピクセルがエッジ内にあるか、エッジ外に あるか(第4図)、あるいはエッジ上にあるか(第6図)を判定するステップを 備えたことを特徴とする方法。 5.請求の範囲第1項において、前記ステップ(e)は、スキャン・ライン・ピク セルを作成して、前記エッジ(第7図)により定義された前記アウトラインに対 して有心フレームを表現するステップを備えたことを特徴とする方法。 6.請求の範囲第1項において、前記ステップ(e)は、スキャン・ライン・ピク セルを作成して、インセット・フレーム(第9図)を表現するステップを備えた ことを特徴とする方法。 7.請求の範囲第1項において、前記ステップ(e)は、スキャン・ライン・ピク セルを作成して、アウトセット・フレーム(第11図)を表現するステップを備え たことを特徴とする方法。 8.請求の範囲第1項において、前記ステップ(e1)は、奇偶処理規則を利用して (2010)、スキャン・ライン上のピクセルがエッジ内にあるか、エッジ外にあるか 、あるいは、エッジ上にあるかを判定するステップを備えたことを特徴とする方 法。 9.請求の範囲第1項において、前記ステップ(e1)は、ワインディング数処理規 則を利用して(1910,1920)、スキャン・ライン上のピクセルがエッジ内にあるか 、エッジ外にあるか、あるいは、エッジ上にあるかを判定するステップを備えた ことを特徴とする方法。 10.請求の範囲第1項において、前記ステップ(d)は、 (d1)前記オブジェクト関数を用いて、複数のエッジ・オブジェクトのうちの選 択されたエッジ・オブジェクトをアセンブルしてリストにする(1830)ステップと 、 (d2)スキャンライン処理中に前記リストを利用して、任意のエッジが前記スキ ャンラインと交差したか否かを判定する(1880)ステップと を備えたことを特徴とする方法。 11.請求の範囲第1項において、前記ステップ(c)で作成されたサブクラスは、 グラフィック・オブジェクト内および/またはそのエッジ上に存在するスキャン ラインの部分を識別する複数のスキャンライン関数を備えたアンチエイリアシン グされたエッジ・エンジン・オブジェクトを作成するために用いられ、しかも、 前記遷移関数によりパフォームされる前記予め定めた処理規則に従って、前記ス キャンラインのうちの前記識別された部分を塗り潰しおよび/またはフレーミン グするために、アンチエイリアシングされたスキャンライン・ピクセルを作成す ることを特徴とする方法。 12.閉じた幾何学形状を、オブジェクト指向グラフィック・フレームワークを用 い、メモリ(14)を有するコンピュータ・システム(10)を用いて、スキャン変換し て複数のスキャンライン・ピクセルにする装置であって、前記オブジェクトをそ れぞれ複数のエッジ(230)により記述するデータと、前記複数のエッジを横切っ てその形状のアウトラインにするためのオブジェクト関数を備えたグラフィック ・オブジェクトのクラスから導出されたオブジェクトにより、前記幾何学形状を 表現する装置において、 (a)エッジ・オブジェクトのクラスからサブクラスを導出し(1510,1570)、導出 されたサブクラスから複数のエッジ・オブジェクト(1800)を作成する手段であっ て、前記エッジ・オブジェクトが、それぞれ、予め定めたエッジ形状を記述する データ構造を備え、しかも、前記予め定めたエッジ形状に沿って移動するための 関数を含む手段と、 (b)前記グラフエッジを受ける関数を含むエッジ・エンジン・オブジェクトで あって、前記エッジ・オブジェクトのパラメータにより指定されている予め定め た処理規則に従って、前記スキャンラインとして適正なピクセルのスパンを生成 するための遷移関数を含むエッジ・エンジン・オブジェクトの抽象クラス(TEdge Engine)をストアする手段と、 (c)前記抽象サブクラスから、少なくとも1つの塗り潰しフレーム・エッジ・ エンジン・サブクラスを作成し、前記抽象サブクラスの各エッジ・エンジン・オ ブジェクトを、前記エッジ・オブジェクト内および/またはそのエッジ上に存在 するスキャンラインのうちのサブクラスID部分の1つから導出する手段と、 (d)前記メモリのグラフィック・オブジェクトをアクセスし、そのグラフィッ ク・オブジェクト内のデータとオブジェクト関数を利用して、前記エッジ・オブ ジェクトから、前記グラフィック・オブジェクトのエッジを表すエッジ・オブジ ェクトを選択する手段と、 (e)前記エッジ・オブジェクトをスキャン中にエッジが交差したとき、前記選 択されたエッジ・オブジェクトにより指定されたエッジ・エンジン・オブジェク トに応答して、前記遷移関数(1910,1920,2010)をコールする手段であって、コー ルされた前記遷移関数によりパフォームされた前記予め定めた処理ルールに従っ て、前記スキャンラインのうちの指定された部分を塗り潰し、および/または、 フレーミングするためのスキャン・ライン・ピクセル(1940,2030)を作成する手 段と を備えたことを特徴とする装置。 13.請求の範囲第12項において、前記エッジ・オブジェクトを作成する手段は、 前記複数のエッジ・オブジェクトにそれぞれ単一の名前を割り当てる手段と、前 記複数のエッジ・オブジェクトにそれぞれ異なるパラメータを割り当てる手段と を備えたことを特徴とする装置。 14.請求の範囲第12項において、前記パラメータを割り当てる手段は、追加のエ ッジ・オブジェクトを作成することができるパラメータのセットを利用すること を特徴とする装置。 15.請求の範囲第12項において、前記エッジ・エンジン・オブジェクトは、前記 複数のエッジ・オブジェクトのうちの選択されたエッジ・オブジェクトに応答し て、作成されるスキャンライン・ピクセルが前記エッジ内か、エッジ外か(第4 図)、あるいは、エッジ上か(第6図)を判定する手段を備えたことを特徴とす る装置。 16.請求の範囲第12項において、前記ピクセル作成手段は、スキャン・ライン・ ピクセルを作成して、前記エッジ・オブジェクト(第7図)により定義された前 記アウトラインに対する有心フレームを表現することを特徴とする装置。 17.請求の範囲第12項において、前記ピクセル作成手段は、スキャン・ライン・ ピクセルを作成して、インセット・フレーム(第9図)を表現することを特徴と する装置。 18.請求の範囲第12項において、前記ピクセル作成手段は、スキャン・ライン・ ピクセルを作成して、アウトセット・フレーム(第11図)を表現することを特徴 とする装置。 19.請求の範囲第12項において、前記エッジ・エンジン・オブジェクトは、複数 のエッジ・エンジンのうちの選択されたエッジ・エンジンに応答して、奇偶処理 規則を利用して(2010)、スキャン・ライン上のピクセルがエッジ内にあるか、エ ッジ外にあるか、あるいは、エッジ上にあるかを判定する手段を備えたことを特 徴とする装置。 20.請求の範囲第12項において、前記エッジ・エンジン・オブジェクトは、複数 のエッジ・エンジンのうちの選択されたエッジ・エンジンに応答して、ワインデ ィング数処理規則を利用して(1910,1920)、スキャン・ライン上のピクセルがエ ッジ内にあるか、エッジ外にあるか、あるいは、エッジ上にあるかを判定する手 段を備えたことを特徴とする装置。 21.請求の範囲第12項において、前記エッジ・オブジェクト選択手段は、複数の エッジ・エンジンのうちの選択されたエッジ・エンジンをアセンブルしてリスト にする(1830)手段を備え、前記エッジ・エンジンは前記リストに応答して、スキ ャン・ライン処理中に、任意のエッジがスキャン・ラインと交差した否かを判定 する(1880)手段を備えたことを特徴とする装置。 22.請求の範囲第12項において、前記サブクラス作成手段は、前記グラフィック ・オブジェクト内および/またはそのエッジ上に存在するスキャン・ラインの部 分を識別する複数のスキャン・ライン関数を備えたアンチエイリアシングされ たエッジ・エンジン・オブジェクトを作成する手段を備え、前記スキャン・ライ ン作成手段は、アンチエイリアシングされたスキャン・ライン・ピクセルを作成 する手段を備えたことを特徴とする装置。
───────────────────────────────────────────────────── フロントページの続き (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

Claims (1)

  1. 【特許請求の範囲】 1.メモリと、付属のディスプレイを有するコンピュータで図形オブジェクトを 処理する方法において、 (a)図形オブジェクトをメモリにロードするステップと、 (b)前記図形オブジェクトを複数のエッジ・オブジェクトに変換するステップ と、 (c)前記エッジ・オブジェクトを複数の走査線ピクセルに変換するステップと 、 (d)前記走査線ピクセルおよび前記図形オブジェクトを前記ディスプレイ上に 表示するステップと を備えたことを特徴とする図形オブジェクトを処理する方法。 2.請求の範囲第1項において、前記エッジ・オブジェクトを多形的に表すステ ップを含むことを特徴とする方法。 3.請求の範囲第2項において、前記エッジ・オブジェクトを拡張可能な方法で 表現するステップを含むことを特徴とする方法。 4.請求の範囲第1項において、前記走査線ピクセルが図形オブジェクトの内側 にあるか外側にあるかを、拡張可能な方法で判定するステップを含むことを特徴 とする方法。 5.請求の範囲第4項において、奇偶処理を利用して、前記エッジ・オブジェク トを処理するステップを含むことを特徴とする方法。 6.請求の範囲第4項において、ワインディング数処理を利用して、前記エッジ ・オブジェクトを処理するステップを含むことを特徴とする方法。 7.請求の範囲第4項において、幾何学形状のオブジェクトからエッジを処理す るステップを含むことを特徴とする方法。 8.請求の範囲第1項において、前記エッジ処理に対してオブジェクト指向の処 理を利用するステップを含むことを特徴とする方法。 9.図形オブジェクトを処理する装置において、 (a)コンピュータと、 (b)前記コンピュータに駐在するメモリと、 (c)前記コンピュータに付属するディスプレイと、 (d)図形オブジェクトを前記メモリにロードする手段と、 (e)前記図形オブジェクトを複数のエッジ・オブジェクトに変換する手段と、 (f)前記エッジ・オブジェクトを複数の走査線ピクセルに変換する手段と、 (g)前記走査線ピクセルおよび図形オブジェクトを前記ディスプレイ上に表示 する手段と を備えたことを特徴とする図形オブジェクトを処理する装置。 10.請求の範囲第9項において、前記エッジ・オブジェクトを多形的に表す手段 を含むことを特徴とする装置。 11.請求の範囲第10項において、前記エッジ・オブジェクトを拡張可能な方法で 表現する手段を含むことを特徴とする装置。 12.請求の範囲第9項において、前記走査線ピクセルが図形オブジェクトの内側 にあるか外側にあるかを拡張可能な方法で判定する手段を含むことを特徴とする 装置。 13.請求の範囲第12項において、奇偶処理を利用して、前記エッジ・オブジェク トを処理する手段を含むことを特徴とする装置。 14.請求の範囲第12項において、ワインディング数を利用して、前記エッジ・オ ブジェクトを処理する手段を含むことを特徴とする装置。 15.請求の範囲第12項において、任意の幾何学オブジェクトからエッジを処理す る手段を含むことを特徴とする装置。 16.請求の範囲第9項において、前記エッジ処理のために、オブジェクト指向の 処理を利用する手段を含むことを特徴とする装置。 17.請求の範囲第1項において、前記エッジ・オブジェクトを、拡張可能な方法 で、ピクセルに変換するステップを含むことを特徴とする方法。 18.請求の範囲第1項において、クリッピング・アルゴリズムを利用して、前記 エッジ・オブジェクトを頂部から底部に変換するステップを含むことを特徴とす る方法。 19.請求の範囲第1項において、前記エッジ・オブジェクトを拡張可能な方法で ピクセルに変換する手段を含むことを特徴とする装置。 20.請求の範囲第1項において、クリッピング・アルゴリズムを利用して、前記 エッジ・オブジェクトを頂部から底部に変換する手段を含むことを特徴とする装 置。 21.メモリと、付属のディスプレイを有するコンピュータ上で図形オブジェクト を処理する方法において、 (a)図形オブジェクトをメモリにロードするステップと、 (b)前記図形オブジェクトを複数のエッジ・オブジェクトに変換するステップ と、 (c)前記エッジ・オブジェクトを複数の走査線ピクセルに変換するステップと 、 (d)前記走査線ピクセルをアンチ・エイリアシングするステップと、 (e)前記走査線ピクセルおよび前記図形オブジェクトを前記ディスプレイ上に 表示するステップと 備えたことを特徴とする図形オブジェクトを処理する方法。
JP50345695A 1993-06-30 1994-01-03 図形エッジ・システム Expired - Lifetime JP3392870B2 (ja)

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 true JPH08512156A (ja) 1996-12-17
JP3392870B2 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)

* Cited by examiner, † Cited by third party
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
EP0713594B1 (en) * 1993-07-27 1997-10-15 Taligent, Inc. Object-oriented rendering system
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 ソニー株式会社 近似化方法および装置
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
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
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
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
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
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
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6407736B1 (en) 1999-06-18 2002-06-18 Interval Research Corporation Deferred scanline conversion architecture
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
US7028267B1 (en) 1999-12-07 2006-04-11 Microsoft Corporation Method and apparatus for capturing and rendering text annotations for non-modifiable electronic content
US6957233B1 (en) 1999-12-07 2005-10-18 Microsoft Corporation Method and apparatus for capturing and rendering annotations for non-modifiable electronic content
US6992687B1 (en) 1999-12-07 2006-01-31 Microsoft Corporation Bookmarking and placemarking a displayed document in a computer system
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
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
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
US6714214B1 (en) * 1999-12-07 2004-03-30 Microsoft Corporation System method and user interface for active reading of 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
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
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
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
EP0691012A1 (en) 1996-01-10
CA2144870A1 (en) 1995-01-12
EP0691012B1 (en) 1998-05-20
JP3392870B2 (ja) 2003-03-31
CN1113666A (zh) 1995-12-20
US5471568A (en) 1995-11-28
WO1995001615A1 (en) 1995-01-12
AU6081794A (en) 1995-01-24
DE69410458D1 (de) 1998-06-25

Similar Documents

Publication Publication Date Title
JPH08512156A (ja) 図形エッジ・システム
EP1462998B1 (en) Markup language and object model for vector graphics
US5428744A (en) Object-oriented system for building a graphic image on a display
US7126606B2 (en) Visual and scene graph interfaces
JP4101275B2 (ja) 走査線ベースのラスタ画像プロセッサにおける奥行き追跡の方法
JP4796500B2 (ja) ベクトルグラフィックスのためのマークアップ言語およびオブジェクトモデル
US7466315B2 (en) Visual and scene graph interfaces
EP0727076B1 (en) Object-oriented graphic system and method
JPH09500994A (ja) オブジェクト指向レンダリング・システム
JP2957511B2 (ja) グラフィック処理装置
AU2004279179B2 (en) Visual and scene graph interfaces
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