(クラス)
2 点間の距離のプリファレンスである、エラスティックを表す抽象クラス。
説明
Elastic は、
OriginElastic のような、エラスティックのさまざまな具象表現のための基本クラスとして使用されます。
Elastic は、2 つの終点とその間にある起点との間の距離関係のプリファレンスを表す
OriginElastic のための基本クラスとしても使用されます。
すべての
Elastic は、以下の 6 つのパラメータに特徴付けらます。
- Minimum size (最小サイズ)
- Preferred size (ユーザー設定サイズ):伸長も圧縮もされないときの、Elastic に要求されるサイズ。
- Compressibility coefficient (圧縮係数)
- Compress order (圧縮係数):2 つの Elastic が異なる圧縮順位を持つ場合、大きい圧縮順位を持つ Elastic が圧縮され、他の Elastic は圧縮されません。
- Stretchiness coefficient (伸長係数)
- Stretch order (伸長順位):2 つの Elastic が異なる伸長順位を持つ場合、大きい伸長順位を持つ Elastic が伸長され、他の Elastic は伸長されません。
これらの 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 用に割り当てられている領域を可能であれば使用することを指定するのに必要です。
アクセサ public abstract Elastic.mutable?:
bool
アクセサ public Elastic.origin-elastic?:
bool
アクセサ public Elastic.preferred-size:
Distance
public | {Elastic.register-converter-to-Distance}:void |
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) |
public | {Elastic.compressed-size}:Distance |
protected | {Elastic.max-as-single-elastic}:Elastic |
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) |
protected | {Elastic.new-stretchy-elastic}:Elastic |
protected | {Elastic.pack-stretchy-elastic-into-dest}:Elastic |
protected abstract | {Elastic.pack-stretchy-elastic-into-self}:bool |
scale: | エラスティックのスケール演算を適用します。 |
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 |
public | {Elastic.set-preferred-size}:Elastic |
public abstract | {Elastic.unpack-as-stretchy-elastic }:(min-size:Distance,
preferred-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int) |
protected | {Elastic.unpack-dimension-as-stretchy-elastic}:(min-size:Distance,
preferred-size:Distance,
compressibility:double,
compress-order:int,
stretchiness:double,
stretch-order:int) |
(アクセサ)
アクセサ public abstract Elastic.mutable?:
bool Elastic が可変かどうかを判定します。
戻り値
Elastic が可変な場合は true。つまり、Elastic 演算の dest 引数として現れた場合、変更できることを意味します。 Elastic を作成した後に変更できない場合は、false。
(アクセサ)
アクセサ public Elastic.origin-elastic?:
bool
(アクセサ)
アクセサ public Elastic.preferred-size:
Distance Elastic のユーザー設定サイズを取得します。
戻り値
ポイントを単位とする、ユーザー設定サイズ。
(クラスプロシージャ)
public | {Elastic.register-converter-to-Distance}:void |
距離に類似する値を Distance に変換するためのプロシージャを登録します。
p: 変換プロシージャ。プロシージャは
any をパラメータ値として受け取り、可能な場合、
Distance に変換された値を返します。ブール値は変換が成功したかどうかを示します。
説明
登録されたプロシージャは配列に格納されます。Elastic が、値を変換する必要がある場合、配列内の各プロシージャが、1 つが成功するまで順番に呼び出されます。成功するプロシージャがない場合、エラーが発生します。
組む込みの変換プロシージャは次のように実行されます。
- what が単位のない数字 n である場合、これはポイント単位で測定された数量を参照すると想定され、npt に相当する Distance が返されます。
- what が、inch または cm などの、解像度の影響を受けない単位で表された Distance または FloatDistance である場合、戻り値は、Distance にキャストされた値と同じになります。
さらに、CURL.GUI.BASE パッケージがロードされると、次のような処理を行うプロシージャが登録されます。
what が
PixelDistance または
FloatPixelDistance である場合、(解像度の影響を受けない)
Distance への変換に使用されるピクセルのサイズを決定するため、
DisplayContext が必要になります。
DisplayContext は、
get-default-display-context を呼び出すことにより取得されます。
Elastic は、この計算を実行するための正しい
DisplayContext かどうかを知ることができません。したがって、
Elastic パラメータとして
PixelDistance または
FloatPixelDistance の値を指定することを推奨します。
(メソッド)
Elastic の加算を実行します。
g: self に加算されるオペランド。
dest:
dest の具象タイプが結果に適合する場合に、結果の格納先となる
Elastic です。
dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。
戻り値
加算の結果。
(メソッド)
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) |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
Elastic を "unstretchable" zero-length value に初期化します。
戻り値
結果のエラスティック値。これは、self の具象タイプがこの値を保存できる場合にのみ self と保存先を共有します。
注意事項
(メソッド)
public | {Elastic.compressed-size}:Distance |
指定された圧縮順位を持つエラスティックで圧縮された Elastic の圧縮後のサイズを返します。
compress-order: 圧縮順位。
戻り値
compress-order と可能な最大圧縮係数を持つエラスティックで圧縮された Elastic の圧縮後のサイズ。
注意事項
Elastic を特徴付ける標準パラメータの観点からは、
compress-order が
Elastic の圧縮順位よりも小さい場合の結果は、
Elastic の最小サイズで、そうでない場合は
Elastic のユーザー設定サイズになります。
(メソッド)
Elastic をコピーします。
dest: 結果を保存する Elastic。dest の具体的な型が結果と整合する場合に保存されます。dest が指定されていない場合、または NULL の場合、新しく割り当てられたエラスティックが返されます。
戻り値
copy メソッドを呼び出した Elastic のコピー。
注意事項
f が NULL でない場合、次の呼び出しは、
{e.copy dest=f}Elastic.set 呼び出し、つまり次と同じです。
{f.set e}
(メソッド)
Elastic の除算を実行します。
g: 除算の 2 番目のオペランド。
size: self と g の合計に対する制約のサイズ。
戻り値
この制約に応じて self に割り当てられるサイズ。
(メソッド)
2 つの Elastic を比較して、指定されたサイズで同一の効力があるかどうかを調べます。
g: 比較演算の 2 番目のオペランド。
size: 比較に使用するサイズ。
戻り値
2 つのオペランドが指定されたサイズで同一の効力がある場合は true。
プログラミング注意事項
このメソッド (または
OriginElastic.equal-at-dual-size?) は、レイアウト ネゴシエーションの間に使用され、オブジェクトのエラスティックの新たな計算が、以前に計算されたエラスティックとは異なるサイズをそのオブジェクトに割り当てることにつながるかどうかを決定します。2 つのエラスティックが、オブジェクトの現在のサイズの計算に影響しないような点においてのみ異なる場合 (たとえば、それらの最小サイズは異なるが、オブジェクトのサイズは両方のエラスティックの最小サイズより大きい場合)、このメソッドは、
Elastic.equal? とは異なり true を返します。
(メソッド)
2 つの Elastic を比較し、一致しているかどうかを調べます。
g: 比較演算の 2 番目のオペランド。
戻り値
g と
self が同一の
Elastic である場合のみ、true。
(メソッド)
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
Elastic 最大値演算を実行します。
g: self と組み合わせるオペランド。
dest:
dest の具象タイプが結果に適合する場合に、結果の格納先となる
Elastic です。
dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。
戻り値
max 演算の結果。
(メソッド)
protected | {Elastic.max-as-single-elastic}:Elastic |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
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) |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
protected | {Elastic.new-stretchy-elastic}:Elastic |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
protected | {Elastic.pack-stretchy-elastic-into-dest}:Elastic |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
protected abstract | {Elastic.pack-stretchy-elastic-into-self}:bool |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
Elastic に対して、固定した長さの加算または減算を行ないます。
g: ポイント単位の加算 (負の場合は減算) する長さ。
dest:
dest の具象タイプが結果に適合する場合に、結果の格納先となる
Elastic です。
dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。
戻り値
加算または減算の結果。
説明
標準の
Elastic パラメータの観点からは、この演算は
g をエラスティックの最小サイズとユーザー設定サイズの両方に加算します。残りのパラメータには影響しません。ただし、
g が負の場合でも、最小サイズおよびユーザー設定サイズは 0 より小さくはなりません。
(メソッド)
エラスティックのスケール演算を適用します。
f: スケール係数。0 より大きな値である必要があります。
dest:
dest の具象タイプが結果に適合する場合に、結果の格納先となる
Elastic です。
dest が指定されていない場合、または null の場合、新しく割り当てられたエラスティックが返されます。
戻り値
スケール演算の結果。
注意事項
この演算は、
f が 1.0 のとき、
self と同一の
Elastic を返します。
(メソッド)
Dimension を Elastic にコピーします。
戻り値
演算の結果。self の具象タイプが結果を保存できる場合、self と保存先を共有します。それ以外の場合、戻り値は新しく割り当てられたオブジェクトになります。
(メソッド)
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
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 のユーザー設定サイズが最小サイズより小さくなってしまう場合、ユーザー設定サイズは最小サイズと同じサイズに増やされます。
- 指定の結果が Elastic の最小サイズとユーザー設定サイズが同じになる場合(前項で説明した、ユーザー指定のサイズが最小サイズより小さいケースを含む)、圧縮順位の既定値は高く設定され、圧縮係数は 1.0 に設定されます。
- (a) 元の Elastic のユーザー設定サイズと最小サイズが等しい場合、(b) 指定の結果 Elastic が最小サイズより大きいユーザー設定サイズを持つ場合、および (c) compressibility と compress-order (または、そのどちらか一方) のキーワード引数が指定されなかった場合(もしくは nullに指定されている場合)、さらに生成された Elastic の圧縮係数がキーワード引数で指定されていないとその値は Elastic の伸長係数と同値になります。また同様に生成された Elastic の圧縮順位がキーワード引数で指定されていないとその値は Elastic の伸長順位と同値にセットされます。
これらの例外は、Elastic.set-elastic-parameters の単純な呼び出しが少しでもプログラマの意図した結果につながることを目的としています。
(メソッド)
public | {Elastic.set-preferred-size}:Elastic |
Elastic の ユーザー設定サイズを設定します。
pref-size: 新しいユーザー設定サイズ。
dest: 結果を保存する Elastic。dest の具体的な型が結果と整合する場合に保存されます。dest が指定されていない場合、または NULL の場合、新しく割り当てられたエラスティックが返されます。
戻り値
ユーザー設定サイズが pref-size に変更されていることを除いて self と同一のエラスティック。ただし、元のエラスティックの最小サイズが pref-size より大きい場合は、結果として、ユーザー設定サイズは最小サイズと同じに設定されます。
(メソッド)
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 つの標準エラスティック パラメータにアンパックします。
説明
戻り値
この
Dimension の 6 つの標準パラメータ。以下の順序になります。
- 最小サイズ。
- ユーザー設定サイズ。
- 圧縮係数。
- 圧縮順位。
- 伸長係数。
- 伸長順位。
(メソッド)
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 つの標準パラメータ。以下の順序になります。
- 最小サイズ。
- ユーザー設定サイズ。
- 圧縮係数。
- 圧縮順位。
- 伸長係数。
- 伸長順位。
説明