{Map-of T:Type} (クラス)
public Map-of {inherits MapCommon}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GRAPHICS.MAP.
直接継承しているサブクラス: DisplacementMesh, NumMap-of, Pixmap

パラメータ化された 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 の部分領域を効果的に繰り返して処理することができます。

コンストラクタ
clone-from:既存の Map-of からクローンを作成します。
コンストラクタ public {Map-of.clone-from source:{Map-of T}}
default:指定された型の要素の Map-of オブジェクトを、指定された寸法で作成します。
コンストラクタ public {Map-of.default
width:int,
height:int,
empty-value:T = {uninitialized-value-for-type T},
initial-value:T = empty-value
}

プロパティ
empty-value:パディングされる要素および境界外にある要素で使用される値。
フィールド public-get private-set Map-of.empty-value:T
プロパティ 継承 MapCommon: height, max-offset, max-x, max-y, modified?, size, width

メソッド
clear:マップのすべての値をリセットします。
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
dst-x:int,
dst-y:int,
src:{Map-of T},
src-x:int,
src-y:int,
width:int,
height:int
}:void
distort:DisplacementMesh を使用して、self を指定された Map-of またはこのオブジェクトのクローンに歪めます。
public {Map-of.distort
displacement-mesh:DisplacementMesh,
out:{Map-of T} = {self.clone}
}:{Map-of T}
embed-clone:クローンにこの Map-of を埋め込みます。
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}
flip-horizontal:y-軸上で Map-of を反転させます。
public final {Map-of.flip-horizontal}:void
flip-horizontal-clone:y-軸上で Map-of のクローンを反転させます。
public final {Map-of.flip-horizontal-clone}:{Map-of T}
flip-vertical:x-軸上で Map-of を反転させます。
public final {Map-of.flip-vertical}:void
flip-vertical-clone:x-軸上で Map-of のクローンを反転させます。
public final {Map-of.flip-vertical-clone}:{Map-of T}
get:要素 (x, y) の値を返します。
public final inline {Map-of.get x:int, y:int}:T
get-offset:指定されたオフセット値に対応する要素を取得します。
public final inline {Map-of.get-offset offset:int}:T
new-like-self:指定された幅および高さを使用して、同じ型の新しいオブジェクトを作成します。
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}
pad-crop-clone:Map-of オブジェクトのクローンのパディングまたはクロップを行ないます。
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}
rotate-180-clone:
180 度回転したクローンを作成します。




public final {Map-of.rotate-180-clone}:{Map-of T}
rotate-270-clone:
反時計回りに 270 度 (時計回りに 90 度) 回転したクローンを作成します。




public final {Map-of.rotate-270-clone}:{Map-of T}
rotate-90-clone:反時計回りに 90 度回転したクローンを作成します。
public final {Map-of.rotate-90-clone}:{Map-of T}
safe-get:要素 (x, y) の値を返します。
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
set-offset:オブジェクトの要素の 1 つを指定された値に設定します。
public final inline {Map-of.set-offset offset:int, new-value:T}:void
shift:すべての要素を delta-xdelta-y 分シフトします。
public final {Map-of.shift
delta-x:int,
delta-y:int,
wrap?:bool = false,
pad-value:T = self.empty-value
}:void
shift-clone:クローンの要素を delta-xdelta-y 分シフトします。
public final {Map-of.shift-clone
delta-x:int,
delta-y:int,
wrap?:bool = false,
pad-value:T = self.empty-value
}:{Map-of T}
transpose-clone:y=x 線で反転されるクローンを作成します。
public final {Map-of.transpose-clone}:{Map-of T}
メソッド 継承 MapCommon: in-bounds?, release
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
clone-from (コンストラクタ)
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 クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。


default (コンストラクタ)
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: すべての要素の初期値。



プロパティ詳細
empty-value (フィールド)
public-get private-set Map-of.empty-value:T

パディングされる要素および境界外にある要素で使用される値。






メソッド詳細
clear (メソッド)
public {Map-of.clear new-value:T = self.empty-value}:void

マップのすべての値をリセットします。

new-value: すべての要素の設定値。


clone (メソッド)
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 クローンの特徴の利点により、かなり効率的に (メモリおよび速度の点で) マップを変更せずにクローンできます。


copy-from (メソッド)
public final {Map-of.copy-from
dst-x:int,
dst-y:int,
src:{Map-of T},
src-x:int,
src-y:int,
width:int,
height:int
}: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 の外側にある場合、エラーがスローされます。


distort (メソッド)
public {Map-of.distort
displacement-mesh:DisplacementMesh,
out:{Map-of T} = {self.clone}
}:{Map-of T}

DisplacementMesh を使用して、self を指定された Map-of またはこのオブジェクトのクローンに歪めます。

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

戻り値

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

前提条件

outself と同じ most-derived 型になります。outself ではありません。


embed-clone (メソッド)
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 を配置する方法。有効値は次のとおりです。
valign: 垂直平面に沿って 2 つのMap-of を配置する方法。有効値は次のとおりです。
pad-value: パディングされた要素の値 (使用する場合)。

説明

クローンはこの Map-of オブジェクトより大きくまたは小さくすることができます。必要に応じて、クロップまたはパディングを行ないます。

戻り値

Map-of クローン (サイズは width x height)。

下の図は、このメソッドの配列パラメータが次のように設定された場合に小さなまたは大きなクローンを表示する方法を示しています。
  • halign"center" です。
  • valign"center" です。
  • pad-value はピンクです。






flip-horizontal (メソッド)
public final {Map-of.flip-horizontal}:void

y-軸上で Map-of を反転させます。



flip-horizontal-clone (メソッド)
public final {Map-of.flip-horizontal-clone}:{Map-of T}

y-軸上で Map-of のクローンを反転させます。



flip-vertical (メソッド)
public final {Map-of.flip-vertical}:void

x-軸上で Map-of を反転させます。



flip-vertical-clone (メソッド)
public final {Map-of.flip-vertical-clone}:{Map-of T}

x-軸上で Map-of のクローンを反転させます。



get (メソッド)
public final inline {Map-of.get x:int, y:int}:T

要素 (x, y) の値を返します。

x, y: 要素の座標。

戻り値

値。

説明

Map-of がピクスマップ、つまり {Map-of Pixel} である場合、戻り値はその Pixel の色になります。(x, y) が範囲外の場合、アサーションがスローされます。


get-offset (メソッド)
public final inline {Map-of.get-offset offset:int}:T

指定されたオフセット値に対応する要素を取得します。

offset: 基礎となる 1d 配列のオフセット インデックス。返す要素を指定します。

戻り値

offset の要素。


new-like-self (メソッド)
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 メソッドの既定の実装では、このメソッドを呼び出して出力データ構造を作成します。ただし、このメソッドはクローンを返さないことに注意してください。このメソッドは、 widthheight が渡されなければ self と同じ寸法で新しい Map-of オブジェクトを返します。self のデータはコピーせずに、オブジェクトに empty-value を挿入します。データをコピーするには clone メソッドを使用します。

オーバーライド

サブクラス化では 常にこのメソッドをオーバーライドします。


pad-crop-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-pad0 です。
  • pad-value はピンクです。






rotate-180-clone (メソッド)
public final {Map-of.rotate-180-clone}:{Map-of T}

180 度回転したクローンを作成します。




戻り値

Map-of クローン。


rotate-270-clone (メソッド)
public final {Map-of.rotate-270-clone}:{Map-of T}

反時計回りに 270 度 (時計回りに 90 度) 回転したクローンを作成します。




戻り値

Map-of クローン。


rotate-90-clone (メソッド)
public final {Map-of.rotate-90-clone}:{Map-of T}

反時計回りに 90 度回転したクローンを作成します。

戻り値

クローン。

説明

クローンの幅はこの Map-of の高さに、高さはこのMap-of の幅になります。






safe-get (メソッド)
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 を返します。


safe-set (メソッド)
public final inline {Map-of.safe-set x:int, y:int, new-value:T}:void

Map-of オブジェクトの要素の 1 つを指定された値に設定します。

説明

(x, y) が境界外の場合、このメソッドはエラーを返しません。


set (メソッド)
public final {Map-of.set x:int, y:int, new-value:T}:void

Map-of オブジェクトの要素の 1 つを指定された値に設定します。

x, y: 設定する要素の座標。
new-value: 要素に代入される値。


set-offset (メソッド)
public final inline {Map-of.set-offset offset:int, new-value:T}:void

オブジェクトの要素の 1 つを指定された値に設定します。

offset: 設定する要素を指定するオフセット インデックス。
new-value: 要素に代入される値。


shift (メソッド)
public final {Map-of.shift
delta-x:int,
delta-y:int,
wrap?:bool = false,
pad-value:T = self.empty-value
}:void

すべての要素を delta-xdelta-y 分シフトします。

delta-x, delta-y: シフトする量。
wrap?: true の場合、要素はマップの端で遮断されずに端の周囲にラップします。
pad-value: シフトの結果としての空の要素の値。


shift-clone (メソッド)
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-xdelta-y 分シフトします。

delta-x, delta-y: シフトする量。
wrap?: true の場合、要素はマップの端で遮断されずに端の周囲にラップします。
pad-value: シフトの結果としての空の要素の値。

戻り値

シフトしたクローン。


transpose-clone (メソッド)
public final {Map-of.transpose-clone}:{Map-of T}

y=x 線で反転されるクローンを作成します。

戻り値

Map-of クローン。

説明

これは、Map-of クローンを x-軸上で反転し、さらに反時計回りに 90 度回転するのと同じ効果があります。