\setcounter{section}{27} >
ラスタ図形演算子
ラスタ図形のモデル
ラスタ図形とは,ピクチャ要素又は画素と呼ばれるく(矩)形の要素から構成
されるく(矩)形配列に関する情報を使用して,図形情報を表現したものをいう。
raster graphics|ラスタ図形|n|S 28.1|t
この情報は,次の二通りの方法で利用される。
-
図形形状の内部を構成する画素を指定することによって,形状を指定する。
-
各画素に対して,黒及び白,黒白多階調,又は色の値を指定すること
によって,画像を指定する。
最初の種類のラスタ図形は,ビットマップラスタ図形と呼ばれている。
bitmap raster graphics|ビットマップラスタ図形|n|S 28.1|t
SPDLでは,ビットマップラスタ図形はMaskBitMap演算子によって作られる。
第二の種類のラスタ図形は,サンプルラスタ図形と呼ばれている。
sampled raster graphics|サンプルラスタ図形|n|S 28.1|t
サンプルラスタ図形は,ImageRasterElement演算子によって作られる。
これら二つの種類のラスタ図形は,それぞれ,ラスタ図形画像データを
取得し処理するための,互いに類似した機構を必要とする。
raster graphics image data|ラスタ図形画像データ|n|S 28.1|t
これらの機構の大きな違いは,ビットマップラスタ図形に使用
されるラスタ図形画像データは,各画素が図形形状の内部に存在するか否かを示す
論理値から構成されるのに対し,サンプルラスタ図形に使用されるラスタ図形画像
データは,各画素の値及び/又は色を指定するためにより複雑な値を扱う,
という点である。
ラスタ図形のための演算子及びデータ型によって,
ラスタ図形画像の要素が要するラスタ図形画像データを,
作画する前にすべて格納できないプリンタでさえも,
大きなラスタ図形を提示できるようになる。
raster graphics image|ラスタ図形画像|n|S 28.1|t
さらに,ラスタ図形画像データのフォーマットに柔軟性を与えているから,
様々なタイプのスキャナの出力,又は様々なデータ圧縮アルゴリズムによって
圧縮された出力を使用することができる。
ここで特に注意しておきたいのは,SPDLは,ラスタ図形要素の作画
によって得られる結果を規定するのであり,その結果を作り出す技法を
規定するのではない。現実の実装においては,ラスタ作画演算子の定義の中で
記述する中間ステップをすべて実行することはありえない。
ここの記述の目的は,ラスタ作画処理の主要な構成要素を,特定の
作画処理の実装に依存しないようにすることと,要求される最終結果を
正確に記述することとする。
サンプルラスタ図形
画像のサンプルラスタ図形の表現は,その画像の大量のサンプル点に
おける色及び/又は明暗度に関する情報から構成され,これらのサンプル点から
その画像を再構成できるようになっている。
intensity|強さ|n|S 28.1.1|t
この情報の個々の単位は,サンプル値と呼ばれ,特定の画像に対するサンプル値の
集まりは,その画像のサンプルデータと呼ばれる。
sample value|サンプル値|n|S 28.1.1|t
sample data|サンプルデータ|n|S 28.1.1|t
このようなラスタ図形画像データは,スキャナを使用して実在する絵の上の
サンプル格子の各点における値を計測して作り出したり,
グラフィックスシステムによって自動生成させることもできる。
サンプル画像を作り出すためのピクチャの走査処理は,次の二つの大きな
ステップから構成される。
-
絵の色及び/又は明暗度(輝度又は明度)をサンプル格子の各点に
おいて計測し,特定の色モデルに関連付けてこれらの計測値を
パラメタ表現する。
luminance|輝度|n|S 28.1.1|t
lightness|明度|n|S 28.1.1|t
-
パラメタ表現された計測値をコンパクトなデータ構造に詰め込む。
このデータ構造をさらに圧縮するために,しばしば圧縮技法が使用される。
サンプルデータから図形画像を再構築するには,これらのステップを逆順にする
必要がある。
ラスタ図形画像の再構築及び作画のためのモデルには,
次の四つのステップが含まれる。
below.
]]>
次の記述は,概念的な概要を記したもので,再構築を完全に記述するこ
とを意図したものではない。再構築の完全な記述はに記す。
-
再構築処理は,く(矩)形配列に並べられたサンプル値の並びを入力とする。
サンプル値の配列は,Width個のサンプル分の幅及びHeight個のサンプル分の
高さをもっている。
この配列は,サンプルデータと共に与えられる変換行列ImageMatrixによって,
ユーザ座標空間に位置決めされる。
このとおり位置決めされて,配列の各要素は,ユーザ座標空間におけるく(矩)形領域に
なる。
-
サンプル値の配列の各要素は,CurrentColorSpaceの中で色を指定するのに
適した,色成分ベクタと見ることができる。
サンプル値ベクタの例としては,グレーレベルから構成される一要素ベクタ,
又はRGB色成分の集合から構成される三要素ベクタがある。
gray level|グレーレベル|n|S 28.1.1|t
-
サンプル値は,く(矩)形領域の配列の各要素に対する色を指定すると解釈される。
-
色の付いたく(矩)形領域の配列は,その要素ごとにページ像上に作画される。
各要素は,その要素の色がインクとして,その要素が占めるく(矩)形領域が
マスクとして,さらに,CurrentClippingRegionがクリップ領域として
使用されて,ページ像上に描かれる。
ページ像を媒体上に可視化するとき,
表示装置の中には,基本色の点のパターンを空間的に分散させることによって
直接再現できない色を近似して,見た目の表色範囲を広げているものがよくある。
この技法の通例の使用法は,黒白の二色を出力する装置上に画像の
中間調を可視化して,見た目の白黒多階調色を作り出すものである。
ラスタ画像生成装置の中には,カラーの表色範囲拡張に対して同じ手法を
施して画像データを生成するものもある。
そのような装置の例としては,黒白多階調の写真画像を表現するときに,
二値のラスタデータを生成するものがある。
SPDLのラスタ図形作画演算子は,これらの技法を使って
ラスタ図形画像の表現を行ってもよい。
ビットマップラスタ図形
ビットマップラスタ図形画像データは,各画素について,それが形状の内部に
存在するか否かを示す論理値から構成されている。
ビットマップラスタ図形画像データの集まりが形状を定義し,それが
作画演算子のためのマスクとして使用される。
ビットマップラスタ図形画像データの各サンプルについて,
論理値がとりうる二つの値のうちの一つは,そのサンプルがマスクの不透明部分に
あることを示し,もう一つの論理値は,そのサンプルがマスクを通して
インクが付けられる部分にあることを示す。
どちらの値がマスクの不透明部分に対応し,どちらの値がマスクを
通してインクが付けられる部分に対応するのかは,MaskBitMap演算子
(28.2.1.5参照)のオペランドである画像辞書のDecodeキーによって
指定される。
image dictionary|画像辞書|n|S 28.1.2|t
参照する節を28.2.1.2から28.2.1.5に修正。恐らく原文の誤り。
ビットマップラスタ図形画像データは,論理的には二値をとる。しかし,
ラスタ図形画像データを操作して,マスクを定義するのに使用する最終の値を
得るには,サンプルラスタ図形画像データについて求められるものと同じ種類の
操作がしばしば必要となる。
この理由によって,SPDLでは,ビットマップラスタ図形画像データ及び
サンプルラスタ図形画像データの操作のために同一の機構を使用する。
ラスタ画像画像データ
ラスタ図形技術には,次の三つの重要な特徴がある。
-
色を表現するのに用いる方法が多岐に渡っている。
-
サンプル値を圧縮するのに用いる方法が多岐に渡っている。
-
ラスタ図形画像を表現するのに膨大なデータが必要になる。
最初の特徴は,サンプル画像にだけ該当するが,残りの二つは,
ビットマップラスタデータにも等しく当てはまる。
これらの特徴からの帰結として,ラスタ図形データを扱うシステムのすべてが,
SPDLの構文及び意味を利用できるようにするために,すべてのラスタデータを
一つの標準の表現形式に変換するよう求めるのは妥当ではない。
SPDLは,標準の色表現方法及びデータ圧縮方法と同様に,
非標準のものも使用できるようにラスタ図形画像処理のための構文を定義する。
SPDLは,いかなる実装においてもサポートされるであろう手法に対しては,
その手法を指定するための標準的な方法を定義する。しかし,この構文は,
私的な情報交換のための非標準の手法の使用もサポートできるようになっている。
画像辞書
ImageRasterElement及びMaskBitMap演算子は,共に,
1個のオペランドとして,画像辞書への参照をとる。
画像辞書は,サンプルラスタ図形画像又はビットマップラスタ図形画像を作画する
のに必要なパラメタをすべて集めた,自己完結なパラメタの集まりとする。
画像辞書の内容は,次の事柄を指定する。
-
ラスタ図形画像のための,単一又は複数のデータソース。
-
データの取り出し及び解釈の方法。
-
現ユーザ座標空間から画像座標空間への対応付け。
image coordinate space|画像座標空間|n|S 28.2|t
画像辞書の内容及び意味
画像辞書のキーと値との対[必す(須)及び任意選択]は,次のとおりとする。
DataSources
references a Vector
of data sources. A detailed
description of the required contents of DataSources in both
single and multiple data source cases is given in .
]]>
必す(須)のキーと値との対 <DataSources: ベクタ> は,データソースのベクタを
参照する。
DataSourcesに求められる内容に関する詳細は,
単一及び複数のデータソースのそれぞれの場合について,に規定する。
Width
specifies the
width of the image or mask bitmap in samples.
]]>
必す(須)のキーと値との対 <Width: 非負整数> は,画像又は
マスクビットマップのサンプルにおける幅を指定する。
Height
specifies the
height of the image or mask bitmap in samples.
]]>
必す(須)のキーと値との対 <Height: 非負整数> は,画像又は
マスクビットマップのサンプルにおける高さを指定する。
BitsPerComponent
specifies the
number of bits used to represent each color component.
]]>
必す(須)のキーと値との対 <BitsPerComponent: 非負整数> は,各色成分を
表現するのに用いるビット数を指定する。
キーと値との対BitsPerComponentは,ラスタ図形画像データを,
0から2BitsPerComponent - 1までの非負整数のサンプル値に
分解する方法を指定する。
数式として正しいと思われる形に変更(高橋)
データを分解する時,ImageRasterElement及びMaskBitMap演算子が
データソースから得られる順にデータのオクテットを読み込む。
オクテットからビットを読み出すときは,各オクテットの上位ビットから
始める。
各サンプル値について,最初に読み込まれるビットは,サンプル値の
上位ビットとする。次のビットは,隣にある一つ低位のビットとする。
BitsPerComponentのとりうる値は,1,2,4,8及び12とする。
画像辞書がMaskBitMap演算子のオペランドであるとき,
BitsPerComponentキーに結合されている値は,1とする。
サンプル値の各行は,オクテット境界で始まる。
サンプル値の行の長さがオクテット長の整数倍でないとき,
そのデータは,最後のオクテットを埋めるのに十分なビットでパッドされる。
Decode
references
a Vector called the Decode Vector.
]]>
必す(須)のキーと値との対<Decode: ベクタ参照> は,
復号ベクタと呼ばれるベクタを参照する。
画像辞書がImageRasterElement演算子のオペランドに指定された場合,
Decodeベクタは,サンプル値から,対応する色空間成分に相応しい
値の範囲への対応付けを指定する。
画像辞書がMaskBitMap演算子のオペランドに指定されたときは,
Decodeベクタは,マスクの極性を指定する。
.
]]>
Decodeベクタに求められる内容についての詳細は,に規定する。
Interpolate
specifies
whether image interpolation is to be perfomed (if the implementation is
capable of doing so).
See .
]]>
任意選択のキーと値との対 <Interpolate: 論理値> は,
(画像補間が実装されていれば)画像補間が実行されるかどうかを指定する。
参照。
値が真の場合,画像補間が実行されることを指定する。
値が偽の場合,画像補間が実行されないことを指定する。
このキーが画像辞書の中に存在しないとき,無指定時値は偽とする。
ImageMatrix
specifies
a transformation of the image.
]]>
必す(須)のキーと値との対<ImageMatrix: 座標変換>は,
画像の変換を指定する。
ラスタ図形画像は,左下隅が(0, 0)で右上隅が(Width, Height)である
ような,それ自身のく(矩)形の画像座標空間の中に存在すると見なされる。
ラスタ画像図形の行は,座標値の最初の値が同一であるサンプルの
集合とする。
ラスタ画像図形の列は,座標値の二番目の値が同一であるサンプル
の集合とする。
ImageMatrixは,ユーザ座標空間からこの画像座標空間への対応
付けを指定する。
データソース
画像辞書は,ラスタ図形画像データのサンプルにおける幅Width及び高さHeightを
指定するキーと値との対を含んでいる。
サンプル値又はビットマップマスクの値は,分解処理の過程で
ラスタ図形演算子によって抽出されるが,これはく(矩)形の配列として解
釈され,ある決まった順に抽出されると仮定されている。すなわち,
(0, 0)から
(Width>-1, 0),次に(0, 1)から(Width>-1, 1)という順に抽出され,
(0, Height>-1)から(Width>-1, Height>-1)となるまで繰り返される。
分解処理によって正しいサンプル値がこの順に得られるようにオクテットデータを
提供することは,画像辞書中のキーと値との対DataSourcesによっ
て指定されたデータソースの分担とする。
画像辞書がMaskBitMap演算子のオペランドとして使用されたとき,
画像辞書の中のDataSourcesキーの値は,単一要素のDataSources
ベクタへの参照とする。
単一要素の DataSources ベクタ
画像辞書の中のDataSourcesキーの値が,単一要素のベクタへの参照のとき,
それは単一のデータソースとみなされる。
現色空間が2個以上の色成分をもつとき,すべての色成分のデータが
データソースからビット方向順に取得されるように,
データソースは,サンプルごとにすべての色成分の並んでいるとみなされる。
データソースの型として許されるものには,次のものがある。
データソースの型がストリームオブジェクトならば,求められている
個数のサンプルを分解処理で生成できるだけの,十分なデータが利用できなければならない。
) or the FindResource operator
(see ).
]]>
ストリームオブジェクトは,Filter演算子(参照)又は
FindResource演算子(参照)によって内容中に生成することもできる。
FindResource演算子によって生成されるストリームオブジェクトは,
FindResource演算子へのオペランドである内部資源識別子で
定まるデータソース資源によって,次のとおりフィルタされる。
- ),
and the document is encoded using
the Clear Text Representation and Interchange Format (see ),
the StreamObject created is filtered using the
ASCII85Decode filter (see ).
]]>
データソースが文書の中に埋め込まれていて(参照),
文書が平文表現交換様式(参照)を使用して符号化されていれば,
生成されるストリームオブジェクトは,
ASCII85Decodeフィルタ(参照)を使用してフィルタされる。
-
データソースが外部にあり,それが二進若しくは平文の内容表現交換様式の
いずれか,又は二進内容表現交換様式で文書の中に埋め込まれていれば,
生成されるストリームオブジェクトは,フィルタされない。
データソースの型がオクテット列であれば,オクテット列を構成する
オクテットは,画像又はビットマップマスクのデータのオクテットとして,
並び順に取られる。オクテット列の長さが,求められているサンプル数に
足りない場合は,求められているサンプル数が抽出されるまで繰り返しオクテット列の
データが再利用される。
データソースの型が手続きであれば,それが実行された時に,
サンプルラスタ画像データ又はビットマップマスクデータの
オクテットを含むオクテット列を(オペランドスタック上に)返す。
求められている個数のサンプルが抽出される前にオクテット列のデータが
使い果たされた場合は,求められている個数のサンプルが抽出されるまで手続きが繰
り返し呼ばれて,手続きが新たなデータのオクテット列を返す。
この手続きは,ImageRasterElement又はMaskBitMap演算子を
実行してはならない。
手続きは,画像辞書の内容又は作図状態を変えてはならな
い。これらを実行した時の結果は,この規格の中では定義されてお
らず,予測できなく好ましくない結果を引き起こす場合がある。
複数要素の DataSources ベクタ
画像辞書の中のDataSourcesキーの値が,複数要素のベクタへの参照のとき,
複数のデータソース(現色空間における色成分ごとに一つのデータソース)を
指定しているものとみなされる。
現色空間の各色成分のデータは,異なるデータソースから取り出される。
DataSourcesベクタのすべての要素は,同一の型とする。
さらに,ベクタの中のデータソースの順序は,現色空間で求められている
色成分の順序と一致する。
複数のデータソースの場合,各々のデータソースは,単一のデータソースについて
上で示した要求を満たす。それに加え,次の制約が適用される。
-
データソースの型がストリームオブジェクト>の場合,データソースは
すべて異なるストリームオブジェクト>とする。
-
データソースの型がオクテット列>の場合,データソースの長さは,すべて
同一とする。
-
データソースの型が手続き>の場合,それらの手続きは,各々が順番に呼ばれ,
何回目の繰り返しであっても,それぞれ同一の長さのオクテット列>を返す。
埋込みデータ
SPDLは,文書の中にラスタ図形画像データを取り込む手段を提供する。このデ
ータは,DataBlock>という内容トークン型を通じて得られ,埋込みデータ>
と呼ばれる。
and .
]]>
このトークン型は,オクテットの列を表現し,
及びの中で
2進又は平文の内容表現交換様式の両方の文書に対して定義されている。
and ).
]]>
2進内容表現交換様式の文書では,これらのオクテット列が2進の
ラスタ図形画像データを表現する。平文内容表現交換様式の文書では,
オクテット列がASCII85で符号化されたラスタ図形画像データを表現する
(及び参照)。
埋込みラスタ図形画像データの使い方は,次のとおりとする。
- ) by this International Standard) and bind this
to the value of an INTERNAL RESOURCE IDENTIFIER via a RESOURCE DECLARATION
structure element.
]]>
構造の中で,オブジェクト名data-source::Documentを用いて,
この規格が既に定義する(を参照)埋め込まれたデータソースのための
公開オブジェクト識別子を構築し,
これを
資源宣言構造要素によって内部資源識別子の値に結合する。
-
資源宣言の有効範囲内における内容の中で,上の内部資源識別子の
値をオペランドとしてFindResource演算子を実行し,ストリームオブジェクト
を得る。
-
ストリームオブジェクトを,DataSourcesベクタの要素(又はその要素の一つ)
として使用し,画像辞書を構築する。
複数要素ベクタの中では,一つの埋め込まれたDataSourceだけが
許されている。
????
-
ImageRasterElement又はMaskBitMapというラスタ図形を作画する
演算子を含んだ,トークン列又はトークン列の並びを構築する。これらの演算子は,
埋込みデータをデータソースとして使用する。
-
すぐ後に続いて,ImageRasterElement又はMaskBitMap演算子を解釈させる
演算子と,これらの作画演算子が必要とするすべてのデータが,
単一のDataBlockトークンという形で続く。
埋込みデータは,ラスタ図形作画演算子が実際に解釈される時に,その
演算子によってアクセスできるように,内容の中に置かれている。
したがって,ラスタ図形作画演算子がループ演算子
(例えば,For演算子)によって解釈される手続きの中で起こるならば,
そのループの中のラスタ図形作画演算子をすべて解釈するための
埋込みデータが,ループ演算子の直後に続く一個以上のDataBlockトークンの
形で続く。
これらの並びの順序は,ループの中におけるラスタ図形作画演算子の解釈の
並び順に対応するものとし,ラスタ図形作画演算子の解釈のそれぞれについて
必要なデータが,一つの新たなDataBlockトークンで始まる。
作画演算子のためのデータソースとして必要なもの以外の,
DataBlockトークンが内容に現れた場合,
SyntaxErrorをオペランドとしてRaiseErrorを実行
する。
復号ベクタ
ImageRasterElement演算子のオペランドとして使用される画像辞書の中で,
画像辞書の中のBitsPerComponentキーに結合された値は,
ラスター図形画像データをサンプル値に分解する方法を指定する。
Decodeベクタは,サンプル値から,現色空間の各色成分に相応しい
値の範囲への,線形対応付けを指定する。
各色成分について,対応付けの最小値及び最大値が指定され,線形対
応付けは,
OutputValue = MIN + InputValue ×(MAX - MIN) / N
となる。ここで,各変数の意味は,次のとおりとする。
-
OutputValue = 最終的な色成分として使用される,写像された値。
-
InputValue = 分解の過程でデータソースから取られるサンプル値。
-
N = (2 × BitsPerComponent)-1
-
MIN及びMAXは,Decodeベクタの中で指定されたパラメタとする。
Decode>ベクタの中の数値は対で解釈され,各対は現色空間の一つの色
成分に適用される。
したがって,Decodeベクタの長さは,現色空間に
おける色成分の個数の二倍でなければならない。Decodeベクタの中における
MIN/MAXの対の順序は,現色空間で求められている色成分の順序と一致して
いる。
:
]]>
MaskBitMap演算子のオペランドとして使用される画像辞書の中では,
復号ベクタは,二要素のベクタとしマスクの極性を指定する。
この場合の複合化ベクタの二つの可能な値及びその意味は,に示すとおりとする。
表の構造を示す DTD がわかりません。
Valuemeaning
]]>
値意味
[0 1]
Sample values of 0 are painted with the current color;
sample values of 1 correspond to the opaque part of the mask
]]>
[0 1]
0のサンプル値は,現カラーで描かれる。1のサンプル値は,
マスクの不透明部分に対応する。
[1 0]
Sample values of 1 are painted with the current color;
sample values of 0 correspond to the opaque part of the mask
]]>
[1 0]
1のサンプル値は,現カラーで描かれる。0のサンプル値は,
マスクの不透明部分に対応する。
補間
ソース画像の解像度が表示装置のものと比べて遥かに低いとき,
各ソースサンプルは,装置の多くのピクセルを覆うことになる。これは,貧弱な
出力結果を出す原因となる。
この見た目の不自然さは,隣接するサンプル値の間を補間することによって,
減少させることができる。
画像辞書の中のInterpolateキーに結合された値が真をとれば,
実装に対して補間を要求することを示す。
しかしながら,この規格では,補間アルゴリズムについては何も定義しない。
補間アルゴリズムの特性及び実装は,処理結果が実際に出力される
デバイスに依存する。
したがって,補間アルゴリズムの選択は,実装に委ねられている。
演算子
. In addition to these operator-specific exceptions, there are generic
exceptions which may be raised during the interpretation of almost
any operator. These generic exceptions and their semantics are
described in .
]]>
これらの演算子及びその意味に関する規定は,演算子を解釈した結果
として内容例外を発生させうる条件についての規定を含む。
内容例外及び例外処理は36.で規定する。
これら演算子固有の例外に加えて,ほとんどどの演算子の解釈時にも
発生しうる共通的な例外がある。
これらの共通例外及びその意味は,で規定する。
ImageRasterElement
ImageRasterElement作画演算子は,次の1個のオペランドをとり,
何も結果を返さない。
<imagedictionary: 辞書参照>
ImageRasterElement演算子は,imagedictionaryの中の情報を使用して
サンプル値を得,それらを解釈し,ラスタ図形画像データを作画する。
必す(須)のキーと値との対の集合がチェックされる。
必す(須)のキーのいずれかが存在しない場合,
UndefinedKeyをオペランドとして
RaiseErrorを実行する。
キーは存在するが,その値が不正な型の値に結合されている場合,
TypeCheckをオペランドとして
RaiseErrorを実行する。
キーが存在し、その型も正しいが,
それに結合されている値が有効範囲を越えている場合,
RangeCheckをオペランドとして
RaiseErrorを実行する。
データソースのいずれかが手続きで,それがImageRasterElement又は
MaskBitMap演算子を実行した場合,
UndefinedKeyをオペランドとして
RaiseErrorを実行する。
複数のデータソースが存在し,いずれか一つが他のものよりも
先に終了した場合(ストリームオブジェクトのデータの終わりによるか,又は
手続きが空のオクテット列を返すかによる),RangeCheckをオペランド
としてRaiseErrorを実行する。
データソース中に要素が1個だけ存在し,
それがく(矩)形配列を作画し終わる前に
終了した場合,RaiseErrorは実行されずに,
その時点で埋められていない行を除いた部分のページ像が得られる。
データソース中の要素であるどのストリームオブジェク
トについても,
そのストリームオブジェクトの中で何らかの問題が発生した場合,
IOError又はDataErrorのいずれか適切なものをオペランドとして
RaiseErrorを実行する。
作画処理は,く(矩)形配列として作画されるサンプル値の列を入力とする。
各サンプル値は,imagedictionaryの中のキーと値との対ImageMatrix
によって記述された画像座標空間における,単位く(矩)形に対応する。
.
]]>
サンプル値の順序は,で規定する。
ImageMatrix座標変換の逆行列は,画像座標空間をユーザ座標空間に座標変換する。
サンプルラスタ図形画像をページ上に位置決めするとき,
位置決めを三つの単純な座標変換に分割すればより明快になる。
まず,ImageMatrix座標変換は,ユーザ座標空間における単位正方形を
画像座標空間へ写像し,画像データを走査線順に処理するために,
定義されている。
幅Widthで高さHeightの画像で,走査線内を左から右へ,走査線間を
上から下へ走査される(最初のサンプルは左上隅にある。)場合,
ImageMatrixは[Width 0 0 -Height 0 Height]となる。
次に,サンプルラスタ図形画像が作画される前に,ユーザ座標空間は,
{LowerLeftX LowerLeftY Translate XSizeinUCS YSizeinUCS Scale}によって
変更される。
最初の演算子は,サンプルラスタ図形画像の左下隅を位置決めし,
2番目の演算子は,直前のユーザ座標空間における画像の大きさを決定する。
以前のユーザ座標空間を保持するために,これらの座標変換及び
ImageRasterElement演算子を,SaveGraphicsState演算子及び
RestoreGraphicsState演算子で囲んでおく。
CurrentColorSpaceは,サンプル値当たりの色成分の数を決定する。
.
]]>
各サンプル値は,潜在色成分のベクタから構成される。
このベクタは,imagedictionaryの中のキーと値との対BitsPerComponentを
用いて組み立てられ,キーと値との対BitsPerComponentは,で示した
とおりに,生成されたオクテット列を分解するのに使用される。
.
]]>
imagedictionaryの中のキーと値との対Decodeは,潜在色成分を実際の色成分
に写像するのに用いられる。
実際の色成分は,で示したとおりに,CurrentColorSpaceにおける色を
指定するのに用いられる。
色の付いたく(矩)形領域の配列は,その要素ごとにページ像上に作画される。
各要素は,その要素の色がインクとして,その要素が占めるく(矩)形領域が
マスクとして,さらに,CurrentClippingRegionがクリップ領域として
使用されて,ページ像上に描かれる。
MaskBitMap
MaskBitMap作画演算子は,次の1個のオペランドをとり,何も結果を返さない。
<imagedictionary: 辞書参照>
MaskBitMap演算子は,imagedictionaryの中の情報を使用して
ビットマップのサンプル値を得,それらを解釈してマスクを形成し,作図状態変数
CurrentColor及びマスクを用いて作画処理を実行する。
.
]]>
画像辞書の内容及び意味の詳細は,に規定する。
必す(須)のキーと値との対の集合がチェックされる。
必す(須)キーのいずれかが存在しなければ,UndefinedKey
をオペランドとして
RaiseErrorを実行する。
キーが存在し,その値が不正な型の値に結合されている場合,
TypeCheckをオペランドとしてRaiseErrorを実行す
る。
キーが存在してその型が正しいが,それに結合されている値が有効範囲を
越えていれば,RangeCheckをオペランドとして
RaiseErrorを実行する。
データソースの唯一の要素が手続きで,それがImageRasterElement又は
MaskBitMap演算子を実行した場合,UndefinedKeyをオペランドとしてRaiseErrorを実行する。
データソースの中の要素が手続きで,それがImageRasterElement又は
MaskBitMap演算子を実行した場合,UndefinedKeyをオ
ペランドとしてRaiseErrorを実行する。
データソースの要素のどのストリームオブジェクトでも,
そのストリームオブジェクトの中で何らかの問題が発生すれば,
IOError又はDataErrorのいずれか適切なものを
オペランドとしてRaiseErrorを実行する。
マスク作成は,く(矩)形配列の中で位置決めされたサンプル値の列を入力とする。
各サンプル値は,imagedictionaryの中のキーと値との対
ImageMatrixによって記述された画像座標空間における,単位く(矩)形に対応する。
.
]]>
サンプル値の順序は,で規定する。
ImageMatrix座標変換の逆行列は,画像座標空間をユーザ座標空間に座標変換する。
imagedictionaryの中のキーと値との対Decodeは,サンプル値に対応する
単位く(矩)形が,マスク部分にあるのか,又は不透明部分にあるのかを決定する。
このようにして作成されたマスクは,作画処理の中で使用される。
作画処理において,インクは,CurrentColorSpaceにおける
CurrentColorとし,CurrentClippingRegionがクリップ領域
とする。