(クラス)
パラメータ化された 2d 配列。
説明
Map-of はパラメータ化された 2d 配列を表し、グラフィック アルゴリズムに適した構造を持つ
get-* および
set-* メソッドが用意されています。
集合体スタイル (aggregate-style) のインターフェイスではなく、コンピュータ グラフィック スタイルのインターフェイスを提供します。このインターフェイスでは、2d または 1d アドレス指定スキームを使用できます。
get-* および
set-* ルーチンは境界にクリップし、集合体スタイル (aggregate-style) のエラーをラップまたは発生させません。
2d アドレス指定および 1d アドレス指定を使用するメソッドを区別するには、1d アドレス指定スキームを使用するメソッドは、単語 "
offset" で命名されていることに注意してください。
Map-of オブジェクトにはそれぞれ幅と高さがあります。
Map-of の内部には要素の 1D 配列があります。
Map-of.set-offset および
Map-of.get-offset を使用してこの配列にアクセスし、元になる構造をより効果的に操作することができます。
内部 1D 配列の要素 0 はマップの要素 [0, 0] に対応しています。
要素
Map-of.max-offset は、マップの [
Map-of.max-x,
Map-of.max-y] にある要素に対応しています。
for-pixel 反復子を使用すると、
Map-of の部分領域を効果的に繰り返して処理することができます。
コンストラクタ public | {Map-of.clone-from source:{Map-of T}} |
コンストラクタ public | {Map-of.default width:int,height:int,empty-value:T = {uninitialized-value-for-type T},initial-value:T = empty-value } |
フィールド public-get private-set Map-of.empty-value:T
public | {Map-of.clear new-value:T = self.empty-value}:void |
clone: | Map-of のクローンを作成します。 |
public | {Map-of.clone}:{Map-of T} |
copy-from: | 1 つの Map-of オブジェクトからこの Map-of に四角形の領域をコピーします。 |
public final | {Map-of.copy-from}:void |
distort: | DisplacementMesh を使用して、self を指定された Map-of またはこのオブジェクトのクローンに歪めます。 |
public | {Map-of.distort}:{Map-of T} |
public final | {Map-of.embed-clone width:int,height:int,halign:String = "center",valign:String = "center",pad-value:T = self.empty-value }:{Map-of T} |
public final | {Map-of.flip-horizontal}:void |
public final | {Map-of.flip-horizontal-clone}:{Map-of T} |
public final | {Map-of.flip-vertical}:void |
public final | {Map-of.flip-vertical-clone}:{Map-of T} |
public final inline | {Map-of.get x:int, y:int}:T |
public final inline | {Map-of.get-offset offset:int}:T |
public | {Map-of.new-like-self width:int = self.width,height:int = self.height,empty-value:T = self.empty-value,initial-value:T = empty-value }:{Map-of T} |
public final | {Map-of.pad-crop-clone left-pad:int = 0,bottom-pad:int = 0,right-pad:int = 0,top-pad:int = 0,pad-value:T = self.empty-value }:{Map-of T} |
public final | {Map-of.rotate-180-clone}:{Map-of T} |
public final | {Map-of.rotate-270-clone}:{Map-of T} |
public final | {Map-of.rotate-90-clone}:{Map-of T} |
public final inline | {Map-of.safe-get x:int, y:int}:T |
safe-set: | Map-of オブジェクトの要素の 1 つを指定された値に設定します。 |
public final inline | {Map-of.safe-set x:int, y:int, new-value:T}:void |
set: | Map-of オブジェクトの要素の 1 つを指定された値に設定します。 |
public final | {Map-of.set x:int, y:int, new-value:T}:void |
public final inline | {Map-of.set-offset offset:int, new-value:T}:void |
shift: | すべての要素を delta-x、delta-y 分シフトします。 |
public final | {Map-of.shift delta-x:int,delta-y:int,wrap?:bool = false,pad-value:T = self.empty-value }:void |
public final | {Map-of.shift-clone delta-x:int,delta-y:int,wrap?:bool = false,pad-value:T = self.empty-value }:{Map-of T} |
public final | {Map-of.transpose-clone}:{Map-of T} |
(コンストラクタ)
public | {Map-of.clone-from source:{Map-of T}} |
既存の Map-of からクローンを作成します。
source: クローン化するオブジェクト。
説明
clone-from および
clone は copy-on-write 構造を実装しています。つまり、マップ データは直ちにコピーされず、代わりに新しい
Map-of が元の
Map-of とデータを共有します。
ただし、マップの 1 つが変更される場合はデータをコピーする必要があります。マップの 1 つに書き込まれるとマップ データは実際にコピーされ、結果として変更はクローンに影響を与えません。
したがって、clone および clone-from は適正に動作します。マップをクローンしてから元のマップに書き込む場合、クローンは変更されません。ただし、copy-on-write クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。
(コンストラクタ)
public | {Map-of.default width:int,height:int,empty-value:T = {uninitialized-value-for-type T},initial-value:T = empty-value } |
指定された型の要素の Map-of オブジェクトを、指定された寸法で作成します。
width, height: 指定された要素単位による Map-of オブジェクトの幅および高さ。
empty-value: パディング要素や境界外にある要素の値。既定値は、型 T の初期化されていない値です。
initial-value: すべての要素の初期値。
(フィールド)
public-get private-set Map-of.empty-value:T
パディングされる要素および境界外にある要素で使用される値。
(メソッド)
public | {Map-of.clear new-value:T = self.empty-value}:void |
マップのすべての値をリセットします。
new-value: すべての要素の設定値。
(メソッド)
public | {Map-of.clone}:{Map-of T} |
Map-of のクローンを作成します。
戻り値
クローン。
オーバーライド
Map-of のサブクラスには
clone-from コンストラクタが必要で、これでデータを初期化する前に
super.clone-from を呼び出します。
さらに、
clone メソッドを定義する必要があります。このメソッドは元のオブジェクト (
clone-from コンストラクタを使用) からクローン化した新しいオブジェクトを返します。
説明
clone-from および
clone は copy-on-write 構造を実装しています。つまり、マップ データは直ちにコピーされず、代わりに新しい
Map-of が元の
Map-of とデータを共有します。
ただし、マップの 1 つが変更される場合はデータをコピーする必要があります。マップの 1 つに書き込まれるとマップ データは実際にコピーされ、結果として変更はクローンに影響を与えません。
したがって、clone および clone-from は適正に動作します。マップをクローンしてから元のマップに書き込む場合、クローンは変更されません。ただし、copy-on-write クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。
(メソッド)
public final | {Map-of.copy-from}:void |
1 つの Map-of オブジェクトからこの Map-of に四角形の領域をコピーします。
dst-x, dst-y: コピーされた四角形の領域の左上隅となる self のポイント。
src: コピー元の Map-of。このオブジェクトと同じパラメータ型である必要があります。
src-x, src-y: コピー元の src の四角形の左上隅。0 以上の int で、src の境界内の値である必要があります。
width: 水平方向にコピーする要素の数。width が 0 以下の場合、コピーは行なわれません。
height: 垂直方向にコピーするピクセルの数。height が 0 以下の場合、コピーは行なわれません。
注意事項
コピーする要素がコピー先 Map-of (つまり、self) の境界外に配置される場合、それらはクリップされます。コピー元の要素がその Map-of の外側にある場合、エラーがスローされます。
(メソッド)
public | {Map-of.distort}:{Map-of T} |
DisplacementMesh を使用して、self を指定された Map-of またはこのオブジェクトのクローンに歪めます。
out: 歪める Map-of。このオブジェクトと同じ型であることが必要です。out が指定されていない場合、このオブジェクトのクローンを作成して、代わりにそのクローンを歪めます。
戻り値
歪められた out オブジェクト。
前提条件
out は self と同じ most-derived 型になります。out はself ではありません。
(メソッド)
public final | {Map-of.embed-clone width:int,height:int,halign:String = "center",valign:String = "center",pad-value:T = self.empty-value }:{Map-of T} |
クローンにこの Map-of を埋め込みます。
width, height: 要素の数で示されるクローンの幅および高さ。
halign: 水平平面に沿って 2 つの
Map-of を配置する方法。有効値は次のとおりです。
- "left" :左端に揃えます。
- "center" :中心に揃えます。
- "right" :右端に揃えます。
valign: 垂直平面に沿って 2 つの
Map-of を配置する方法。有効値は次のとおりです。
- "top" :上端に揃えます。
- "center" :中心に揃えます。
- "bottom" :下端に揃えます。
pad-value: パディングされた要素の値 (使用する場合)。
説明
クローンはこの Map-of オブジェクトより大きくまたは小さくすることができます。必要に応じて、クロップまたはパディングを行ないます。
戻り値
Map-of クローン (サイズは width x height)。
例
下の図は、このメソッドの配列パラメータが次のように設定された場合に小さなまたは大きなクローンを表示する方法を示しています。
- halign は "center" です。
- valign は "center" です。
- pad-value はピンクです。
(メソッド)
public final | {Map-of.flip-horizontal}:void |
(メソッド)
public final | {Map-of.flip-horizontal-clone}:{Map-of T} |
y-軸上で Map-of のクローンを反転させます。
(メソッド)
public final | {Map-of.flip-vertical}:void |
(メソッド)
public final | {Map-of.flip-vertical-clone}:{Map-of T} |
x-軸上で Map-of のクローンを反転させます。
(メソッド)
public final inline | {Map-of.get x:int, y:int}:T |
要素 (x, y) の値を返します。
x, y: 要素の座標。
戻り値
値。
説明
Map-of がピクスマップ、つまり
{Map-of Pixel} である場合、戻り値はその
Pixel の色になります。(x, y) が範囲外の場合、アサーションがスローされます。
(メソッド)
public final inline | {Map-of.get-offset offset:int}:T |
指定されたオフセット値に対応する要素を取得します。
offset: 基礎となる 1d 配列のオフセット インデックス。返す要素を指定します。
戻り値
offset の要素。
(メソッド)
public | {Map-of.new-like-self width:int = self.width,height:int = self.height,empty-value:T = self.empty-value,initial-value:T = empty-value }:{Map-of T} |
指定された幅および高さを使用して、同じ型の新しいオブジェクトを作成します。
width, height: 新しいオブジェクトの幅および高さ。
empty-value: パディングの要素および境界外の要素で使用される値。
initial-value: 新しいオブジェクトの全要素の初期値。
戻り値
新しいオブジェクト。
説明
新しいオブジェクトは指定された値に初期化されます。
ほとんどの *-clone メソッドの既定の実装では、このメソッドを呼び出して出力データ構造を作成します。ただし、このメソッドはクローンを返さないことに注意してください。このメソッドは、 width と height が渡されなければ self と同じ寸法で新しい Map-of オブジェクトを返します。self のデータはコピーせずに、オブジェクトに empty-value を挿入します。データをコピーするには clone メソッドを使用します。
オーバーライド
サブクラス化では 常にこのメソッドをオーバーライドします。
(メソッド)
public final | {Map-of.pad-crop-clone left-pad:int = 0,bottom-pad:int = 0,right-pad:int = 0,top-pad:int = 0,pad-value:T = self.empty-value }:{Map-of T} |
Map-of オブジェクトのクローンのパディングまたはクロップを行ないます。
left-pad: ピクスマップの左端を起点として、パディングまたはクロップする要素の数。(小さい方の x 値)
bottom-pad: ピクスマップの下端を起点として、パディングまたはクロップする要素の数。(大きい方の y 値)
right-pad: ピクスマップの右端を起点として、パディングまたはクロップする要素の数。(大きい方の x 値)
top-pad: ピクスマップの上端を起点として、パディングまたはクロップする要素の数。(小さい方の y 値)
pad-value: パディングされる要素の値 (要素がある場合)。
戻り値
パディングまたはクロップされたクローン。
説明
Map-of が
{Map-of Pixel}、つまり
Pixmap として定義されている場合、
Map-of オブジェクトおよびそのクローンはピックスマップで、その要素はピクセルになります。以下の説明では
Map-of オブジェクトを定義するのに "ピクスマップ" を使用し、
Map-of Pixel として実装しています。
ピクスマップをパディングするには、該当する
*-pad パラメータに正の値を指定します。ピクスマップをクロップするには、代わりに負の値を指定します。パディングされる pixel は、
pad-value に設定されます。
例
下の図は、このメソッドのパラメータが次のように設定された場合にクローンがどのように表示されるかを示しています。
- left-pad は正の値です。
- bottom-pad は正の値です。
- right-pad は負の値です。
- top-pad は 0 です。
- pad-value はピンクです。
(メソッド)
public final | {Map-of.rotate-180-clone}:{Map-of T} |
180 度回転したクローンを作成します。
戻り値
Map-of クローン。
(メソッド)
public final | {Map-of.rotate-270-clone}:{Map-of T} |
反時計回りに 270 度 (時計回りに 90 度) 回転したクローンを作成します。
戻り値
Map-of クローン。
(メソッド)
public final | {Map-of.rotate-90-clone}:{Map-of T} |
反時計回りに 90 度回転したクローンを作成します。
戻り値
クローン。
説明
クローンの幅はこの Map-of の高さに、高さはこのMap-of の幅になります。
(メソッド)
public final inline | {Map-of.safe-get x:int, y:int}:T |
要素 (x, y) の値を返します。
x, y: 要素の座標。
戻り値
(x, y) が境界内の場合は要素の値。それ以外の場合は self.empty-value を返します。
説明
(x, y) が境界外の場合、アクセッサはエラーをスローしません。代わりに、オブジェクトの empty-value を返します。
(メソッド)
public final inline | {Map-of.safe-set x:int, y:int, new-value:T}:void |
Map-of オブジェクトの要素の 1 つを指定された値に設定します。
説明
(x, y) が境界外の場合、このメソッドはエラーを返しません。
(メソッド)
public final | {Map-of.set x:int, y:int, new-value:T}:void |
Map-of オブジェクトの要素の 1 つを指定された値に設定します。
x, y: 設定する要素の座標。
new-value: 要素に代入される値。
(メソッド)
public final inline | {Map-of.set-offset offset:int, new-value:T}:void |
オブジェクトの要素の 1 つを指定された値に設定します。
offset: 設定する要素を指定するオフセット インデックス。
new-value: 要素に代入される値。
(メソッド)
public final | {Map-of.shift delta-x:int,delta-y:int,wrap?:bool = false,pad-value:T = self.empty-value }:void |
すべての要素を delta-x、delta-y 分シフトします。
delta-x, delta-y: シフトする量。
wrap?: true の場合、要素はマップの端で遮断されずに端の周囲にラップします。
pad-value: シフトの結果としての空の要素の値。
(メソッド)
public final | {Map-of.shift-clone delta-x:int,delta-y:int,wrap?:bool = false,pad-value:T = self.empty-value }:{Map-of T} |
クローンの要素を delta-x、delta-y 分シフトします。
delta-x, delta-y: シフトする量。
wrap?: true の場合、要素はマップの端で遮断されずに端の周囲にラップします。
pad-value: シフトの結果としての空の要素の値。
戻り値
シフトしたクローン。
(メソッド)
public final | {Map-of.transpose-clone}:{Map-of T} |
y=x 線で反転されるクローンを作成します。
戻り値
Map-of クローン。
説明
これは、Map-of クローンを x-軸上で反転し、さらに反時計回りに 90 度回転するのと同じ効果があります。