(クラス)
public RectangleShape
{inherits
Shape}
四角形のような Shape の実装。
説明
注意事項
このクラスは、以下のshapeオプションを使用します。:
このクラスは、"RectangleShape"のスタイル ルールを記述することによってスタイル化することが出来ます。
例
例 |
|
{import * from CURL.GUI.SHAPES}
{let shape:RectangleShape =
{RectangleShape
{GRect 0cm, 2cm, 0cm, 1cm},
border-width = 0m,
color = FillPattern.silver,
border-color = FillPattern.navy,
translation = {Distance2d 1cm, .5cm}
}
}
{HBox
"border-width (in pixels): ",
{TextField
width = .5in,
value = "0",
{on ValueFinished at field:TextField do
set shape.border-width = {field.value.to-double} * 1px
}
}
}
{Canvas
width = 4cm,
height = 2cm,
shape
}
| |
コンストラクタ protected | {RectangleShape.clone-appearance-from} |
コンストラクタ public | {RectangleShape.default rectangle:GRect, ...} |
非ローカル オプション public RectangleShape.border-color:
FillPattern
ローカル オプション public RectangleShape.border-line-style:
LineStyle
ローカル オプション public RectangleShape.border-width:
any =0pt
アクセサ protected RectangleShape.clonable-class?:
bool
アクセサ public final RectangleShape.rectangle:
GRect セッター public final RectangleShape.rectangle:
GRect
アクセサ public RectangleShape.style-element:
String プロパティ 継承 Shape:
as-Shape, draw-operation, graphical-parent, option-parent, possibly-displayed?, selection-context, shape-parent, shape-selectable, stroke-thickness, transformation, visible? プロパティ 継承 Visual:
_style-element, completely-clonable-children?, cursor, data-source, dragee, font-size, has-key-focus?, input-method-enabled?, input-method-keyboard-mode, name, options, style-class, style-manager, style-options, test-child?, test-description, test-name, test-parent?, test-type-name, test-visible?, tooltip, user-data, visual-parent
protected | {RectangleShape.clone-appearance-helper}:Visual |
draw: | このオブジェクトの可視表現を描画します。 |
public | {RectangleShape.get-own-bounds dest:GRect = {GRect.empty}}:GRect |
public | {RectangleShape.get-own-layout-bounds}:GRect |
public | {RectangleShape.self-contains-point?}:bool |
public | {RectangleShape.self-intersects-polygon?}:bool |
public | {RectangleShape.transformation-changed}:void |
メソッド 継承 Shape:
apply-rotation, apply-scale, apply-transformation, apply-translation, apply-translation-in-parent, constrain-own-layout-bounds, constrain-shape-layout-bounds, contains-point?, detach, find-graphical-ancestor, fire-crossing-event, fire-in-child, get-display-context, get-down-orientation-in-shape-parent, get-graphical-root, get-gui-path, get-gui-path-to-child, get-local-device-pixel-size, get-origin-in-graphical-ancestor, get-origin-in-root, get-origin-in-shape-parent, get-origin-in-shape-root, get-own-bounds-in-shape-root, get-right-orientation-in-shape-parent, get-shape-bounds, get-shape-bounds-in-shape-root, get-shape-layout-bounds, get-top-left-in-ancestor, get-transformation-to-shape-root, keyword-init-arg, option-change-notify, overdraw-for-selection, quantize-line-thickness, request-draw, request-draw-self, reset-transformation, set-rotation, set-scale, set-transformation, set-translation-in-parent, to-Graphic, transform-from-display-coordinates, transform-from-graphical-root-coordinates, transform-point-from-shape-root, transform-point-to-shape-root, transform-to-display-coordinates, transform-to-graphical-root-coordinates, transform-vector-from-shape-root, transform-vector-to-shape-root, transformation-changing メソッド 継承 ShapeContainerBase:
add, clear, clone-children, draw-shape-child, draw-shape-children, get-all-children-at-point, get-child-at-point, get-leaf-at-point, get-shape-root, note-attached, note-detaching, notify-option-children, on-drag-enter, on-pointer-enter, on-pointer-envelope-event, register-options, remove, set-shape-index, set-shape-index-after, set-shape-index-before, shape-container-fire-inferior-crossing-event, shape-container-handle-crossing, shape-container-pick-child, shape-container-pointer-enter-occurred, shape-container-pointer-leave-occurred メソッド 継承 Visual:
add-from-init-args, animate, change-cursor, clonable-appearance?, clone-appearance, find-test-children, get-focus-manager, get-layout-context, get-test-parent, get-test-property, get-text, get-view, maybe-fire-attach-event, maybe-fire-detach-event, non-keyword-init-arg, note-caret-position, on-drag-leave, on-pointer-leave, pop-cursor, prepare-test-object, prepare-test-parent, push-cursor, quantize-width, refresh-style-options, release-key-focus, request-key-focus, scroll-to-include, test-record, test-run, xy-offset-to メソッド 継承 GuiEventTarget:
handle-delegate-event, handle-event, on-action, on-cancel-mode, on-command-changed, on-commit, on-composition-change-event, on-composition-result-event, on-context-menu-event, on-current-record-change-request, on-current-record-changed, on-destroy-notify, on-destroy-requested, on-drag-over, on-drag-pointer, on-drag-started, on-drop, on-end-composition-event, on-focus-event, on-focus-in, on-focus-out, on-gesture, on-gesture-begin, on-gesture-end, on-gesture-magnify, on-gesture-pan, on-gesture-rotate, on-gesture-swipe, on-gesture-tap, on-gesture-touch, on-grab-release, on-gui-event, on-input-method-event, on-inspection, on-key-event, on-key-press, on-pointer-button, on-pointer-crossing, on-pointer-event, on-pointer-motion, on-pointer-press, on-pointer-release, on-pointer-scroll, on-raw-key-event, on-raw-key-press, on-raw-key-release, on-reset, on-selectable-added, on-selectable-removed, on-selection-changed, on-selection-context-activated, on-selection-context-deactivated, on-selection-event, on-start-composition-event, on-start-event, on-stop-event, on-view-activate, on-view-deactivate, on-window-close, remove-event-handlers-for-event-class メソッド 継承 OptionListInterface:
add-option, add-style-option, change-option-parent-notify, clone-options, get-option, get-option-by-name, local-add-notify, local-remove-notify, name-to-option-key, new-option-item, option-changed, option-lookup, option-lookup-here, option-propagate-notify, option-set?, propagate-option-change, remove-option, remove-style-option, remove-styles, set-option-by-name, set-style-option-by-name, unset-option-by-name, unset-style-option-by-name
(コンストラクタ)
protected | {RectangleShape.clone-appearance-from} |
新規オブジェクトを生成するためのコンストラクタ。
fixup:
このプロシージャは二つの引数と共に呼び出されます。元のオブジェクトと clone-appearance のメカニズムによって生成されたコピーオブジェクトです。このプロシージャによって返された値はクローンとして使用されます。このプロシージャはコピーするオブジェクトに修正を加えて返すことができます。このプロシージャが null を返すことはできません。
説明
クローン化をサポートする
RectangleShape のサブクラスはこのコンストラクタを呼び出すコンストラクタを持たなければなりません。クローンされた子に追加しなければならない情報があるかどうか分からない場合、このコンストラクタはサブクラスの子のクローンを作成しません。このクラスのサブクラスは子のクローンを作成しそれらを追加する必要があります。追加の情報が必要でない場合、単に
RectangleShape.clone-children を呼び出すだけです。そうでない場合は、
RectangleShape.clone-children をオーバーライドしそれを呼び出さなければなりません。通常、clone-apperance-from コンストラクタから呼び出される
RectangleShape.clone-children は以下のようになります。
{if {type-of self} == {compile-time-type-of self} then
{self.clone-children other, fixup}
}
(コンストラクタ)
public | {RectangleShape.default rectangle:GRect, ...} |
新しい RectangleShape を作成します。
rectangle: 四角形の境界。
注意事項
RectangleShape.rectangle に格納される値は、渡された四角形の値とは異なる場合があります。特に、四角形が反転されて、たとえば
-rectangle.lextent が
rectangle.rextent より大きくなる場合は、反転された寸法が入れ替わります。ただし、渡された四角形自体は変更されません。
(非ローカル オプション)
この (または子の) 形状に含まれる境界線またはアウトラインの色。
注意事項
すべての形状オブジェクトにこのオプションがあり、継承されるか、またはオブジェクトに直接設定されます。
形状オブジェクトによっては、このプロパティを直接使用しないものがあります。たとえば、
ShapeGroup はこのプロパティを使用しません。しかし、
ShapeGroup オブジェクトにこのようなプロパティを設定すると、形状オブジェクトのすべての子が既定でプロパティを継承するので便利です。
(ローカル オプション)
public RectangleShape.border-line-style:
LineStyle この Shape の境界線をレンダリングするスタイル。
説明
(ローカル オプション)
public RectangleShape.border-width:
any =0pt
この RectangleShape の周りの境界線の太さ。
説明
既定値は
0pt、つまり境界線は引かれません。有効な値の例としては次のものがあります。
- 2cm
- 1.5in
- 36pt
- 3px
- 36 (36pt と同じ)
1 ピクセルに評価される幅を使用するとパフォーマンスが大幅に向上する可能性があります。これは、境界線を純色で塗りつぶされたプリミティブではなく線ベースのプリミティブを使用してレンダリングできるからです。これを最も簡単に実現するには、
1pixel (または
1px) を使用します。ただし、
Shape の
transformation を考慮する必要があります。
2, 2 のスケール ファクターが適用されている場合は、
1pixel の
border-width は実際には 2 デバイス ピクセルを処理するため処理時間が長くなります。この場合の適切な値は
0.5px。
(アクセサ)
アクセサ protected RectangleShape.clonable-class?:
bool 当該クラスがクローン化可能である場合は、true を返します。その他の場合は false を返します。
オーバーライド
既定の実装は
false を返します。クローン化機能を提供するクラスは、
{type-of self} == {compile-time-type-of self} を返すためには、このゲッターをオーバーライドする必要があります。クローン化可能な
Visual が必ずしもクローン化可能であるとは限らないので、単に
true を返すだけでは正しくありません。
(非ローカル オプション)
この形状とその子の色。
説明
注意事項
すべての形状オブジェクトにこのオプションがあり、継承されるか、またはオブジェクトに直接設定されます。
形状オブジェクトによっては、このプロパティを直接使用しないものがあります。たとえば、
ShapeGroup はこのプロパティを使用しません。しかし、
ShapeGroup オブジェクトにこのようなプロパティを設定すると、形状オブジェクトのすべての子が既定でプロパティを継承するので便利です。
(非ローカル オプション)
このオブジェクトに関連付けられている DisplayContext。
プログラミング注意事項
このオプションは、Curl グラフィック システム内での通信のために使用されます。これは、ユーザー コードで不用意に設定や設定解除を行わないでください。また、通常は、ユーザー コードで直接読み取るべきではありません。現在の
DisplayContext が必要な場合は、
Visual.get-display-context を呼び出すことによりフェッチしてください。
画面上のウィンドウまたは印刷されたページで表示可能なすべてのグラフィック階層は、そのルートにおいて、
display-context オプションを
DisplayContext オブジェクトに設定するオブジェクトを持つ必要があります。このオブジェクトは、グラフィック階層の表示に使用される表示媒体に適しています。つまり、オブジェクトは、
display-context オプションの値が
null から非
null DisplayContext オブジェクトに変更されるのをモニタリングすることにより、表示不可能なグラフィック階層に連結されていることを認識します。したがって、特定の動作を実行する必要のある
Visual のサブクラスは、表示不可能なグラフィック階層に接続された場合、次のようなオプション宣言を含むことにより
display-context オプションをモニタリングします。
{nonlocal-option public display-context:#DisplayContext
change handler}ここで、
change handler 内のコードは
display-context オプションの現在値 (変数
display-context の値として、変更ハンドラ内にある) を取得し、
null および非
null の値の間で行われる変更をモニタリングし、必要とされる動作を実行します。
ただし、このプログラミング熟語を使用するプログラマーは、グラフィカル表示を再配列する際、グラフィック階層からグラフィカル オブジェクトを一時的に分離し、これらを同じ階層に再アタッチすることが、割に一般的であることを理解するべきです。この処理により、一時的に分離されたオブジェクトは、
display-context オブジェクトが
null になり、再び非
null になるのを観察します。
display-context オプションでの変更をモニタリングするコードは、この可能性を考慮に入れ、この状況における望ましくない動作の実行を回避しなくてはなりません。
(アクセサ)
アクセサ public final RectangleShape.rectangle:
GRect セッター public final RectangleShape.rectangle:
GRect 四角形の境界。
説明
この
GRect の内容は変更しないでください。代わりに、新しい値を
RectangleShape.rectangle に割り当ててください。
セッターに渡されたオブジェクト (およびコンストラクタの四角形の引数) はコピーされますが、参照によって格納されません。したがって、そのオブジェクトを後で変更したり他の目的で再利用することを意識する必要はありません。
注意事項
RectangleShape.rectangle に格納される値は、渡された四角形の値とは異なる場合があります。特に、四角形が反転されて、たとえば
-rectangle.lextent が
rectangle.rextent より大きくなる場合は、反転された寸法が入れ替わります。ただし、渡された四角形自体は変更されません。
(アクセサ)
アクセサ public RectangleShape.style-element:
String スタイリングの目的のための、この Visual の "要素" や "型" です。
説明
オーバーライド
Visual のサブクラスのスタイルが他のオブジェクトと異なる場合、このゲッターは適切な文字列を返すようにオーバーライドされる必要があります。 慣例では,この文字列はクラス名または、オブジェクトを生成するマークアップの名前です。
オーバーライドでは、空の文字列でないかぎり、self._style-elementを返さなければなりません。
導入:
バージョン 6.0
(メソッド)
protected | {RectangleShape.clone-appearance-helper}:Visual |
クローンを作成し、クローン自体を返します。
オーバーライド
既定の実装はエラーをスローします。クローン化機能を提供するクラスは、
{{compile-time-type-of self}.clone-appearance-from self, fixup}
を返すためには、このゲッターをオーバーライドする必要があります。
(メソッド)
このオブジェクトの可視表現を描画します。
オーバーライド
Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。
(メソッド)
public | {RectangleShape.get-own-bounds dest:GRect = {GRect.empty}}:GRect |
ローカル座標系におけるこの Shape の四角形のレンダリング境界を計算します。
dest: データを返すために使用されるオプションの GRect オブジェクト。
戻り値
境界を含む
GRect オブジェクト。これは、常に
dest と同じオブジェクトになります。この
GRect は正しい形式である必要があります。つまり、次の条件が true でなければなりません。
-dest.lextent <= dest.rextent and -dest.ascent <= dest.descent
説明
返された境界は、このオブジェクトによって描画されるすべてのピクセルをカバーしている必要があります。ただし、このオブジェクトのすべての子を含んでいません。
注意事項
オーバーライド
Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。データを返すには、dest パラメータを使用する必要があります。
(メソッド)
public | {RectangleShape.get-own-layout-bounds}:GRect |
ローカル座標系におけるこの Shape の四角形のレイアウト境界を計算します。
width-first?:
GraphicShape の場合、width-first レイアウト ネゴシエーションを使用して計算されるべき境界であるかを示します。このパラメータは、通常他のサブクラスでは使用されません。
dest: データを返すために使用されるオプションの GRect オブジェクト。
戻り値
境界を含む
GRect オブジェクト。これは、常に
dest と同じオブジェクトになります。この
GRect は正しい形式である必要があります。つまり、次の条件が true でなければなりません。
-dest.lextent <= dest.rextent and -dest.ascent <= dest.descent
説明
返された境界には、レイアウトの使用について、オブジェクトに関する詳細な記述があります。ただし、このオブジェクトのすべての子は含まれていません。
注意事項
オーバーライド
(メソッド)
public | {RectangleShape.self-contains-point?}:bool |
ポイントがこの Shape 内にあるかどうかを判定します。
x: 点の X 座標。
y: 点の Y 座標。
戻り値
この Shape が (x、y) を含む場合は、true。
説明
ポイントは、このオブジェクトのローカル座標系にあります。このメソッドは、その子を考慮しません。
オーバーライド
Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。このメソッドは、
PointerMotion などのマウス イベントをこのオブジェクトにいつ送信するかなどを決定します。
通常は、このメソッドを実装して、ポイントが形状の境界内にあるかどうかだけでなく、ポイントが形状のレンダリングされたプリミティブ内にあるどうかを確認する必要があります。このメソッドは必要なメトリックを使用して自在に実装できます。
(メソッド)
public | {RectangleShape.self-intersects-polygon?}:bool |
ポリゴンがこの Shape と交差するかどうかを判定します。
polygon: この形状のローカル座標空間にポリゴンを記述するポイント セットを含むオブジェクト。このポリゴンは必ず凸型であり、反時計回りのワインディング順に従います。
説明
オーバーライド
Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。子を考慮する必要はありません。
通常は、このメソッドを実装して、領域が形状の境界内にあるかどうかだけでなく、領域が形状のレンダリングされたプリミティブと交差するかどうかを確認する必要があります。このメソッドは、必要なメトリックを使用して自在に実装できます。このメソッドの実装が
Shape.self-contains-point? と調和しない場合は、このオブジェクトを選択すると予期しない結果になります。
選択機能を使用しない場合は、このメソッドを単純に false を返すように実装できます。
(メソッド)
public | {RectangleShape.transformation-changed}:void |
Shape.transformation が変更されたことの通知。
オーバーライド
重要:このメソッドのオーバーライド実装にスーパークラス実装の呼び出しを含めて、オブジェクトの新しい領域を無効にする必要があります。