JPH08115413A - グラフィカルプログラミング言語の解釈方法 - Google Patents

グラフィカルプログラミング言語の解釈方法

Info

Publication number
JPH08115413A
JPH08115413A JP7189198A JP18919895A JPH08115413A JP H08115413 A JPH08115413 A JP H08115413A JP 7189198 A JP7189198 A JP 7189198A JP 18919895 A JP18919895 A JP 18919895A JP H08115413 A JPH08115413 A JP H08115413A
Authority
JP
Japan
Prior art keywords
node
expression tree
operand
instruction
programming language
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
JP7189198A
Other languages
English (en)
Other versions
JP3618838B2 (ja
Inventor
Politis George
ポリティス ジョージ
Timothy Robert Newman Andrew
ティモシー ロバート ニューマン アンドリュー
Timothy Merrick Long
マーリック ロング ティモシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Information Systems Research Australia Pty Ltd
Canon Inc
Original Assignee
Canon Information Systems Research Australia Pty Ltd
Canon Inc
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 Canon Information Systems Research Australia Pty Ltd, Canon Inc filed Critical Canon Information Systems Research Australia Pty Ltd
Publication of JPH08115413A publication Critical patent/JPH08115413A/ja
Application granted granted Critical
Publication of JP3618838B2 publication Critical patent/JP3618838B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)

Abstract

(57)【要約】 【課題】グラフィカルプログラミング言語で定義された
プログラムの解釈を通して、画像生成のより進歩した形
態を提供する。 【解決手段】グラフィカルプログラミング言語で定義さ
れるプログラムは以下のようにして解釈される。即ち、
グラフィック要素の組合わせ又は描画を含む記述列が分
析され、実行される。ここで、該組合わせ又は描画の効
果は遅延される。そして、グラフィック要素の組合わせ
又は表現は、エクスプレッションツリー67のノードへ
変換される。ここで、各ノードの子孫は遅延されたグラ
フィック要素の組合わせ又は描画のオペランドであり、
ノード69はクリッピングリスト70に格納された境界
でクリップされるようにマークされる。このようなクリ
ップリスト70の利用により、72に示すようなコンパ
イル結果が得られ、通常のOUT,IN命令を用いた場合に比
べて実行時間を短縮できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、静止画像とビデオ
画像の両方の形態をしたコンピュータ生成画像の作成に
関し、更に詳しくは、多数のサブコンポーネントから作
られた画像の作成における合成方法に関する。
【0002】
【従来の技術】コンピュータ生成画像は、典型的には多
数の異なる構成要素、つまり、「合成」、即ち最終画像
を作成するために寄せ集めて描画されたグラフィック要
素により構成されている。画像は、構成要素が独立して
描画されるように、構成要素に分けられているため、小
さい画像部分を使用することによって潜在的にかなりの
時間が節約されている。それぞれの成分やオブジェクト
は、特有のマット(matte)情報、つまり、一般的には
成分の形状や透明性を示すカバレージ情報を含む「アル
ファチャンネル」情報に関係してきた。マット情報、つ
まりアルファチャンネル情報は、通常、それぞれの画素
について別々に記憶されている。更に、それぞれの画素
は、それぞれの画素の色成分(たとえば、赤、緑、青
(RGB))を記憶する。従って、成分のそれぞれの画素
は(R, G, B, α)の4成分によって表すことができ
る。ここで、αは成分の透明度を表しており、一般に
「アルファ」、つまり不透明チャンネルとして知られて
いる。例えば、黒が、RGB色成分(0,0,0)により
表現されるとすると、黒色は(0,0,0,1)の4成
分によって表現することができ、また、透明、つまり完
全に透けてみえる色は(0,0,0,0)の4成分で表
現することができる。
【0003】また、色成分をその不透明度で「前もって
掛けておく」ことも、場合によっては効果がある。この
場合、色(R,G,B)は(R,G,B)によって表現される。
【0004】図1から図3に画像合成の簡単な例を示
す。図1は、円の端として定義される輪郭を持つ円形の
グラフィック要素1の例を示す。円の内側は特定の色又
はバリエーションで定義される。円の境界線の外側部分
3は無限に続いているものとし、0アルファ値を取る
(つまり、見えない)ものと定義する。図2は、図1の
円1の色と異なる色5をした第2の円4を示す。図3
は、図1及び図2の円1及び円4をそれぞれ1ページ上
にコピーして合成して作られた、より複雑な画像6の例
を示す。円が重なる部分7は、2つの円1と円4が組合
わさった部分と定義し、より複雑な画像6を作成するた
めに2つの円を組合わせる合成演算子によって決まる色
値を取る。
【0005】トーマス・ポーターとトム・ダフは、19
84年7月刊行のComputer graphicsのVol.18、 No.
3の253〜259ページに掲載された「デジタル画像
の合成(Compositing Digital Images)」と題する記事
において、「超要素(super-elements)」を形成するた
めの要素を取りまとめて合成する方法を発表している。
ポーターとダフは、「α」チャンネルを持つ2つの画像
を合成する方法についての検討もしている。単一画像の
2つの部分を組合わせるには、主に13の合成演算があ
る。これらの合成演算は下記の表1に示されている。こ
の表において、Dcは予め掛けられた目的色、つまり結果
として生じる色であり、Doは目的値、つまり結果として
生じるαチャンネル値であり、Acは第1のソースAの第
1部分の予め掛けられた画素色であり、Aoは色がAcであ
る画素に対応するα値であり、Bcは第2のソースBの部
分画像の予め掛けられた画素色値であり、そして、Boは
ソースBの、Bcに対応する画素のαチャンネル値であ
る。
【0006】
【表1】
【0007】異なる演算子を利用して2つの異なる画像
を組合わせる多種類の方法が表1に示されている。上記
以外の演算子を利用することも可能である。上記以外の
演算子は主に特殊効果を実行するために使用することも
できる。
【0008】「pulsW」演算子の「包み込む」性質と
は、例えばAc + Bcの和が色成分の最大値より大きい場
合に、その色空間で最小値を参照しながら始めからやり
直すように値が「包み込まれる」ものである。また、
「plusC」演算子に使用される「クランピング」処理
は、例えばAc + Bcの和が色成分最大値より大きい場合
に、その和を色成分最大値にクランプする動作を含む。
【0009】図4は、2つの完全に不透明な円Aと円Bを
表1に示す様々な演算子を用いて合成して得られた、様
々な最終画像の例を示している。なお、演算子「rove
r」と、「rin」と、「rout」と、「ratop」とはオペラ
ンドを交換して「r」(逆(reverse))演算子にしたも
ので、それぞれ対応する「over」と、「in」と、「ou
t」と、「atop」演算子に対して行われたものである。
【0010】近年、POSTSCRIPT(商標)等のページ記述
言語の形式によるグラフィックス言語が開発されてい
る。これらの言語は比較的複雑なプログラミング言語に
完全な機能性を提供するものであるため、反復概念や、
制御の流れや、画像成分の一連の処理の定義を用いるこ
とによって、複雑な画像をコンパクトに表現することを
可能にした。これらのページ記述言語は、アプリケーシ
ョンの作者がプリンターの機種に付随するどのような詳
細な制約にも束縛されないようにするために開発された
もので、プログラムの移植性向上に役立っている。ま
た、これらの言語により、テキストや、スプラインを基
本としたグラフィカルオブジェクトや、サンプルされた
画像の拡張補助を行なうことができる。従って、この言
語のインタープリタを製造し、例えば印刷機器に備える
こともでき、そうすることによって簡潔に複雑な画像を
表示することができる。言語の解釈は機器に従属するた
めに、このようにページ記述言語は1つの出力機器から
他の出力機器への移植性を助長する。POSTSCRIPTなどの
言語は元来、ビットマップページまたはスクリーンの見
え方を表し、ビットマップ画像上に不透明な画材で作画
する概念に基づくグラフィックの原点を利用するために
創られたものであった。
【0011】ほとんどのプログラミング言語に見られる
ように、ページ記述言語はしばしばオペランドと、新し
い結果や効果を産み出すためにオペランドに作用する演
算子とによって構成されている。オペランドは、線や、
弧や、曲線や、線やスプラインの集合や、テキスト列
や、サンプルされた画像などの基本的でグラフィカルな
ものを含むこともあり、演算子によって操作されるよう
に設計されている。演算子は下記を含む数多くの異なる
カテゴリーに分類されている。
【0012】1. 多種のオペランドやグローバルステ
ータス(gloval status)の変数の現在の属性を決定す
る演算子、 2. 基本的存在物が定義される様々な座標系を変更す
る演算子、 3. 多種の経路を定義するためにある基本的存在物を
更新することによって、複雑なオブジェクトの構成を可
能にする経路演算子、 4. 出力されたページに現れる個々のドットの色を最
終的に決定する画像データを生成する、多種の「描画」
演算子、 5. 特殊クラスの演算子は、通常、テキストやフォン
トを特定したり、更新したり、選択したりするために使
用される。これは、準備されて定常的に使用される文字
フォントの特殊な性質によるものである、 6. プリンタやスクリーンなどの表示装置への画像の
出力を制御する為に使用される、様々な機器セットアッ
プ及び出力演算子。
【0013】
【発明が解決しようとする課題】残念ながら、POSTSCRI
PT等の言語は、フレームバッファ等の上に不透明な画材
で描画を行う「機器のモデル」に左右される。フレーム
バッファの利用は膨大な記憶量を必要とし、また、現代
における画像技術は高画質の出力を要求するため、画像
を作成するためには膨大な記憶量と計算量とを必要とす
ることになる。更に、作画技術を利用するに当たっての
不効率性は、出力解像度の向上に伴い一層悪化してい
る。
【0014】本発明は上記従来例に鑑みてなされたもの
で、グラフィカルプログラミング言語で定義されたプロ
グラムの解釈を通して、画像生成のより進歩した形態を
提供することを目的とする。
【0015】
【課題を解決するための手段】上記目的を達成するため
に本発明のグラフィカルプログラミング言語で定義され
たプログラムの解釈方法は、以下の様な構成からなる。
即ち、グラフィカルプログラミング言語で定義されるプ
ログラムを解釈する方法であって、グラフィック要素の
組合わせ又は描画を含む記述列を分析し、実行する工程
と、該組合わせ又は描画の効果は遅延され、前記グラフ
ィック要素の組合わせ又は表現をエクスプレッションツ
リーのノードへ変換する工程とを備え、該ノードの子孫
は遅延されたグラフィック要素の組合わせ又は描画のオ
ペランドであり、また、ノードは遅延された演算を持つ
ものとしてマークされることを特徴とする。
【0016】
【発明の実施の形態】以下添付図面を参照して本発明の
実施の形態を詳細に説明する。
【0017】発明の実施の形態において、基本となるグ
ラフィック要素は下記の「基本的なタイプ」から構成さ
れる。即ち、 1. 様々なサイズで詳細に記された、様々なフォント
を含むテキスト、 2. 経路としても知られるスプラインデータにより定
義される輪郭を持つオブジェクト、 3. 走査された画像、またはグラフィック要素を形成
する過去に作られた画像などの画素データ、 4. ページの背景として使用され、少なくとも生成さ
れる画像と同じ大きさである「オール(all)」として
知られるグラフィック要素、である。
【0018】また、色及びテキストグラフィック要素は
下記項目を含む属性を持つ。即ち、(a) 色、濃淡の
ない色であるか、2色の混合色であるか、または画素単
位を繰り返したタイルであるか、(b) 色データと同
じくバリエーションの選択が可能である透明度、つま
り、αチャンネルデータ、(c) 経路又はテキストグ
ラフィック要素の描画を制御する塗りつぶし及び/又は
ストロークデータ。「グラフィカルコンテキスト」はそ
れぞれのグラフィック要素に関係する属性値を与える。
新しい要素が作成されたとき、作成時のグラフィカルコ
ンテキストにおける属性値は、新しいグラフィック要素
に適用される。
【0019】従って、プログラミング言語自身は、下記
のデータ形式を含む。即ち、 1. フォントと、大きさと、位置と、他の望ましい特
徴を定義するテキストオブジェクトで、テキストの色
や、透明度や、塗りつぶし又はストロークパラメーター
は定義しない、 2. 特定のオブジェクト形状の輪郭を定義する経路オ
ブジェクトであって、その色や、透明度や、塗りつぶし
又はストロークパラメーターは定義しない、 3. 画素データや、「オール」グラフィック要素や、
グラフィック要素や、グラフィック要素を生産する為に
いくつかの合成演算子による多数の他のグラフィック要
素を集めた合成処理を表現するグラフィック要素、又は
テキストオブジェクト、又は対応する画素形式で描画さ
れる経路オブジェクト。
【0020】画像合成は、画像をオペランドとして取
り、画像を結果として生成する二項演算子1組を提供す
る。グラフィック要素の色情報は時折使用されない場合
もあるが、画像は、それぞれすべての画素毎に色及び
α、つまり透明度チャンネル情報を持つように定義され
る。全てのタイプのグラフィック要素を組合わせ又は合
成できるようにするために、テキストと、経路と、「オ
ール」のグラフィック要素とを含む全てのグラフィック
要素が、それらが合成される前に画素画像へと走査変換
されたように扱われる。加えて、グラフィック要素は、
オペランドを形成するときに通常概念的に無限に広がる
ものとして取り扱われる。グラフィック要素の境界の外
側の画素は完全に透明であるものとして扱われる。それ
ぞれのグラフィック要素の拡張は、一画素が一オペラン
ドの通常の拡張範囲内にあって、他のオペランドの範囲
にない場合に、結果を定義することができるように実行
される。更に、いくつかの特殊な演算子は色がいつも定
義されていることを要件とするため、完全に透明な画素
は描画色空間において0成分として表現される色を取
る。
【0021】発明の実施の形態における描画言語は、通
常のコンピューター言語と同様に多数の異なる方法で
「実行」される。コンピュータ言語は通常、対応するコ
ンピュータによって「解釈」又は「コンパイル」手段を
介して「実行」され、これらの手段はコンピュータ言語
コンパイラライティングの技術の当業者にとって公知で
ある。
【0022】インタープリタ及びコンパイラは通常言語
を定義し、コンテクストの無い、文法から構成されてい
る言語記述の為の分析木、つまりエクスプレッションツ
リーを構成する。インタープリタ及びコンパイラの更な
る説明については、標準的テキストである1986年に
Addison-Wesley Publishing Company, Reading, massac
husettsから出版されているアホ、セシ、及びウルマン
の共著の「Compilers Principles, Techniques, and To
ols」を参照するとよい。
【0023】本実施の形態においては、プログラミング
言語で書かれたプログラムの実行は、実行速度、大き
さ、実行し易さのためにインタープリタにより行われ
る。
【0024】プログラミング言語のそれぞれの文につい
ては、インタープリタは文を分析し、実行可能な形式の
文に変換する。そして、この実行可能な形式のものが実
行される。この実行可能な形式の文が実行されている間
に、グラフィック要素に対して演算が実行される。これ
らを行うために、即時実行や遅延実行等を含む多数の異
なる技術を利用することが可能である。
【0025】[即時実行]グラフィック要素に応用され
るそれぞれの演算については、結果として得られる画素
画像を保存するのに充分なラスター記憶が作られ、その
演算は、オペランドを合成して出力ラスター画像領域の
画素データを生成するために使用される。このラスター
画像領域は演算の結果であるグラフィック要素となる。
描画演算が実行されると、望ましいグラフィック要素の
ラスター画素が出力装置に送信される。
【0026】この技術は、多くの中間グラフィック要素
がプログラムの実行中に使用された場合に、大容量の記
憶装置を必要とするという欠点がある。また、グラフィ
ック要素の次の使用に関する情報がその計算時又は生成
時に提供されないため、以降の最適化が殆どできないと
いう欠点がある。
【0027】図4から図6を参照しながら、即時実行モ
デルに関わるインタープリタの演算例を示す。下記の様
な命令列の例を仮定する。即ち、
【0028】
【表2】
【0029】発明の実施の形態にかかるプログラミング
言語において、上記の「A = B」の表現はAの値にBの値
を割り当てることを示す。また、「A: = B」の表現は
「A =A rover B」の表現を短縮したもので、「A rover
B」は「B over A」と同じ結果を導く。
【0030】「text」関数は、発明の実施の形態におい
て上記に示すように、色情報や透明度情報を持たず、文
字情報と、フォント情報と、サイズ情報と、位置情報の
みを持つテキストオブジェクトを生成する。しかし、A:
= text ("a") の文は「A =A rover text ("a")」と同
じである。演算子「rover」をテキストオペランドに対
して実施するときは、テキストオペランドは先ずグラフ
ィック要素に変換される。この変換は、属性を決定する
ようにテキストを観念的に描画することによって行われ
る。「text」を呼び出す関数を実行するに当たり、現在
点は、描画されたグラフィック要素のテキスト列の結果
として得られる幅だけ動かされる。図5は第1命令完了
後の対応するエクスプレッションツリーである。
【0031】表2の第1命令(1)は、文字「a」に対
応するグラフィック要素をAの値として割り当てること
である。この割り当て結果は図10に示されている。
【0032】インタープリタによって実行される第2命
令は文字「a」の隣の文字「b」に対応するグラフィック
要素の描画を意味する。この命令の実行後の結果のエク
スプレッションツリーは図6に示すとおりであり、Aの
値の状態は図11に示すとおりである。
【0033】命令3は既に描画された文字のとなりの文
字「c」に対応するグラフィック要素の描画を意味す
る。一連の命令(1)から(3)に対応するエクスプレ
ッションツリーを図7に示し、Aの値の状態は図12に
示す。
【0034】命令4は円を含むグラフィック要素を作成
し、値Bによって定義されるグラフィック要素に生成し
たグラフィック要素を割り当てる。この命令に対応する
エクスプレッションツリーを図8に示し、値Bの状態を
図13に示す。
【0035】命令5はグラフィック要素Bをグラフィッ
ク要素Aで定義されるグラフィック要素の上に合成する
動作を含む。図9は、命令5を実行した後のグラフィッ
ク要素Aの結果として得られるエクスプレッションツリ
ーを表している。部分10はAの過去のエクスプレッシ
ョンツリーである図7のエクスプレッションツリーを表
し、命令5の右辺に現われている。図14は、即時実行
方法が使用されたときの値Aに対応する状態を示す図で
ある。
【0036】[遅延実行]コンパイラの実行に対する第
2のアプローチは、遅延実行モデルである。このモデル
において、プログラム文形態であるグラフィック要素に
対して行うそれぞれの演算について、その演算を表すエ
クスプレッションツリーのノードが作成される。作成さ
れたエクスプレッションツリーのノードは演算、または
演算子を記録し、そのエクスプレッションツリーのノー
ドの子は演算のオペランドである。そして、エクスプレ
ッションツリーのノードは演算の結果であるグラフィッ
ク要素となる。1つ以上の命令が実行されると、前の演
算によって作られたエクスプレッションツリーは、時
折、図5から図9に示されるような方法で更に複雑なエ
クスプレッションツリーを創る演算と更に組み合わされ
る。
【0037】続いて描画演算が実行されると、希望する
エクスプレッションツリーは、繰返して横断(travers
e)され、希望する画像を作るために希望する演算が実
行され、得られた画像は出力機器に送られる。
【0038】この技術は、グラフィック要素の後の使用
についての情報が分かるまで、描画演算が延期され、生
成されるという点において有効である。従って、プログ
ラムの実行が終了するまでグラフィック要素のラスタ画
素を記憶するメモリを割り当てる必要がなく、グラフィ
ック要素の後の使用を考慮した最適化を行なうことがで
きる。
【0039】次の2つのアプローチが、インタープリタ
の実施で使用することができる。
【0040】1.「ポストフィックス(postfix)」、
つまり「スタックベース」のアプローチであって、グラ
フィック要素はスタック上の成分に対して実行されるオ
ペランド及び演算子として、合成スタック上にプッシュ
される。従って、二項演算子は先頭から2つのスタック
登録項目を合成して、得られた結果を元のスタックへ戻
すことによって、それらを削除することができる。入力
されたページ記述の全ての命令が終了すると、スタック
の先頭が出力機器で描画される。
【0041】2.「挿入辞(infix)」、つまり「表現
ベース」のアプローチであって、元来のグラフィック要
素は直接演算されるか、変数中に記憶される。演算子は
この元来のグラフィック要素、既に変数中に記憶されて
いるグラフィック要素、あるいは準表現(subexpressio
ns)を組合わせることによって、変数中に記憶される
か、更に他の演算子によって組合わせることのできる新
しいグラフィック要素が作成される。「ページ」等のあ
らかじめ決められた変数を割り当てられたグラフィック
要素は、出力機器にて描画され得る。
【0042】上記2つのアプローチの違いはプッシュダ
ウンオートマトンとチューリングマシンのそれぞれのパ
ワーの違いに類似している。
【0043】インタープリタの好適な実行として、第2
の遅延実行モデルが利用される。そして、 1. グラフィカル演算が延期されて、エクスプレッシ
ョンツリーが作られる、 2. 「挿入辞」アプローチがエクスプレッションツリ
ーの実行のために使用される、 3. 経路輪郭をもつ全てのオブジェクトと、文字と、
画像とが、無限に続く画素画像によって構成される基礎
グラフィック要素へと先ず概念的に変換される。 そして、二項及び単項演算子の両方を含む表1で定義さ
れる演算子を利用して、合成が行われる。
【0044】一旦画像のためのエクスプレッションツリ
ーが生成されると、画像は適切な出力機器で「描画」さ
れる準備が整う。出力機器のグラフィック要素を表す
「ページ」などの予め定められた変数を利用し、この変
数に対応するエクスプレッションツリーを描画すること
によって、出力画像が描画される。出力機器が1走査線
毎に出力画像を受け付けるとすると、以下のような多数
の異なる描画技術が可能である。
【0045】1. それぞれの走査線毎に、出力された
変数の為のエクスプレッションツリーは横断され、それ
ぞれのグラフィック要素の描画と演算子の合成はその走
査線について適切であるように行われる。
【0046】2. 走査線毎の二分木横断はコンピュー
タ時間の観点からすると時間のかかる工程であることを
認知することによって、線形描画リストがエクスプレッ
ションツリーから先ず生成される。続いて、それぞれの
走査線について、それぞれのグラフィック要素は要求通
りに描画され、それぞれの合成演算子はその走査線につ
いて適切であるように実行される。この実行形態は、エ
クスプレッションツリーの評価された準部分に相当する
中間結果をスタックが保持することを必要とする。
【0047】3. 走査線毎の線形描画リストを全て走
査することは非効率であることを認知することで、ある
特定のグラフィック要素の走査線から線形描画リストの
ソートが始められる。それぞれの走査線を描画する時
に、現在描画されるべき走査線に影響を与える線形描画
リストのグラフィック要素全てを含むように、アクティ
ブリストがメインテナンスされる。それぞれの走査線の
始めでは、その走査線を開始する命令はアクティブリス
ト中に併合され、既に適切でない命令はアクティブリス
トから除かれる。これは当業者にとって公知の表示リス
ト命令のアクティブリストのメインテナンス技術と類似
している。
【0048】上記第3のアプローチの概念が一度理解さ
れると、この概念の解釈を助けるために、ページ記述プ
ログラミング言語文の解釈はコンパイラによって行われ
る演算に擬せられる。元々のエクスプレッションツリー
はコンパイラの分類木に擬することができ、描画リスト
の生成はコンパイラのコード生成フェーズに擬すること
ができ、分類木から作成される線形描画リストは組立命
令又はいくつかのコンパイラで利用される中間コードに
擬することができ、そして線形描画リスト描画はコンピ
ュータによる組立言語命令の実行に擬することができ
る。
【0049】ページ記述言語命令のある特定の集合に対
するエクスプレッションツリーは、ページ記述中に含ま
れる文を実行することによりインタープリタによって構
築される。このページ記述中に含まれる文は、C、Pasc
al、Algol等の現代のプログラミング言語に於て提供さ
れる、「while」ループや、条件文や、他の通常の構造
を含み、これらはプログラミング言語の一部を形成する
と見做される。ある特定の変数に記憶されたどのエクス
プレッションツリーも、ページ記述内又はページ記述言
語プログラム中の後続のページのページ記述内で再利用
することができ、どのエクスプレッションツリーも外部
又はユーザーの視点から更新されていない状態で残して
おくのが非常に望ましい。しかし、一度インタープリタ
がエクスプレッションツリーの構成を終了すると、エク
スプレッションツリーの構成を並べ変える可能性のある
コンパイラ形態の最適化が可能である。従って、表現処
理の一端としてこれらの最適化を可能にするためにツリ
ー中で2組のポインタが使用される。これらのポインタ
は、ユーザーポインタと、ワーキングポインタと呼ばれ
る。インタープリタが初めにページレイアウトプログラ
ム記述からエクスプレッションツリーを構成するとき、
ユーザーポインタが利用される。ページレイアウトを表
現するエクスプレッションツリーが描画の為に後で処理
されるとき、ワーキングポインタが使用され、ユーザー
セットポインタはそのまま残される。
【0050】エクスプレッションツリーの構成が完成す
ると、描画リスト生成処理が開始される。この描画処理
は、エクスプレッションツリーに対して多数の最適化工
程を実施することによって開始される。これらの工程
は、描画リスト生成処理を説明した後に説明する。
【0051】描画リスト生成処理は、通常のコンパイラ
によって実行される組立コード又は中間コード生成に類
似している。描画リストの項目は、グラフィック要素を
合成する命令や、又はその他の行動を実行させる命令と
考えることができる。
【0052】描画リスト生成へのアプローチは2通りあ
る。1つはハードウエア補助の描画装置に、より適する
ものであり、他方は「ソフトウエアのみ」による実施に
適している。これらのアプローチは共に、将来実施する
合成のために最新の合成演算結果を保存するための描画
スタックを使用しなければならない。このソフトウエア
指向のアプローチは、グラフィック要素をスタックへプ
ッシュする命令か、またはスタック上のオペランドに対
して演算を行う命令のどちらかに従って、描画スタック
を用いるとうまく作動する。ハードウエア補助のアプロ
ーチは「アキュムレータ」の利用を前提とする。命令
は、アキュムレータへグラフィック要素をロードする
か、またはグラフィック要素を合成し、アキュムレータ
の内容を描画スタックへプッシュするか、スタックから
ポップした成分をアキュムレータへ合成する。
【0053】勿論、もし指示された非周期的なグラフが
許可されるとすると、描画スタック自身では不十分であ
り、共通の準表現を記憶するために一時記憶空間を追加
することが必要となる。
【0054】ハードウエア補助の「アキュムレータ」ア
プローチについては、「命令集合」が表3に示すとおり
に実施される。
【0055】
【表3】
【0056】表3において、「acc」はアキュムレータ
(accumulator)を指し、「M」は希望する色変換関数を
指す。
【0057】変数Aはあらかじめ定義されたどのグラフ
ィック要素または、スタックの先頭にあるグラフィック
要素をポップさせるオペランド「pop」でもよく、それ
を命令のオペランドとして使用してもよい。
【0058】上記全ての命令は、バウンディングボック
スを与えられ、その内部で演算が行われる。
【0059】ハードウエアのために設計された累算ベー
スのアプローチとソフトウエアのために設計されたスタ
ックベースのアプローチの対応は、下記のとおりであ
る。 1. 「clear」及び「load」命令は、「clear」命令が
最適化されたとき以外は、片方が他方の後に実施され
る。それらは不透明度0の領域に囲まれたスタック上に
オペランドをプッシュすることに対応する。従って、
「clear」命令は続けてロードするものがないときはそ
れだけを送る。 2. 「push」命令は飛ばしてもよい。 3. 「over」命令などの命令に対して行われるオペラ
ンド「pop」は、スタックの先頭から2つの成分を合成
し、結果の合成成分をスタックに残すことを意味する。 4. グラフィック要素であるオペランド「A」は、グ
ラフィック要素Aをスタックへプッシュし、スタックの
先頭から2つの成分を合成し、結果の合成成分をスタッ
クの先頭に残すことを意味する。
【0060】エクスプレッションシンタックスツリーが
描画リストへ変換されるとき、エクスプレッションシン
タックスツリーを介していくつかのパス(passes)が作
られる。これらのパスは以下の仕事を行う。 1. 描画ハードウエア(又はソフトウエア)によって
補佐されない基本事項を表現に拡張する。 2. 単項最適化を行う。 3. エクスプレッションツリーのリーフノードと内部
ノードのバウンディングボックスを決定する。 4. バウンディングボックスの最小化を行う。 5. クリッピング経路を検出し、クリップノードにラ
ベルをつける。 6. 最適化を行う。 7. エクスプレッションツリーを対応する描画命令集
合リストへ変換する。 8. ソートされた表現命令リストを作成する。
【0061】上記のパスは分割された見出し毎に、詳し
く説明される。
【0062】<1.描画ハードウエア(又はソフトウエ
ア)によって補佐されない基本事項の拡張>多種類の基
本関数はハードウエア又はソフトウエアの実行によって
補佐されないことが多い。一例として、2つの独立画素
列が1つのオペランドを形成するために組合わせられな
ければいけない、というようなことがある。例えば、も
し色及び不透明さが共に画像の一部を形成し、しかしな
がらそれらが2つの異なる変数からきている場合、ハー
ドウエアは色を表す1つの画素列を、不透明さを表す第
2の画素列として同時に組合わせることができないこと
もある。こういう場合、この状況を表現する基本事項
は、 「色=A、不透明さ=B」 である。
【0063】この基本事項は、この時点で、 「(色=A、不透明さ=完全に不透明)in(色=0、不
透明さ=B)」 によって置き換えらることができる。
【0064】<7.エクスプレッションツリーの、対応
する描画命令集合リストへの変換>エクスプレッション
ツリーを、対応する描画リスト(パート7)へ変換する
処理は、下記の疑似コードによって記述することができ
る。即ち、 do_node(n) if n is a leaf then produce instruction "load n.operand" else if n is a unary operator then begin do_node(n.operand) produce instruction "cmap n.map" end else begin do_node(n.right) if n.left is a leaf then produce instruction "n.operation n.left.operand" else begin produce instrction "push n.left.bounding-box" produce instruction "clear n.left.bounding-box" do_node(n.left) produce instruction "reverse(n.operation)pop" end end となる。
【0065】上記の翻訳処理において、 関数「reverse
(n.operation)pop」はパラメータ「n.operation」の逆
の演算を作る。例えば、「rover」は「over」の代わり
に創られ、「over」は「rover」の代わりに作られる。
更に正式には、演算子「op」が与えられているとする
と、「revop」で定義される逆の演算子はA op B = B re
vop Aのような演算子である。
【0066】上記の翻訳処理はルートノードを飛ばし
て、命令「clear root.bounding-box」を先ず発行する
動作へと移ることによって開始され、そして、ルートノ
ードを主題とするdo_node(root)を呼び出す動作を行
う。
【0067】更なる最適化の実行として、クリップされ
る形状の「クリッピングスタック」を利用することもで
きる。描画スタック上の中間結果ではないグラフィック
要素の組合わせ動作は、クリッピングスタックの全ての
クリッピング形状の共通部分にクリップされる。これは
描画演算の効率を向上させる。従って、例えば「loadn.
operand」 又は「n.operation n.left-operand」等のグ
ラフィック要素にかかる命令が生成されたときはいつで
も、オペランドがクリップされるべき状態に対応する状
態にクリッピングスタックを置く必要のある「push cli
p」又は「popclip」命令によって行うのがよい。
【0068】<3&4.バウンディングボックスの決定
と、バウンディングボックスの最小化>上記に於ては、
それぞれのグラフィック要素が観念的に無限に広がるも
のと仮定した。明らかに、2つの無限のグラフィック要
素を合成するためには、無限の時間でないとしても、膨
大な時間がかかる。バウンディングボックスを使用する
技術は、それぞれの合成処理の対象となる画素数を大幅
に減らす為に利用される。バウンディングボックス最小
化処理は、最終画像を作るために必要なそれぞれのグラ
フィック要素の最小領域部分を探すために設計されたも
のである。バウンディングボックス最小化は、合成する
画素数を更に最小化するために、エクスプレッションシ
ンタックスツリーのそれぞれの内部ノードの最小領域を
探す役割をも果たす。更に、バウンディングボックス最
小化は、最終画像に対して寄与しないエクスプレッショ
ンシンタックスツリーのリーフ、または、全ての部分木
を検知する。エクスプレッションツリーによって表現さ
れる、完全にクリップアウトされたピクチャー表現成分
を削除する処理は、「カリング(culling)」と呼ばれ
る。バウンディングボックス最小化処理の結果は、それ
ぞれのノードに、そのノードに対応する画像を作成して
いるときに作画者が必ず塗潰さなければならないバウン
ディングボックスを与える為のものである。反対に、バ
ウンディングボックスは描画スタックへ記憶したり読み
出したりできる唯一の領域であるため、作画者は画像を
作成しているときに、決してバウンディングボックスの
外側を塗ってはならない。
【0069】つぎに、図15から図18を参照にして、
ボックス最小化処理の簡単な例を説明する。図15は、
例えば下記の文から形成される画像を示す図である。
【0070】
【表4】
【0071】この文の集合のエクスプレッションツリー
を図16に示す。
【0072】バウンディングボックス最小化は、2つの
パス上で行われる。第1のパスはエクスプレッションツ
リーの深さ優先ポスト順横断である。この第1のパスに
おいて、それぞれのノードの「自然な」バウンディング
ボックスが決定される。リーフでは、これがグラフィッ
ク要素のバウンディングボックスとなる。内部ノードで
は、左右の部分木のバウンディングボックスは現ノード
の合成演算に対応する方法で組合わせられる。この組合
わせを表5に示す。
【0073】
【表5】
【0074】つぎに図17を参照にして、上記の文と図
16のエクスプレッションツリーに関連させながらこの
処理の例を示す。上記の文で描画される画像の第1の部
分は文字T20に対応するグラフィック要素である。こ
の描画はページ21で起こり、あらかじめ定義された空
間、つまりページ21に置かれる走査変換された部分T
の唯一の部分である「バウンディングボックス」22の
内部でしか起こらない。つぎの文(7)は、現在のペー
ジ画像を文字E24に対応するグラフィック要素と組合
わせる。この場合も、この文字はあらかじめ決められた
バウンディングボックス25を持つ。この2つの文字E
とTはover演算子26を使用して組合わせられる。従っ
て、over演算子26のノードと共に記憶されるバウンデ
ィングボックス27は、2つのバウンディングボックス
22と25の組合わせである。バウンディングボックス
最小化ルーチンが深度優先ポスト順のエクスプレッショ
ンツリー横断をするので、与えられたノードの子孫ノー
ドは、現在のノードがビジットされるまえにビジットさ
れ、全てのリーフノードを先にビジットする。それぞれ
のリーフノード28から32にとって、描画されるべき
グラフィック要素のバウンディングボックスは図示のと
おりに、先ず計算される。リーフノードのバウンディン
グボックスの計算に続いて、内部ノードのバウンディン
グボックスが計算される。
【0075】内部ノード26のバウンディングボックス
27を計算した後、バウンディングボックス27と28
がover演算子を再度用いて組合わせられて34となる。
同様に、バウンディングボックス35は、バウンディン
グボックス29と34をover演算子37を用いて組合わ
せて作られたものである。
【0076】図4に示されるように、2つのグラフィカ
ルオブジェクトAとBがover演算子を用いて組合わせられ
た場合、結果として得られる画像はAがBの上位にあるA
とBの組合わせである。従って、バウンディングボック
スはAとBの組合わせ領域上にまで広がることが要求され
る。「in」演算子を用いたAとBの組合わせは、画像のA
とBがオーバーラップする部分に対してのみ定義され
る。よって、その組み合わせ領域のバウンディングボッ
クスは、AとBの2つのバウンディングボックスの共通部
分である。
【0077】ノード39で2つのバウンディングボック
ス30と35はin演算子を用いて組合わせられ、その結
果、バウンディングボックス40は2つの領域30と3
5の共通部分となる。
【0078】ノード41では、2つのバウンディングボ
ックス31と32がout演算子を使用して組合わせられ
る。図17に示すとおり、ノード41におけるバウンデ
ィングボックス42はバウンディングボックス32と同
じものとなる。最後にノード43において、バウンディ
ングボックス40と42がover演算子を用いて組合わせ
られる。ノード43におけるバウンディングボックス4
4は、2つのバウンディングボックス40と42を一体
にしたものである。こうして、バウンディングボックス
判定の第1段階を完了する。図17から分かるように、
バウンディングボックス処理は、演算子を利用して複合
した結果の領域によって決定される合成されたバウンデ
ィングボックスの大きさを持つ、組合わされた2つのグ
ラフィック要素のバウンディングボックスを決定する処
理を含む。
【0079】バウンディングボックス最小化の第2段階
つまりパスは、深さ優先プリオーダーのシンタックスエ
クスプレッションツリーの横断を含む。第2のパスで
は、それぞれの内部ノードの子孫のバウンディングボッ
クスが親のバウンディングボックスによって重ねられ
る。新しい子のバウンディングボックスがその子孫のバ
ウンディングボックスへ重ねたり、最小化に使用するこ
とができるように、この処理は繰り返し行われる。つぎ
に図18を参照して、この処理の例を説明する。図18
において、図16と図17と同じエクスプレッションシ
ンタックスツリーを示す。プレオーダーな横断は、先ず
現在のノード、そしてその左右の子へのビジットを行
う。従って、ノード43から始めると、バウンディング
ボックス44はバウンディングボックス40はノード3
9で重なり、変化は起こらない。バウンディングボック
ス44はまた、バウンディングボックス42と重なる
が、変化は起こらない。そして、バウンディングボック
ス40はリーフノード45に記憶されているバウンディ
ングボックス30と重なる。この重なりの結果がバウン
ディングボックス47である。
【0080】従って、最終画像で必要とされる画像又は
グラフィック要素の唯一の部分は、古いバウンディング
ボックス30ではなく、バウンディングボックス47に
よって定義される部分である。これは、画像47の部分
が合成処理で必ず使用されなければならない全てのもの
あるであるために、合成時間を実質的に削減することに
なる。同様に、ノード37では、バウンディングボック
ス40はバウンディングボックス35(図17)と組合
わせられ、削減された大きさのバウンディングボックス
48となり、結果として実質的な削減となる。そしてバ
ウンディングボックス48は、ノード50でバウンディ
ングボックス29(図17)と重なる。バウンディング
ボックス領域48と29の共通部分は空となり、ノード
50が最終画像を形成しないことを示す。従って、この
ノード(及び、もしあれば子ノード)はすべてのエクス
プレッションシンタックスツリーから削除することがで
き、結果的に、ツリーを簡素な形態にすることができ
る。
【0081】そしてバウンディングボックス34(図1
7)はノード36でバウンディングボックス48で区切
られ、削減された大きさのバウンディングボックス51
を創る。
【0082】バウンディングボックス42はノード52
でバウンディングボックス32(図17)と組合わせら
れ、削減は行われない。そして、このバウンディングボ
ックス42はノード53でバウンディングボックス31
(図17)と重ねられ、以前のバウンディングボックス
31と比べて削減された大きさのバウンディングボック
ス54を創る。
【0083】この処理は最終画像の部分を形成するため
に描画されるべき領域において、できれば実質的な削減
が行われるように、エクスプレッションシンタックスツ
リーのそれぞれのノードについて行われる。更に、バウ
ンディングボックスが空領域に削減された場所は、エク
スプレッションシンタックスツリーのこれらの部分は最
終画像部分を形成しないので、全ての部分木を削除する
ことができる。
【0084】バウンディングボックスの大きさを更に縮
小するために利用される更なる最適化は、オペランドの
1つが不透明なオブジェクトの下にある時を検知するこ
とである。例えば、そのオペランドが「over」オペラン
ドで、右側のオペランドのバウンディングボックスが完
全又は部分的に左側の不透明なオペランドのバウンディ
ングボックスに覆い隠されているならば、右側オペラン
ドのバウンディングボックスを削減又は削除することが
できる。例として、図30にバウンディングボックス1
02を持つオブジェクトA100とバウンディングボッ
クス103を持つオブジェクトB101の2つオブジェ
クトを示す。また、図31にオブジェクトBが部分的に
オブジェクトAの不透明部分に覆われていることを示すA
overBの演算を示す。オブジェクトBの相当の部分はオブ
ジェクトAの不透明部分の影に隠されているので、これ
に対応するバウンディングボックスのオブジェクトAに
よって完全に覆われる部分を削減することができる。こ
のことを図32に視覚的に示す。図32において、オブ
ジェクトBの為のバウンディングボックスの一辺105
は106となり、バウンディングボックスが削減され
る。
【0085】この処理の実行の簡易な1つの形態は、不
透明で、バウンディングボックス内が完全に塗りつぶさ
れたグラフィック要素Aの為のエクスプレッションツリ
ーのそれぞれのリーフノードを確認することである。こ
の場合、バウンディングボックスBはバウンディングボ
ックスAによって完全に覆い隠されるかどうかによって
削減もしくは削除することができる。
【0086】<5.クリップ経路の検出、及びクリップ
ノードのラベリング>図4から分かるとおり、もし「i
n」又は「out」演算が完全に不透明な右オペランドによ
って行われたとすると、その効果は左のオペランドが右
オペランドの境界線にクリップされた物と同じ効果であ
る。「in」演算では、効果は右オペランドの内側にある
左オペランドの部分を示すことだけであり、「out」オ
ペランドでは、その効果は右オペランドの外側にある左
オペランドの経路を示すことだけである。右オペランド
の境界線が分かっているとすると、これら「in」及び
「out」演算は組合わせではなく、クリッピングによっ
て行われる。
【0087】この処理の簡単な例を図19から図22に
示す。先ず図19において、実行したい演算は「円中の
四角形」である。ここで、「四角形」とはグラフィック
要素60を指し、「円」はグラフィック要素61を指
す。
【0088】この処理を実行するための通常の組合わせ
方法を図20に示す。図20において、円61に対応す
るグラフィック要素はロードされ画像平面62上に表さ
れる。続いて、図21に示すように、画像62(図2
0)は、グラフィック要素60からの色データ情報を持
つ円63を創るための、四角形グラフィック要素に対す
る台紙として使用される。
【0089】図22に、図19の動作を行う更に効果的
な方法を示す。この場合、グラフィック要素60は、最
終出力64を作成するために、グラフィック要素61の
境界線に対してすぐにクリップされる。
【0090】合成とクリッピングのどちらがコンピュー
タ時間と必要メモリ空間の面でより効果的な方法である
かということは、いつも明らかなわけではない。しかし
ながら、下記の観察は注目するに値するものである。 1. 不透明のグラフィック要素が右オペランドである
ときに、グラフィック要素が「in」演算の左オペランド
として使用されるならば、クリッピングは左側のオペラ
ンドの可視部分の選択と、それらを合成することのみを
含む。反対に合成は、現在の絵を保存したり、右側オペ
ランドのグラフィック要素全体を描画したり、左側オペ
ランド全体を合成したり、記憶された絵を最終的に合成
し直す動作を含む。 2. 画像をクリッピングすることにより、合成される
べき画素データの量を大幅に削減すると共に、合成処理
以前に生成される画素データの量を減らすことができる
ので、多大な節約がなされる。 3. クリッピングオブジェクトが非常に複雑であるた
め、クリップされるべきオブジェクトをクリッピングオ
ブジェクトに重ねるための総計算が、削減した合成処理
の利益に値しないときがある。クリッピングオブジェク
トが、小サイズのテキストや、非常に複雑な経路で構成
されているときに、このようなことが起こる。
【0091】なお、上記の任意のエクスプレッションツ
リーにおけるクリッピングによる最適化の実施におい
て、クリッピング、つまり、完全に不透明な右オペラン
ドの「in」又は「out」、又は、完全に不透明な左オペ
ランドの「rin」又は「rout」は全ての二項合成演算子
に分配される(つまり、これらの演算子が2つの題目を
持っている。)従って、完全に不透明なグラフィック要
素Cが与えられているとすると、全ての二項合成演算子o
pについて、下記の関係が成り立つ。 (a op b) in c = (a in c) op (b in c) 式1 このクリッピング処理は、全ての単成分演算子にも分配
されており、不可視領域を、可視領域にマッピングす
る。この後者の場合が考慮されることはまれで、特殊ケ
ースとして扱われる。
【0092】クリッピングの例を、図23と図24を参
照にして説明する。図23はエクスプレッションツリー
65の部分の合成処理の例を示す図である。このエクス
プレッションツリー65の部分は、対応する機械命令リ
スト66にコンパイルされる。このリスト66は現在の
画像をスタック上へプッシュする動作(push)と、不透
明な右側オペランドをアキュムレータへ描画する動作
(load P)と、左側のオペランドを「in」演算子を使用
して合成する動作(in B)と、保存された絵を合成しな
おす動作(rover pop)とを含む。
【0093】図24は、右側のオペランドが不透明なオ
ブジェクトである場合に、合成ではなくクリッピングを
する処理を説明する図である。この場合、図23のエク
スプレッションツリー65は、例えば68のような(図
23)「in」又は「out」演算子を用いて、グラフィッ
ク要素を不透明なグラフィック要素にクリップする場合
を全てロケートするために先ず実施される。それぞれの
場合、これは特殊ノードインディケーター69によって
置き換えられ、クリッピングオブジェクトの境界線はば
らばらのクリップリスト70に置かれる。新しいエクス
プレッションツリー67が完成すると、コード列72が
結果としてできる。このコード列に於て、クリップリス
ト70に要素1として記憶された境界Pに対応するクリ
ップオブジェクトは、Pへのクリッピングを含むその他
の命令の前に、描画リストにおける「クリップ」命令と
して配置される(clip P, 1)。その他の命令のすぐ前
に、境界Pに対応するクリップリストの要素1はクリッ
ピングスタックへとプッシュされる(pushclip 1)。そ
して、Bはクリッピングスタック中の全ての境界の共通
部分を通してで描画され(over B)、クリッピングスタ
ックの先頭のオブジェクトはポップされ、命令列は図2
3に示されているように続けられる。
【0094】従って、下記の実施構想が考えられる。
【0095】1. エクスプレッションツリーのポイン
タのワーキングセットは、上記の方法で変換することの
できる経路のために検索される。経路又はオブジェクト
が見つかると、それはワーキングツリーポインタの集合
から除かれ、クリップリストと呼ばれる配列に入れられ
る。この配列へのインデックス(クリップID)は、最適
化がinまたはout演算の結果であるかどうかの記録に加
えて、現在のノードへ記録される。
【0096】2. エクスプレッションツリーを繰り返
すとき、クリップIDによるクリップを必要とするエクス
プレッションツリーの後続する部分のリーフノードを付
加することができるように、クリップリスト上でクリッ
プオブジェクトに変換された全てのグラフィック要素の
クリップIDの動きを追うことが必要である。始めにクリ
ップされた部分木はどれでもクリッピングの輪郭へ変換
するのに適する部分を含むため、クリップIDのスタック
を保存する必要がある。クリッピングの輪郭に変換すべ
きグラフィック要素を見つける時はいつでもそのクリッ
プIDをスタックへプッシュすることができ、そしてクリ
ップされた部分木は横断され、これに応じて、スタック
の先頭のクリップIDをポップすることができる。横断中
にリーフノードに当たったときは、その時にスタックに
存在する全てのクリップIDをそれに付加する。
【0097】3. 描画リストが生成されたときは、ク
リップへ変換されてクリップリストに記憶されたそれぞ
れのグラフィック要素が使用される前に(例えばプログ
ラムの始めなど)、そのグラフィック要素の生成の為に
必要な「clip」命令が生成される。
【0098】4. 描画時間「clip stack」は、様々な
合成命令を取り囲む「push clip」と「pop clip」命令
によって操作される。グラフィカルオブジェクトが合成
されるときは、同時にクリップスタック中の全てのクリ
ップオブジェクトへクリップする。従って、命令の描画
リストの生成に当たっては、グラフィック要素が合成さ
れるときのクリップスタックの状態を追わなければなら
ない。もし、このクリップスタック状態がグラフィカル
オブジェクトによって要求される状態になければ、クリ
ップスタックを要求される状態にするために、命令を生
成しなければならない。不可視画素を可視画素へ変換す
る単項演算子については、それらが利用されるときに追
加のクリッピングが必要となる。つまり、演算子をグラ
フィック要素の可視部のみに応用し、不可視のクリップ
された領域の状態をそのまま残すことが必要である。
【0099】上記のクリッピング処理に加えて、グラフ
ィック要素はそれらのバウンディングボックスが最小化
されたことに起因する、更なるクリッピングを要求する
ことができることは言うまでもない。
【0100】<2.単項最適化の実施>命令集合は、M
によって定義されるマッピングに対応して、特定のグラ
フィック要素の色を変化させるための命令(cmap M)を
供給する。
【0101】時々、ページ記述言語において利用できる
色マップ演算は、描画中ではなく、エクスプレッション
ツリー段階で実施することができる。例えば、色マップ
を用いてグラフィック要素の色を変えることを要求され
たとすると、描画処理が行われる前に要素の色を変える
ことが可能になり、従って、色マップ演算をエクスプレ
ッションツリーから除くことを可能にする。しかし、時
折、色マップ演算中にグラフィック要素の色がその透明
度、つまりαチャンネル値と反応することがある。色マ
ップ演算をエクスプレッションツリー段階で適用するこ
とができる否かを決定するために、この色マップ演算を
慎重に分析しなければならない。
【0102】また、グラフィック要素の色を考慮する
と、どのグラフィック要素も簡略化することができる。
例えば、図33を参照にすると、普通は108で示され
るグラフィカルオブジェクトは、色が混ざり合った複雑
な形態を持つ領域109と、一定の色混合である第2領
域110とを含んでもよい。上記で概略説明したバウン
ディングボックス最適化処理は、領域109を囲むこと
のない境界を持つ最適化されたバウンディングボックス
111を作るかも知れない。従って、対応するエクスプ
レッションツリーを評価するときに、オブジェクト10
8の色を領域110の一定色に相当する色へ変えること
ができる。
【0103】<6.最適化>エクスプレッションツリー
において、異なる形態の最適化が可能である。まず、上
述したとおり、空ボックスに最小化されたバウンディン
グボックスを持つエクスプレッションツリー部分は、エ
クスプレッションツリーから削除することができる。
【0104】演算子合成の数学的性質は、可能であれば
いつでもより無駄の多い演算をより効果的な演算に置き
換えるように、エクスプレッションツリーを配置し直す
ために利用することができる。これらの代数学的性質
は、結合性、可換性、及び様々な演算子の逆化を含む本
質である。最適化処理はあらかじめ決められた順序どお
りにツリーを横断し、それぞれのノードにおいて、最適
化装置は数学的特徴から導きだされた規則のそれぞれの
集合が現在のノードに適合するか否かをテストする。ど
の規則を応用すべきかを決定するに当たって、数学的特
徴に応じてエクスプレッションツリーを更新することに
より、エクスプレッションツリーの描画のコストのおお
まかな進歩が評価される。与えられたノードのコスト
は、左部分木のバウンディングボックスの高さ(h)と
領域(h × w)の線形の組合わせとして評価される。更
に詳しくは、結合性の性質は、描画処理中に要求される
スタック深度を大幅に削減するために、エクスプレッシ
ョンツリーを右へ傾けることに使用することもできる。
可換又は逆演算子を応用してのノードの部分木の取り替
えは、合成されるべき領域に関するコストが減少する場
合に限り、応用するとよい。これはスタック深度を上昇
させることになるが、これに対応して実行時間が減少す
る。
【0105】エクスプレッションシンタックスツリーの
それぞれのノードは、バウンディングボックスの走査線
数hと領域hwとを記憶する。これらは画素を単位とし表
される。従って、「A over B」などの共通の演算子のコ
ストを決定するためには、下記の要素を評価する必要が
ある。 ・ C1overは、単純なグラフィック要素に対して「ove
r」を実行するための、一走査線当たりのコストであ
る、 ・ C2overは、単純なグラフィック要素に対して「ove
r」を実行するための、一画素当たりのコストである、 ・ C3overは、単純なグラフィック要素の組合わせによ
って構成される複雑なグラフィック要素に対して「ove
r」を実行するための、一画素当たりのコストである、 ・ C4overは、複雑なグラフィック要素に対して「ove
r」を実行するための、一走査線当たりのコストであ
る、 ・ hは、境界A内の走査線数である、 ・ hwは、境界A内の画素数である。
【0106】従って、総コストは下記のとおりである。
即ち、 if グラフィック要素が単純 then cost = C1over・h +C2over・hw else グラフィック要素が複雑 cost = C3over・h + C4over・hw 式2 となる。
【0107】結合性質は、エクスプレッションツリーを
傾けるために利用することができる。傾いたエクスプレ
ッションツリーは、しばしば実行のための時間とメモリ
を削減する描画命令の対応する集合となる。図25に、
対応する右に傾いた部分76を形成するためにエクスプ
レッションツリーの部分75を右に傾ける例を示す。図
25に示される演算を実行するか否かを計算する式は下
記のとおりである。
【0108】 fover(A) + fover (Y) > fover(A) + fover(B) 即ち、fover(Y) > fover(B) 式3 となる。ここで、fover(Z)は、グラフィック要素Zの「o
ver」合成を行うコストである。
【0109】Bのバウンディングボックスがいつも部分
75においてY以下であり、ほとんどの場合、複雑なグ
ラフィック要素を合成することは単純なグラフィック要
素を合成することよりも難しいため、この結合性の演算
はほとんどの場合は、今までよりも速いか、同じ速さで
描画するシンタックスエクスプレッションツリーを提供
する。ツリーはポインタを75から76へ変えるだけで
変更することができる。
【0110】可換性のこれらの演算子に関して、可換性
演算子のオペランドのいくつかを互換させることも有利
である。例えば、図26に示すように、「xor」演算子
のオペランドは図では互換されている。互換するかどう
かは左ツリーのコストと、右ツリーのコストによって決
まる。従って、もし、 fxor(A) > fxor (B) 式3 ならば、オペランドは交換される。これは大抵は2つの
領域AとBを描画するのに要求される記憶装置の大きさに
関係し、ポインタを図26に示すように変更するだけで
簡単に実施することができる。
【0111】時々、いくつかの演算子をその逆演算子に
交換しても便利である。例えば、図27は「in」演算子
を、対応するポインタの交換動作によりその逆演算子
「rin」に変換する処理を示す。2つの方法の提案され
たコストの計算は、交換が行われるべきかどうかを決定
する。下記の変換について、多数の他の最適化が可能で
ある。
【0112】
【表6】
【0113】また、特に、含まれる部分木が「in」又は
「out」演算子の右オペランド(又は同等の「rin」又は
「rout」演算子の左オペランド)である場合は、応用可
能な様々な他の変換がある。
【0114】エクスプレッションツリーに対する上記全
ての最適化及び変更は、ユーザーのポインタセットが代
わることがないように使用中のポインタのセットに対し
て行われるため、エクスプレッションツリーを変更する
必要のないときには、変化は検知されない。
【0115】一度エクスプレッションツリーが最適化さ
れると、既に説明したように、描画リスト命令を生成す
るためにそれを利用することができる。
【0116】つぎに、図28と図29を参照して、エク
スプレッションツリーの操作の更に複雑な例を開示す
る。エクスプレッションツリー80の元の部分は、一連
の中間コード命令に変換される。変換の第1の方法は、
エクスプレッションツリー81の対応する最適化された
部分を形成するために図28のエクスプレッションツリ
ー80の部分を最適化することだけである。ツリーに対
して行われた最適化は、「in」であるオペランド83を
「rin」84へ変更する動作を含む。この演算子の変更
はそのオペランドの結果的な順列を持ち、オペランドP
がルートが「over」演算子86である部分木オペランド
より実質的に小さい場合の結果として起こるものであ
る。そして、最適化されたエクスプレッションシンタッ
クスツリー81は、中間コード命令87へと変換され
る。この最適化の論理的根拠は、ツリー80は2つのプ
ッシュと、ポップを必要とするのに対して、ツリー81
は1つづつしか必要としないことである。従って、ツリ
ー81に起因するより単純な命令集合は、実行速度が速
く、また必要なメモリを少なくするようである。
【0117】図29は、クリッピングが利用されたとき
のエクスプレッションツリー80の部分変形形式を示
す。これは、図28のグラフィック要素P85が不透明
なオブジェクトであって、その結果として、「over」演
算子86によって生成されたグラフィック要素が不透明
なグラフィック要素85と「in」演算子83を使って組
合わせられることとする。図19から図22を参照して
説明したとおり、不透明なオブジェクトP85に対する
クリッピングを「in」演算子の代わりに使用することが
できる。従って、Pの輪郭はクリップリストに89とし
て、オペランド85に関連して使用される図28の演算
子83と共に記憶される。
【0118】クリッピング処理は、全てのほかの二項合
成演算子(式1参照)に分配されるため、P85へのク
リッピングは図28の演算子86と91へ分配すること
ができる。その結果、リーフノード92から94のそれ
ぞれが、クリップリストに記憶された輪郭89に対して
クリップする為にマークされることになる。
【0119】結果として得られるエクスプレッションツ
リー96は、最適化されたエクスプレッションツリー9
7を形成するために最適化される。最適化されたエクス
プレッションツリー97は、(A over B) over C = A ov
er (B over C)の形態を持つ「over」演算子(表4に示
す)のための結合規則の繰り返し実施によって、エクス
プレッションツリー96から形成される。
【0120】そして、最適化されたエクスプレッション
ツリー97は、中間命令98を生成するために利用され
る。命令リスト87(図28)を命令リスト98(図2
9)と比べると、リスト87は、Pをオペランドとする
「rin」命令を対象とする前に、B1,B2,B3の全てのロー
ドや合成に加えて、アキュムレータの現在の内容をスタ
ックへプッシュするプッシュ命令を含んでいることが分
かる。そして、この演算結果はスタックの先頭と(「ro
ver pop」命令により)合成される。第2の命令集98
において、クリップリストは最初に輪郭Pと共にロード
され、そして、Aは現在のアキュムレータの内容と合成
され、輪郭Pをクリップスタックへプッシュし、続い
て、クリップスタックの先頭にある輪郭Pを通してB1,B
2,B3の合成を行う。そして、クリップスタックの先頭
は、Cがアキュムレータの残りの内容に合成される前に
ポップされる(「popclip」命令)。命令列98は命令
列87よりも実際的にはより効果的なようであり、結合
性演算子の使用を合成する代わりにクリッピングするこ
とによって実行速度が早められる。
【0121】上述の通り、エクスプレッションシンタッ
クスツリーから作られる命令列は、ソフトウエア又はハ
ードウエアベースの機器での実行に用いられる。例とし
て、ハードウエアベースのアプローチを、図34を参照
にして説明する。図34に、例えば表3にあるような命
令列を実行することのできる、一例であるハードウエア
構造物120を示す。ハードウエア構造物120は、例
えば、Morgan Kaufmann Publishers Inc.から1990
年に出版されているJohn Hennessy とDavid Patterson
共著の「Computer Architecture - A Quantitative App
roach」の第3章から第8章のような、標準的テキスト
に示されている標準的なコンピュータ構造技術を用いる
ことにより実現することができる。
【0122】ハードウエア構造物120は、標準タイプ
の入力/出力インターフェイス123を使ってハードウ
エア構造物120とインターフェイスする、標準的な外
部コンピュータシステム125の制御下において作動す
るように設計されている。
【0123】上記のとおり、命令列は通常、走査線順に
ソートされ、アクティブリストは現走査線について外部
コンピュータシステム125によって維持される。ハー
ドウエア構造物120において、ある特定の現在アクテ
ィブな走査線の為の命令列は入力/出力インターフェイ
ス123を介して外部コンピュータシステム125から
命令記憶器121へロードされ、命令列に要求されるグ
ラフィック要素はメモリ記憶器122へクリップリスト
に加えてロードされる。制御部126は活発化され、命
令記憶器121から命令を読み始め、そして、再び標準
技術を使用して、制御部126内に記憶されたマイクロ
プログラムされたメモリによって、命令列の実行を開始
する。
【0124】アキュムレータ128は一走査線分の色情
報及び透明度情報を記憶するのに充分な記憶空間を持
つ。スタック記憶空間130は、ある一行でスタックが
成長できる最高深度を表わす、あらかじめ決められた最
高数の走査線を記憶するだけの充分な空間を持つ。
【0125】命令列中の「pushclip」命令に制御部12
6が当たる度に、メモリ記憶器122中のクリッピング
リスト内に記憶された適切なクリッピングオブジェクト
がその時のクリッピングスタック132の先頭の内容に
重ねられ、その結果が新しいクリッピングスタック13
2の先頭の構成要素として記憶される。「popclip」命
令に当たると、クリッピングスタック132のその時の
先頭がポップされる。
【0126】それぞれの合成命令については、制御部1
26は、2つの画素色及び不透明さ情報列に対して表1
の合成演算を実施する合成部127の演算を制御する。
2つの情報列のうち、第1の列はアキュムレータ128
からのもので、第2の列はスタック記憶空間130から
のものである(必要時)。制御部126は、クリッピン
グスタック132のその時の先頭要素からの画素列を合
成する境界線を決定する。合成部127の結果の色と透
明度の出力は131を介してアキュムレータ128へフ
ィードバックされる。
【0127】一旦命令列が完了すると、制御部126
は、現在の走査線のためにアキュムレータ128から結
果を読みだすコンピュータシステム125に通知し、そ
の結果を望むとおりに出力又は記憶する。
【0128】上記の発明の実施の形態は、コンピュータ
グラフィックスや、アルゴリズムや、データ構成や、コ
ンピュータ構成や、コンパイラ記述の技術者にとって最
大限に明確に理解しやすいような形態で表現されたもの
である。また、種々の最適化が可能であることは言うま
でもない。例えば、ツリー横断の繰り返しの使用は、テ
ール繰り返し、又は維持バックポインタなどの公知の方
法を用いることにより削除することができる。
【0129】更に、ページ記述言語などの標準プログラ
ミング言語において、多様な設備を手に入れることが可
能である。これらの設備は通常、言語によって異なるた
め、特定の言語の実際的な詳細については仮定していな
い。当業者はページ記述言語による上記の実施の形態を
実施することが可能であることは言うまでもない。
【0130】上記の説明は好適な実施例の動作の説明を
含んでなされたがこれは発明の範囲を限定するものでは
ない。発明の範囲は以下の請求項によってのみ限定され
る。関係分野の当業者には、発明の精神と範囲を越えな
い程度で、上記の説明から多数の変形例が可能であるこ
とが明らかとなるであろう。
【0131】以上述べた様に上記実施の形態によれば、
以下に示すような効果が得られる。即ち、 1. グラフィック要素とそれらの組合わせは言語のデ
ータタイプであり、グラフィック要素の任意の組合わせ
が可能である、 2. グラフィック演算子はグラフィック要素をそのオ
ペランドとして取り、2つの新しいグラフィック要素ま
たはそれらの組合わせを評価する、 3. グラフィカルオブジェクトが関わる演算子のタイ
プ制限を条件として、グラフィカルオブジェクトは、他
の標準的言語データタイプと同じ方法で使用される(例
えば、除算演算子は数学的なオペランドのみを演算する
が、課題演算子はどの種類のオペランドにも使用するこ
とができる)、 4. 全てのグラフィック要素と、グラフィック演算子
を利用したグラフィック要素の組合わせ結果は、更なる
グラフィック演算に適したオペランドである、 5. ページ記述言語の実行によって生成されたある特
定のグラフィック要素の描画による出力のために、画像
を生成することができる。
【0132】なお、本発明は、複数の機器から構成され
るシステムに適用しても、1つの機器からなる装置に適
用してもよい。また、本発明はシステム或は装置にプロ
グラムを供給することによって達成される場合にも適用
できることは言うまでもない。この場合、本発明に係る
プログラムを格納した記憶媒体が、本発明を構成するこ
とになる。そして、該記憶媒体からそのプログラムをシ
ステム或は装置に読み出すことによって、そのシステム
或は装置が、予め定められた仕方で動作する。
【0133】
【発明の効果】以上説明したように本発明によれば、グ
ラフィカルプログラミング言語で定義されたプログラム
の解釈において、画像生成のより進歩した形態を提供す
ることができる。この結果、必要とするメモリの減少、
処理速度の向上が達成される。
【0134】
【図面の簡単な説明】
【図1】2つの単純なグラフィック要素を表す図であ
る。
【図2】2つの単純なグラフィック要素を表す図であ
る。
【図3】グラフィック要素の合成を表す図である。
【図4】様々な合成演算子と、最終的に得られる出力を
表す、発明の実施の形態にかかる図である。
【図5】第1の記述のエクスプレッションツリー(expr
ession tree)の構成を示す図である。
【図6】第1の記述のエクスプレッションツリー(expr
ession tree)の構成を示す図である。
【図7】第1の記述のエクスプレッションツリー(expr
ession tree)の構成を示す図である。
【図8】第1の記述のエクスプレッションツリー(expr
ession tree)の構成を示す図である。
【図9】第1の記述のエクスプレッションツリー(expr
ession tree)の構成を示す図である。
【図10】第1の記述の合成処理を示す図である。
【図11】第1の記述の合成処理を示す図である。
【図12】第1の記述の合成処理を示す図である。
【図13】第1の記述の合成処理を示す図である。
【図14】第1の記述の合成処理を示す図である。
【図15】第2の記述の結果として得られる最終画像を
示す図である。
【図16】第2の記述のエクスプレッションツリーを示
す図である。
【図17】エクスプレッションツリー上で行われるバウ
ンディングボックス(bounding box)処理を示す図であ
る。
【図18】更なるバウンディングボックス最小値化を表
現する、発明の実施の形態にかかる図である。
【図19】「in」演算子を使用して組合わされる2つの
グラフィック要素を示す図である。
【図20】図19のグラフィック要素の第1の組合わせ
方法を示す図である。
【図21】図19のグラフィック要素の第1の組合わせ
方法を示す図である。
【図22】図19のグラフィック要素の第2の組合わせ
方法を示す図である
【図23】エクスプレッションツリーを対応する「中間
レベル」命令に変換する第1の方法を示す図である。
【図24】エクスプレッションツリーを対応する命令に
変換する第2の方法を示す図である。
【図25】エクスプレッションツリー上において実施さ
れる第1の最適化を示す図である。
【図26】エクスプレッションツリー上において実施さ
れる第2の最適化を示す図である。
【図27】エクスプレッションツリー上において実施可
能な第3の最適化を示す図である。
【図28】エクスプレッションツリーの部分の最適化の
第1の方法を示す図である。
【図29】エクスプレッションツリーの部分の最適化の
第2の方法を示す図である。
【図30】2つのグラフィック要素と、それらに対応す
るバウンディングボックスを示す図である。
【図31】図30の2つのグラフィック要素を合成する
図である。
【図32】図30のグラフィック要素の一方の削減され
たバウンディングボックスを示す図である。
【図33】発明の実施の形態で行われる色最適化を表す
図である。
【図34】発明の実施の形態にかかる、命令を実施する
コンピュータ構造を示す図である。
フロントページの続き (71)出願人 000001007 キヤノン株式会社 東京都大田区下丸子3丁目30番2号 (72)発明者 ジョージ ポリティス オーストラリア国 2113 ニューサウス ウェールズ州,シドニー,ノースライド, トーマス ホルト ドライブ 1 キヤノ ン インフォメーション システムズ リ サーチ オーストラリア プロプライエタ リー リミテツド内 (72)発明者 アンドリュー ティモシー ロバート ニ ューマン オーストラリア国 2113 ニューサウス ウェールズ州,シドニー,ノースライド, トーマス ホルト ドライブ 1 キヤノ ン インフォメーション システムズ リ サーチ オーストラリア プロプライエタ リー リミテツド内 (72)発明者 ティモシー マーリック ロング オーストラリア国 2113 ニューサウス ウェールズ州,シドニー,ノースライド, トーマス ホルト ドライブ 1 キヤノ ン インフォメーション システムズ リ サーチ オーストラリア プロプライエタ リー リミテツド内

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 グラフィカルプログラミング言語で定義
    されるプログラムを解釈する方法であって、 グラフィック要素の組合わせ又は描画を含む記述列を分
    析し、実行する工程と、該組合わせ又は描画の効果は遅
    延され、 前記グラフィック要素の組合わせ又は表現をエクスプレ
    ッションツリーのノードへ変換する工程とを備え、該ノ
    ードの子孫は遅延されたグラフィック要素の組合わせ又
    は描画のオペランドであり、また、ノードは遅延された
    演算を持つものとしてマークされることを特徴とするグ
    ラフィカルプログラミング言語の解釈方法。
  2. 【請求項2】 前記エクスプレッションツリーのリーフ
    ノードはグラフィック要素を備えることを特徴とする請
    求項1に記載のグラフィカルプログラミング言語の解釈
    方法。
  3. 【請求項3】 前記エクスプレッションツリーの内部ノ
    ードは、前記エクスプレッションツリーの対応する子孫
    ノードを組合わせるための演算子を備えることを特徴と
    する請求項1または2に記載のグラフィカルプログラミ
    ング言語の解釈方法。
  4. 【請求項4】 前記エクスプレッションツリーのそれぞ
    れの内部ノードは、該内部ノードの子のグラフィック要
    素の境界を示すバウンディングボックス情報を記憶する
    ことを特徴とする請求項1に記載のグラフィカルプログ
    ラミング言語の解釈方法。
  5. 【請求項5】 前記エクスプレッションツリーのそれぞ
    れのリーフノードは、前記プログラムの前記解釈によっ
    て作成される最終画像に現われるリーフノードのグラフ
    ィック要素の部分を示すバウンディングボックス情報を
    記憶することを特徴とする請求項1に記載のグラフィカ
    ルプログラミング言語の解釈方法。
  6. 【請求項6】 前記エクスプレッションツリーは二分木
    であることを特徴とする請求項1に記載のグラフィカル
    プログラミング言語の解釈方法。
  7. 【請求項7】 前記エクスプレッションツリーを対応す
    る命令列へ変換する工程を更に含むことを特徴とする請
    求項1に記載のグラフィカルプログラミング言語の解釈
    方法。
  8. 【請求項8】 前記画像を描画する為に前記命令列を実
    行する工程を更に含むことを特徴とする請求項7に記載
    のグラフィカルプログラミング言語で定義されるプログ
    ラムの解釈方法。
  9. 【請求項9】 前記エクスプレッションツリーを対応す
    る命令列へ変換する工程はエクスプレッションツリーの
    ルートノードを現ノードと指定する工程を含み、 (a) もし前記現ノードがリーフノードならば、現ノ
    ードのオペランドをロードする命令を生成する工程と、
    そうでなければ (b) もし前記現ノードが単項演算子だけならば、現
    ノードのオペランドを現ノードとして、工程(a)から
    工程(c)を繰り返し呼び出し、前記単項演算子を実行
    するように命令を生成する工程と、そうでなければ (c)(I)現ノードの第1子を現ノードとして工程
    (a)から工程(c)を繰り返し呼び出す工程と、 (II)もし現ノードの第2子がリーフノードならば、第
    2子のオペランドと、現ノードのオペランドを使用する
    命令を生成する工程と、そうでなければ (III) (1)第2子のオペランドに対応するグラフィ
    ック要素のバウンディングボックスをクリッピングスタ
    ックへプッシュする命令を生成し、(2)第2子のオペ
    ランドを現ノードとして工程(a)から工程(c)を繰り
    返し呼び出し、(3)第2子のオペランドのバウンディ
    ングボックスを空にする命令を生成し、(4)現ノード
    の現演算子の逆をスタックの先頭に対して実行する命令
    を生成する工程と、を実行する工程とを完了することを
    特徴とする請求項7に記載のグラフィカルプログラミン
    グ言語の解釈方法。
  10. 【請求項10】 前記命令は一つの演算子又は演算コー
    ドと、多くとも一つつのオペランドにより構成されてい
    ることを特徴とする請求項1に記載のグラフィカルプロ
    グラミング言語で定義されるプログラムを解釈する方
    法。
JP18919895A 1994-07-25 1995-07-25 画像出力方法 Expired - Fee Related JP3618838B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU7041 1980-12-19
AUPM7041A AUPM704194A0 (en) 1994-07-25 1994-07-25 Efficient methods for the evaluation of a graphical programming language

Publications (2)

Publication Number Publication Date
JPH08115413A true JPH08115413A (ja) 1996-05-07
JP3618838B2 JP3618838B2 (ja) 2005-02-09

Family

ID=3781564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18919895A Expired - Fee Related JP3618838B2 (ja) 1994-07-25 1995-07-25 画像出力方法

Country Status (6)

Country Link
US (1) US6236410B1 (ja)
EP (1) EP0694879B1 (ja)
JP (1) JP3618838B2 (ja)
AU (1) AUPM704194A0 (ja)
DE (1) DE69534558T2 (ja)
HK (1) HK1013706A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272837A (ja) * 1997-12-22 1999-10-08 Adobe Syst Inc 頁記述言語におけるトランスペアレンシ処理
JPH11316831A (ja) * 1997-12-22 1999-11-16 Adobe Syst Inc レイヤを使用したイメージデータの混合
JP2001188915A (ja) * 1999-11-22 2001-07-10 Adobe Syst Inc イラストレーションアートワークの処理
JP2001283213A (ja) * 2000-02-29 2001-10-12 Canon Inc 画像処理装置及び方法
JP2002056396A (ja) * 2000-04-18 2002-02-20 Canon Inc グラフィックオブジェクトイメージ描画方法及び装置
JP2010102721A (ja) * 2004-04-16 2010-05-06 Apple Inc グラフィックオペレーションのための高レベルプログラムインターフェース
USRE42847E1 (en) 1996-05-22 2011-10-18 Canon Kabushiki Kaisha Expression tree optimization for processing obscured graphical objects
US9691118B2 (en) 2004-04-16 2017-06-27 Apple Inc. System for optimizing graphics operations

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU730559B2 (en) * 1998-05-20 2001-03-08 Canon Kabushiki Kaisha Optimisation in image composition
AUPP568698A0 (en) 1998-09-03 1998-10-01 Canon Kabushiki Kaisha Region-based image compositing
US6909438B1 (en) * 2000-02-04 2005-06-21 Sportvision, Inc. Video compositor
US6950209B1 (en) * 2000-02-07 2005-09-27 Adobe Systems Incorporated Generating knockout marks for objects
US7126578B1 (en) * 2001-05-17 2006-10-24 Adobe Systems Incorporated Combining raster and vector data in the presence of transparency
US20030160985A1 (en) * 2002-02-25 2003-08-28 Martin Bailey Evaluating the overprint characteristics of a prepress workflow
US20030174141A1 (en) * 2002-03-14 2003-09-18 Letellier Nolan Wayne Sorting image primitives in generation of image page descriptions
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US20050035327A1 (en) * 2003-08-14 2005-02-17 Canada T. Andrew Topical silver-based antimicrobial composition for wound care devices
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US7248265B2 (en) 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US9646107B2 (en) 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8130237B2 (en) 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7882147B2 (en) * 2004-06-30 2011-02-01 Robert T. and Virginia T. Jenkins File location naming hierarchy
US7620632B2 (en) * 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7801923B2 (en) * 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US7227551B2 (en) 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
JP4419876B2 (ja) * 2005-03-14 2010-02-24 富士ゼロックス株式会社 画像処理装置
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7852353B1 (en) 2005-03-31 2010-12-14 Apple Inc. Encoding a transparency (alpha) channel in a video bitstream
US8452090B1 (en) 2005-04-25 2013-05-28 Apple Inc. Bayer reconstruction of images using a GPU
US7289127B1 (en) 2005-04-25 2007-10-30 Apple, Inc. Multi-conic gradient generation
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7844943B2 (en) 2005-06-20 2010-11-30 The Mathworks, Inc. System and method for providing indicators of textual items having intrinsic executable computational meaning within a graphical language environment
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8793576B2 (en) 2005-10-14 2014-07-29 Apple Inc. System and method for computing a desktop picture
JP4935047B2 (ja) * 2005-10-25 2012-05-23 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7483037B2 (en) 2005-10-27 2009-01-27 Apple, Inc. Resampling chroma video using a programmable graphics processing unit to provide improved color rendering
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US20070216696A1 (en) * 2006-03-16 2007-09-20 Toshiba (Australia) Pty. Limited System and method for document rendering employing bit-band instructions
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8156467B2 (en) 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
EP2802989A1 (en) * 2012-01-12 2014-11-19 Thomson Licensing Method and device for compiling a source program
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9235925B2 (en) * 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
GB2576375A (en) * 2018-08-17 2020-02-19 Uvue Ltd Transaction system and method of operation thereof
CN116521153A (zh) * 2022-01-20 2023-08-01 北京字跳网络技术有限公司 图形生成方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307452A (en) * 1990-09-21 1994-04-26 Pixar Method and apparatus for creating, manipulating and displaying images
EP0528631B1 (en) * 1991-08-13 1998-05-20 Xerox Corporation Electronic image generation
US5485568A (en) * 1993-10-08 1996-01-16 Xerox Corporation Structured image (Sl) format for describing complex color raster images
US5442738A (en) 1993-12-03 1995-08-15 Motorola, Inc. Computer display representing structure
US5877775A (en) * 1996-08-08 1999-03-02 Theisen; Karen E. Method of generating a 3-D representation of a hierarchical data structure

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE42847E1 (en) 1996-05-22 2011-10-18 Canon Kabushiki Kaisha Expression tree optimization for processing obscured graphical objects
JPH11272837A (ja) * 1997-12-22 1999-10-08 Adobe Syst Inc 頁記述言語におけるトランスペアレンシ処理
JPH11316831A (ja) * 1997-12-22 1999-11-16 Adobe Syst Inc レイヤを使用したイメージデータの混合
JP2001188915A (ja) * 1999-11-22 2001-07-10 Adobe Syst Inc イラストレーションアートワークの処理
JP4630475B2 (ja) * 2000-02-29 2011-02-09 キヤノン株式会社 画像処理装置及び方法
JP2001283213A (ja) * 2000-02-29 2001-10-12 Canon Inc 画像処理装置及び方法
JP4630482B2 (ja) * 2000-04-18 2011-02-09 キヤノン株式会社 表現ツリーを生成する装置及びラスタ画素イメージを描画する装置
JP2002056396A (ja) * 2000-04-18 2002-02-20 Canon Inc グラフィックオブジェクトイメージ描画方法及び装置
JP2010102721A (ja) * 2004-04-16 2010-05-06 Apple Inc グラフィックオペレーションのための高レベルプログラムインターフェース
JP2010102722A (ja) * 2004-04-16 2010-05-06 Apple Inc グラフィックオペレーションのための高レベルプログラムインターフェース
JP2010113724A (ja) * 2004-04-16 2010-05-20 Apple Inc グラフィックオペレーションのための高レベルプログラムインターフェース
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US9691118B2 (en) 2004-04-16 2017-06-27 Apple Inc. System for optimizing graphics operations
US10402934B2 (en) 2004-04-16 2019-09-03 Apple Inc. System for optimizing graphics operations

Also Published As

Publication number Publication date
DE69534558D1 (de) 2005-12-08
US6236410B1 (en) 2001-05-22
JP3618838B2 (ja) 2005-02-09
EP0694879B1 (en) 2005-11-02
DE69534558T2 (de) 2006-07-13
HK1013706A1 (en) 1999-09-03
EP0694879A3 (en) 1996-07-17
EP0694879A2 (en) 1996-01-31
AUPM704194A0 (en) 1994-08-18

Similar Documents

Publication Publication Date Title
JP3618838B2 (ja) 画像出力方法
JP3618839B2 (ja) 画像出力方法
US6014147A (en) Computer machine architecture for creating images from graphical elements and a method of operating the architecture
US5745121A (en) Methods and apparatus for optimizing the composition of graphical elements
US5724494A (en) Optimization method for the efficient production of images
JP3630726B2 (ja) 電子的構造化画像ジェネレータ
JP4796500B2 (ja) ベクトルグラフィックスのためのマークアップ言語およびオブジェクトモデル
JP4365950B2 (ja) 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US9477646B2 (en) Procedurally expressing graphic objects for web pages
JP4343344B2 (ja) ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法
JP4630482B2 (ja) 表現ツリーを生成する装置及びラスタ画素イメージを描画する装置
JP3797666B2 (ja) グラフィックオブジェクトの塗りつぶしをアクティブ化する方法および装置
US20040075699A1 (en) Method and apparatus for highlighting graphical objects
JP2000101829A (ja) 画像合成の最適化方法及び装置
JP3359634B2 (ja) 境界内更新を備えたグラフィックス出力システム
JP3347323B2 (ja) グラフィックスシステムにおけるグラフィックセグメント編成
JP4646436B2 (ja) デジタル画像の画像処理装置
AU695334B2 (en) Efficient methods for the compositing of graphical elements
AU695554B2 (en) Efficient methods for the evaluation of a graphical programming language
JP4143613B2 (ja) 描画方法、描画装置
AU694512B2 (en) Efficient methods for the interpretation of a graphical programming language
AU681963B2 (en) Optimization method for the efficient production of images
AU733038B2 (en) Efficient methods for the evaluation of a graphical programming language
AU695002B2 (en) Method and apparatus for the creation of images
Brandt Script-Focused Image Editor: Progrimage

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040914

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071119

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees