Solaris X Window System 開発ガイド

オペレータについて

この節では、新しい DPS オペレータについて説明します。この情報は、PostScript のマニュアル『PostScript Language Reference Manual』と『Display PostScript System with X』で使用されている形式で掲載してあります。

setalpha coverage setalpha

現在のグラフィックス状態の coverage パラメータを coverage に設定します。coverage は 0 から 1 までの数値で、0 は透明に対応し、1 は不透明な状態に対応し、その間の値は部分的なカバレージに対応します。デフォルトは 1 です。これにより、合成により透けて見える背景の量が設定されます。カバレージ値が 0 より小さければ、coverage パラメータは 0 に設定されます。この値が 1 より大きければ、coverage パラメータは 1 に設定されます。

カバレージ値は、PostScript のマーキング操作によってペイントされる色に影響します。現在の色は、描画前にアルファ値によってあらかじめ乗算されます。この乗算は、現在の色が RGB 空間に変形された後で実行されます。

エラー stackunderflow, typecheck

参照 composite, currentalpha

currentalpha -currentalpha coverage

現在のグラフィックス状態の coverage パラメータを返します。

エラー なし

参照 composite, setalpha

composite srcx srcy width height srcgstate destx desty op composite

2 つのイメージ、ソースと宛先に含まれるピクセルのペア間で、op で指定された合成操作を実行します。ソースピクセルは srcgstate グラフィックス状態によって参照されるドロアブル内にあり、宛先ピクセルは現在のグラフィックス状態で指定されるドロアブル内にあります。srcgstateNULL の場合、現在のグラフィックス状態が想定されます。

srcxsrcywidthheight で指定された矩形は、ソースイメージを定義します。この矩形の輪郭は、部分的な座標、縮尺、または回転軸によりピクセル境界をまたぐことができます。ソースに含まれるピクセルは、矩形の輪郭に囲まれるすべてのピクセルとなります。

宛先イメージは、ソースと同じサイズ、形状、向きを持っています。destxdesty は、ソースに対応する宛先の位置イメージを示します。2 つのグラフィックス状態の向きが異なる場合も、イメージの向きは同じで、合成してもイメージは回転されません。

両方のイメージは、それぞれのドロアブルの枠の矩形にクリップされます。宛先イメージは、現在のグラフィックス状態のクリッピングパスにさらにクリップされます。合成操作の結果によって宛先イメージが置換されます。

op は合成操作を指定します。操作後の各宛先イメージのピクセル (アルファ値) の色、dst' (dstA') は、次のように与えられます。

	dst' = src *

Fs(srcA, dstA, op) + dst * Fd(srcA, dstA, op)
	dstA' = srcA *

Fs(srcA, dstA, op) + dstA * Fs(srcA, dstA, op)

この場合、srcsrcA はソースの色とアルファ値、dstdstA は宛先の色とアルファ値、FsFd表 2-2 に示す関数です。

表 2-2 は合成 op の選択肢を示します。各操作結果については、図 2-3 を参照してください。

エラー rangecheck, stackunderflow, typecheck

参照 compositerect, setalpha, setgray, sethsbcolor, setrgbcolor

表 2-2 合成式の係数

Op 

Fs 

Fd 

Clear

Copy

Sover

1 - srcA 

Sin

dstA 

Sout

1 - dstA 

Satop

dstA 

1 - srcA 

Dover

1 - dstA 

Din

srcA 

Dout

1 - srcA 

Datop

1 - dstA 

srcA 

Xor

1 - dstA 

1 - srcA 

PlusD [PlusD は一般の式には準拠していません。この式は dst'=(1-dst)+(1-src) です。この結果が 0 (黒) より小さい場合、結果は 0 となります。]

N/A 

N/A 

PlusL [PlusL の場合、加算によって飽和状態 (1) になります。つまり、(src+dst) >white) の場合、結果は白になります。]

図 2-3 は、合成操作の結果を示します。

図 2-3 合成操作の結果

Graphic

compositerect destx desty width height op compositerect -

一般に、このオペレータは合成オペレータと同じですが、現実のソースイメージはありません。宛先イメージは現在のグラフィックス状態になっています。destxdestywidthheight は、そのグラフィックス状態の現在の座標系で宛先イメージを記述します。宛先イメージに及ぼす効果は、これらがグラフィックス状態の現在の色とカバレージパラメータで指定された色とカバレージで塗りつぶされたソースイメージと同じです。op には、合成オペレータの op オペランドと同じ意味がありますが、さらに Highlight 操作を実行できます。

Highlight により、ピクセルのカバレージ値に関係なく、宛先矩形内の白の各ピクセルがライトグレイになり、ライトグレイの各ピクセルが白になります。ライトグレイは 2/3 として定義されます。これと同じ操作を繰り返すと、効果が逆転します (モノクロディスプレイ上では、Highlight によって各ピクセルが反転され、白は黒に、黒は白になります)。


注 -

Highlight 操作では、ピクセルのカバレージ構成要素の値は変化しません。ピクセルの色とカバレージの組み合わせを引き続き有効にしておくには、Highlight 操作を一時的なものにして、さらに合成する前に元に戻す必要があります。


compositerect の場合、宛先イメージに含まれるピクセルは、指定された矩形の輪郭で囲まれるピクセルです。宛先イメージは、現在のグラフィックス状態のウィンドウの枠の矩形とクリッピングパスにクリップされます。

エラー rangecheck, stackunderflow, typecheck

参照 composite, setalpha, setgray, sethsbcolor, setrbgcolor

dissolve srcx srcy width height srcgstate destx desty delta dissolve -

この操作には、ソースイメージと宛先イメージを混ぜる効果があります。最初の 7 つの引数では、合成するソースピクセルと宛先ピクセルを選択します。正確な混合割合は delta で指定されます。delta は、0.0 から 1.0 までの浮動小数点数です。混合されるイメージは次のようになります。

delta * source + (1-delta) * destination

srcgstate が NULL の場合、現在のグラフィックス状態が想定されます。

エラー stackunderflow, typecheck

参照 composite

合成 op の値は、PostScript の systemdict 内のアプリケーションに使用できます。定義は次のとおりです。

/Clear 0 def

/Copy 1 def

/Sover 2 def

/Sin 3 def

/Sout 4 def

/Satop 5 def

/Dover 6 def

/Din 7 def

/Dout 8 def

/Datop 9 def

/Xor 10 def

/PlusD 11 def

/Highlight 12 def

/PlusL 13 def