Pixmap (クラス)
public final Pixmap {inherits {Map-of Pixel}}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GRAPHICS.MAP.

Pixel の 2d 配列。

説明

Pixmap はイメージを表し、通常 Pixmap.from-url#factory を使用して Url からロードされます。ただし、Pixmap.default を使用して直接作成することもできます。
PixmapPixel を参照するには 2 つの方法があります。
  • 2d アドレス指定スキームを使用し、(x, y) 座標でピクスマップ内のピクセル原点の位置を指定します。
  • 1d アドレス指定スキームを使用し、単一インデックス値を指定します。これが可能なのは、Pixmap の内部には Pixel の 1d 配列があるためです。ピクセルには左から右にインデックスが付けられ、ピクスマップの原点から始まりその右下隅で終わります。メソッド Pixmap.get-offset および Pixmap.set-offset を使用して、1d 配列にアクセスできます。
    • 要素 0 は、(0, 0) のピクセル、つまりピクスマップの左上隅を参照します。
    • 要素 Pixmap.max-offset は、Pixmap の右下隅のピクセルを参照します。2d アドレス指定スキームでは、このピクセルは (Pixmap.max-xPixmap.max-y) です。
次の図は、アドレス指定スキームを示しています。Pixmap クラスは {Map-of Pixel} であることに注意してください。

注意事項

Pixmap で透過を使用するには、いくつかの点を考慮する必要があります。
まず、Pixmap は透過ピクセルを含んでいる必要があります。透過は、Pixel のアルファ チャネルを使用してエンコードされます。0 は完全透過を表し、最大アルファ値は完全不透明度を表します。(最大値は Pixel の作成に使用される Type によって決まります。たとえば、Pixel.from-float#factory の場合、最大値は 1.0 で、Pixel.from-uint8 の場合、最大値は 255 です。)
Pixmap.ignore-alpha?true の場合、アルファ チャネルは重要ではありません。—アルファ チャネルは無視されます。したがって、この値は false に設定する必要があります。イメージがロードされる場合、イメージに透過が含まれる場合は、この値は false に設定されます。その他の場合は、通常 true になります。したがって、透過を Pixmap に手動で追加する場合は、Pixmap.ignore-alpha? を常に false に設定することが推奨されます。(このフラグの false への設定に関連するパフォーマンス コストに常に注意してください。)
最後に、Renderer2d を使用して Pixmap をレンダリングする場合、Renderer2d は意図する結果を得るためには正しい DrawOperation を使用する必要があります。Renderer2d の既定の DrawOperation は、DrawOperation.mask であり、アルファ値が最大値の半分以上の場合にのみピクセルを描画します。部分的な透過性を得るには、DrawOperation.blend を使用する必要があります。ただし、一部のレンダラはこの操作をサポートしていません。目的に応じた正しいタイプのレンダラを取得する方法の詳細については、DrawOperation を参照してください。

コンストラクタ
clone-from:既存の Pixmap からクローンを作成します。
コンストラクタ public {Pixmap.clone-from source:Pixmap}
default:指定された幅および高さで、ピクスマップを作成します。
コンストラクタ public {Pixmap.default
width:int,
height:int,
ignore-alpha?:bool = false,
empty-value:Pixel = {Pixel.from-uint8 0, 0, 0, alpha = 0},
initial-value:Pixel = {Pixel.from-uint8 0, 0, 0, alpha = 0}
}
from-url:イメージ ファイルをロードして、それを記述する Pixmap を返します。
ファクトリ public {Pixmap.from-url url:Url}:Pixmap

プロパティ
ignore-alpha?:最適化の手段として、アルファ チャネルを無視できるかどうかを指定します。
フィールド public Pixmap.ignore-alpha?:bool
uniform?:Pixmap が均一の色を持つかどうかを示します。
アクセサ public final Pixmap.uniform?:bool
プロパティ 継承 Map-of: empty-value
プロパティ 継承 MapCommon: height, max-offset, max-x, max-y, modified?, size, width

メソッド
clone:Pixmap のクローンを作成します。
public sealed {Pixmap.clone}:Pixmap
distort:DisplacementMesh を使用して、指定された Pixmap またはそのクローンに Pixmap を歪めます。
public {Pixmap.distort
displacement-mesh:DisplacementMesh,
out:{Map-of Pixel} = {self.new-like-self}
}:Pixmap
new-like-self:新しい Pixmap を作成します。
public {Pixmap.new-like-self
width:int = self.width,
height:int = self.height,
empty-value:Pixel = self.empty-value,
initial-value:Pixel = empty-value
}:Pixmap
to-Pixel:Pixmap の平均色を表すピクセルを返します。
public final {Pixmap.to-Pixel
}:(pixel:Pixel, uniform?:bool)
メソッド 継承 Map-of: clear, copy-from, embed-clone, flip-horizontal, flip-horizontal-clone, flip-vertical, flip-vertical-clone, get, get-offset, pad-crop-clone, rotate-180-clone, rotate-270-clone, rotate-90-clone, safe-get, safe-set, set, set-offset, shift, shift-clone, transpose-clone
メソッド 継承 MapCommon: in-bounds?, release
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
clone-from (コンストラクタ)
public {Pixmap.clone-from source:Pixmap}

既存の Pixmap からクローンを作成します。

source: クローン化するオブジェクト。

説明

clone-from および clone は copy-on-write 構造を実装しています。つまり、マップ データは直ちにコピーされず、代わりに新しい Pixmap が元の Pixmap とデータを共有することになります。

ただし、マップの 1 つが変更される場合はデータをコピーする必要があります。マップの 1 つに書き込まれるとマップ データは実際にコピーされ、結果として変更はクローンに影響を与えません。

したがって、clone および clone-from は適正に動作します。マップをクローンしてから元のマップに書き込む場合、クローンは変更されません。ただし、copy-on-write クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。


default (コンストラクタ)
public {Pixmap.default
width:int,
height:int,
ignore-alpha?:bool = false,
empty-value:Pixel = {Pixel.from-uint8 0, 0, 0, alpha = 0},
initial-value:Pixel = {Pixel.from-uint8 0, 0, 0, alpha = 0}
}

指定された幅および高さで、ピクスマップを作成します。

width, height: Pixel で示される Pixmap の幅および高さ。少なくとも 1x1 である必要があります。
ignore-alpha?: アルファ チャネルを無視するかどうかを指定します。true の場合、演算の中にはマスクが無視または破壊されるためにより高速に処理されるものがあります。
empty-value: ピクセルの位置に意味のある値がないことを示す値。この値は、パディングされるピクセルや境界外のピクセルに使用される値です。
initial-value: このPixmap のすべてのピクセルの初期値。

次のコード行は、アルファ チャネルを使用して透明の黒に初期化された 100x100 ピクセルのピクスマップを作成します。

{Pixmap 100, 100}


from-url (ファクトリ)
public {Pixmap.from-url url:Url}:Pixmap

イメージ ファイルをロードして、それを記述する Pixmap を返します。

説明

イメージに複数のフレームがある場合、最初のフレームが返されます。
url: イメージの Urlurl プリミティブを呼び出すことにより Url を作成できます。

Pixmap を作成する簡単な例を次に示します。
{let pixmap:Pixmap=
    {Pixmap.from-url
        {url "your_filename.gif"}
    }
}

注意事項

画像をロードできない場合に、例外をスローします。

戻り値

ロードされたイメージ ファイルを記述する Pixmap



プロパティ詳細
ignore-alpha? (フィールド)
public Pixmap.ignore-alpha?:bool

最適化の手段として、アルファ チャネルを無視できるかどうかを指定します。



uniform? (アクセサ)
アクセサ public final Pixmap.uniform?:bool

Pixmap が均一の色を持つかどうかを示します。

戻り値

Pixmap が均一な色をもつ場合は true。 それ以外の場合は false





メソッド詳細
clone (メソッド)
public sealed {Pixmap.clone}:Pixmap

Pixmap のクローンを作成します。

戻り値

クローン。

オーバーライド

Pixmap のサブクラスには clone-from コンストラクタが必要で、これでデータを初期化する前に super.clone-from を呼び出します。

さらに、clone メソッドを定義する必要があります。このメソッドは元のオブジェクト (clone-from コンストラクタを使用) からクローン化した新しいオブジェクトを返します。

説明

clone-from および clone は copy-on-write 構造を実装しています。つまり、マップ データは直ちにコピーされず、代わりに新しい Pixmap が元の Pixmap とデータを共有することになります。

ただし、マップの 1 つが変更される場合はデータをコピーする必要があります。マップの 1 つに書き込まれるとマップ データは実際にコピーされ、結果として変更はクローンに影響を与えません。

したがって、clone および clone-from は適正に動作します。マップをクローンしてから元のマップに書き込む場合、クローンは変更されません。ただし、copy-on-write クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。


distort (メソッド)
public {Pixmap.distort
displacement-mesh:DisplacementMesh,
out:{Map-of Pixel} = {self.new-like-self}
}:Pixmap

DisplacementMesh を使用して、指定された Pixmap またはそのクローンに Pixmap を歪めます。

displacement-mesh: 歪みパターンを指定する DisplacementMesh オブジェクト。
out: 歪める Pixmap。このオブジェクトと同じ型であることが必要です。out が指定されていない場合、このオブジェクトのクローンを作成して代わりにそれを歪めます。

戻り値

歪められた out オブジェクト。


new-like-self (メソッド)
public {Pixmap.new-like-self
width:int = self.width,
height:int = self.height,
empty-value:Pixel = self.empty-value,
initial-value:Pixel = empty-value
}:Pixmap

新しい Pixmap を作成します。

説明

引数を指定しない場合、self と同じ寸法および empty-value を持つ新しいピクスマップが返され、新しいピクスマップのピクセルはすべてこの empty-value を参照します。
width, height: 新しいピクスマップの幅および高さ。
empty-value: パディングされるピクセルおよび境界外のピクセルに代入する値。
initial-value: 新しいピクスマップのすべてのピクセルの初期値。

戻り値

新しいピクスマップ。


to-Pixel (メソッド)
public final {Pixmap.to-Pixel
}:(pixel:Pixel, uniform?:bool)

Pixmap の平均色を表すピクセルを返します。

戻り値

注意事項

このメソッドは時間がかかります。