(クラス)
public abstract Graphic
{inherits
Visual}
すべてのファーストクラス グラフィカル オブジェクトの (抽象) 基本クラス。このオブジェクトは、グラフィックで表示したり、レイアウト ネゴシエーションに参加できます。
注意事項
プログラミング注意事項
このクラスは、Curl言語のファーストクラス グラフィカル オブジェクトへのインターフェイスを定義します。したがって、ファーストクラスのグラフィカル オブジェクトである値を持つ変数は、
Graphic 型として宣言する必要があります。
コンストラクタ protected | {Graphic.clone-appearance-from other:Graphic} |
コンストラクタ public | {Graphic.default ...} |
ファクトリ public implicit | {Graphic.from-any obj:any}:Graphic |
ファクトリ public implicit | {Graphic.from-Path path:Path}:Graphic |
ファクトリ public implicit | {Graphic.from-Pixmap pixmap:Pixmap}:Graphic |
ファクトリ public implicit | {Graphic.from-Region region:Region}:Graphic |
ローカル オプション public Graphic.avoid-page-break?:
bool
ローカル オプション public Graphic.background:
Background =Background.transparent
ローカル オプション public Graphic.border-spec:#
BorderSpec =null
ローカル オプション public Graphic.border-style:
BorderStyle =BorderStyle.flat
ローカル オプション public Graphic.border-width:
any =0pt
非ローカル オプション public Graphic.cell-border-spec:#
BorderSpec
非ローカル オプション public Graphic.cell-border-width:
any
cell-margin: | テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。 |
非ローカル オプション public Graphic.cell-margin:
any
アクセサ public Graphic.clip-child-shadows?:
bool
ローカル オプション public Graphic.discrete-select-in-range?:
bool =false
非ローカル オプション public Graphic.enabled?:
bool
ローカル オプション public Graphic.height:
any
ローカル オプション public Graphic.horigin:
any ="origin"
フィールド public-get private-set Graphic.is-paginating?:
bool
フィールド public-get protected-set Graphic.layout:#
Layout
margin: | オブジェクトのボーダーとその子スロット (オブジェクトがそのグラフィカルな子を配置する場所) との間の距離を指定します。 |
ローカル オプション public Graphic.margin:
any =0pt
ローカル オプション public Graphic.opaque-to-events?:
bool =false
ローカル オプション public Graphic.outside-margin:#
OffsetSpec =null
アクセサ public Graphic.parent:#
Box
アクセサ public Graphic.possibly-displayed?:
bool
ローカル オプション public Graphic.shadow-spec:#
ShadowSpec =null
ローカル オプション public Graphic.visible?:
bool =true
アクセサ public Graphic.visual-parent:#
Visual
ローカル オプション public Graphic.vorigin:
any ="origin"
ローカル オプション public Graphic.width:
any プロパティ 継承 Visual:
_style-element, clonable-class?, completely-clonable-children?, cursor, data-source, dragee, font-size, graphical-parent, has-key-focus?, input-method-enabled?, input-method-keyboard-mode, name, options, style-class, style-element, style-manager, style-options, test-child?, test-description, test-name, test-parent?, test-type-name, test-visible?, tooltip, user-data
detach: | self をそのグラフィカルな親から削除します。 |
public | {Graphic.detach}:void |
draw: | このオブジェクトの可視表現を描画します。 |
public | {Graphic.draw-range-as-selected}:void |
public | {Graphic.end-pagination}:void |
public | {Graphic.find-graphic-at}:#Graphic |
public | {Graphic.find-graphical-ancestor}:#Graphic |
protected | {Graphic.fire-inferior-crossing-event}:void |
public | {Graphic.get-graphical-root}:Graphic |
public final | {Graphic.get-gui-path root:Box}:{Array-of int} |
public abstract | {Graphic.get-height-preference}:Dimension |
public | {Graphic.get-range-as-selected-text}:void |
public | {Graphic.get-visible-bounds-into grect:GRect}:void |
public abstract | {Graphic.get-width-preference}:Dimension |
public | {Graphic.graphical-child-visible-at}:#Graphic |
public | {Graphic.make-gui-mark}:GuiMark |
public | {Graphic.paginate}:(PaginationState, PaginationQuality) |
public | {Graphic.request-draw}:void |
public | {Graphic.request-draw-rect}:void |
public | {Graphic.request-layout}:void |
public | {Graphic.request-pointer-trace}:void |
public | {Graphic.search-next}:(pattern-start:#GuiMark,pattern-end:#GuiMark) |
public | {Graphic.search-next-here}:(pattern-start:#GuiMark,pattern-end:#GuiMark) |
public | {Graphic.search-prev}:(#GuiMark, #GuiMark) |
public | {Graphic.search-prev-here}:(#GuiMark, #GuiMark) |
メソッド 継承 Visual:
add, add-from-init-args, animate, change-cursor, clear, clonable-appearance?, clone-appearance, clone-appearance-helper, find-test-children, get-focus-manager, get-gui-path-to-child, 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-attached, note-caret-position, note-detaching, on-drag-leave, on-pointer-envelope-event, 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, transform-from-display-coordinates, transform-from-graphical-root-coordinates, transform-to-display-coordinates, transform-to-graphical-root-coordinates メソッド 継承 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-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, keyword-init-arg, local-add-notify, local-remove-notify, name-to-option-key, new-option-item, notify-option-children, option-change-notify, option-lookup, option-lookup-here, option-propagate-notify, option-set?, propagate-option-change, register-options, 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 | {Graphic.clone-appearance-from other:Graphic} |
このタイプの新しいオブジェクトを作成するために Visual.clone-appearance が使用するコンストラクタ。
注意事項
クローン化をサポートする
Graphic のサブクラスには、このコンストラクタを呼び出すコンストラクタが必要です。ただし、これらのコンストラクタがそれぞれ自身のオプションをクローン化する場合は、その限りではありません。
(コンストラクタ)
public | {Graphic.default ...} |
(ファクトリ)
public implicit | {Graphic.from-any obj:any}:Graphic |
any から Graphic を作成します。
説明
このファクトリーは、 他の Graphic ファクトリーと一致しない型を持つ値を処理するために存在します。そのような型を処理するためには記述されておらず、動作も他のファクトリーと異ります。
(ファクトリ)
(ファクトリ)
(ファクトリ)
(ファクトリ)
(ファクトリ)
(ファクトリ)
(ファクトリ)
(ローカル オプション)
public Graphic.avoid-page-break?:
bool Graphicが、現在のページにフィットしない時に次のページに押し出すどうかを決定します。
(ローカル オプション)
public Graphic.background:
Background =Background.transparent
グラフィカル オブジェクトの背景色または背景パターン。
説明
例
例:
背景を文字列に設定 |
|
{CheckButton
label="Check here if you like my background",
background="lime"
}
| |
例:
背景を Background オブジェクトに設定 |
|
{Fill
width = 2cm,
height = 2cm,
background =
{Background
{url "curl://install/docs/default/images/grass.jpg"}
}
}
| |
注意事項
(非ローカル オプション)
グラフィカル オブジェクトの境界の色またはパターン。
説明
境界色は、境界が存在する場合、つまり、オブジェクトの
border-width オプションを設定した場合にのみ適用されます。
任意の
FillPattern オブジェクトに
border-color、またはサポートしている
String に設定し、
FillPattern に自動変換します。
オブジェクトの
border-width は定義されているが
border-color が定義されていない場合、オブジェクトの境界はオブジェクトの
背景色を使ってペイントされます。オブジェクトの
背景色は、オブジェクトの
border-style オプションによっては境界が見えない場合もあります。
次の図は、グラフィカル オブジェクトの境界を青色で表示しています。
参照:
Graphic.background,
Graphic.border-width,
Graphic.border-style.
(ローカル オプション)
Graphic の BorderSpec を指定します。
説明
例
例:
BorderSpec の使用 |
|
{define-proc package {make-frame
border-style:BorderStyle,
border-color:FillPattern =
FillPattern.blue,
border-spec:#BorderSpec = null
}
{return
{Frame
border-width = 3pt,
margin = 10pt,
background = FillPattern.silver,
border-color = border-color,
border-style = border-style,
border-spec = border-spec,
"Apple"
}
}
}
{spaced-hbox
margin = 2pt,
|| Note that this Frame is setting the left and right border
|| width to 0pt. Since top and bottom border width are not
|| specified in the BorderSpec they will be equal to the
|| value of the border-width option on the Frame.
{make-frame
BorderStyle.dot,
border-spec =
{BorderSpec
left-border-width = 0pt,
right-border-width = 0pt
}
},
|| Note that this Frame is setting the left and right margin
|| to 0pt. Since top and bottom margin are not specified in the
|| BorderSpec they will be equal to the value of the margin
|| option on the Frame.
{make-frame
BorderStyle.dot,
border-spec =
{BorderSpec
left-margin = 0pt,
right-margin = 0pt
}
}
}
| |
(ローカル オプション)
public Graphic.border-style:
BorderStyle =BorderStyle.flat
オブジェクトの境界の外観を指定します。
説明
有効値は次のとおりです。
- "none": 境界を描きません。境界領域は背景色で塗りつぶされます。
- "flat" :境界はセルの境界色で単純にペイントされます。border-style を指定しない場合、これが既定値です。
- "raised": 斜めに浮き上がって見えるように、セルの境界色より薄い色と濃い色を使って境界をペイントします。
- "sunken":斜めにへこんだ外観を作ります。
- "ridge": 浮き上がった境界でへこんだ境界を囲むように、境界領域を塗りつぶします。
- "groove":へこんだ境界で浮き上がった境界を囲むように、境界領域を塗りつぶします。
- "dash":破線の境界線を描くため、境界領域を塗りつぶします。
- "dot":点線の境界線を描くため、境界領域を塗りつぶします。
- "double":二重線の境界線を描くため、境界領域を塗りつぶします。
- "tiled": 境界領域を埋め、 タイル状の border-color FillPattern 表示を生成します。 Pixmap ベースの FillPattern で使用されます。
例
例:
次は、さまざまなテーブル セルのボーダー スタイルを青で表示しています (tiled を除く)。 |
|
{define-proc package {make-frame
border-style:BorderStyle,
border-color:FillPattern =
FillPattern.blue
}
let label:String = {{String border-style}.tail 12}
{return
|| Outer Frame is added for spacing only.
{Frame margin = 3pt,
{Frame
width = 2cm,
height = 1cm,
border-width = 3pt,
background = FillPattern.silver,
border-color = border-color,
border-style = border-style,
label
}
}
}
}
{RasterBox
{make-frame BorderStyle.none},
{make-frame BorderStyle.flat},
{make-frame BorderStyle.raised},
{make-frame BorderStyle.sunken},
{make-frame BorderStyle.ridge},
{make-frame BorderStyle.groove},
{make-frame BorderStyle.dash},
{make-frame BorderStyle.dot},
{make-frame BorderStyle.double}
}
| |
この例は、tiled ボーダー スタイルの使用法を示しています。ボーダー幅が変化するにつれて、ボーダーのタイル部分がどのように変化するか注意してください。この場合は、タイル部分には 24px より小さいボーダー幅のイメージの傾斜部分が含まれます。また、ピクセルの単一の行と列が伸長され、イメージ部分がなくなるまで、ボーダーが大きくなるにつれて、両側と上部に沿ったタイル表示に使用できるイメージ部分が小さくなっていくことに注意してください。これは、ボーダー幅がイメージ サイズの半分以上の場合に発生します。このイメージは 256x256 のため、ボーダー幅を 128px 以上に設定するとこの効果を確認することができます。
border-color に使用されるイメージは次のように表示されます。
例:
tiled ボーダー スタイルの使用 |
|
{let constant f:Frame =
{Frame
border-width = 60px,
border-style = BorderStyle.tiled,
border-color =
{FillPattern.from-url
{url "curl://source/docs/default/images/tiled-border.gif"}
}
}
}
{value
{f.add
{HBox
background = "#6f4e20",
control-content-background = "#6f4e20",
color = "white",
spacing = 5mm,
"border-width:",
{TextField
width = 2cm,
value = "60px",
control-appearance-changeable? = true,
{on ValueFinished at tf:TextField do
set f.border-width = {evaluate tf.value}
}
}
}
}
f
}
| |
注意事項
(ローカル オプション)
public Graphic.border-width:
any =0pt
オブジェクトの境界の幅を指定します。
説明
例
距離は同じで境界幅 (青) の異なる 2 つのオブジェクトを次に示します。
例 |
|
{spaced-hbox
valign="bottom",
{Frame width=3cm,
height=2cm,
background="silver",
border-color="blue",
border-width=3pt},
{Frame width=3cm,
height=2cm,
background="silver",
border-color="blue",
border-width=0.25cm}}
| |
注意事項
border-width に代入する値には、
10pt (
10points)、
.5cm (
.5centimeters)、
0.3in (
0.3inches)、または
1px (
1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (
1pt = 1/72 インチ) で表していると見なされます。
Graphic.width オプションや
Graphic.height オプション同様に、指定した境界幅がピクセル サイズの正確な倍数にならない場合、最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。
(非ローカル オプション)
Table セルの BorderSpec を指定します。
説明
例
例:
BorderSpec の使用 |
|
{define-proc package {make-table
cell-border-style:BorderStyle,
cell-border-color:FillPattern =
FillPattern.blue,
cell-border-spec:#BorderSpec = null
}
{return
{Table
columns = 3,
width = 7cm,
height = 3cm,
background = FillPattern.silver,
border-width = 1pt,
border-color = FillPattern.black,
cell-border-style = cell-border-style,
cell-border-color = cell-border-color,
cell-border-width = 2pt,
cell-margin = 5pt,
cell-border-spec = cell-border-spec,
"Apple", "Banana", "Grapes",
"Papaya", "Strawberry", "Guava"
}
}
}
{spaced-hbox
margin = 2pt,
|| Note that this Table is setting the left and right cell
|| border width to 0pt. Since top and bottom cell border width
|| are not specified in the BorderSpec they will be equal to
|| the value of the cell-border-width option on the Table.
{make-table
BorderStyle.flat,
cell-border-spec =
{BorderSpec
left-border-width = 0pt,
right-border-width = 0pt
}
},
|| Note that this Table is setting the left and right cell
|| margin to 0pt. Since top and bottom cell margin are not
|| specified in the BorderSpec they will be equal to the
|| value of the cell margin option on the Table.
{make-table
BorderStyle.flat,
cell-border-spec =
{BorderSpec
left-margin = 0pt,
right-margin = 0pt
}
}
}
| |
(非ローカル オプション)
public Graphic.cell-border-width:
any Table のテーブル セル ボーダーの幅を指定します。
説明
Distance、
PixelDistance、
EmDistance の値を指定します。既定値は 0pt です。
各テーブル セルにはボーダーがあります。たとえば、表内の各セルが幅 1 ピクセルのボーダーを持つ場合、2 つの隣接するセルの内容の間には、2 ピクセル分のボーダーが存在することになります。
注意:Curl 言語の将来のバージョンでは、隣接するテーブル セルのボーダーがマージされて、
cell-border-width を指定すると、その分のスペースだけが 2 つの隣接するテーブル セルの内容の間に現れるようになる可能性があります。
例
次の Table 内の 3 つのテーブル セルには、異なるテーブル セル ボーダーの幅 (青で表示) が指定されています。
注意事項
cell-border-width に代入する値には、
10pt (
10points)、
.5cm (
.5centimeters)、
0.3in (
0.3inches)、または
1px (
1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (
1pt = 1/72 インチ) で表していると見なされます。
Graphic.width オプションや
Graphic.height オプション同様に、指定したボーダー幅がピクセル サイズの正確な倍数にならない場合、最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。
(非ローカル オプション)
public Graphic.cell-margin:
any テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。
説明
注意事項
cell-margin に代入する値には、
10pt (
10points)、
.5cm (
.5centimeters)、
0.3in (
0.3inches)、または
1px (
1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (
1pt = 1/72 インチ) で表していると見なされます。
Graphic.width プロパティや
Graphic.height プロパティと同様に、指定したマージンがピクセル サイズの正確な倍数にならない場合、ピクセル サイズに最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。
例
次にいくつかの異なるセル マージン サイズが青で表示されています。テーブル ボーダーは黒です。テーブル セル ボーダーは白です。
(アクセサ)
アクセサ public Graphic.clip-child-shadows?:
bool この Graphic の子の影がこの box の目に見える境界の外に描画されるかどうかを規定します。
オーバーライド
既定では、true を返します。そのため、このオブジェクトの子の影はこのオブジェクトの境界の外には描画されません。子の影がその目に見える境界の外に描画される場合、false を返します。
Boxの既定の実装は、
falseを返すようにオーバーライドします。
導入:
バージョン 6.0
(ローカル オプション)
public Graphic.discrete-select-in-range?:
bool =false
(非ローカル オプション)
このオブジェクトに関連付けられている 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 Graphic.enabled?:
bool Visual が有効であるかどうかを指定します。
説明
このオプションが false の場合、オブジェクトやGUI オブジェクトとのユーザー インタラクションは無効になります。
このオプションを
true に設定する代わりに、オプションを
unset する方が一般的です。これにより、一部の親コンテナの値は、有効な値を判別します。
- このオプションが false の場合、オプションに応じて、テキストは disabled-color および disabled-text-sunken? で表示されます。
例
例 |
|
{paragraph I am enabled}
{paragraph enabled? = false, I'm not}
| |
このオプションが false で、
Visual がコントロールの場合、コントロールのユーザー インターフェイスは無効になります。前述したように、ラベル上の任意のテキストは、無効状態で表示されます。
例
例 |
|
{radio-buttons
value = "first",
{RadioButton radio-value = "first"},
{RadioButton
radio-value = "second",
reactive-label = {ReactiveLabel
label-disabled = "(second)"
},
enabled? = false
},
{RadioButton radio-value = "third"}
}
| |
(ローカル オプション)
(ローカル オプション)
public Graphic.height:
any
(ローカル オプション)
public Graphic.horigin:
any ="origin"
オブジェクトの外側起点の x 座標を指定します。
説明
外側起点の既定位置は、オブジェクトの
内側起点になります。
horigin オプションの有効な値は、以下のように指定します。
- "origin" は、外側起点の x 座標がオブジェクトの内側起点と同じになるように指定します。これは、horigin オプションを指定しないことと同じです。
- "left" は、外側起点がグラフィックの (外側のボーダー) 左端になるように指定します。
- "center"は、外側起点が x 座標の中心になるように指定します。
- "right" は、外側起点がグラフィックの (外側のボーダー) 右端になるように指定します。
- 0 から 1 まで (0 と 1 を含む) の数字。外側起点の左側に表示されるセルの幅の伸張率を指定します。たとえば、0 を指定すると "left" と同じ起点になり、0.5 を指定すると "center" と同じ起点になります。
次の例は、
horigin オプションを使用して指定された起点の位置を示しています。
例 |
|
{VBox
halign="origin",
{Rule color="blue", height=18pt, width=1pixel},
{RectangleGraphic
horigin="center",
fill-color="red",
height=30pt,
width=144pt,
border-color="cyan",
border-width=4pt,
margin=2pt},
{Rule color="blue", height=18pt, width=1pixel}} | |
(フィールド)
public-get private-set Graphic.is-paginating?:
bool true の場合は、この Graphic がパジネートします。
注意事項
(フィールド)
public-get protected-set Graphic.layout:#
Layout このオブジェクトに関連付けて、Layout オブジェクトをポイントします。
(ローカル オプション)
public Graphic.margin:
any =0pt
オブジェクトのボーダーとその子スロット (オブジェクトがそのグラフィカルな子を配置する場所) との間の距離を指定します。
説明
注意事項
margin に代入する値には、
10pt (
10points)、
.5cm (
.5centimeters)、
0.3in (
0.3inches)、または
1px (
1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (
1pt = 1/72 インチ) で表していると見なされます。
Graphic.width プロパティや
Graphic.height プロパティと同様に、指定したマージンがピクセル サイズの正確な倍数にならない場合、ピクセル サイズに最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。
例
次の例ではサイズの異なるマージンを青で示します。
例 |
|
{HBox spacing=6pt, border-color="black",
valign="bottom",
{Frame width=2cm,
height=1cm,
background="blue",
|| margin not specified
border-width=2pt, {RectangleGraphic fill-color="silver"}},
{Frame width=2cm,
height=1cm,
background="blue",
|| margin is same as border width
margin=2pt,
border-width=2pt, {RectangleGraphic fill-color="silver"}},
{Frame width=2cm,
height=1cm,
background="blue",
|| margin is greater than border width
margin=4pt,
border-width=2pt, {RectangleGraphic fill-color="silver"}}}
| |
(ローカル オプション)
public Graphic.opaque-to-events?:
bool =false
透明なセクションに発生する PointerEvent をこのオブジェクトが受け取るかどうかを指定する bool。
説明
この値を true に設定した場合、背景が透明で他のオブジェクトが透けて表示されていても、オブジェクトの境界の内側のすべての
PointerEvent はこのオブジェクトで発生します。この値が false の場合は、イベントはこのオブジェクトの後ろに見えるオブジェクトに渡される場合があります。
注意事項
このオプションを false に設定しても、イベントが可視オブジェクトを通過してしまうことはありません。
(アクセサ)
オブジェクトのオプションの親を返します。
戻り値
オーバーライド
(ローカル オプション)
Graphic の外側マージンとして適用される OffsetSpec を規定します。
説明
null の場合、Graphic は外側マージンを持ちません。
例
次のコードは、
HBox 内で、オブジェクト間を空けるために外側のマージンがどのように使用されるかを示しています。同様のことを
HBox.spacing を使用して行うと、outside-margin オプションによって子のスペースをより制御できることがわかります。このオプションを、自身にスペースを提供しないコンテナでオブジェクト間を空けるのにも使用できます。
例:
外側のマージンの使用 |
|
{HBox
background = "lime",
{Frame
background = "pink",
outside-margin =
{OffsetSpec
left = 4pt, right = 2pt, top = 4pt, bottom = 4pt
},
"Hello"
},
{Frame
background = "pink",
outside-margin =
{OffsetSpec
left = 2pt, right = 4pt, top = 4pt, bottom = 4pt
},
"Hello"
}
}
| |
導入:
バージョン 6.0
(ローカル オプション)
このオプションが非 null のときは、この Graphic に対するパジネーション シーケンスの状態を表します。
注意事項
このオプションは通常、印刷操作時には非 NULL になっています。
プログラミング注意事項
(アクセサ)
アクセサ public Graphic.parent:#
Box オブジェクトのグラフィカルな親を返します。
戻り値
オブジェクトの親。オブジェクトが親を持たない場合、null を返します。
オーバーライド
通常はオーバーライドされません。
(アクセサ)
アクセサ public Graphic.possibly-displayed?:
bool このオブジェクトが表示されているかどうかを伝えます。
説明
このオブジェクトがスクリーン上に表示されているかもしれない時、true を返します。オブジェクトが明らかに表示されていない時は、false を返します。解はあくまで"ベストエフォート"
を基本にしており、オブジェクトが表示されていない時でも true を返す可能性があります。
導入:
バージョン 7.0
(非ローカル オプション)
(非ローカル オプション)
影の色です。既定の色は黒で、アルファ値は 0.175 です。
導入:
バージョン 6.0
(ローカル オプション)
Graphic の ShadowSpec を指定します。
説明
注意事項
影はアルファ混合(つまり、
DrawOperation.blend)に依存するため、一般的に正常に動作するためには特別なレンダラーを必要とします。
RenderingMode.high-quality の使用を推奨します。多くの場合、レンダリングのシステムが混合機能をサポートしていない場合は影を実際に確認することはできません。
RenderingMode.high-qualityの使用が推奨されます。
この技術の制限と詳細情報に関しては、
RenderingMode を参照してください。
例
この例では、
ShadowSpec オブジェクトの様々なプロパティを試してみることができます。特別なレンダラーが必要なので、この例は
View.set-rendering-mode を用いて独立した
View を使用します。例を操作するには、下のボタンを押して
View を表示させる必要があります。
例:
ShadowSpec の使用 |
|
{def button =
{CommandButton
outside-margin =
{OffsetSpec
left = 30px, right = 30px,
top = 30px, bottom = 30px
},
shadow-spec = {ShadowSpec},
shadow-color = {FillPattern.from-rgb 0, 0, 0, opacity = 0.175}
}
}
{def demo =
{value
let offset-slider:#Slider
let angle-slider:#Slider
let radius-slider:#Slider
let falloff-slider:#Slider
let opacity-slider:#Slider
let ul-round?:#CheckButton
let ur-round?:#CheckButton
let lr-round?:#CheckButton
let ll-round?:#CheckButton
def change-handler =
{on ValueChanged do
set button.shadow-spec =
{ShadowSpec
offset = offset-slider.value asa double * 1px,
angle = angle-slider.value asa double * 1deg,
corner-radius = radius-slider.value asa double * 1px,
falloff = falloff-slider.value asa int,
upper-left-rounded? = ul-round?.value,
upper-right-rounded? = ur-round?.value,
lower-right-rounded? = lr-round?.value,
lower-left-rounded? = ll-round?.value
}
}
set offset-slider =
{Slider
width = 10cm,
domain =
{StandardIntDomain
default-value = 6,
min-allowable = 0,
max-allowable = 20
},
minor-tick-spacing = 1,
major-tick-spacing = 5,
change-handler
}
set angle-slider =
{Slider
width = 10cm,
domain =
{StandardIntDomain
default-value = 135,
min-allowable = 0,
max-allowable = 360
},
minor-tick-spacing = 30,
major-tick-spacing = 90,
change-handler
}
set radius-slider =
{Slider
width = 10cm,
domain =
{StandardFloatDomain
default-value = button.shadow-spec.corner-radius asa PixelDistance / 1px,
min-allowable = 0.0f,
max-allowable = 10.0f
},
minor-tick-spacing = .5,
major-tick-spacing = 2f,
change-handler
}
set falloff-slider =
{Slider
width = 10cm,
domain =
{StandardIntDomain
default-value = button.shadow-spec.falloff,
min-allowable = 0,
max-allowable = 10
},
minor-tick-spacing = 1f,
major-tick-spacing = 2f,
change-handler
}
set opacity-slider =
{Slider
width = 10cm,
domain =
{StandardFloatDomain
default-value = {button.shadow-color.to-Pixel}.alpha,
min-allowable = 0.0f,
max-allowable = 1.0f
},
minor-tick-spacing = .05f,
major-tick-spacing = .2f,
{on ValueChanged do
set button.shadow-color =
{FillPattern.from-rgb 0, 0, 0, opacity =
opacity-slider.value asa double
}
}
}
set ul-round? =
{CheckButton
label = "upper-left",
value = button.shadow-spec.upper-left-rounded?,
change-handler
}
set ur-round? =
{CheckButton
label = "upper-right",
value = button.shadow-spec.upper-right-rounded?,
change-handler
}
set lr-round? =
{CheckButton
label = "lower-right",
value = button.shadow-spec.lower-right-rounded?,
change-handler
}
set ll-round? =
{CheckButton
label = "lower-left",
value = button.shadow-spec.lower-left-rounded?,
change-handler
}
{VBox
{center {value button}},
{Dialog
{Table
{row-prototype button},
{row-prototype "offset", {Fill width = 12pt}, offset-slider},
{row-prototype "angle", {Fill width = 12pt}, angle-slider},
{row-prototype "radius", {Fill width = 12pt}, radius-slider},
{row-prototype "falloff", {Fill width = 12pt}, falloff-slider},
{row-prototype "shadow-color opacity", {Fill width = 12pt}, opacity-slider},
{row-prototype "corners rounded?", {Fill width = 12pt},
{HBox spacing = 8pt, ul-round?, ur-round?, lr-round?, ll-round?}
}
}
}
}
}
}
{CommandButton
label = "Press me to display the example!",
{on Action do
def view =
{View
visibility = "normal",
{VBox
margin = 10pt,
spacing = 24pt,
demo
}
}
{view.set-rendering-mode RenderingMode.high-quality}
}
}
| |
導入:
バージョン 6.0
(ローカル オプション)
public Graphic.visible?:
bool =true
描画や PointerEvent ディスパッチの目的でこのオブジェクトを透明にして不可視にするかどうかを示す bool。
説明
visible? オプションが true (既定値) の場合、オブジェクトは表示されて正常に動作します。visible? オプションが false の場合、オブジェクトは同じ量のスペースを確保しますが、ピクセルを描画せずポインタ イベントに対して透過になります。
表示されていないオブジェクトも、キーボードフォーカスを取得できるので、visible? = false が設定された場合は、enabled? = false も設定することを推奨します。
(アクセサ)
アクセサ public Graphic.visual-parent:#
Visual このオブジェクトの直接の親であるVisualを取得します。
戻り値
このオブジェクトの直近の親である
Visual。このオブジェクトが親を持たない場合、
nullが返されます。
導入:
バージョン 7.0
(ローカル オプション)
public Graphic.vorigin:
any ="origin"
(ローカル オプション)
Graphic の幅設定。
説明
次の情報は、
width および
height オプションに適用します。
このオプションは、この
Graphic の
コンテナが、
レイアウト ネゴシエーション中にこの
Graphic の幅または高さ設定として受け取る値を記述します。このオプションは、そのオブジェクト
自体の
Graphic.get-width-preference メソッドによって返された値 (
本来の幅設定) に必ずしも一致しません。
このオプションには、次の型の値を指定できます。
プロシージャを除き、指定した値は、幅または高さ設定の記述に使用される前に、内部レイアウト ルーチンによって
OriginElastic に変換されます。
OriginElastic およびレイアウト システムでの使用方法の詳細については、「
エラスティックスとページ レイアウト」の章を参照してください。以下は、幅または高さ設定を
OriginElastic に変換する場合に注意する点です。
次のプロシージャが、
{proc {g:Graphic,
e:OriginElastic}:OriginElastic
...}width オプションまたは
height オプションの値として指定されると、対応するサイズ設定 (幅または高さ) の計算が必要になるたびにこのプロシージャが呼び出されます。
g はオプションを設定した
Graphic になり、
e は
g の本来のサイズ設定です。さらに、プロシージャの戻り値は
e で置き換えられるサイズ設定になります。
width または
height オプションのこの特徴が使用されるほとんどの状況で、
add-stretch プロシージャを呼び出して必要なプロシージャを作成することができます。詳細については、
add-stretch を参照してください。
幅と高さをさまざまに変えて指定した例を次に示します。
例 |
|
{HBox width = 4in,
valign = "bottom",
{Frame
background = "pink",
height = {add-stretch},
{RectangleGraphic
width = 1.2in,
height = {make-elastic
preferred-size = 14pt,
stretch-order = rigid-stretch-order
}
}
},
{Fill width = 5mm},
{Frame
background = "blue",
color = "white",
width = 48pt,
height = 40pixel,
"Hi there"
}
}
| |
次の例は、幅と高さの指定を整数ピクセルに丸めた結果を示しています(画面のピクセル サイズ設定により 3 つの行が一列に表示されている場合、変数
w の値をピクセル サイズの倍数とはまったく異なる値に変更してください)。
例 |
|
{value
let w:Distance = 4.0pt
let num-rects:int = 50
let rounded:HBox = {HBox}
let unrounded:HBox = {HBox}
{for i:int =
0 below num-rects do
{rounded.add
{RectangleGraphic height = 15pt, width = w}
}
{unrounded.add
{RectangleGraphic
height = 15pt,
width = {make-elastic
preferred-size = w,
stretch-order =
rigid-stretch-order
}
}
}
}
{VBox
rounded,
unrounded,
{RectangleGraphic
height = 15pt,
width = {make-elastic
preferred-size = w * num-rects,
stretch-order =
rigid-stretch-order
}
}
}
}
| |
1 行目の各四角形は、その幅が同じピクセル値に丸められているため画面上では揃って見えます。ただし、
Graphic のコレクションの幅を指定寸法の正確な合計に合わせる場合は、2 番目の行を生成するのに使用したスタイルを使用する必要があります。
(メソッド)
(メソッド)
最後のレイアウト ネゴシエーションが完了してから、Graphic のレイアウト設定が変更されたかどうかを判定します。
戻り値
bool。このオブジェクトのレイアウト設定が変更されていない場合は true。値が false の場合、変更の有無にかからわずレイアウト ネゴシエーションの確認が行なわれます。
注意事項
このメソッドは、完全なレイアウト ネゴシエーション、つまり、
Graphic.set-size を呼び出してネゴシエーションを行ったオブジェクトに対してのみ呼び出すことを推奨します。このメソッドが true を返すと、直前の完全なレイアウト ネゴシエーション中に行われた同じ高さおよび幅設定の確認が繰り返された場合に、オブジェクトが、以前返された答えと全く同じ答え (
OriginElastic.equal? によって計算された答え) を返すことになります。
このメソッドからオブジェクトがすぐに true を返す最も一般的なケースは、直前のレイアウト ネゴシエーションの結果を無効にするようなことがオブジェクトで発生しなかった場合です。また、このメソッドが true を返すこれ以外のケースは、
Box であるオブジェクトの場合で、
Box の子すべてに対して
Graphic.attempt-revalidate-layout を呼び出し、これらの呼び出しすべてで true が返されたときに true を返します(
Box の設定が
Box の子の設定と変更されたかどうかが不明なその他のパラメータにのみ依存する場合、この処理が有効です)。
このメソッドが true を返し、このオブジェクトの親にその境界を変更する理由がない場合、親がこのオブジェクトに対してさらにレイアウト ネゴシエーションを呼び出す可能性はありません。したがって、このオブジェクトがそのレイアウトの有効性の判定を記録している場合、このメソッドから true を返す前にオブジェクトはそれ自体を layout-valid 状態に設定する必要があります。
プログラミング注意事項
オーバーライド
(メソッド)
Graphic が移動またはサイズ変更されることを、Graphic に対して通知します。
layout-context: このオブジェクトを含んでいるグラフィック階層のサブツリーに対応する
LayoutContext オブジェクト。
プログラミング注意事項
このメソッドは、レイアウト ネゴシエーションまたはその他の操作で可視オブジェクトを移動またはサイズ変更するときに必ず呼び出します。このメソッドは、オブジェクトが見えない場合でも呼び出すことができます。また、このメソッドを呼び出したとしても、その後オブジェクトを移動またはサイズ変更しなくてもかまいません。
オーバーライド
(メソッド)
指定した高さの制約を受けた場合にこの Graphic の幅設定を返します。
ascent, descent: 高さの制約。この
Graphic の起点からの相対的な上昇および下降の距離で表されます。
戻り値
オーバーライド
既定のメソッド
Graphic.constrain-height は、単に
Graphic.get-width-preference を呼び出します。このメソッドは、オブジェクトが幅設定を計算する際に高さの制約を考慮しなくてもいい場合はオーバーライドする必要がありません。
このメソッドをオーバライドするクラスでは必ず
Dimension を返すようにして、これで必要な水平軸に沿ったスペースを
そのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な
OriginElastic または
Dimension を返すことを意味します。
Dimension の場合は、「
次元から OriginElastics への変換」で説明する変換規則に従って、適切な
OriginElastic に変換されます。
重要:このメソッドのオーバーライド実装には、レイアウト ネゴシエーションが確実にグラフィック階層全体に適用されるように、スーパークラス実装の呼び出しを含める必要があります。
(メソッド)
指定した高さの制約を受けた場合にこの Graphic の高さ設定を返します。
lextent, rextent: 幅の制約。起点からの左と右の相対距離で表されます。
戻り値
オーバーライド
既定のメソッド
Graphic.constrain-width は、単に
Graphic.get-height-preference を呼び出します。このメソッドは、オブジェクトが高さ設定を計算する際に幅制約を考慮しなくてもいい場合はオーバーライドする必要がありません。
このメソッドをオーバライドするクラスでは必ず
Dimension を返すようにして、これで必要な垂直軸に沿ったスペースを
そのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な
OriginElastic または
Dimension を返すことを意味します。
Dimension の場合は、「
次元から OriginElastics への変換」で説明する変換規則に従って、適切な
OriginElastic に変換されます。
重要:このメソッドのオーバーライド実装には、レイアウト ネゴシエーションが確実にグラフィック階層全体に適用されるように、スーパークラス実装の呼び出しを含める必要があります。
(メソッド)
指定されたポイントで発生するイベントが、ターゲット ボックス (BasicBox.contains-point? を参照) か、またはそのグラフィカルな子のどちらに関するものかを判定します。
x, y: ポイントの座標。ターゲット オブジェクトの起点を基準として表現します。
プログラミング注意事項
このメソッドは通常、ポインタ イベントを子のオブジェクトに転送するかどうかを判断するために、ターゲット オブジェクトのグラフィカルな親によって呼び出されます。
オーバーライド
ポイントがオブジェクトの境界ボックス内にある場合にのみ、既定のメソッドは true を返します。円などの複雑な形状を含むオブジェクトは、最初に {super.contains-point? x, y} を呼び出し、その呼び出しにより false が返された場合に false を返すメソッドで、このメソッドをオーバーライドします。その呼び出しが true を返した場合、オブジェクトに実際にポイントを保持しているかどうかを判定するための計算をメソッドでさらに実行します。このようなスタイルに従うことにより、メソッドは非効率的な計算の前に効率的な bounding-box チェックを行います。このような規律が大切なのは、オブジェクトから離れた (x,y) 位置から contains-point? が頻繁に呼び出されるためです。
(メソッド)
PaginationState オブジェクトをインスタンス化します。
注意事項
オーバーライド
PaginationState のサブクラスであるパジネーション状態オブジェクトを返したい場合は、これをオーバーライドします。そうしないと、
Graphic のサブクラスが常に各ページにボーダーとマージンを表示したい場合は、
Graphic がパジネートされます。後者の場合は、
true を
show-decorations-at-page-breaks? に渡すことによって
super.create-pagination-state を呼び出すことができます。
(メソッド)
public | {Graphic.detach}:void |
(メソッド)
このオブジェクトの可視表現を描画します。
オーバーライド
(メソッド)
public | {Graphic.draw-range-as-selected}:void |
このグラフィックの一部を選択領域として描画します。
説明
オーバーライド
(メソッド)
オブジェクトの影を描画します。
オーバーライド
Graphic のサブクラスは独自の影を描画する為に、このメソッドをオーバーライドしなければなりません。
説明
導入:
バージョン 6.0
(メソッド)
public | {Graphic.end-pagination}:void |
(メソッド)
与えられた述語に適合する最も近いグラフィックの祖先を返します。
p: 述語を指定するプロシージャ。
戻り値
{p a} が true を返す最も近い祖先 a。{p self} が true を返す場合、self が返されます。p に適合する祖先が見つからない場合、戻り値は null になります。
(メソッド)
public | {Graphic.find-graphic-at}:#Graphic |
指定ポイントをカバーし、指定テストの条件を満たす Graphic を見つけます。
x, y: self の座標フレームを基準にしたポイントの座標。
test: テスト。
Graphic を引数として与えると
test が true を返す場合、
Graphic はこのテストの条件を満たしているといえます。
戻り値
このオブジェクトが test の条件を満たす場合はこれを返します。その他の場合は null を返します。
プログラミング注意事項
このメソッドは、ポインタ イベントを他のオブジェクトにリダイレクトするグラフィカル オブジェクトで使います。このメソッドによりポインタ イベントの転送先オブジェクトを見つけます。
オーバーライド
このメソッドのオーバーライドでは、super.find-graphic-at を呼び出すか、それと同様のテストを実行する必要があります。
(メソッド)
public | {Graphic.find-graphical-ancestor}:#Graphic |
与えられた述語に適合する最も近いグラフィックの祖先を返します。
p: 述語を指定するプロシージャ。
戻り値
{p a} が true を返す最も近い祖先 a。{p self} が true を返す場合、self が返されます。p に適合する祖先が見つからない場合、戻り値は null になります。
(メソッド)
protected | {Graphic.fire-inferior-crossing-event}:void |
このオブジェクトで PointerCrossing イベントを発生させます。
プログラミング注意事項
オーバーライド
通常はオーバーライドされません。
(メソッド)
public | {Graphic.get-graphical-root}:Graphic |
Visual のグラフィック階層のルートで、オブジェクトを取得します。
戻り値
オーバーライド
(メソッド)
public final | {Graphic.get-gui-path root:Box}:{Array-of int} |
ソート目的で位置の配列を提供します。
戻り値
このメソッドは、root配下のグラフィック階層内のVisualの位置を、親の中でのそれぞれの親オブジェクトを表す整数の配列として返します。その配列は、グラフィックオブジェクトの合理的な順序を取得する為に比較されます。
注意事項
コンテナオブジェクトは、子オブジェクト左から右に並べる為に、合理的なスキーマを使用するかもしれません。その為GUIパスの数値の詳細は、あるCurlセッションと他のセッションで同じであることは保証されません。
オーバーライド
Visual上の子のメソッドの基本定義は、エラーをスローするだけです。
Visualの直接のサブクラスの多く、例えば
Graphicは、このメソッドに適した定義を提供しています。したがって、
Visualから間接的に継承されたユーザー定義のクラスは、一般的にこのメソッドをオーバーライドする必要はありません。
導入:
バージョン 7.0
(メソッド)
public abstract | {Graphic.get-height-preference}:Dimension |
この Graphic の高さ設定を返します。
戻り値
オーバーライド
このメソッドは、
Graphic のサブクラス内で定義する必要があります。
このメソッドをオーバライドするクラスでは必ず
Dimension を返すようにして、これで必要な垂直軸に沿ったスペースを
そのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な
OriginElastic または
Dimension を返すことを意味します。
Dimension の場合は、「
次元から OriginElastics への変換」で説明する変換規則に従って、適切な
OriginElastic に変換されます。
(メソッド)
グラフィック階層内における指定された祖先に対する Visual の相対的位置を見つけます。
ancestor: 対象の上位オブジェクトです。
戻り値
対象の座標、ならびに
ancestor が
self の上位オブジェクトである場合は true に、それ以外の場合は false に指定された
bool です。この
bool が false の場合、返される座標には意味はありません。
オーバーライド
これは
Visual のサブクラスに定義されなくてはならない抽象メソッドです。
注意事項
このメソッドは有効なレイアウトを持つオブジェクトで呼び出されなければなりません。そうでなければ、このメソッドの戻り値は有用ではありません。
(メソッド)
グラフィック階層のルートにあるオブジェクトを基準とし、Visual の位置を取得します。
戻り値
ロケーションとルート オブジェクトでは次のようになります。
- ルートの内側起点を基準とした、Visual の内側起点の x 座標。
- ルートの内側起点を基準とした、Visual の内側起点の y 座標。
- ルート オブジェクトそのもの ( Graphic)。
注意事項
(メソッド)
(メソッド)
public | {Graphic.get-range-as-selected-text}:void |
start-bound と end-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。
start-bound: グラフィック内の開始ポイントを区切る
GuiMark。null の場合、開始ポイントはグラフィックの先頭の端と見なされます。
end-bound: グラフィック内の終了ポイントを区切る
GuiMark。null の場合、終了ポイントは、グラフィックの最後の端と見なされます。
オーバーライド
通常コンテナは再帰的に呼び出しを実行して、適切な区切り文字を挿入します。その他のサブクラスは、直接テキストを提供します。
(メソッド)
グラフィック階層に含まれる指定上位オブジェクトの座標フレームでこのオブジェクトの左上隅のロケーションを見つけます。
ancestor: 対象の上位オブジェクトです。
戻り値
対象の座標、ならびに
ancestor が
self の上位オブジェクトである場合は true に、それ以外の場合は false に指定された
bool です。この
bool が false の場合、返される座標には意味はありません。
オーバーライド
これは
Visual のサブクラスに定義されなくてはならない抽象メソッドです。
注意事項
(メソッド)
public | {Graphic.get-visible-bounds-into grect:GRect}:void |
オブジェクトの実際の可視領域の境界ボックスを計算します。
grect: この四角形の記述を格納する
GRect。四角形の値は、現在のオブジェクトの
内側起点からの相対値です。このオブジェクトが
View を祖先に持っていない場合、
grect が設定されて空の四角形を表します。
オーバーライド
通常はオーバーライドされません。
注意事項
(メソッド)
public abstract | {Graphic.get-width-preference}:Dimension |
この Graphic の幅設定を返します。
戻り値
オーバーライド
このメソッドは、
Graphic のサブクラスで定義する必要があります。
このメソッドをオーバライドするクラスでは必ず
Dimension を返すようにして、これで必要な水平軸に沿ったスペースを
そのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な
OriginElastic または
Dimension を返すことを意味します。
Dimension の場合は、「
次元から OriginElastics への変換」で説明する変換規則に従って、適切な
OriginElastic に変換されます。
(メソッド)
public | {Graphic.graphical-child-visible-at}:#Graphic |
位置 x、y にある目に見えるグラフィカルな子を規定します。
説明
このメソッドは、(x, y) に描画された順番で最上位のグラフィカルな子を返します。
x, y: self の座標フレームを基準にしたポイントの座標。
戻り値
子のオブジェクトが見つかればそれを返します。そうでなければ、null を返します。
プログラミング注意事項
注意事項
既定の実装では、
null を返します。子を持つことができる
Graphic のサブクラスは、
(x, y) に描画された順番で最上位のグラフィカルな子を返すためにオーバーライドします。
導入:
バージョン 6.0
(メソッド)
public | {Graphic.make-gui-mark}:GuiMark |
この Graphic を参照する GuiMark を作成する標準的な方法。
戻り値
初期化されてグラフィックの先頭の端に新しく割り当てられた GuiMark。
オーバーライド
GuiMark のカスタム サブクラスが Graphic のコンテンツを参照する必要がある場合、Graphic のサブクラスでこのメソッドをオーバーライドします。
(メソッド)
(メソッド)
Inspection イベントのスタティック イベント ハンドラ。
説明
オーバーライド
通常はオーバーライドされませんが、このイベントの処理時にインスペクション メニューを表示する定義を提供する
Graphic 自体による場合は例外です。
(メソッド)
(メソッド)
このオブジェクトにオプションの値が変更したことを通知します。
key: 値が変更されたオプションの名前を指定する
String。
プログラミング注意事項
オプションが (a) ローカル オプションの場合、あるいは (b) 非ローカル オプションで、このオプションに対してオブジェクトが option-change ハンドラ プロシージャを宣言している場合、オプションの値がバインド、変更、またはバインド解除されるたびにオプション パッケージはこのメソッドを一度呼び出します。
オーバーライド
(メソッド)
public | {Graphic.paginate}:(PaginationState, PaginationQuality) |
グラフィックにパジネーションを適用します。
page-height: グラフィックをページにレンダリングするのに有効な高さ。これには、ボーダーとマージンが占めるスペースは含まれません。
next-page-height: このグラフィックが次のページに移動される場合に、このグラフィックをパジネートするのに有効な高さ。
戻り値
プログラミング注意事項
オーバーライド
Graphic 自身が何らかの具体的な方法でページ間でパジネーションを実行するようにしたい場合は、このメソッドをオーバーライドします。
このメソッドをオーバーライドするときは、以下の規則に従う必要があります。
page-height が負または無視できるほどである場合は、返されたパジネーション状態がオブジェクトの現在のパジネーション状態であり、返されたパジネーションの質が PaginationQuality.clipped-outside でなければなりません。
Box などのコンテナ (パジネーションによってその子をページ間で分割しないようにする場合)。このようなコンテナは、現行ページに子を収容できない場合は、次の 2 つのステップに従う必要があります。
2. 子にパジネーションを依頼し、返された
PaginationQuality が
PaginationQuality.good 以上であれば、現行ページで子のパジネーションを開始する。そうでなければ、コンテナが、
true として渡される
query-only? と、独自の
Graphic.paginate メソッドに渡された
next-page-height として渡される
page-height および
next-page-heightとで
Graphic.paginate メソッドを呼び出して子を次のページに押し込んだ場合に子のパジネーションが少なくとも
PaginationQuality.good になるかどうかを調べる必要があります。PaginationQuality.good である場合は子を次のページに押し込み、そうでない場合は子が現行ページからパジネーションするようにします。
コンテナは、子グラフィックを直接パジネーションさせるのではなく、子グラフィックの
Layout にパジネーションを依頼する必要があるので、注意してください。
以下は、Graphic.paginate がどのようにして実装されるかを示すコードです。
{method public open {paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)
let pstate:PaginationState =
{self.get-pagination-state query-only?}
let bounds:GRect = pstate.bounds
let constant epsilon:Distance = epsilon-float * 1m
|| All done.
{if {abs bounds.descent - pstate.end-offset} < epsilon then
set pstate.start-offset = pstate.end-offset
{return pstate, PaginationQuality.complete}
}
|| No space left for the graphic.
{if page-height < epsilon then
{return pstate, PaginationQuality.clipped-outside}
}
let new-start-offset:Distance = pstate.min-end-offset
let new-end-offset:Distance =
{min new-start-offset + page-height, bounds.descent}
{return
{pstate.advance-pagination
new-start-offset,
new-end-offset,
quality-if-not-complete = PaginationQuality.poor
}
}
}
注意事項
(メソッド)
ボーダーやマージンを含めたオブジェクトのセル全体を描画します。
gc: グラフィックの描画に使用する
Renderer2d。現在のオブジェクトの起点は、
gc の起点で描画されます。
プログラミング注意事項
オブジェクトの描画がオブジェクトの親以外から要求されるという例外的な状況にのみ、このメソッドが呼び出されます。このメソッドを提供するきっかけとなる例として、ドラッグ / ドロップ操作中のオブジェクトのコピーの描画があります。
オーバーライド
通常はオーバーライドされません。
(メソッド)
(メソッド)
(メソッド)
このオブジェクトに代わって別のオブジェクトをグラフィック階層に置きます。
g: このオブジェクトに代わりに配置するオブジェクト。
戻り値
g オブジェクト。
g として非
Graphic が提供された場合、
replace-with の呼び出し中に
Graphic にキャストされます。したがって、返される値は必ず
self を置き換えるのに使用した
Graphic になります。
(メソッド)
public | {Graphic.request-draw}:void |
描画する Graphic に属するピクセルを確認します。
注意事項
プログラミング注意事項
このオブジェクトのピクセルの再ペイントが必要になる何らかの理由があったとき、このメソッドが呼び出されます。このような状況が発生するのは、オブジェクトが初めて表示されるとき、ビューから削除されるとき、移動やサイズ変更が行なわれるとき (この場合、移動やサイズ変更の前と後でこのメソッドを呼び出す必要があります) などがあります。
オーバーライド
(メソッド)
public | {Graphic.request-draw-rect}:void |
指定した GRect を再描画するためにピクセルを要求します。
rect: 再描画する領域を記述する
GRect。
プログラミング注意事項
注意事項
オーバーライド
通常はオーバーライドされません。
(メソッド)
public | {Graphic.request-layout}:void |
Graphic のレイアウト設定が変更されたため、新しいレイアウト ネゴシエーションを行う必要があることを通知します。
オーバーライド
request-layout 操作の実行時に更新される記録情報を持つ
Graphic のサブクラスによって、このメソッドをオーバーライドできます。このようなオーバーライド メソッドは、必ず
{super.request-layout} を呼び出します。オーバーライド メソッドの例として、
BasicBox.request-layout があります。
(メソッド)
public | {Graphic.request-pointer-trace}:void |
表示されたオブジェクトの幾何形状が変更されていることを宣言し、必要な PointerCrossing イベントの発生を要求します。
説明
オーバーライド
ポイント (x,y) を含む子オブジェクトの識別に (x,y) の位置をマップする、キャッシュされた状態を格納する
SequenceBox のようなサブクラスによってオーバーライドできます。こうした状態はリセットして、グラフィック階層のオブジェクトの幾何形状が変更されても新しい
PointerEnvelopeEvent が適切に送信されるようにします。このメソッドをオーバーライドする場合、オーバーライド メソッドには以下の呼び出しを含めます。
{super.request-pointer-trace}
(メソッド)
public | {Graphic.search-next}:(pattern-start:#GuiMark,pattern-end:#GuiMark) |
この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。
gm: 検索を開始する
GuiMark。指定しない場合は
Graphic の左端から検索を開始します。
gm を指定する場合、
gm.graphic の参照先が、このメソッドを呼び出す
Graphic かそのグラフィックな子孫の 1 つになる必要がある点に注意してください。
戻り値
パターンの開始を定める GuiMark と、終了を定める GuiMark。
説明
searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
オーバーライド
(メソッド)
public | {Graphic.search-next-here}:(pattern-start:#GuiMark,pattern-end:#GuiMark) |
この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-next を呼び出します。
gm: 検索を開始する
GuiMark。指定しない場合は
Graphic の先端から検索を開始します。
gm を指定する場合、
gm.graphic がこのメソッドを呼び出す
Graphic に
等しくなければならない点に注意してください。
戻り値
パターンの開始を定める GuiMark と、終了を定める GuiMark。
説明
searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
オーバーライド
このメソッドの基本実装は常に null, null を返します。SearchPattern を実際に識別して探し出せる Graphic のサブクラスでは、それを実行するためにこのメソッドをオーバーライドする必要があります。
(メソッド)
public | {Graphic.search-prev}:(#GuiMark, #GuiMark) |
この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。
gm: 検索を開始する
GuiMark。指定しない場合、
Graphic の右端から検索を開始します。
gm を指定する場合、
gm.graphic の参照先が、このメソッドを呼び出す
Graphic かそのグラフィックな子孫の 1 つになる必要がある点に注意してください。
戻り値
パターンの開始を定める GuiMark と、終了を定める GuiMark。
説明
searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
オーバーライド
注意事項
グラフィック階層でこのメソッドを呼び出すと、
Box.reverse-ordered-children (この既定の実装では一時的な参照配列にグラフィカルな子をそれぞれ割り当てます) を繰り返して使用する必要が生じます。このメソッドの呼び出しでは、関連する割り当ての数は検索対象の
Box 数に等しくなり、割り当ての総量は検索対象の
Graphic 数に比例します。
(メソッド)
public | {Graphic.search-prev-here}:(#GuiMark, #GuiMark) |
この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-prev を呼び出します。
gm: 検索を開始する
GuiMark。指定しない場合は
Graphic の左端から検索を開始します。
gm を指定する場合、
gm.graphic がこのメソッドを呼び出す
Graphic に
等しくなければならない点に注意してください。
戻り値
パターンの開始を定める GuiMark と、終了を定める GuiMark。
説明
searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
オーバーライド
このメソッドの基本実装は常に null, null を返します。SearchPattern を実際に識別して探し出せる Graphic のサブクラスでは、それを実行するためにこのメソッドをオーバーライドする必要があります。
(メソッド)
Graphic のレイアウト オブジェクトを設定します。
l: 設置するレイアウト オブジェクト。
プログラミング注意事項
このメソッドは、このオブジェクトをグラフィカルな親に接続する過程で呼び出されます。グラフィック階層のオブジェクトの接続/切断に使われるプロトコルを理解せずにこのメソッドを使用するのは危険です。
注意事項
オーバーライド
通常はオーバーライドされません。
(メソッド)
このオブジェクトにレイアウト幅と高さを代入します。
説明
このオブジェクトで set-size を呼び出すと、オブジェクトのレイアウト サイズを代入し、オブジェクトのレイアウト ネゴシエーションを完了します。グラフィック階層のすべてのオブジェクトにレイアウト サイズが代入された後で階層のレイアウト ネゴシエーションが完了します。
bounds: このオブジェクトの境界ボックスの左右および上下の範囲をオブジェクトの起点から相対的に示す
GRect。
プログラミング注意事項
このメソッドは、オブジェクトのグラフィカルな親によって呼び出されます。
オーバーライド
(メソッド)
パジネートできるように Graphic を準備します。
注意事項
オーバーライド
(メソッド)
2 つの グラフィカル オブジェクトの起点の間の (x、y) オフセットを計算します。
g: オフセットを算出する対象のグラフィック。
戻り値
返された
Distance 値は、現在のオブジェクトから
g までの (x,y) オフセットとなります。
bool 値はこのオフセットが妥当であるかどうかを示しています。false である場合、他の結果が無効であることを意味します。これは 2 個のオブジェクトが現在同じスクリーンに表示されていない場合に起きます。
注意事項
このメソッドのコードは、2 つのオブジェクトが同じグラフィカル階層にあるときしかオフセットを計算できません。それ以外の場合、返される
bool 値は false です。ただし、将来的には、2 つのオブジェクトが別々の
View に属していても同じ画面 (またはディスプレイ デバイス) 上にある場合に対応できるようにこのメソッドを拡張する予定です。
レイアウトが現在有効でないオブジェクトでのこのメソッドの呼び出しについては、
Layout.get-bounds の注意事項を参照してください。
詳細については、
Visual.xy-offset-to を参照してください。