JPH01128166A - グラフィックイメージの編集方法 - Google Patents
グラフィックイメージの編集方法Info
- Publication number
- JPH01128166A JPH01128166A JP63256063A JP25606388A JPH01128166A JP H01128166 A JPH01128166 A JP H01128166A JP 63256063 A JP63256063 A JP 63256063A JP 25606388 A JP25606388 A JP 25606388A JP H01128166 A JPH01128166 A JP H01128166A
- Authority
- JP
- Japan
- Prior art keywords
- image
- editing
- program
- file
- character
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three-dimensional [3D] modelling for computer graphics
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—Two-dimensional [2D] image generation
- G06T11/60—Creating or editing images; Combining images with text
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Image Processing (AREA)
- Processing Or Creating Images (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
11上夏剋月次I
本発明はイメージ処理の分野、より詳細にはデジタル化
されたグラフィック イメージがイメージを形成する画
素の状態を変えることによって変換されるコンピュータ
グラフィックの分野に関する。
されたグラフィック イメージがイメージを形成する画
素の状態を変えることによって変換されるコンピュータ
グラフィックの分野に関する。
明の 徒的背
グラフィック イメージのハードウェアあるいはソフト
ウェアを使用して生成及び編集は周知である。さまざま
な製品がイメージを生成し、またソース、例えば、ビデ
オ カメラ、CCDスキャナ、デジタイザ、VCR、ビ
デオ ディスク プレーヤー等からコンピュータ メモ
リ内にイメージを格納することを可能にする。
ウェアを使用して生成及び編集は周知である。さまざま
な製品がイメージを生成し、またソース、例えば、ビデ
オ カメラ、CCDスキャナ、デジタイザ、VCR、ビ
デオ ディスク プレーヤー等からコンピュータ メモ
リ内にイメージを格納することを可能にする。
こうして格納されたイメージは構造化されたセットの画
素によって記述されるが、個々の画素はイメージの1つ
のドツトの属性、例えば、強度、色等を記述する。本発
明が最も関係するのはこのタイプのイメージ環境である
。このタイプのデジタル グラフィックイメージをどの
ようにイメージが生成するか無関係に編集できる必要性
がある。今日に至るまで、通常、イメージに関して遂行
される個々のグラフィック編集動作は専用ハードウェア
あるいはソフトウェアにて達成されてきた。ソフトウェ
ア分野においては、例えば、典型的には、グラフィック
ツールのライブラリーが生成された。個々のツールは
それが適用されるデジタル イメージ対して適合された
タイプの動作あるいは変換を提供する。例えば、あるツ
ールはイメージを回転し:あるものはイメージを縮め:
さらに別のツールはイメージのネガティブの生成を行な
う。それに対してルールが存在しない変換が要求される
ような場合は、ツールを符号化し、ライブラリーに加え
ることが必要である。ロバ−Graphics and
Image Processing)、1978年8
月1−15日開催において発表の論文[KAND I
DATS :対話型イメージ処理システム(KへNDI
DへTS:八n Interactive Ima
ge ProcessingSystem )] に
てこのタイプのシステムを議論する。
素によって記述されるが、個々の画素はイメージの1つ
のドツトの属性、例えば、強度、色等を記述する。本発
明が最も関係するのはこのタイプのイメージ環境である
。このタイプのデジタル グラフィックイメージをどの
ようにイメージが生成するか無関係に編集できる必要性
がある。今日に至るまで、通常、イメージに関して遂行
される個々のグラフィック編集動作は専用ハードウェア
あるいはソフトウェアにて達成されてきた。ソフトウェ
ア分野においては、例えば、典型的には、グラフィック
ツールのライブラリーが生成された。個々のツールは
それが適用されるデジタル イメージ対して適合された
タイプの動作あるいは変換を提供する。例えば、あるツ
ールはイメージを回転し:あるものはイメージを縮め:
さらに別のツールはイメージのネガティブの生成を行な
う。それに対してルールが存在しない変換が要求される
ような場合は、ツールを符号化し、ライブラリーに加え
ることが必要である。ロバ−Graphics and
Image Processing)、1978年8
月1−15日開催において発表の論文[KAND I
DATS :対話型イメージ処理システム(KへNDI
DへTS:八n Interactive Ima
ge ProcessingSystem )] に
てこのタイプのシステムを議論する。
このタイプのエディター(editor)のもう−例が
マイケル ランデイー (Michael Landy
)らによってコンピュータ ビジョン、グラフユニfメ
ージ処理(Computer Vjsion、 Gra
phics andImage Processing
) 、 25.331−347.1984年に発表の
論文[HIPS:A UNIX (AT&TのTM)
ベース イメージ処理システム]において記述されてい
る。後者の論文は新たな変換ツールの簡単な生成を可能
とするソフトウェア ツールCALCPIXを提供する
。
マイケル ランデイー (Michael Landy
)らによってコンピュータ ビジョン、グラフユニfメ
ージ処理(Computer Vjsion、 Gra
phics andImage Processing
) 、 25.331−347.1984年に発表の
論文[HIPS:A UNIX (AT&TのTM)
ベース イメージ処理システム]において記述されてい
る。後者の論文は新たな変換ツールの簡単な生成を可能
とするソフトウェア ツールCALCPIXを提供する
。
画素ストリーム エディター(pexel strea
meditor、 P S E )かに、パーリン(
K、perlin)によフて[イメージ シンセサイザ
イ(An ImageSynthesizer)]、A
CM、Vo1.9.No、3.1985年、ページ28
7〜296において記述されている。PSEはユーザが
イメージに対する変更を画素ベースにて画素の属性及び
事前に定義された数学的関数の点から定義することを可
能とするパワフルなグラフィック編集ルールである。
meditor、 P S E )かに、パーリン(
K、perlin)によフて[イメージ シンセサイザ
イ(An ImageSynthesizer)]、A
CM、Vo1.9.No、3.1985年、ページ28
7〜296において記述されている。PSEはユーザが
イメージに対する変更を画素ベースにて画素の属性及び
事前に定義された数学的関数の点から定義することを可
能とするパワフルなグラフィック編集ルールである。
例えば、個々の画素の1つの属性はその画素がイメージ
内に表わされる対象の表面上に存在するか否かを示す。
内に表わされる対象の表面上に存在するか否かを示す。
対象の表面テクスチュア(5urface textu
re)はホワイト ノイズ生成関数゛noise ()
”を表面属性をもつ画素に対する他の関数とともに適
用することにより修正できる。
re)はホワイト ノイズ生成関数゛noise ()
”を表面属性をもつ画素に対する他の関数とともに適
用することにより修正できる。
しかし、PSEはある時間に処理されている画素の属性
のみを巻き込む画素動作に制約される。
のみを巻き込む画素動作に制約される。
産業界におけるグラフィック技術の重要性の増大及びイ
メージ編集技術の限定された現状から考えるに、よりフ
レキシブルなイメージ編集手段を確保することは非常に
重要である。
メージ編集技術の限定された現状から考えるに、よりフ
レキシブルなイメージ編集手段を確保することは非常に
重要である。
灸叶曳貞1
グラフィクス及びイメージ技術における進展はグラフィ
ックイメージを編集するためにコンピュータを制御する
方法によって達成される。グラフィック イメージは整
列されたセットの画素から構成される。イメージの編集
はこれら画素の幾つかあるいは全ての状態をリアル タ
イムにて変えることによって達成される。コンピュータ
システムは対話的に人力としてイメージ変換関数をセ
ットの構文規則に従フて構成された1つあるいは複数の
命令文の形式で受信する。巳の関数は変えられるべきイ
メージの影響を受ける画素及びこの影響を受ける画素を
変えるための関係を定義する。この関係にはイメージの
1つあるいは複数の他の画素の状態への依存が含まれる
。システムは、ソフトウェアの制御下において、変換関
数を遂行するためのプログラム ステップのシーケンス
を自動的に生成する。
ックイメージを編集するためにコンピュータを制御する
方法によって達成される。グラフィック イメージは整
列されたセットの画素から構成される。イメージの編集
はこれら画素の幾つかあるいは全ての状態をリアル タ
イムにて変えることによって達成される。コンピュータ
システムは対話的に人力としてイメージ変換関数をセ
ットの構文規則に従フて構成された1つあるいは複数の
命令文の形式で受信する。巳の関数は変えられるべきイ
メージの影響を受ける画素及びこの影響を受ける画素を
変えるための関係を定義する。この関係にはイメージの
1つあるいは複数の他の画素の状態への依存が含まれる
。システムは、ソフトウェアの制御下において、変換関
数を遂行するためのプログラム ステップのシーケンス
を自動的に生成する。
好ましい実施態様においては、生成されたプログラム
ステップはそれらの生成の後にリアルタイムにて自動的
に実行される。もう1つの好ましい実施態様においては
、生成されたプログラムステップがイメージの個々の画
素に対して翻訳され個別に実行される。第2の実施態様
においては、生成されたプログラム ステップはオン
ザフライ(on−the−fly)にてマシン言語プロ
グラムにコンパイルされ、このマシン言語プログラムが
イメージの個々の画素に対して自動的に実行される。本
発明の範囲には他の実施態様も含まれることは勿論であ
る。変えられたイメージの新たな画素状態を定義する依
存には、変えられているイメージの他の画素への依存、
並びに他のファイル内に格納されたイメージの画素状態
への依存が含まれる。
ステップはそれらの生成の後にリアルタイムにて自動的
に実行される。もう1つの好ましい実施態様においては
、生成されたプログラムステップがイメージの個々の画
素に対して翻訳され個別に実行される。第2の実施態様
においては、生成されたプログラム ステップはオン
ザフライ(on−the−fly)にてマシン言語プロ
グラムにコンパイルされ、このマシン言語プログラムが
イメージの個々の画素に対して自動的に実行される。本
発明の範囲には他の実施態様も含まれることは勿論であ
る。変えられたイメージの新たな画素状態を定義する依
存には、変えられているイメージの他の画素への依存、
並びに他のファイル内に格納されたイメージの画素状態
への依存が含まれる。
プログラム ステップのシーケンスが人力命令文を解析
し、後者の実施態様においては、トークン値バーズ ス
トリング(parse string)をプログラム
ステップのシーケンスとして形成することによって、そ
して、トークンがバーズ ト リ −(parse t
ree)内のノードによって表わされる前者のコンパイ
ル型の実施態様においては、バーズトリーを形成するこ
とによって生成される。個々のトークン値は数あるいは
1つないし複数の数に適用されるべき演算子を表わす。
し、後者の実施態様においては、トークン値バーズ ス
トリング(parse string)をプログラム
ステップのシーケンスとして形成することによって、そ
して、トークンがバーズ ト リ −(parse t
ree)内のノードによって表わされる前者のコンパイ
ル型の実施態様においては、バーズトリーを形成するこ
とによって生成される。個々のトークン値は数あるいは
1つないし複数の数に適用されるべき演算子を表わす。
インタプリッタ−バージョンにおいては、バーズ トリ
ー内のトークン値がイメージの個々の画素に対してスタ
ック インタプリッタ−によって順次翻訳される。コン
パイル バージョンにおいては、バーズトリーがマシン
言語プログラムにコンパイルされ、これがイメージの個
々の画素に対して実行される。 。
ー内のトークン値がイメージの個々の画素に対してスタ
ック インタプリッタ−によって順次翻訳される。コン
パイル バージョンにおいては、バーズトリーがマシン
言語プログラムにコンパイルされ、これがイメージの個
々の画素に対して実行される。 。
二Jロ狂力」え朋
このセクションでは、ユーザがイメージ変換を実現する
ためにエディターといかにインタフェースするかの簡単
な説明を行なう。これは読者の理解の助けとなることを
意図するものである。このより詳細な説明は、ジエラー
ド ホルツマン(Gerard Holzmann)に
よってAT&Tゲタニカル ジャーナル(AT&T T
echnical Journal)、1987年3/
4月、ベージ2−13に掲載の論文[P I Co−ピ
クチャー エディター(PICO−A Picture
Editor)]において与えられている。この論文
は、ここでは、単に参考のために編入されるものである
。
ためにエディターといかにインタフェースするかの簡単
な説明を行なう。これは読者の理解の助けとなることを
意図するものである。このより詳細な説明は、ジエラー
ド ホルツマン(Gerard Holzmann)に
よってAT&Tゲタニカル ジャーナル(AT&T T
echnical Journal)、1987年3/
4月、ベージ2−13に掲載の論文[P I Co−ピ
クチャー エディター(PICO−A Picture
Editor)]において与えられている。この論文
は、ここでは、単に参考のために編入されるものである
。
個々の異なるタイプの変換に対して1つの専用のプログ
ラムを書くことを回避するために、エディターが殆ど全
てのタイプの変換を定義するのに十分にパワフルな命令
言語を使用すると便利である。このエディターはユーザ
命令を解析し、これらをプログラムに翻訳し、変換を遂
行するためにこのプログラムを実行する。この命令言語
は制御フロー文、例えば、条件付画素変換及びプログラ
ム実行ループを含む。この命令言語は、単純であり、最
も通常の選択を定義するデフォルトを含む。インタプリ
ッタ−バージョンの実施態様におけるプログラム実行ル
ープを遂行する機能は簡素化の目的から示されていない
。
ラムを書くことを回避するために、エディターが殆ど全
てのタイプの変換を定義するのに十分にパワフルな命令
言語を使用すると便利である。このエディターはユーザ
命令を解析し、これらをプログラムに翻訳し、変換を遂
行するためにこのプログラムを実行する。この命令言語
は制御フロー文、例えば、条件付画素変換及びプログラ
ム実行ループを含む。この命令言語は、単純であり、最
も通常の選択を定義するデフォルトを含む。インタプリ
ッタ−バージョンの実施態様におけるプログラム実行ル
ープを遂行する機能は簡素化の目的から示されていない
。
エディターのインタプリッタ−バージョンは、他の演算
子とともに、以下の数学的及び関係及び論理演算子を認
識する。
子とともに、以下の数学的及び関係及び論理演算子を認
識する。
八dd+(加算)
Subtract−(減算)
Multiply* (掛算)
Divide / (割算)
GT Greater than (より大きい
)LT Less than (より小さい)
GE Greater than or equ
al t、o (以上)LE I−ess シh
an (より小さい)EQ Equal to
(等しい)NE Not equal to
(等しくない)AND Logical ”an
d ” (論理“和°°)ORLogical “
or” (論理“OR”)−例としてこれら演算子の観
点から、例えば、0・・・2の範囲内の輝度値をもつイ
メージのネガティブを生成する変換は以下の1つの文に
よって定義できる。
)LT Less than (より小さい)
GE Greater than or equ
al t、o (以上)LE I−ess シh
an (より小さい)EQ Equal to
(等しい)NE Not equal to
(等しくない)AND Logical ”an
d ” (論理“和°°)ORLogical “
or” (論理“OR”)−例としてこれら演算子の観
点から、例えば、0・・・2の範囲内の輝度値をもつイ
メージのネガティブを生成する変換は以下の1つの文に
よって定義できる。
new=Z−old (1)ここで、°
“old”は1つのイメージを指し、” n e w
”は変換が適用された後のそのイメージを指す。この変
換はイメージのサイズあるいはそれがカラーであるか白
黒であるかには依存しない。” n e w ’”の個
々の画素状態は“’old”の対応する画素状態にのみ
依存する。
“old”は1つのイメージを指し、” n e w
”は変換が適用された後のそのイメージを指す。この変
換はイメージのサイズあるいはそれがカラーであるか白
黒であるかには依存しない。” n e w ’”の個
々の画素状態は“’old”の対応する画素状態にのみ
依存する。
上の表現(expression)がエディター内で小
さなプログラムに拡張されるが、これは、機能的にCプ
ログラミング言語にて書かれた以下の文と類似する。
さなプログラムに拡張されるが、これは、機能的にCプ
ログラミング言語にて書かれた以下の文と類似する。
for(y=o; y<Y; y++)for(x
=Q; X<X; X++)new[y”X+x]
=Z−old[y”X+x] ;イメージの左上コーナ
ーは画面座標系の原点の所に存在し、正のXは右を向き
、正のyは下を向く。X及びYは事前に定義された画素
内のイメージ編集バッファの幅及び高さを指定する定数
である。同様に、Zは半面に定義された最大輝度値を定
義する定数である。
=Q; X<X; X++)new[y”X+x]
=Z−old[y”X+x] ;イメージの左上コーナ
ーは画面座標系の原点の所に存在し、正のXは右を向き
、正のyは下を向く。X及びYは事前に定義された画素
内のイメージ編集バッファの幅及び高さを指定する定数
である。同様に、Zは半面に定義された最大輝度値を定
義する定数である。
イメージを90°回転するのには以下の少し複雑な文が
要求される。
要求される。
new[x、 yl = old[y、X
−xコ変えられたイメージ“n e w ”の画素は、
ここでは対応する同一の画素でなく“old”の画素の
状態に依存することに注意する。同様に、命令new[
x、 yl = old[y、 x]は編集されたイメ
ージに対するXとy座標を交換することによってイメー
ジを転置する。
−xコ変えられたイメージ“n e w ”の画素は、
ここでは対応する同一の画素でなく“old”の画素の
状態に依存することに注意する。同様に、命令new[
x、 yl = old[y、 x]は編集されたイメ
ージに対するXとy座標を交換することによってイメー
ジを転置する。
上のような変換文は、画素の座標、変数、古い画素の値
、あるいはこれらの任意の算術上の組合せに基づく。上
の例の文は単一表現(singleexpressio
n)にておおむね標準の編集動作を記述する。単一の演
算表現に簡単にまとめることのできない変換に対しては
、ユーザはより明示的な編集プロシジャ及びプログラム
を定義する必要がある。これに関しては、上に述べたA
T&Tテクニカル ジャーナルの論文において説明され
ている。
、あるいはこれらの任意の算術上の組合せに基づく。上
の例の文は単一表現(singleexpressio
n)にておおむね標準の編集動作を記述する。単一の演
算表現に簡単にまとめることのできない変換に対しては
、ユーザはより明示的な編集プロシジャ及びプログラム
を定義する必要がある。これに関しては、上に述べたA
T&Tテクニカル ジャーナルの論文において説明され
ている。
2つのイメージ°’ imagel“とimage2”
の平均は new = ($imagel+$image2
)/ 2のように表現できる。ここで、 $imag
elは、例えば、イメージ1の全体としての内容を指す
。あるいは同様に、 new = ($imagel ” $image2)
/ Zのように表現できる。これらの両者とも全ての画
素の適用する無条件変換である。条件表現も可能であり
、以下のような形式をとる。
の平均は new = ($imagel+$image2
)/ 2のように表現できる。ここで、 $imag
elは、例えば、イメージ1の全体としての内容を指す
。あるいは同様に、 new = ($imagel ” $image2)
/ Zのように表現できる。これらの両者とも全ての画
素の適用する無条件変換である。条件表現も可能であり
、以下のような形式をとる。
(condition)? (iftrue) : (
iffalse)例えば、以下の表現 new = (x<256)?(imagel+i
mage2)/2:Z−image2は256(つまり
、画素アレイの最も左の256カラム)より小さいX座
標をもつ全ての画素に対する2つのイメージの平均及び
他の全ての画素に対するイメージの1つのネガティブを
定義する。
iffalse)例えば、以下の表現 new = (x<256)?(imagel+i
mage2)/2:Z−image2は256(つまり
、画素アレイの最も左の256カラム)より小さいX座
標をもつ全ての画素に対する2つのイメージの平均及び
他の全ての画素に対するイメージの1つのネガティブを
定義する。
イメージ°“imagel”は以下のような入れ子条件
変換によってもう1つのイメージ“image2”にゆ
っくりとフェード(fade)することができる。
変換によってもう1つのイメージ“image2”にゆ
っくりとフェード(fade)することができる。
new = (x<X/3)?$imagel:(
x>X”2/3)?$image2:3 \3’ (
(x−X/3)”$imagel+ (X’2/3−x
) ”$image2)/X次に本発明によりエディタ
ーの詳細に説明に移る。
x>X”2/3)?$image2:3 \3’ (
(x−X/3)”$imagel+ (X’2/3−x
) ”$image2)/X次に本発明によりエディタ
ーの詳細に説明に移る。
詳m側明
本発明によるイメージ エディター(imageedi
tor)は第1図に示されるようなシステムを制御する
ために使用される。ユーザはコンピュータ102に命令
を人力するために人力デバイス100、例えば、キーボ
ードへのアクセスが許される。コンピュータ102はマ
イクロコンピュータあるいはメインフレーム コンピュ
ータ、例えば、ATT(八merican Te1ep
hone& TelegramCompany、 In
corporated)から市販されているVAx71
1.3B20コンピユータを使用することもでき、さら
に事実上、あらゆるタイプの汎用あるいは卓上コンピュ
ータを使用することができる。グラフィック デイスプ
レィ デバイス104がコンピュータ102によってイ
メージファイルを表示し、イメージ エディターによっ
て遂行される編集作業の結果を示すのに用いられる。イ
メージ エディターは主メモリ106内に常駐するが、
ここから読み出されエディターが実行されるべきときコ
ンピュータの動作を制御するためにコンピュータ102
の内部メモリにロードされる。別の方法として、第1図
のシステムは他の形式のシステム、例えば、回路あるい
は読出し専用メモリ(ROM)内に含まれたプログラム
にてエディターの機能を遂行するワークステーション
タイプの構成に実現することもできる。
tor)は第1図に示されるようなシステムを制御する
ために使用される。ユーザはコンピュータ102に命令
を人力するために人力デバイス100、例えば、キーボ
ードへのアクセスが許される。コンピュータ102はマ
イクロコンピュータあるいはメインフレーム コンピュ
ータ、例えば、ATT(八merican Te1ep
hone& TelegramCompany、 In
corporated)から市販されているVAx71
1.3B20コンピユータを使用することもでき、さら
に事実上、あらゆるタイプの汎用あるいは卓上コンピュ
ータを使用することができる。グラフィック デイスプ
レィ デバイス104がコンピュータ102によってイ
メージファイルを表示し、イメージ エディターによっ
て遂行される編集作業の結果を示すのに用いられる。イ
メージ エディターは主メモリ106内に常駐するが、
ここから読み出されエディターが実行されるべきときコ
ンピュータの動作を制御するためにコンピュータ102
の内部メモリにロードされる。別の方法として、第1図
のシステムは他の形式のシステム、例えば、回路あるい
は読出し専用メモリ(ROM)内に含まれたプログラム
にてエディターの機能を遂行するワークステーション
タイプの構成に実現することもできる。
エディターの一例としてのブロック構造が第2図に示さ
れる。これはレクシカル アナライザー200 (le
xical analyzer)、パーザ−(pars
er)202、ファイル ハンドラ204、及びインタ
プリッタ−あるいはコンパイラ206から構成される。
れる。これはレクシカル アナライザー200 (le
xical analyzer)、パーザ−(pars
er)202、ファイル ハンドラ204、及びインタ
プリッタ−あるいはコンパイラ206から構成される。
人力デバイス208の所でユーザによってタイプされた
文字はレクシカル アナライザー200によって処理さ
れ、この結果がパーザ−202にパスされる。パーザ−
は次に適当な行動を起す。例えば、入力文字゛r”は主
メモリ内のファイル システム212から存在するイメ
ージファイルを内部メモリ内のバッファ210に編集の
ためにあるいは別のイメージの編集に使用されるべきソ
ースとして読み込む命令を意味する場合がある。この場
合、新ライン文字(キャリッジリターンあるいはライン
フィード)までの続く文字が所望のイメージのファイル
名を意味することとなる。内部メモリ内の一時バッファ
210とファイル システム212の間のイメージの読
み出し及び書き込みを制御するファイル ハンドラがそ
の後このファイル ロード動作を遂行するために呼び出
される。一方、レクシカル アナライザーに人力された
文字が編集命令を形成することもある。
文字はレクシカル アナライザー200によって処理さ
れ、この結果がパーザ−202にパスされる。パーザ−
は次に適当な行動を起す。例えば、入力文字゛r”は主
メモリ内のファイル システム212から存在するイメ
ージファイルを内部メモリ内のバッファ210に編集の
ためにあるいは別のイメージの編集に使用されるべきソ
ースとして読み込む命令を意味する場合がある。この場
合、新ライン文字(キャリッジリターンあるいはライン
フィード)までの続く文字が所望のイメージのファイル
名を意味することとなる。内部メモリ内の一時バッファ
210とファイル システム212の間のイメージの読
み出し及び書き込みを制御するファイル ハンドラがそ
の後このファイル ロード動作を遂行するために呼び出
される。一方、レクシカル アナライザーに人力された
文字が編集命令を形成することもある。
レクシカル アナライザーア200はユーザ人力の事前
に定義された文字シーケンスをスキャンする。これらシ
ーケンスが単一文字のトークンと置換され、これらがパ
ーザ−202にパスされる。8文字シーケンス、例えば
、“’ n e w =x * * y ”が5つのト
ークンのシーケンス(NEW、=、x、POW、及びy
)としてレクシカル アナライザーからパーザ−にパス
される。フル キャピタルはここでは単一トークンを示
すのに用いられる。つまり、事前に定義された人力スト
リング、例えば、new”が単一文字トークンNEWと
置換される。パーザ−は上のトークンシーケンスを割当
演算子“=パからの割当命令とみなす。これは最初のト
ークンNEWを割当先として覚え最後の3つのトークン
を1つの表現(expression)として解析する
。これは次に編集中のイメージ内の影響を受ける画素に
対する割41′J動作(変換)を遂行するためのプログ
ラムを構築する。この例においては、206がインタプ
リッタ−であるときは、インタプリッタ−によって実行
される生成されたプログラムは編集バッファ内のイメー
ジの個々の画素に対する新たな値x * f yを計算
する。ここで*5はべき乗を意味する。編集されたイメ
ージの全ての画素はそうでなければべき乗命令の範囲を
制限する命令文が存在しないためデ゛フォルトによって
影響を受ける。206がコンパイラである場合は、生成
されたプログラムはオン ザ フライ(on−the−
fly)にて自動的にコンパイルされ、コンパイルされ
たプログラムが上の動作を遂行する。
に定義された文字シーケンスをスキャンする。これらシ
ーケンスが単一文字のトークンと置換され、これらがパ
ーザ−202にパスされる。8文字シーケンス、例えば
、“’ n e w =x * * y ”が5つのト
ークンのシーケンス(NEW、=、x、POW、及びy
)としてレクシカル アナライザーからパーザ−にパス
される。フル キャピタルはここでは単一トークンを示
すのに用いられる。つまり、事前に定義された人力スト
リング、例えば、new”が単一文字トークンNEWと
置換される。パーザ−は上のトークンシーケンスを割当
演算子“=パからの割当命令とみなす。これは最初のト
ークンNEWを割当先として覚え最後の3つのトークン
を1つの表現(expression)として解析する
。これは次に編集中のイメージ内の影響を受ける画素に
対する割41′J動作(変換)を遂行するためのプログ
ラムを構築する。この例においては、206がインタプ
リッタ−であるときは、インタプリッタ−によって実行
される生成されたプログラムは編集バッファ内のイメー
ジの個々の画素に対する新たな値x * f yを計算
する。ここで*5はべき乗を意味する。編集されたイメ
ージの全ての画素はそうでなければべき乗命令の範囲を
制限する命令文が存在しないためデ゛フォルトによって
影響を受ける。206がコンパイラである場合は、生成
されたプログラムはオン ザ フライ(on−the−
fly)にて自動的にコンパイルされ、コンパイルされ
たプログラムが上の動作を遂行する。
エディターのインタプリッタ一実施態様がここに詳細に
説明される。コンパイラ実施態様の機能は上に言及のA
T&Tテクニカル ジャーナル(AT&T Techn
ical Journal)の論文に説明されている。
説明される。コンパイラ実施態様の機能は上に言及のA
T&Tテクニカル ジャーナル(AT&T Techn
ical Journal)の論文に説明されている。
この2つの実施態様の間の大きな相違はここに説明され
るコードのインタプリッタ部分がオンザ フライ コン
パイラにて置換されていることである。ここでの教示の
観点からは、この修正は従来のものであり、コンパイラ
分野の専門家であれば容易に達成できるものである。
るコードのインタプリッタ部分がオンザ フライ コン
パイラにて置換されていることである。ここでの教示の
観点からは、この修正は従来のものであり、コンパイラ
分野の専門家であれば容易に達成できるものである。
−例として、Cプログラミング言語にて書かれたエディ
ターのソース コード(source code)が第
1表から第14表に示される。Cプログラミング言語は
周知であり、さまざまな出版物に記述されている。ここ
では、専門家であわばコードを注意深く読み、またCプ
ログラミング言語の理解があればエディターの動作は容
易に理解できるためソース コードの重要な点に関して
のみ詳細に説明する。
ターのソース コード(source code)が第
1表から第14表に示される。Cプログラミング言語は
周知であり、さまざまな出版物に記述されている。ここ
では、専門家であわばコードを注意深く読み、またCプ
ログラミング言語の理解があればエディターの動作は容
易に理解できるためソース コードの重要な点に関して
のみ詳細に説明する。
全てのCプログラムはmain()プロシジャ(pro
cedure)から開始する。エディターに対するma
in()プロシジャが第1表に示される。
cedure)から開始する。エディターに対するma
in()プロシジャが第1表に示される。
main()はエディターをその後の動作のために初期
化する。main() 、及び後に説明の他のエディタ
ー プロシジャは第14表に示される見出しファイルp
opi浦を用いて複数の定数を定義する。データ構造”
s r c ”がまたライン25から27の所にpo
pi、hにて二次元文字構造として定義されている。こ
のデータ構造のメンバーはデジタル イメージ ファイ
ルをコンピュータの内部に格納するために用いられる。
化する。main() 、及び後に説明の他のエディタ
ー プロシジャは第14表に示される見出しファイルp
opi浦を用いて複数の定数を定義する。データ構造”
s r c ”がまたライン25から27の所にpo
pi、hにて二次元文字構造として定義されている。こ
のデータ構造のメンバーはデジタル イメージ ファイ
ルをコンピュータの内部に格納するために用いられる。
第1表に再び戻り、main()のライン8はナンバー
MANYの複数の内部バッファを確立するためにpop
i、hでのSRCの定義を用いる。ここで、MANYは
−・例としてpopi、hで128と定義される。上に
説明のごとく、src[MANY]の個々のメンバーは
必要に応じてイメージ デ〜りをファイル システム内
のイメージ ファイルからのデータ ソースとして格納
するために用いられる。たたし、最初の2つのメンバー
、src[0]及びsrc [1]は編集バッファとし
て用いられる。イメージ データ構造のフォーマットは
ここに開示の実施態様においては一例として1バイト/
画素であり、スキャンライン当たりDEF SZ画素
、そしてイメージ当たりDEF SZスキャンライン
含む。
MANYの複数の内部バッファを確立するためにpop
i、hでのSRCの定義を用いる。ここで、MANYは
−・例としてpopi、hで128と定義される。上に
説明のごとく、src[MANY]の個々のメンバーは
必要に応じてイメージ デ〜りをファイル システム内
のイメージ ファイルからのデータ ソースとして格納
するために用いられる。たたし、最初の2つのメンバー
、src[0]及びsrc [1]は編集バッファとし
て用いられる。イメージ データ構造のフォーマットは
ここに開示の実施態様においては一例として1バイト/
画素であり、スキャンライン当たりDEF SZ画素
、そしてイメージ当たりDEF SZスキャンライン
含む。
ここで、DEF SZは定数値であり、これもpop
i、hにて定義される。他の構造、例えば、カラー イ
メージ及びさまざまなイメージ サイズに対する多重バ
イト/画素を用いることもできることは勿論である。
i、hにて定義される。他の構造、例えば、カラー イ
メージ及びさまざまなイメージ サイズに対する多重バ
イト/画素を用いることもできることは勿論である。
ファイルが最初編集のために読み出されると、これは2
つのバッファsrc[o]あるいはsrC[1]のいず
れか1つの中に置かれる。実施のソース コードにおい
ては、選択されたバッファはsrc [CUROLD]
としてアドレスされる。編集動作の後、編集されたファ
イルは編集バッファsrc [0]あるいはsrc [
1]の残りの1つのなかに置かれる。ソース コードに
おいては、このバッファはs r c [CU RN
E W ]と呼ばれる。src [CUROLDコ及び
src[CURNEW]はmain()のライン19か
ら22の所に確立される。src [CURNEWコに
編集されたイメージ ) ァ イルがロードされた後、
src [CURNEWコ及びsrc[CUROLD]
の内容が新たに編集されたファイルがここで古いファイ
ルとして扱われるようにスワップされる。これは増分ス
テージ(incremental stages)に退
出することを許す。これはまたワン レベル“アントウ
ー(undo)”動作の遂行を楽にする。
つのバッファsrc[o]あるいはsrC[1]のいず
れか1つの中に置かれる。実施のソース コードにおい
ては、選択されたバッファはsrc [CUROLD]
としてアドレスされる。編集動作の後、編集されたファ
イルは編集バッファsrc [0]あるいはsrc [
1]の残りの1つのなかに置かれる。ソース コードに
おいては、このバッファはs r c [CU RN
E W ]と呼ばれる。src [CUROLDコ及び
src[CURNEW]はmain()のライン19か
ら22の所に確立される。src [CURNEWコに
編集されたイメージ ) ァ イルがロードされた後、
src [CURNEWコ及びsrc[CUROLD]
の内容が新たに編集されたファイルがここで古いファイ
ルとして扱われるようにスワップされる。これは増分ス
テージ(incremental stages)に退
出することを許す。これはまたワン レベル“アントウ
ー(undo)”動作の遂行を楽にする。
ユーザがエディターを最初にランするとき、これを行な
う命令がイメージ ファイルのリストを含むことがある
。この場合は、ライン31及び32の所のコードはイメ
ージ ファイルを必要な数だけのバッファsrc [2
] 、src [3]・・・に読み込む。これらバッフ
ァの内容は人力命令内においてバッファ内に含まれるフ
ァイルの名前の前に、例えば、” new=$imag
e2°゛のように$を前に置くことによって参照される
。ここで、“new=$image2°゛はその内部バ
ッファから”image2°゛を編集バッファsrc[
CUR,NEW]に読み込む。次に、ライン34がプロ
シジャparse()を呼び出す。
う命令がイメージ ファイルのリストを含むことがある
。この場合は、ライン31及び32の所のコードはイメ
ージ ファイルを必要な数だけのバッファsrc [2
] 、src [3]・・・に読み込む。これらバッフ
ァの内容は人力命令内においてバッファ内に含まれるフ
ァイルの名前の前に、例えば、” new=$imag
e2°゛のように$を前に置くことによって参照される
。ここで、“new=$image2°゛はその内部バ
ッファから”image2°゛を編集バッファsrc[
CUR,NEW]に読み込む。次に、ライン34がプロ
シジャparse()を呼び出す。
第1表のライン37の所から始まるparse()はユ
ーザによって人力された命令を解析する。いったん初期
化されると、parse()はユーザによって中止命令
(quit command)が入力されるまで、ある
いは動作のエラーが発生するまでランする。
ーザによって人力された命令を解析する。いったん初期
化されると、parse()はユーザによって中止命令
(quit command)が入力されるまで、ある
いは動作のエラーが発生するまでランする。
parse()は主に第2表のライン43の所から始ま
るC言語スイッチ文から構成される。スイッチ文(sw
itch statement)は、一方、一連のケー
ス文(case statement)から構成される
。スイッチ文の個々の実行において、ケース文の1つが
ケース交円の引き数のスイッチ文への入力パラメータと
の一致に依存して実行される。ここでは、スイッチ文へ
のこの人力パラメータは変数”lat”(レクシカル
アナライザー トークン)の内容であり、これは、先に
述べたようなトークンを含み、これは第2表のライン4
3においてプロシジャIex()によって初期化される
。tex()に関しては下で説明される。要約すると、
1ex()は単一・文字トークンをリターンするが、こ
れは前述のようにユーザによって人力された文字、ある
いはユーザによって入力された文字の所定のストリング
と置換された1つの専用文字(special cha
racter)である。parse()はそれがファイ
ル ハンドリング文字であるか制御文字であるか決定す
るためにトークンを調べる。これは第2表のライン44
から59の所に来る。この実施態様においては、ファイ
ル ハンドリングに及び制御命令は以下の通りである。
るC言語スイッチ文から構成される。スイッチ文(sw
itch statement)は、一方、一連のケー
ス文(case statement)から構成される
。スイッチ文の個々の実行において、ケース文の1つが
ケース交円の引き数のスイッチ文への入力パラメータと
の一致に依存して実行される。ここでは、スイッチ文へ
のこの人力パラメータは変数”lat”(レクシカル
アナライザー トークン)の内容であり、これは、先に
述べたようなトークンを含み、これは第2表のライン4
3においてプロシジャIex()によって初期化される
。tex()に関しては下で説明される。要約すると、
1ex()は単一・文字トークンをリターンするが、こ
れは前述のようにユーザによって人力された文字、ある
いはユーザによって入力された文字の所定のストリング
と置換された1つの専用文字(special cha
racter)である。parse()はそれがファイ
ル ハンドリング文字であるか制御文字であるか決定す
るためにトークンを調べる。これは第2表のライン44
から59の所に来る。この実施態様においては、ファイ
ル ハンドリングに及び制御命令は以下の通りである。
q 中止
f イメージ ファイル名をリスト
r イメージ ファイルを編集バッファに読み込む
W 編集バッファから永久イメージ ファイルを書き込
む a ファイルを非編集バッファ5rc[2]・・・に読
み込む これら命令の意味は明白であり、これらを遂行するため
の開示のコードも明らかであるためこれらのさらに詳細
な説明は必要でない。
む a ファイルを非編集バッファ5rc[2]・・・に読
み込む これら命令の意味は明白であり、これらを遂行するため
の開示のコードも明らかであるためこれらのさらに詳細
な説明は必要でない。
ライン43の所で検索されたトークンがファイル ハン
ドリング命令でも制御命令でもないときは、このトーク
ンは編集バッファsrc [CUROLDI内に格納さ
れたイメージに加えられるへき変換表現(transf
ormation expression)の開始ある
いは一部であるはずである。この場合は、第2表のライ
ン60はこの表現を集めて解析するためにtransf
ormation()と呼ばれるプロシジャを実行する
。
ドリング命令でも制御命令でもないときは、このトーク
ンは編集バッファsrc [CUROLDI内に格納さ
れたイメージに加えられるへき変換表現(transf
ormation expression)の開始ある
いは一部であるはずである。この場合は、第2表のライ
ン60はこの表現を集めて解析するためにtransf
ormation()と呼ばれるプロシジャを実行する
。
transformation()プロシジャの説明に
進む前に、レクシカル アナライザー1ex()の説明
を行なうのが適当である。
進む前に、レクシカル アナライザー1ex()の説明
を行なうのが適当である。
1ex()が第4表及び第5表に示される。これは第6
表から第9表に示されるパーザ−のさまざまな箇所にお
いて呼び出され、トークン及び、場合によっては、1つ
の文字ストリング及び/あるいはそれぞれ変数”tex
t”及び’1exval”内の1つの値をリターンする
。リターンされるトークンにはNEW及びOLD 、並
びに1つ以上の文字から成る専用演算子、例えば、’>
=’(等しいかそれより大きい)、’ !=’ (
等しくない)、及び’&&’(論理AND)を含む。t
ex()はイメージ ファイルの名前が人力されたとき
これを決定し、これは数値文字を整数に変換する。レフ
シカ2 フ ル アナライザーによって専用の事前に定義された文字
シーケンスの一部として認識されない個々の文字はパー
ザ−にタッチされないままそのascii値と等しいコ
ードとともにバスされる。従って、命令new[x、y
l=old[y、x−1]内のx、y及びy、x−1は
そのまま表現(expression)としてパーザ−
にパスされる。これら表現を含むパーズストリングに終
局的に働きかけるのはインタプリ。
表から第9表に示されるパーザ−のさまざまな箇所にお
いて呼び出され、トークン及び、場合によっては、1つ
の文字ストリング及び/あるいはそれぞれ変数”tex
t”及び’1exval”内の1つの値をリターンする
。リターンされるトークンにはNEW及びOLD 、並
びに1つ以上の文字から成る専用演算子、例えば、’>
=’(等しいかそれより大きい)、’ !=’ (
等しくない)、及び’&&’(論理AND)を含む。t
ex()はイメージ ファイルの名前が人力されたとき
これを決定し、これは数値文字を整数に変換する。レフ
シカ2 フ ル アナライザーによって専用の事前に定義された文字
シーケンスの一部として認識されない個々の文字はパー
ザ−にタッチされないままそのascii値と等しいコ
ードとともにバスされる。従って、命令new[x、y
l=old[y、x−1]内のx、y及びy、x−1は
そのまま表現(expression)としてパーザ−
にパスされる。これら表現を含むパーズストリングに終
局的に働きかけるのはインタプリ。
ツタ−であり、これはこれら表現の文を遂行し、イメー
ジ内の任意の画素へのランダム アクセスを提供する。
ジ内の任意の画素へのランダム アクセスを提供する。
ユーザからの次の文字はライン16の所で得られ、変数
“C”′に割り当てられる。ライン19はプロシジャi
sdigit()を用いて文字が数であるか決定する。
“C”′に割り当てられる。ライン19はプロシジャi
sdigit()を用いて文字が数であるか決定する。
数でない場合は、ライン21はその文字がアルファベッ
ト文字a−Zであるか、あるいはA−2であるかを決定
する。isdigit()及び1salpha()は標
準Cライブラリー ルーチンである。これらは引き数が
それぞれ数字あるいは文字である場合“C”内に非ゼロ
結果をリターンする。新文字が数字である場合は、プロ
シジャgetvalue()が第5表のライン41の所
で実行される。getvalue()はそれらが数字で
あるかぎり追加の人力文字をスキャンし、この数字スト
リングの値を計算する。この値はその後の使用のために
変数“1exval”内に格納される。これが行なわれ
ると、getvalue()は解析のために°゛C”内
にトークンVALUEをリターンし、また数字ストリン
グの値を’1exval”内にリターンする。リターン
されたトークン及び変数の内容はバーズ ストリングp
arsed”内に置かれる。数字でない最後の入力文字
はライン47において後の処理のために文字入カストリ
ーム内に押し戻される。バーズ ストリング内の文字の
最終シーケンスはインタプリッタ一実施態様におけるイ
メージ変換を遂行するための生成されたプログラム、あ
るいはコンピュータ実施態様におけるコンパイラのため
のソースを表わす。
ト文字a−Zであるか、あるいはA−2であるかを決定
する。isdigit()及び1salpha()は標
準Cライブラリー ルーチンである。これらは引き数が
それぞれ数字あるいは文字である場合“C”内に非ゼロ
結果をリターンする。新文字が数字である場合は、プロ
シジャgetvalue()が第5表のライン41の所
で実行される。getvalue()はそれらが数字で
あるかぎり追加の人力文字をスキャンし、この数字スト
リングの値を計算する。この値はその後の使用のために
変数“1exval”内に格納される。これが行なわれ
ると、getvalue()は解析のために°゛C”内
にトークンVALUEをリターンし、また数字ストリン
グの値を’1exval”内にリターンする。リターン
されたトークン及び変数の内容はバーズ ストリングp
arsed”内に置かれる。数字でない最後の入力文字
はライン47において後の処理のために文字入カストリ
ーム内に押し戻される。バーズ ストリング内の文字の
最終シーケンスはインタプリッタ一実施態様におけるイ
メージ変換を遂行するための生成されたプログラム、あ
るいはコンピュータ実施態様におけるコンパイラのため
のソースを表わす。
文字が第4表のライン21の所で文字である場合は、プ
ロシジャgetstring()が事前に定義された文
字シーケンスが存在するか決定するために追加の人力文
字をスキャンする。存在する場合は、geLstrin
g()はC″内に定義されたストリングを表わすトーク
ンをリターンする。これらの・トークンのなかには、こ
の−例としての実施態様においては、“新”に対するN
EW、”旧°′に対するOLD、文字の未定義ストリン
グに対するNAME、及びストリングがオープン イメ
ージファイル名を表わす場合のFNAMEが含まれる。
ロシジャgetstring()が事前に定義された文
字シーケンスが存在するか決定するために追加の人力文
字をスキャンする。存在する場合は、geLstrin
g()はC″内に定義されたストリングを表わすトーク
ンをリターンする。これらの・トークンのなかには、こ
の−例としての実施態様においては、“新”に対するN
EW、”旧°′に対するOLD、文字の未定義ストリン
グに対するNAME、及びストリングがオープン イメ
ージファイル名を表わす場合のFNAMEが含まれる。
現人力文字が定義されたストリングの一部であることが
発見されない場合は、この現文字は”c”内に解析のた
めに現トークンとしてリターンされる。
発見されない場合は、この現文字は”c”内に解析のた
めに現トークンとしてリターンされる。
第4表のライン24の所のスイッチ文がここで“C”内
の現トークンを解析するが、これは、getvalue
()からのVALUEであることも、getstrin
g()からのNAMEあるいはFNAMEであることも
、あるいはユーザ入力文字であることもある。ここでは
、このケース文がライン25の所で1つの解析例として
用いられている。この文は”raise to a p
ower (べき乗)°°動作を期待するが、この動作
は2つの連続する“1“によって表わされる。これはこ
れを遂行するために第5表のライン75の所でプロシジ
ャfollow()を用いる。現トークンが“1゛°で
ある場合は、第4表のライン25の所の°“c=foL
]ow() ”文は続く人力文字も°“1”である場合
は“C゛を新トークンPOWにセットする。そうでない
場合は、” c ”の現在の値が保持される。第4表の
ライン26から31は他の演算及び論理演算子に対して
類似の解析動作を遂行する。
の現トークンを解析するが、これは、getvalue
()からのVALUEであることも、getstrin
g()からのNAMEあるいはFNAMEであることも
、あるいはユーザ入力文字であることもある。ここでは
、このケース文がライン25の所で1つの解析例として
用いられている。この文は”raise to a p
ower (べき乗)°°動作を期待するが、この動作
は2つの連続する“1“によって表わされる。これはこ
れを遂行するために第5表のライン75の所でプロシジ
ャfollow()を用いる。現トークンが“1゛°で
ある場合は、第4表のライン25の所の°“c=foL
]ow() ”文は続く人力文字も°“1”である場合
は“C゛を新トークンPOWにセットする。そうでない
場合は、” c ”の現在の値が保持される。第4表の
ライン26から31は他の演算及び論理演算子に対して
類似の解析動作を遂行する。
類似の動作がライン32−35の所のコードによって遂
行される。ライン32は“排他的OR”演算子を認識す
る。ライン33から35は事前に定義された入力定数を
認識する。具体的には、定数Z、x及びYはそれぞれ画
素に対する最大輝度、イメージの最大幅及び最大高さを
表わす。
行される。ライン32は“排他的OR”演算子を認識す
る。ライン33から35は事前に定義された入力定数を
認識する。具体的には、定数Z、x及びYはそれぞれ画
素に対する最大輝度、イメージの最大幅及び最大高さを
表わす。
現在゛c ”内に存在する解析されたトークン(par
sed token)は、ライン38の所で発呼プロシ
ジャにリターンされる。ただし、第5表のライン78の
所でfollow()によって読゛み出された最後のユ
ーザ人力文字は発呼プロシジャにリターンされる前に後
の使用のためにユーザ人力文字ストリーム内に戻すこと
が必要である。ライン85の所のプロシジャpushb
ack (c)はCライブラリー プロシジャunge
tc(c、5tdin)を用いてこれを達成するが、こ
こで、“C′”は文字を含み、5tdinはユーザ キ
ーボードから人力された標準文字を指す。
sed token)は、ライン38の所で発呼プロシ
ジャにリターンされる。ただし、第5表のライン78の
所でfollow()によって読゛み出された最後のユ
ーザ人力文字は発呼プロシジャにリターンされる前に後
の使用のためにユーザ人力文字ストリーム内に戻すこと
が必要である。ライン85の所のプロシジャpushb
ack (c)はCライブラリー プロシジャunge
tc(c、5tdin)を用いてこれを達成するが、こ
こで、“C′”は文字を含み、5tdinはユーザ キ
ーボードから人力された標準文字を指す。
レクシカル アナライザーからリターンされたトークン
は2つの異なる属性をもつ。数値トークンは整数の変数
“1exval”内に格納された1つの値属性をもつ。
は2つの異なる属性をもつ。数値トークンは整数の変数
“1exval”内に格納された1つの値属性をもつ。
単一の非数字文字あるいは事前に定義された文字シーケ
ンスを表わすトークンはアレイ゛’text”内に格納
された文字ストリング属性をもつ。FNAMEのタイプ
のトークンは値及び文字ストリング属性の両方をもつ。
ンスを表わすトークンはアレイ゛’text”内に格納
された文字ストリング属性をもつ。FNAMEのタイプ
のトークンは値及び文字ストリング属性の両方をもつ。
FNAME トークンはオープン イメージ ファイル
を指す。
を指す。
このストリング属性はファイル名を与え、この値属性は
ファイル内容か読み込まれているバッファ210に対す
るインデックスである。
ファイル内容か読み込まれているバッファ210に対す
るインデックスである。
さらに幾つかのCライブラリー ルーチンがレクシカル
アナライザー内で使用されるが、これらが完全を期す
ために以下に要約される。5trlen(str)
(ライン70)はユーザ人力ストリング内の文字の数を
リターンし、strcmp (s’trl、 s Lr
2)は2つのストリング5trl及び5tr2が同一で
あるときはゼロをリターンする。
アナライザー内で使用されるが、これらが完全を期す
ために以下に要約される。5trlen(str)
(ライン70)はユーザ人力ストリング内の文字の数を
リターンし、strcmp (s’trl、 s Lr
2)は2つのストリング5trl及び5tr2が同一で
あるときはゼロをリターンする。
第7表内のプロシジャtransformation(
)は第6表から開始する全体としてのパーザ−プロシジ
ャexpr()の一部である。第6表内のパーザ−の部
分は後に適当な時点において説明される。
)は第6表から開始する全体としてのパーザ−プロシジ
ャexpr()の一部である。第6表内のパーザ−の部
分は後に適当な時点において説明される。
前述のごとく、transformationOは第2
表内のmain()のライン60から呼び出しされる。
表内のmain()のライン60から呼び出しされる。
transformation()は人力文字シーケン
ス、例えば、“NEW [x、 yl =comman
d”を見ることを期待する。この人力シーケンスはjr
ansformation()にトークンNEWとして
到達し、これに文字’[’、xインデックスに対する数
、トークン°、°、yインデックスに対するもう1つの
数、トークン°=゛及びNEW[x、ylに指定された
値に対する表現を表わすトークンの最終ストリングが続
く。第7表内のコードはこのシーケンスのある部分が失
なわれていることを許す。これはこの失われた部分をデ
フォルト値として埋める。このコード内の信号゛@゛
は、例えば、°“new”がユーザによって人力されな
い場合、デフォルト先NEWを表わす。この場合、デフ
ォルト先はパーザ−によって記号゛@゛ とともに格納
される。これは第7表のライン59か663の所で遂行
される。この記号°@゛ は後に説明されるインタプリ
ッタ−に変換の実行の結果として計算された個々の画素
値をsyc [CURNEW]に指定するように指令す
る。さらにもう1つのデフォルトとして、” new=
express ion”のようにアレイNEWへのイ
ンデックス“[x、ylが失われている場合は、パーザ
−は[x、ylのデフォルト インデックスを想定する
。ライン65において、次の人力文字が1ex()から
取り出され、変数“fat”に割当でられる。この文字
は第7表のライ66から73において審査され、次の期
待される文字が結果として確立される。ライン68から
70の所のプロシジャexpect(token)は求
められているトークンか期待される値と一致すると検証
し、次にレクシカル アナライザーから次のトークンを
読み出す。
ス、例えば、“NEW [x、 yl =comman
d”を見ることを期待する。この人力シーケンスはjr
ansformation()にトークンNEWとして
到達し、これに文字’[’、xインデックスに対する数
、トークン°、°、yインデックスに対するもう1つの
数、トークン°=゛及びNEW[x、ylに指定された
値に対する表現を表わすトークンの最終ストリングが続
く。第7表内のコードはこのシーケンスのある部分が失
なわれていることを許す。これはこの失われた部分をデ
フォルト値として埋める。このコード内の信号゛@゛
は、例えば、°“new”がユーザによって人力されな
い場合、デフォルト先NEWを表わす。この場合、デフ
ォルト先はパーザ−によって記号゛@゛ とともに格納
される。これは第7表のライン59か663の所で遂行
される。この記号°@゛ は後に説明されるインタプリ
ッタ−に変換の実行の結果として計算された個々の画素
値をsyc [CURNEW]に指定するように指令す
る。さらにもう1つのデフォルトとして、” new=
express ion”のようにアレイNEWへのイ
ンデックス“[x、ylが失われている場合は、パーザ
−は[x、ylのデフォルト インデックスを想定する
。ライン65において、次の人力文字が1ex()から
取り出され、変数“fat”に割当でられる。この文字
は第7表のライ66から73において審査され、次の期
待される文字が結果として確立される。ライン68から
70の所のプロシジャexpect(token)は求
められているトークンか期待される値と一致すると検証
し、次にレクシカル アナライザーから次のトークンを
読み出す。
第6表のパーザ−expr()の主要部分が第7氏のラ
イン68あるいは70から実行され、現在の文字を解析
し、次に期待される文字を持つ。第6表のライン11か
らライン14はそれぞれ4つのレベルの演算及び論理演
算子優先を確立する。第6表のライン22からライン3
2は条件表現、に遭遇した場合、” conditio
n?1ftrue: 1ffalse”のフオームの条
件人力命令を解析する。ここで、“condition
“は評価されるべき表現(expression)であ
り、”1ftrue″及び’1ffalse ”はそれ
ぞれ条件が真あるいは偽の場合、遂行されるべき動作で
ある。ライン36から49の所のプロシジャ1evel
()は現段階において解析できるだけのトークンを逆ボ
ーランド記法にし、このようにアレンジされたトークン
を後に説明のようにバーズ ストリンク(parse
string)が形成されるようにスタックドに押しや
る。このスタックに押す動作は第3表のライン73の所
に示されるemit (放出)プロシジャによって達成
される。
イン68あるいは70から実行され、現在の文字を解析
し、次に期待される文字を持つ。第6表のライン11か
らライン14はそれぞれ4つのレベルの演算及び論理演
算子優先を確立する。第6表のライン22からライン3
2は条件表現、に遭遇した場合、” conditio
n?1ftrue: 1ffalse”のフオームの条
件人力命令を解析する。ここで、“condition
“は評価されるべき表現(expression)であ
り、”1ftrue″及び’1ffalse ”はそれ
ぞれ条件が真あるいは偽の場合、遂行されるべき動作で
ある。ライン36から49の所のプロシジャ1evel
()は現段階において解析できるだけのトークンを逆ボ
ーランド記法にし、このようにアレンジされたトークン
を後に説明のようにバーズ ストリンク(parse
string)が形成されるようにスタックドに押しや
る。このスタックに押す動作は第3表のライン73の所
に示されるemit (放出)プロシジャによって達成
される。
emit、()は、例えば、第6表のライン48の所て
パーザ−によって呼び出される。演算子優先の確立が1
evel()による解析の際に考慮されるべきである。
パーザ−によって呼び出される。演算子優先の確立が1
evel()による解析の際に考慮されるべきである。
1evel()の動作は明瞭である。これは最も優先度
の高い演算子を最初に解析することを試みる。最も高い
レベルの優先レベルにおいて、これは第8表内のプロシ
ジャfactor()を用いてファクター(facto
r)、例えば、数あるいは変数の発見を試みる。これに
加えて、ファクターは括弧に囲まれた表現であることも
マイナス符号(単項マイナス)が前につく別のファクタ
ーであることも、あるいは論理否定であることもあり得
る。これは記号あるいは数値ファイル リファレンス、
値、デカルト座標、あるいはべき演算子によって他のフ
ァクターにべき乗されたファクターでもあり得る。記号
ファイル リファレンスはファイル名を定義する文字の
ストリングである。数値リファレンスは、−例として、
内部イメニジ バッファの1つを定義する数が続く$”
である。低い優先レベルにおいては、factor()
は第6表のライン12から14に示される優先テーブル
内の該当する演算子をチエツクする。
の高い演算子を最初に解析することを試みる。最も高い
レベルの優先レベルにおいて、これは第8表内のプロシ
ジャfactor()を用いてファクター(facto
r)、例えば、数あるいは変数の発見を試みる。これに
加えて、ファクターは括弧に囲まれた表現であることも
マイナス符号(単項マイナス)が前につく別のファクタ
ーであることも、あるいは論理否定であることもあり得
る。これは記号あるいは数値ファイル リファレンス、
値、デカルト座標、あるいはべき演算子によって他のフ
ァクターにべき乗されたファクターでもあり得る。記号
ファイル リファレンスはファイル名を定義する文字の
ストリングである。数値リファレンスは、−例として、
内部イメニジ バッファの1つを定義する数が続く$”
である。低い優先レベルにおいては、factor()
は第6表のライン12から14に示される優先テーブル
内の該当する演算子をチエツクする。
第9表のプロシジャfileref()はパーザ−によ
ってユーザからのイメージ ファイル リファレンスを
復号するために用いられる。これはさらに要求されたイ
メージ バッファが存在するかチエツクする。これは次
にバーズ ストリングにイメージ ファイル内にファイ
ル リファレンス及び画素アドレスを符号化する一連の
トークンを加える。符号化されたファイル リファレン
ス及び画素アドレスは変換プログラムの実行の際にその
ファイルの画素へのランダム アクセスを提供する。
ってユーザからのイメージ ファイル リファレンスを
復号するために用いられる。これはさらに要求されたイ
メージ バッファが存在するかチエツクする。これは次
にバーズ ストリングにイメージ ファイル内にファイ
ル リファレンス及び画素アドレスを符号化する一連の
トークンを加える。符号化されたファイル リファレン
ス及び画素アドレスは変換プログラムの実行の際にその
ファイルの画素へのランダム アクセスを提供する。
上に簡単に述べたように、バーズ ストリングが生成さ
れると、これはスタック内に専用演算子、例えば、′@
゛及び”=”とともに格納される。逆ボーランド記法に
おいては、表現NEW=x ”yは’ x、y、POW
、@’ となり、ここで、POWは“power ’″
の略号であり、命令内の”power ”演算子+1
$ 1111を表わす。換言t i ハ、演算子、例え
ば、POWがそれらが適用する演算子に続き、これらの
間から移動する。このフォーマットはインタプリッタ−
の設計を非常に簡素化する。値はバーズ ストリング内
にトークンVALUE及びこれに続くその値を表わす数
によって符号化される。
れると、これはスタック内に専用演算子、例えば、′@
゛及び”=”とともに格納される。逆ボーランド記法に
おいては、表現NEW=x ”yは’ x、y、POW
、@’ となり、ここで、POWは“power ’″
の略号であり、命令内の”power ”演算子+1
$ 1111を表わす。換言t i ハ、演算子、例え
ば、POWがそれらが適用する演算子に続き、これらの
間から移動する。このフォーマットはインタプリッタ−
の設計を非常に簡素化する。値はバーズ ストリング内
にトークンVALUE及びこれに続くその値を表わす数
によって符号化される。
現解析がライン36から49によってできるところまで
解析されると、プログラム実行はライン54の所のプロ
シジャtransformation()に移り、解析
が継続される。1つの命令に対してユーザ人力が完結す
ると、ライン72の所てコードによりて新ライン文字が
発見される。別の方法として、ユーザは命令な:°′を
用いて終端することもできるが、これも新ライン文字と
して扱われる。後者はユーザが命令のストリングを連鎖
することを許す。いずれの場合も、パーザ−は自動的に
終端し、制御を発呼プロシジャに戻す。手元の例におい
ては、これは第2表内のmain()のライン61に当
る。この時点において、第10表内のインタプリッタ−
プロシジャrun()が呼び出される。
解析されると、プログラム実行はライン54の所のプロ
シジャtransformation()に移り、解析
が継続される。1つの命令に対してユーザ人力が完結す
ると、ライン72の所てコードによりて新ライン文字が
発見される。別の方法として、ユーザは命令な:°′を
用いて終端することもできるが、これも新ライン文字と
して扱われる。後者はユーザが命令のストリングを連鎖
することを許す。いずれの場合も、パーザ−は自動的に
終端し、制御を発呼プロシジャに戻す。手元の例におい
ては、これは第2表内のmain()のライン61に当
る。この時点において、第10表内のインタプリッタ−
プロシジャrun()が呼び出される。
このインタプリッタ−は−例としてスタックイタンブリ
ッターとして設計される。これはバーズ ストリングを
含むスタックに対するポインラダ“rr”を保持する。
ッターとして設計される。これはバーズ ストリングを
含むスタックに対するポインラダ“rr”を保持する。
スタックポインタ“rr”はスタック上の最初のフリー
スロットを指す。
スロットを指す。
最」ニスタック上の値は位置”rr”−1の所に存在す
る。バーズ ストリングの解析の最中に、遭遇される値
及び変数はスタック上に置かれ(プッシュされ)、演算
子及び関数(functions)は最上スタックから
値をアンロード(ポツピング)し、演算子あるいは関数
の適用の結果をスタック上にブツシュする。イタンブリ
ッターの個々のランの終端において、スタックは空にな
るべきである。
る。バーズ ストリングの解析の最中に、遭遇される値
及び変数はスタック上に置かれ(プッシュされ)、演算
子及び関数(functions)は最上スタックから
値をアンロード(ポツピング)し、演算子あるいは関数
の適用の結果をスタック上にブツシュする。イタンブリ
ッターの個々のランの終端において、スタックは空にな
るべきである。
マクロ トップ(op)が第9表のライン9の所にスタ
ックから2つの値を取り出し、これらに演算を適用し、
結果を押し戻す頻繁に起る動作のために定義される。こ
のトップ マクロ(dopmacro)は全ての二進演
算及びブーレン演算に対して用いられる。
ックから2つの値を取り出し、これらに演算を適用し、
結果を押し戻す頻繁に起る動作のために定義される。こ
のトップ マクロ(dopmacro)は全ての二進演
算及びブーレン演算に対して用いられる。
イタンプリッターrun()はファイルsrc[CUR
OLD]内のイメージの個々の画素に対してスタック上
のプログラムを実行する。3つの入れ子形ループがライ
ン29から31の所でこれを達成するために設定される
。ライン32から35内のコードは個々の画素に対して
バーズ ストリング プログラムをスタック トークン
をアンロードし、適当な演算を遂行することによって実
行する。個々の画素に対するプログラムの実行の結果と
して、画素の新たな値がスタック上にブツシュされる。
OLD]内のイメージの個々の画素に対してスタック上
のプログラムを実行する。3つの入れ子形ループがライ
ン29から31の所でこれを達成するために設定される
。ライン32から35内のコードは個々の画素に対して
バーズ ストリング プログラムをスタック トークン
をアンロードし、適当な演算を遂行することによって実
行する。個々の画素に対するプログラムの実行の結果と
して、画素の新たな値がスタック上にブツシュされる。
スタック上のこの値はライン36から38の所のコード
によってイメージ ファイル内に置かれ、プログラムが
次の画素に対して再度実行される。
によってイメージ ファイル内に置かれ、プログラムが
次の画素に対して再度実行される。
ライン32の所の文は“バーズド(parsed)”内
のバーズ ストリングから次のトークンを読み出す。そ
のトークンがVALUEであり、パーズストリング内の
次のトークンが数であることを意味するときは、ライン
33がこの数をバーズ ストリングから読み出し、これ
をスタック°“rr”の最も上に置く。トークン“@パ
によってパーズストリング内に指定(ass ignm
ent)が到達したことが示されたときは、ライン36
から38はスタックの最も上の値をイメージ ファイル
内に置くが、これは、通常、バーズ ストリングの実行
の結果として起こる。最後の2つの事象のいずれも起ら
ない場合は、第10表のライン40の所から始まるスイ
ッチ文が実行される。ライン40の所の°“スイッチパ
の下の個々のケース文はパーズストリング内に発見され
る残りのタイプのトークンに対して必要なスタック動作
を扱う。これらトークンには以下が含まれる。
のバーズ ストリングから次のトークンを読み出す。そ
のトークンがVALUEであり、パーズストリング内の
次のトークンが数であることを意味するときは、ライン
33がこの数をバーズ ストリングから読み出し、これ
をスタック°“rr”の最も上に置く。トークン“@パ
によってパーズストリング内に指定(ass ignm
ent)が到達したことが示されたときは、ライン36
から38はスタックの最も上の値をイメージ ファイル
内に置くが、これは、通常、バーズ ストリングの実行
の結果として起こる。最後の2つの事象のいずれも起ら
ない場合は、第10表のライン40の所から始まるスイ
ッチ文が実行される。ライン40の所の°“スイッチパ
の下の個々のケース文はパーズストリング内に発見され
る残りのタイプのトークンに対して必要なスタック動作
を扱う。これらトークンには以下が含まれる。
■、°+“Add (加算)
’1. ’−’5ubtract (減算)3、 ’*
’Multiply (かけ算)4、 ’/’Divi
de (割算) 5、 ’%’Modulo (モジュロ)6、 GT
Greater than (より大きい)7、 LT
Less than (より小さい)8、 GE
Greater than or equal to
(以上)11、 NE Not equal to (
等しくない)12、 AND Logical ”an
d ” (論理”AND ” )13、 ORLog
ical “or” (論理”OR”)17、 U
MIN Unary m1nus (ユナリー マイ
ナス)18、゛ビLogical ”not ”
(論理”not ” )19、 ’=’Ass、ign
ment (割当)20、RVAL 5ource
for a value assignmen
t(値割当に対するソース) 22、 ”Ra1se to a power (べ
き剰)23、 ’?’Conditional exp
ression (条件表現)24. ’:’Ac
tion 5eparator in cond
itional上の単引用符に囲まれた文字はこれら文
字を文字トークンとして同定する。
’Multiply (かけ算)4、 ’/’Divi
de (割算) 5、 ’%’Modulo (モジュロ)6、 GT
Greater than (より大きい)7、 LT
Less than (より小さい)8、 GE
Greater than or equal to
(以上)11、 NE Not equal to (
等しくない)12、 AND Logical ”an
d ” (論理”AND ” )13、 ORLog
ical “or” (論理”OR”)17、 U
MIN Unary m1nus (ユナリー マイ
ナス)18、゛ビLogical ”not ”
(論理”not ” )19、 ’=’Ass、ign
ment (割当)20、RVAL 5ource
for a value assignmen
t(値割当に対するソース) 22、 ”Ra1se to a power (べ
き剰)23、 ’?’Conditional exp
ression (条件表現)24. ’:’Ac
tion 5eparator in cond
itional上の単引用符に囲まれた文字はこれら文
字を文字トークンとして同定する。
ライン41及び59の所の“+゛及び゛=′ケース文に
よって遂行される動作を一例として説明するが、これか
ら残りのケース文の動作は当業者においては容易に理解
できるものである。パーズストリングからトークン°+
°が読み出されると、ライン41が実行され、ここで、
マクロdop()が呼び出される。dop()の実行は
スタックから次の2つのトークンを取り出し、これらの
値を加え、結果をスタック上にブツシュする。−方、ラ
イン59の所のバーズ ストリング トークン“=“に
対する指定ケース文(assignmentcase
statement)の実行は、結果として、イメージ
ファイル内の画素値を修正する。この場合、スタック
の最も上の次の値が−イメージファイル内に格納される
べき画素値である。スタッック」二の最も上の値に続く
値は画素値が格納されるsrc[CURNEW]内のイ
メージ ファイル アドレスである。
よって遂行される動作を一例として説明するが、これか
ら残りのケース文の動作は当業者においては容易に理解
できるものである。パーズストリングからトークン°+
°が読み出されると、ライン41が実行され、ここで、
マクロdop()が呼び出される。dop()の実行は
スタックから次の2つのトークンを取り出し、これらの
値を加え、結果をスタック上にブツシュする。−方、ラ
イン59の所のバーズ ストリング トークン“=“に
対する指定ケース文(assignmentcase
statement)の実行は、結果として、イメージ
ファイル内の画素値を修正する。この場合、スタック
の最も上の次の値が−イメージファイル内に格納される
べき画素値である。スタッック」二の最も上の値に続く
値は画素値が格納されるsrc[CURNEW]内のイ
メージ ファイル アドレスである。
バーズ ストリングが編集バッファsrc[CUROL
D]の個々の画素に対して実行され、結果がsrc [
CIJRNEWI内に置かれると、ライン86の所で編
集バッフ 7 s r c [CU RN E W ]
とs r c [CUROLD]が交換され、プログラ
ム制御が次のユーザ命令あるいは変換のためにmain
()に返される。
D]の個々の画素に対して実行され、結果がsrc [
CIJRNEWI内に置かれると、ライン86の所で編
集バッフ 7 s r c [CU RN E W ]
とs r c [CUROLD]が交換され、プログラ
ム制御が次のユーザ命令あるいは変換のためにmain
()に返される。
第12表及び第13表はファイル処理プロシジャ10(
)に対するソース コードを含む。3つのプロシジャが
io()内に含まれる。ライン1oの所のgetpix
()はユーザ命令“r” (読出し)及び“a” (ア
タッチ)に応答してイメージ ファイルをバッフγに書
き込むために呼び出される。
)に対するソース コードを含む。3つのプロシジャが
io()内に含まれる。ライン1oの所のgetpix
()はユーザ命令“r” (読出し)及び“a” (ア
タッチ)に応答してイメージ ファイルをバッフγに書
き込むために呼び出される。
ライン38の所のputpix()は同様にバッファを
永久ファイルに書き込むために呼び出される。第13表
のライン54の所のshowfiles()はオープン
バッファと関連するイメージ ファイル名をプリント
する。
永久ファイルに書き込むために呼び出される。第13表
のライン54の所のshowfiles()はオープン
バッファと関連するイメージ ファイル名をプリント
する。
上に説明の構成は単に本発明の原理を解説するためのも
のであり、当業者においては、特許請求の範囲に規定さ
れる本発明の精神及び範囲から逸脱することなく他の構
成が考えられることは明白である。
のであり、当業者においては、特許請求の範囲に規定さ
れる本発明の精神及び範囲から逸脱することなく他の構
成が考えられることは明白である。
尚、第1表から第14表は本発明のインクプリンタ一実
施態様のCプログラミング言語で書かれたソース コー
ドを開示し:そして、より詳細には、 第1表から第3表は開始プロシジャmain()及び関
連するサブプロシジャを示し: 第4表及び第5表はレクシカル アナライザープロシジ
ャを示し: 第6表から第9表は入力命令及び関連するサブプロシジ
ャに対するパーザ−を示し; 第10表及び第11表は生成された変換プログラムを実
行するためのインタプリッタ−を示し:第12表及び第
13表はファイル入力及び出力プロシジャを示し;そし
て 第14表は上のプロシジャに対する定数を定義する見出
しファイルpopi、hを示す。
施態様のCプログラミング言語で書かれたソース コー
ドを開示し:そして、より詳細には、 第1表から第3表は開始プロシジャmain()及び関
連するサブプロシジャを示し: 第4表及び第5表はレクシカル アナライザープロシジ
ャを示し: 第6表から第9表は入力命令及び関連するサブプロシジ
ャに対するパーザ−を示し; 第10表及び第11表は生成された変換プログラムを実
行するためのインタプリッタ−を示し:第12表及び第
13表はファイル入力及び出力プロシジャを示し;そし
て 第14表は上のプロシジャに対する定数を定義する見出
しファイルpopi、hを示す。
第1表
1:/★★★ main、C”☆★☆★★*責★責★
★責★★☆★峰***貴☆☆冑★★★嚢★嚢★★★☆☆
★★嚢☆★★★★/2: 12: 13:char ☆論11ocm; 14: 35:1 第2表 39: 40: printf(”−> ”);41: 62: b
reak;63: ) ) 64:) 65: 72ニ ア3:emit(what) 79: 90: 91:char會 92:論110c(N) 98:) 第4表 1:l★★☆ lex、c (lexical
analyzerl ★貴☆★☆☆☆☆峰★倉☆★
☆☆會會☆☆嚢★☆★☆★/2! 39:) 。 ・d !望ぐ?す豐q臂菅哨りいのの蛸哨のののすC+
υN ell N N N N N N N
F’l I’l ll’l l’Q l’Q l’l
’l l’l l’Q ffl Fl 曽qF f 望
簀# ft−+ −s r−+ + + −−r−+
t−+ P4 + + ++l rn rn +−+
+ + rn rn rn rn r−t rn r4
門 ■ 内X el / ロ 二+、7 ?:+、7 M 770^^。、旧り。。3
゜−6゜、のり。。
★責★★☆★峰***貴☆☆冑★★★嚢★嚢★★★☆☆
★★嚢☆★★★★/2: 12: 13:char ☆論11ocm; 14: 35:1 第2表 39: 40: printf(”−> ”);41: 62: b
reak;63: ) ) 64:) 65: 72ニ ア3:emit(what) 79: 90: 91:char會 92:論110c(N) 98:) 第4表 1:l★★☆ lex、c (lexical
analyzerl ★貴☆★☆☆☆☆峰★倉☆★
☆☆會會☆☆嚢★☆★☆★/2! 39:) 。 ・d !望ぐ?す豐q臂菅哨りいのの蛸哨のののすC+
υN ell N N N N N N N
F’l I’l ll’l l’Q l’Q l’l
’l l’l l’Q ffl Fl 曽qF f 望
簀# ft−+ −s r−+ + + −−r−+
t−+ P4 + + ++l rn rn +−+
+ + rn rn rn rn r−t rn r4
門 ■ 内X el / ロ 二+、7 ?:+、7 M 770^^。、旧り。。3
゜−6゜、のり。。
−へrQすのψiωΦ−P41−11−IP4F−11
−IT−IT−1−へへへへへへへヘヘ
−IT−IT−1−へへへへへへへヘヘ
第1図は本発明を実施するのに使用てきる一例としての
コンピュータ或はワークステーション システムを示し
: 第2図は本発明の原理に従うイメージ エディターの一
例としての編成を示す。 テレグラフ カムパニー FIG、1 10フ FIG、2
コンピュータ或はワークステーション システムを示し
: 第2図は本発明の原理に従うイメージ エディターの一
例としての編成を示す。 テレグラフ カムパニー FIG、1 10フ FIG、2
Claims (1)
- 【特許請求の範囲】 1、第1のファイル内に格納された整列されたセットの
画素から成るグラフィックイメージをこれら画素の幾つ
かあるいは全ての状態を変えることによって編集するた
めにコンピュータを制御するための方法において、 該方法が該コンピュータへの入力としてイメージ変換関
数をセットの構文規則に従って構成された1つあるいは
複数の命令文の形式にて対話的に受信するステップ、及
び該変えられるべきイメージの影響を受ける画素及び影
響を受ける画素を変えるための数学的関係を定義するス
テップを含み、該関係が該イメージの1つあるいは複数
の他の画素の状態に依存し、さらに 該変換関数を遂行するプログラムステップのシーケンス
を自動的に生成するステップが含まれることを特徴とす
るグラフィックイメージの編集方法。 2、個々のプログラムステップを翻訳し、該翻訳に従っ
て該ステップを個別に該イメージの影響を受ける画素に
対して遂行することによって該変換関数を対話的に遂行
するステップがさらに含まれることを特徴とする請求項
1記載の編集方法。 3、プログラムステップをマシン言語プログラムにコン
パイルし、コンパイルされたプログラムを該イメージの
影響を受ける画素に対して実行することによって該変換
関数を対話的に遂行するステップがさらに含まれること
を特徴とする請求項1記載の編集方法。 4、変えられた画素状態を第2のファイル内に該第1の
ファイルの画素の状態を変えることなく格納するステッ
プ、及び 該第1と第2のファイルをプログラムステップが終了し
た時点において交換し、編集されたイメージが続く編集
ステージにおいて増分編集のために利用できるようにす
るステップがさらに含まれることを特徴とする請求項2
ないし3記載の編集方法。 5、該依存がさらに第1のファイル以外のファイル内に
格納されたイメージの画素状態への依存を含むことを特
徴とする請求項2ないし3記載の編集方法。 6、変換関数を遂行するステップが第1のイメージの該
1つあるいは複数の他の画素へのランダムアクセスを含
むことを特徴とする請求項2ないし3記載の編集方法。 7、該変換関数を遂行するステップが該依存によって定
義される全てのファイル内の全ての画素へのランダムア
クセスを含むことを特徴とする請求項5記載の編集方法
。 8、プログラムステップのシーケンスを生成するステッ
プがさらに 命令文を解析するステップ、及び 該解析に応答してプログラムステップのシーケンスとし
てトークン値のパーズストリングを生成するステップを
含み、個々のトークン値が数値あるいは1つないし複数
の数値に適用されるべき演算子を表わすことを特徴とす
る請求項1記載の編集方法。 9、該パーズストリングによって定義されたプログラム
を、該パーズストリングから個々のトークンを順次読み
出し、イメージの個々の影響を受ける画素に対して該ト
ークンによって要求される動作を遂行することによって
翻訳するステップがさらに含まれることを特徴とする請
求項4記載の編集方法。 10、該パーズストリングをマシン言語プログラムにコ
ンパイルし、該マシン言語プログラムを該イメージの個
々の影響を受ける画素に対して実行するステップがさら
に含まれることを特徴とする請求項4記載の編集方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10732587A | 1987-10-13 | 1987-10-13 | |
| US107,325 | 1987-10-13 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01128166A true JPH01128166A (ja) | 1989-05-19 |
Family
ID=22316056
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63256063A Pending JPH01128166A (ja) | 1987-10-13 | 1988-10-13 | グラフィックイメージの編集方法 |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0312235A3 (ja) |
| JP (1) | JPH01128166A (ja) |
| CA (1) | CA1309778C (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2027253C (en) * | 1989-12-29 | 1997-12-16 | Steven C. Bagley | Editing text in an image |
| SG44030A1 (en) * | 1991-12-20 | 1997-11-14 | Philips Electronics Uk Ltd | Image processing arrangement |
| CA2124030C (en) * | 1994-05-20 | 1999-08-24 | Albert Z. Zhao | Method for colour image scaling and other geometrical transformations |
| US5734761A (en) * | 1994-06-30 | 1998-03-31 | Xerox Corporation | Editing scanned document images using simple interpretations |
| WO2016105219A1 (en) * | 2014-12-22 | 2016-06-30 | Intel Corporation | Reverse polish notation processing elements with power saving |
-
1988
- 1988-10-05 EP EP19880309248 patent/EP0312235A3/en not_active Withdrawn
- 1988-10-12 CA CA000579904A patent/CA1309778C/en not_active Expired - Lifetime
- 1988-10-13 JP JP63256063A patent/JPH01128166A/ja active Pending
Non-Patent Citations (1)
| Title |
|---|
| AT&T TECHNICAL JOURNAL MARCH/APRIL=1987 * |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0312235A3 (en) | 1991-09-11 |
| EP0312235A2 (en) | 1989-04-19 |
| CA1309778C (en) | 1992-11-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5129013A (en) | Graphics image editor | |
| US5437038A (en) | System and method of encoding units of data including entity/relationship data, function calls, and file data using a common data format (CDF) according to formal CDF grammar rules | |
| US4956773A (en) | System and method of generating a source program from inputted schematic information | |
| EP1038219B1 (en) | Apparatus and method for allowing object-oriented programs created with different framework versions to communicate | |
| Liberti | Writing global optimization software | |
| JP5147240B2 (ja) | リバーシブルなデザイン・ツリーの変換のための方法とシステム | |
| US6281893B1 (en) | Method and apparatus for providing an object oriented approach to a device independent graphics control system | |
| CN1786907A (zh) | 用于产生图形用户接口模型的方法和系统 | |
| CN1177154A (zh) | 用于可视编程中显示功能对象的方法 | |
| JPH01128166A (ja) | グラフィックイメージの編集方法 | |
| Smith et al. | MathScribe: A user interface for computer algebra systems | |
| Shivers | A universal scripting framework or lambda: the ultimate “little language” | |
| CN1530829A (zh) | 可扩展图形用户接口开发框架 | |
| JPH04205423A (ja) | プログラム作成装置 | |
| US5761508A (en) | Information processing system and method applied to the development of computer programs | |
| Bottou et al. | Lush reference manual | |
| Van Egmond et al. | INFORM: an interactive syntax-directed formulae editor | |
| JPH01307860A (ja) | 複合文書検査方法 | |
| US20040199376A1 (en) | Method and apparatus for compiling two-level morphology rules | |
| EP0578830A1 (en) | Information processing apparatus and method therefor | |
| Kruppai et al. | Building Neural Networks as Dataflow Graphs | |
| JPS62145424A (ja) | プログラム管理方法 | |
| Hong et al. | Integrated software development environment based on CCITT/SDL for telecommunication systems | |
| JPH08286893A (ja) | 複数ベンダー及び複数アーキテクチャー実行用のコンピュータファイル及びその形成方法 | |
| Feng et al. | A symbolic system for computer‐aided development of surface interpolants |