Elastic (クラス)
public abstract sealed Elastic {inherits Dimension, InitRestArgParser}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.UTIL.ELASTIC.
直接継承しているサブクラス: OriginElastic

2 点間の距離のプリファレンスである、エラスティックを表す抽象クラス。

説明

Elastic は、OriginElastic のような、エラスティックのさまざまな具象表現のための基本クラスとして使用されます。

Elastic は、2 つの終点とその間にある起点との間の距離関係のプリファレンスを表す OriginElastic のための基本クラスとしても使用されます。

すべての Elastic は、以下の 6 つのパラメータに特徴付けらます。



これらの 6 つのパラメータは、Elastic のすべてのサブクラスが実装する必要のあるメソッド Elastic.unpack-as-stretchy-elastic により返されます。これらのパラメータは、あらゆる Elastic と動作するエラスティック演算の普遍的な実装をサポートします。ただし、Elastic のサブクラスには、自身でのエラスティック演算の実装で使用できる、より豊富な情報を持たせることができます。

Elastic を直接作成するには、make-elastic プロシージャを使用します。多くの場合、Elastic を明示的に作成する必要はありません。その代わり、作成したい Elastic 値に対応する Dimension を提供すれば、それが変換されます。変換ルールについては、「次元からエラスティックへの変換」を参照してください。

注意事項

Elastic のほとんどのメソッドは、dest パラメータをオプションの引数として持っています。このパラメータでは、結果を保存する場所を指定します。結果が dest に指定されたオブジェクトに収まるものであれば、結果はそこに保存されます。そうでなければ、dest 引数が与えられなかったときと同様に、新たに割り当てられたオブジェクトが結果の保存先として使用されます。どちらにしても、結果はメソッド呼び出しの値として返されます。したがって、単に dest を指定しただけでは、結果がそこに保存されることは保証されません。dest を使用する標準的な構文は次のとおりです。

set e = {e.add f, dest=e}

この例では、可能であれば e 用に割り当て済みの領域に結果を保存しますが、場合によっては、e がその値として Elastic.add 演算の結果を持つことになります。

Elastic 型の変数を定義するとき、可能であれば、その変数が参照するエラスティック用に、すでに 割り当てられていた領域を再利用して、その値を変更するように定義することがしばしば必要になります。これを行うための一般的な方法として、変数 (ここでは、v とします) を unstretchable-zero-length-elastic に初期化して、Elastic.clear 操作の結果と同じである、特別な不変の Elastic を参照させます。

set v = {v.--- dest=v}

ここでの --- は、v に対して実行される操作の、メソッドと引数です。この構文を使用するとき、3 つの v の参照をすべて含めることが重要です。最初の ("set v =") は、v が結果を参照することを確実にするために必要です。2 番目の ("{v.---") は、操作を v に対して実行することを指定するために必要です。3 番目の ("dest=v") は、すでに v 用に割り当てられている領域を可能であれば使用することを指定するのに必要です。

プロパティ
mutable?:Elastic が可変かどうかを判定します。
アクセサ public abstract Elastic.mutable?:bool
origin-elastic?:ElasticOriginElastic でもあるかどうかを判別します。
アクセサ public Elastic.origin-elastic?:bool
preferred-size:Elastic のユーザー設定サイズを取得します。
アクセサ public Elastic.preferred-size:Distance

クラス プロシージャ
register-converter-to-Distance:距離に類似する値を Distance に変換するためのプロシージャを登録します。
public {Elastic.register-converter-to-Distance
p:{proc-type {what:any}:(d:Distance, success?:bool) }
}:void

メソッド
add:Elastic の加算を実行します。
public {Elastic.add g:Dimension, dest:#Elastic = null}:Elastic
add-stretchy-elastic-components:
protected {Elastic.add-stretchy-elastic-components
amin:Distance,
apref:Distance,
acompress:double,
aorderc:int,
astretch:double,
aorders:int,
bmin:Distance,
bpref:Distance,
bcompress:double,
borderc:int,
bstretch:double,
borders:int
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
clear:Elastic を "unstretchable" zero-length value に初期化します。
public {Elastic.clear}:Elastic
compressed-size:指定された圧縮順位を持つエラスティックで圧縮された Elastic の圧縮後のサイズを返します。
public {Elastic.compressed-size
compress-order:StretchOrder = rigid-threshold-stretch-order
}:Distance
copy:Elastic をコピーします。
public abstract {Elastic.copy dest:#Elastic = null}:Elastic
divide:Elastic の除算を実行します。
public {Elastic.divide g:Dimension, size:Distance}:Distance
equal-at-single-size?:2 つの Elastic を比較して、指定されたサイズで同一の効力があるかどうかを調べます。
public {Elastic.equal-at-single-size? g:Dimension, size:Distance}:bool
equal?:2 つの Elastic を比較し、一致しているかどうかを調べます。
public {Elastic.equal? g:Dimension}:bool
equal?-as-single-elastic:
protected {Elastic.equal?-as-single-elastic g:Dimension}:bool
max:Elastic 最大値演算を実行します。
public {Elastic.max g:Dimension, dest:#Elastic = null}:Elastic
max-as-single-elastic:
protected {Elastic.max-as-single-elastic
g:Dimension,
dest:#Elastic = null
}:Elastic
max-stretchy-elastic-components:
protected {Elastic.max-stretchy-elastic-components
amin:Distance,
apref:Distance,
acompress:double,
aorderc:int,
astretch:double,
aorders:int,
bmin:Distance,
bpref:Distance,
bcompress:double,
borderc:int,
bstretch:double,
borders:int
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
new-stretchy-elastic:
protected {Elastic.new-stretchy-elastic
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int,
dest:#Elastic
}:Elastic
pack-stretchy-elastic-into-dest:
protected {Elastic.pack-stretchy-elastic-into-dest
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int,
dest:#Elastic
}:Elastic
pack-stretchy-elastic-into-self:
protected abstract {Elastic.pack-stretchy-elastic-into-self
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int
}:bool
rigid-add:Elastic に対して、固定した長さの加算または減算を行ないます。
public {Elastic.rigid-add g:Distance, dest:#Elastic = null}:Elastic
scale:エラスティックのスケール演算を適用します。
public {Elastic.scale f:double, dest:#Elastic = null}:Elastic
set:DimensionElastic にコピーします。
public {Elastic.set g:Dimension}:Elastic
set-as-single-elastic:
protected {Elastic.set-as-single-elastic g:Dimension}:Elastic
set-elastic-parameters:Elastic の選択されたパラメータを設定します。
public {Elastic.set-elastic-parameters
minimum-size:any = null,
preferred-size:any = null,
compressibility:any = null,
compress-order:any = null,
stretchiness:any = null,
stretch-order:any = null,
dest:#Elastic = null
}:Elastic
set-preferred-size:Elasticユーザー設定サイズを設定します。
public {Elastic.set-preferred-size
pref-size:Distance,
dest:#Elastic = null
}:Elastic
unpack-as-stretchy-elastic:Dimension を 6 つの標準エラスティック パラメータにアンパックします。
public abstract {Elastic.unpack-as-stretchy-elastic
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
unpack-dimension-as-stretchy-elastic:指定された Dimension に対応する、6 つの標準 Elastic パラメータ。
protected {Elastic.unpack-dimension-as-stretchy-elastic}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
メソッド 継承 InitRestArgParser: keyword-init-arg, non-keyword-init-arg, process-rest-args
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
mutable? (アクセサ)
アクセサ public abstract Elastic.mutable?:bool

Elastic が可変かどうかを判定します。

戻り値

Elastic が可変な場合は true。つまり、Elastic 演算の dest 引数として現れた場合、変更できることを意味します。 Elastic を作成した後に変更できない場合は、false。


origin-elastic? (アクセサ)
アクセサ public Elastic.origin-elastic?:bool

ElasticOriginElastic でもあるかどうかを判別します。

戻り値

selfOriginElastic である場合は true。


preferred-size (アクセサ)
アクセサ public Elastic.preferred-size:Distance

Elastic のユーザー設定サイズを取得します。

戻り値

ポイントを単位とする、ユーザー設定サイズ。




クラス プロシージャ詳細
register-converter-to-Distance (クラスプロシージャ)
public {Elastic.register-converter-to-Distance
p:{proc-type {what:any}:(d:Distance, success?:bool) }
}:void

距離に類似する値を Distance に変換するためのプロシージャを登録します。

p: 変換プロシージャ。プロシージャは any をパラメータ値として受け取り、可能な場合、Distance に変換された値を返します。ブール値は変換が成功したかどうかを示します。

説明

登録されたプロシージャは配列に格納されます。Elastic が、値を変換する必要がある場合、配列内の各プロシージャが、1 つが成功するまで順番に呼び出されます。成功するプロシージャがない場合、エラーが発生します。
組む込みの変換プロシージャは次のように実行されます。
  • what が単位のない数字 n である場合、これはポイント単位で測定された数量を参照すると想定され、npt に相当する Distance が返されます。
  • what が、inch または cm などの、解像度の影響を受けない単位で表された Distance または FloatDistance である場合、戻り値は、Distance にキャストされた値と同じになります。
さらに、CURL.GUI.BASE パッケージがロードされると、次のような処理を行うプロシージャが登録されます。
  • whatPixelDistance または FloatPixelDistance である場合、(解像度の影響を受けない) Distance への変換に使用されるピクセルのサイズを決定するため、DisplayContext が必要になります。
    DisplayContext は、get-default-display-context を呼び出すことにより取得されます。Elastic は、この計算を実行するための正しい DisplayContext かどうかを知ることができません。したがって、Elastic パラメータとして PixelDistance または FloatPixelDistance の値を指定することを推奨します。



メソッド詳細
add (メソッド)
public {Elastic.add g:Dimension, dest:#Elastic = null}:Elastic

Elastic の加算を実行します。

g: self に加算されるオペランド。
dest: dest の具象タイプが結果に適合する場合に、結果の格納先となる Elastic です。dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。

戻り値

加算の結果。


add-stretchy-elastic-components (メソッド)
protected {Elastic.add-stretchy-elastic-components
amin:Distance,
apref:Distance,
acompress:double,
aorderc:int,
astretch:double,
aorders:int,
bmin:Distance,
bpref:Distance,
bcompress:double,
borderc:int,
bstretch:double,
borders:int
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
この項目はサポートされていません。内部使用限定となっています。


clear (メソッド)
public {Elastic.clear}:Elastic

Elastic を "unstretchable" zero-length value に初期化します。

戻り値

結果のエラスティック値。これは、self の具象タイプがこの値を保存できる場合にのみ self と保存先を共有します。

注意事項

このメソッド呼び出しは、

{e.clear}

次と同じになります。

{e.set unstretchable-zero-length-elastic}


compressed-size (メソッド)
public {Elastic.compressed-size
compress-order:StretchOrder = rigid-threshold-stretch-order
}:Distance

指定された圧縮順位を持つエラスティックで圧縮された Elastic の圧縮後のサイズを返します。

compress-order: 圧縮順位。

戻り値

compress-order と可能な最大圧縮係数を持つエラスティックで圧縮された Elastic の圧縮後のサイズ。

注意事項

Elastic を特徴付ける標準パラメータの観点からは、compress-orderElastic の圧縮順位よりも小さい場合の結果は、Elastic の最小サイズで、そうでない場合は Elastic のユーザー設定サイズになります。


copy (メソッド)
public abstract {Elastic.copy dest:#Elastic = null}:Elastic

Elastic をコピーします。

dest: 結果を保存する Elasticdest の具体的な型が結果と整合する場合に保存されます。dest が指定されていない場合、または NULL の場合、新しく割り当てられたエラスティックが返されます。

戻り値

copy メソッドを呼び出した Elastic のコピー。

注意事項

f が NULL でない場合、次の呼び出しは、

{e.copy dest=f}

Elastic.set 呼び出し、つまり次と同じです。

{f.set e}


divide (メソッド)
public {Elastic.divide g:Dimension, size:Distance}:Distance

Elastic の除算を実行します。

g: 除算の 2 番目のオペランド。
size: selfg の合計に対する制約のサイズ。

戻り値

この制約に応じて self に割り当てられるサイズ。


equal-at-single-size? (メソッド)
public {Elastic.equal-at-single-size? g:Dimension, size:Distance}:bool

2 つの Elastic を比較して、指定されたサイズで同一の効力があるかどうかを調べます。

g: 比較演算の 2 番目のオペランド。
size: 比較に使用するサイズ。

戻り値

2 つのオペランドが指定されたサイズで同一の効力がある場合は true。

プログラミング注意事項

このメソッド (または OriginElastic.equal-at-dual-size?) は、レイアウト ネゴシエーションの間に使用され、オブジェクトのエラスティックの新たな計算が、以前に計算されたエラスティックとは異なるサイズをそのオブジェクトに割り当てることにつながるかどうかを決定します。2 つのエラスティックが、オブジェクトの現在のサイズの計算に影響しないような点においてのみ異なる場合 (たとえば、それらの最小サイズは異なるが、オブジェクトのサイズは両方のエラスティックの最小サイズより大きい場合)、このメソッドは、Elastic.equal? とは異なり true を返します。


equal? (メソッド)
public {Elastic.equal? g:Dimension}:bool

2 つの Elastic を比較し、一致しているかどうかを調べます。

g: 比較演算の 2 番目のオペランド。

戻り値

gself が同一の Elastic である場合のみ、true。


equal?-as-single-elastic (メソッド)
protected {Elastic.equal?-as-single-elastic g:Dimension}:bool
この項目はサポートされていません。内部使用限定となっています。


max (メソッド)
public {Elastic.max g:Dimension, dest:#Elastic = null}:Elastic

Elastic 最大値演算を実行します。

g: self と組み合わせるオペランド。
dest: dest の具象タイプが結果に適合する場合に、結果の格納先となる Elastic です。dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。

戻り値

max 演算の結果。


max-as-single-elastic (メソッド)
protected {Elastic.max-as-single-elastic
g:Dimension,
dest:#Elastic = null
}:Elastic
この項目はサポートされていません。内部使用限定となっています。


max-stretchy-elastic-components (メソッド)
protected {Elastic.max-stretchy-elastic-components
amin:Distance,
apref:Distance,
acompress:double,
aorderc:int,
astretch:double,
aorders:int,
bmin:Distance,
bpref:Distance,
bcompress:double,
borderc:int,
bstretch:double,
borders:int
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)
この項目はサポートされていません。内部使用限定となっています。


new-stretchy-elastic (メソッド)
protected {Elastic.new-stretchy-elastic
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int,
dest:#Elastic
}:Elastic
この項目はサポートされていません。内部使用限定となっています。


pack-stretchy-elastic-into-dest (メソッド)
protected {Elastic.pack-stretchy-elastic-into-dest
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int,
dest:#Elastic
}:Elastic
この項目はサポートされていません。内部使用限定となっています。


pack-stretchy-elastic-into-self (メソッド)
protected abstract {Elastic.pack-stretchy-elastic-into-self
min-size:Distance,
pref-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int
}:bool
この項目はサポートされていません。内部使用限定となっています。


rigid-add (メソッド)
public {Elastic.rigid-add g:Distance, dest:#Elastic = null}:Elastic

Elastic に対して、固定した長さの加算または減算を行ないます。

g: ポイント単位の加算 (負の場合は減算) する長さ。
dest: dest の具象タイプが結果に適合する場合に、結果の格納先となる Elastic です。dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。

戻り値

加算または減算の結果。

説明

標準の Elastic パラメータの観点からは、この演算は g をエラスティックの最小サイズとユーザー設定サイズの両方に加算します。残りのパラメータには影響しません。ただし、g が負の場合でも、最小サイズおよびユーザー設定サイズは 0 より小さくはなりません。


scale (メソッド)
public {Elastic.scale f:double, dest:#Elastic = null}:Elastic

エラスティックのスケール演算を適用します。

f: スケール係数。0 より大きな値である必要があります。
dest: dest の具象タイプが結果に適合する場合に、結果の格納先となる Elastic です。dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。

戻り値

スケール演算の結果。

注意事項

この演算は、f が 1.0 のとき、self と同一の Elastic を返します。


set (メソッド)
public {Elastic.set g:Dimension}:Elastic

DimensionElastic にコピーします。

g: Dimension。まだ Elastic でなければ、Elastic.unpack-dimension-as-stretchy-elastic の呼び出しにより強制的に変換されます。

戻り値

演算の結果。self の具象タイプが結果を保存できる場合、self と保存先を共有します。それ以外の場合、戻り値は新しく割り当てられたオブジェクトになります。


set-as-single-elastic (メソッド)
protected {Elastic.set-as-single-elastic g:Dimension}:Elastic
この項目はサポートされていません。内部使用限定となっています。


set-elastic-parameters (メソッド)
public {Elastic.set-elastic-parameters
minimum-size:any = null,
preferred-size:any = null,
compressibility:any = null,
compress-order:any = null,
stretchiness:any = null,
stretch-order:any = null,
dest:#Elastic = null
}:Elastic

Elastic の選択されたパラメータを設定します。

minimum-size: 新しい最小サイズ。
preferred-size: 新しいユーザー設定サイズ
compressibility: 新しい圧縮係数。
compress-order: 新しい圧縮順位。
stretchiness: 新しい伸長係数。
stretch-order: 新しい伸長順位。
dest: dest の具象タイプが結果に適合する場合に、結果の格納先となる Elastic です。dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。

戻り値

self と同一のエラスティック。キーワード引数として指定されたパラメータが指定された値に変更されている場合は除きます。キーワード引数として指定されていないパラメータは、通常、元の Elastic 中の値のままですが、次のような例外があります。


これらの例外は、Elastic.set-elastic-parameters の単純な呼び出しが少しでもプログラマの意図した結果につながることを目的としています。


set-preferred-size (メソッド)
public {Elastic.set-preferred-size
pref-size:Distance,
dest:#Elastic = null
}:Elastic

Elasticユーザー設定サイズを設定します。

pref-size: 新しいユーザー設定サイズ。
dest: 結果を保存する Elasticdest の具体的な型が結果と整合する場合に保存されます。dest が指定されていない場合、または NULL の場合、新しく割り当てられたエラスティックが返されます。

戻り値

ユーザー設定サイズが pref-size に変更されていることを除いて self と同一のエラスティック。ただし、元のエラスティックの最小サイズが pref-size より大きい場合は、結果として、ユーザー設定サイズは最小サイズと同じに設定されます。


unpack-as-stretchy-elastic (メソッド)
public abstract {Elastic.unpack-as-stretchy-elastic
}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)

Dimension を 6 つの標準エラスティック パラメータにアンパックします。

説明

6 つのパラメータを make-elastic に渡す場合、結果の Elastic はこの Dimension と機能的に等しくなります。

戻り値

この Dimension の 6 つの標準パラメータ。以下の順序になります。
  1. 最小サイズ。
  2. ユーザー設定サイズ。
  3. 圧縮係数。
  4. 圧縮順位。
  5. 伸長係数。
  6. 伸長順位。


unpack-dimension-as-stretchy-elastic (メソッド)
protected {Elastic.unpack-dimension-as-stretchy-elastic}:(min-size:Distance, preferred-size:Distance, compressibility:double, compress-order:int, stretchiness:double, stretch-order:int)

指定された Dimension に対応する、6 つの標準 Elastic パラメータ。

d: 変換対象の Dimension

戻り値

この Elastic の 6 つの標準パラメータ。以下の順序になります。
  1. 最小サイズ。
  2. ユーザー設定サイズ。
  3. 圧縮係数。
  4. 圧縮順位。
  5. 伸長係数。
  6. 伸長順位。

説明

dElastic に変換します。変換ルールについては、「次元からエラスティックへの変換」を参照してください。