Graphic (クラス)
public abstract Graphic {inherits Visual}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.BASE.
直接継承しているサブクラス: LookAndFeel, StretchyGraphic, ActiveXGraphic, DrawableGraphic, Box, FontGraphic, EmbeddedBrowserGraphic

すべてのファーストクラス グラフィカル オブジェクトの (抽象) 基本クラス。このオブジェクトは、グラフィックで表示したり、レイアウト ネゴシエーションに参加できます。

注意事項

Graphic ではない可視オブジェクトは、書式設定されたテキスト (paragraph など) だけです。これは、TextFlowBox の内部にのみ表示されます。Graphic と書式設定されたテキストは、いずれも Visual のサブクラスです。つまり、これはグラフィカルに表示できるオブジェクトすべてに共通のスーパークラスです。

プログラミング注意事項

このクラスは、Curl言語のファーストクラス グラフィカル オブジェクトへのインターフェイスを定義します。したがって、ファーストクラスのグラフィカル オブジェクトである値を持つ変数は、Graphic 型として宣言する必要があります。

コンストラクタ
clone-appearance-from:このタイプの新しいオブジェクトを作成するために Visual.clone-appearance が使用するコンストラクタ。
コンストラクタ protected {Graphic.clone-appearance-from other:Graphic}
default:Graphic を初期化します。
コンストラクタ public {Graphic.default ...}
from-any:any から Graphic を作成します。
ファクトリ public implicit {Graphic.from-any obj:any}:Graphic
from-Dynamic:Dynamic から Graphic を作成します。
ファクトリ public implicit {Graphic.from-Dynamic obj:Dynamic}:Graphic
from-Path:Path から Graphic を作成します。
ファクトリ public implicit {Graphic.from-Path path:Path}:Graphic
from-Pixmap:Pixmap から Graphic を作成します。
ファクトリ public implicit {Graphic.from-Pixmap pixmap:Pixmap}:Graphic
from-Region:Region から Graphic を作成します。
ファクトリ public implicit {Graphic.from-Region region:Region}:Graphic
from-string:String から Graphic を作成します。
ファクトリ public implicit {Graphic.from-string obj:String}:Graphic
from-TextVisual:TextVisual から Graphic を作成します。
ファクトリ public implicit {Graphic.from-TextVisual obj:TextVisual}:Graphic
from-Visual:Visual から Graphic を作成します。
ファクトリ public implicit {Graphic.from-Visual obj:Visual}:Graphic

プロパティ
avoid-page-break?:Graphicが、現在のページにフィットしない時に次のページに押し出すどうかを決定します。
ローカル オプション public Graphic.avoid-page-break?:bool
background:グラフィカル オブジェクトの背景色または背景パターン。
ローカル オプション public Graphic.background:Background =Background.transparent
border-color:グラフィカル オブジェクトの境界の色またはパターン。
非ローカル オプション public Graphic.border-color:FillPattern
border-spec:GraphicBorderSpec を指定します。
ローカル オプション public Graphic.border-spec:#BorderSpec =null
border-style:オブジェクトの境界の外観を指定します。
ローカル オプション public Graphic.border-style:BorderStyle =BorderStyle.flat
border-width:オブジェクトの境界の幅を指定します。
ローカル オプション public Graphic.border-width:any =0pt
cell-border-spec:Table セルの BorderSpec を指定します。
非ローカル オプション public Graphic.cell-border-spec:#BorderSpec
cell-border-width:Table のテーブル セル ボーダーの幅を指定します。
非ローカル オプション public Graphic.cell-border-width:any
cell-margin:テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。
非ローカル オプション public Graphic.cell-margin:any
clip-child-shadows?:この Graphic の子の影がこの box の目に見える境界の外に描画されるかどうかを規定します。
アクセサ public Graphic.clip-child-shadows?:bool
discrete-select-in-range?:この GraphicGuiRangeSelectionContext でリーフのように機能するかどうかを決定します。
ローカル オプション public Graphic.discrete-select-in-range?:bool =false
display-context:このオブジェクトに関連付けられている DisplayContext
非ローカル オプション public Graphic.display-context:#DisplayContext
enabled?:Visual が有効であるかどうかを指定します。
非ローカル オプション public Graphic.enabled?:bool
graphic-selectable:この GraphicDiscreteGraphicSelectionContext 内で選択可能にするかどうかを決定します。
ローカル オプション public Graphic.graphic-selectable:#GraphicSelectable =null
height:Graphic の高さ設定。
ローカル オプション public Graphic.height:any
horigin:オブジェクトの外側起点の x 座標を指定します。
ローカル オプション public Graphic.horigin:any ="origin"
is-paginating?:true の場合は、この Graphic がパジネートします。
フィールド public-get private-set Graphic.is-paginating?:bool
layout:このオブジェクトに関連付けて、Layout オブジェクトをポイントします。
フィールド public-get protected-set Graphic.layout:#Layout
margin:オブジェクトのボーダーとその子スロット (オブジェクトがそのグラフィカルな子を配置する場所) との間の距離を指定します。
ローカル オプション public Graphic.margin:any =0pt
opaque-to-events?:透明なセクションに発生する PointerEvent をこのオブジェクトが受け取るかどうかを指定する bool
ローカル オプション public Graphic.opaque-to-events?:bool =false
option-parent:オブジェクトのオプションの親を返します。
アクセサ public Graphic.option-parent:#GraphicOptions
outside-margin:Graphic の外側マージンとして適用される OffsetSpec を規定します。
ローカル オプション public Graphic.outside-margin:#OffsetSpec =null
pagination-state:このオプションが非 null のときは、この Graphic に対するパジネーション シーケンスの状態を表します。
ローカル オプション public Graphic.pagination-state:#PaginationState =null
parent:オブジェクトのグラフィカルな親を返します。
アクセサ public Graphic.parent:#Box
possibly-displayed?:このオブジェクトが表示されているかどうかを伝えます。
アクセサ public Graphic.possibly-displayed?:bool
selection-context:このグラフィックとそのグラフィック子孫に関連付けられた SelectionContext
非ローカル オプション public Graphic.selection-context:#SelectionContext
shadow-color:影の色です。既定の色は黒で、アルファ値は 0.175 です。
非ローカル オプション public Graphic.shadow-color:FillPattern
shadow-spec:GraphicShadowSpec を指定します。
ローカル オプション public Graphic.shadow-spec:#ShadowSpec =null
visible?:描画や PointerEvent ディスパッチの目的でこのオブジェクトを透明にして不可視にするかどうかを示す bool
ローカル オプション public Graphic.visible?:bool =true
visual-parent:このオブジェクトの直接の親であるVisualを取得します。
アクセサ public Graphic.visual-parent:#Visual
vorigin:Graphic.horigin オプションとほぼ同じですが、オブジェクトの外側起点の y 座標を指定する点が異なります。
ローカル オプション public Graphic.vorigin:any ="origin"
width:Graphic の幅設定。
ローカル オプション 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
プロパティ 継承 DataBindingTarget: data-binding-context, data-bindings
プロパティ 継承 EventTarget: event-handlers
プロパティ 継承 OptionListInterface: option-register-proc, options-present-here, registered-option-keys

メソッド
after-reposition:Graphic が移動またはサイズ変更されたことを、Graphic に通知します。
public {Graphic.after-reposition layout-context:LayoutContext}:void
attempt-revalidate-layout:最後のレイアウト ネゴシエーションが完了してから、Graphic のレイアウト設定が変更されたかどうかを判定します。
public {Graphic.attempt-revalidate-layout lc:LayoutContext}:bool
before-reposition:Graphic が移動またはサイズ変更されることを、Graphic に対して通知します。
public {Graphic.before-reposition layout-context:LayoutContext}:void
constrain-height:指定した高さの制約を受けた場合にこの Graphic の幅設定を返します。
public {Graphic.constrain-height
lc:LayoutContext,
ascent:Distance,
descent:Distance
}:Dimension
constrain-width:指定した高さの制約を受けた場合にこの Graphic の高さ設定を返します。
public {Graphic.constrain-width
lc:LayoutContext,
lextent:Distance,
rextent:Distance
}:Dimension
contains-point?:指定されたポイントで発生するイベントが、ターゲット ボックス (BasicBox.contains-point? を参照) か、またはそのグラフィカルな子のどちらに関するものかを判定します。
public {Graphic.contains-point? x:Distance, y:Distance}:bool
create-pagination-state:PaginationState オブジェクトをインスタンス化します。
protected {Graphic.create-pagination-state
bounds:GRect,
show-decorations-at-page-breaks?:bool
}:PaginationState
detach:self をそのグラフィカルな親から削除します。
public {Graphic.detach}:void
draw:このオブジェクトの可視表現を描画します。
public {Graphic.draw renderer2d:Renderer2d}:void
draw-range-as-selected:このグラフィックの一部を選択領域として描画します。
public {Graphic.draw-range-as-selected
rng:GuiRange,
background:FillPattern,
color:FillPattern,
gc:Renderer2d
}:void
draw-shadow:オブジェクトの影を描画します。
public {Graphic.draw-shadow renderer2d:Renderer2d}:void
end-pagination:この Graphic に対するパジネーション プロセスを終了し、PaginationState を記録するためのデータ構造を割り当て解除します。
public {Graphic.end-pagination}:void
find-ancestor:与えられた述語に適合する最も近いグラフィックの祖先を返します。
public {Graphic.find-ancestor p:{proc-type {Graphic}:bool}}:#Graphic
find-graphic-at:指定ポイントをカバーし、指定テストの条件を満たす Graphic を見つけます。
public {Graphic.find-graphic-at
x:Distance,
y:Distance,
test:{proc-type {Graphic}:bool}
}:#Graphic
find-graphical-ancestor:与えられた述語に適合する最も近いグラフィックの祖先を返します。
public {Graphic.find-graphical-ancestor
p:{proc-type {Graphic}:bool}
}:#Graphic
fire-inferior-crossing-event:このオブジェクトで PointerCrossing イベントを発生させます。
protected {Graphic.fire-inferior-crossing-event}:void
get-graphical-root:Visual のグラフィック階層のルートで、オブジェクトを取得します。
public {Graphic.get-graphical-root}:Graphic
get-gui-path:ソート目的で位置の配列を提供します。
public final {Graphic.get-gui-path root:Box}:{Array-of int}
get-height-preference:この Graphic の高さ設定を返します。
public abstract {Graphic.get-height-preference}:Dimension
get-origin-in-graphical-ancestor:グラフィック階層内における指定された祖先に対する Visual の相対的位置を見つけます。
public {Graphic.get-origin-in-graphical-ancestor
ancestor:Graphic
}:(x:Distance, y:Distance, found?:bool)
get-origin-in-root:グラフィック階層のルートにあるオブジェクトを基準とし、Visual の位置を取得します。
public {Graphic.get-origin-in-root
}:(x:Distance, y:Distance, root:Graphic)
get-pagination-state:GraphicPaginationState を返します。
public {Graphic.get-pagination-state query-only?:bool}:PaginationState
get-range-as-selected-text:start-boundend-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。
public {Graphic.get-range-as-selected-text
into:StringBuf,
start-bound:#GuiMark = null,
end-bound:#GuiMark = null
}:void
get-top-left-in-ancestor:グラフィック階層に含まれる指定上位オブジェクトの座標フレームでこのオブジェクトの左上隅のロケーションを見つけます。
public {Graphic.get-top-left-in-ancestor
ancestor:Graphic
}:(x:Distance, y:Distance, found?:bool)
get-visible-bounds-into:オブジェクトの実際の可視領域の境界ボックスを計算します。
public {Graphic.get-visible-bounds-into grect:GRect}:void
get-width-preference:この Graphic の幅設定を返します。
public abstract {Graphic.get-width-preference}:Dimension
graphical-child-visible-at:位置 x、y にある目に見えるグラフィカルな子を規定します。
public {Graphic.graphical-child-visible-at}:#Graphic
make-gui-mark:この Graphic を参照する GuiMark を作成する標準的な方法。
public {Graphic.make-gui-mark}:GuiMark
on-drag-enter:DragEnter イベントのスタティック イベント ハンドラ
public {Graphic.on-drag-enter e:DragEnter}:void
on-inspection:Inspection イベントのスタティック イベント ハンドラ
public {Graphic.on-inspection e:Inspection}:void
on-pointer-enter:PointerEnter イベントのスタティック イベント ハンドラ
public {Graphic.on-pointer-enter e:PointerEnter}:void
option-changed:このオブジェクトにオプションの値が変更したことを通知します。
public {Graphic.option-changed key:String, value:any}:void
paginate:グラフィックにパジネーションを適用します。
public {Graphic.paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)
paint-with-decorations:ボーダーやマージンを含めたオブジェクトのセル全体を描画します。
public {Graphic.paint-with-decorations gc:Renderer2d}:void
pointer-enter-occurred:このオブジェクトで PointerLeafEnter を発生させます。
public {Graphic.pointer-enter-occurred e:GuiInputEvent}:void
pointer-leave-occurred:このオブジェクトで PointerLeafLeave を発生させます。
public {Graphic.pointer-leave-occurred e:GuiInputEvent}:void
replace-with:このオブジェクトに代わって別のオブジェクトをグラフィック階層に置きます。
public {Graphic.replace-with g:Graphic}:Graphic
request-draw:描画する Graphic に属するピクセルを確認します。
public {Graphic.request-draw
layout-context:LayoutContext = {self.get-layout-context}
}:void
request-draw-rect:指定した GRect を再描画するためにピクセルを要求します。
public {Graphic.request-draw-rect
rect:GRect,
layout-context:LayoutContext = {self.get-layout-context}
}:void
request-layout:Graphic のレイアウト設定が変更されたため、新しいレイアウト ネゴシエーションを行う必要があることを通知します。
public {Graphic.request-layout}:void
request-pointer-trace:表示されたオブジェクトの幾何形状が変更されていることを宣言し、必要な PointerCrossing イベントの発生を要求します。
public {Graphic.request-pointer-trace}:void
search-next:この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。
public {Graphic.search-next
pattern:SearchPattern,
gm:#GuiMark = null
}:(pattern-start:#GuiMark,pattern-end:#GuiMark)
search-next-here:この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-next を呼び出します。
public {Graphic.search-next-here
pattern:SearchPattern,
gm:#GuiMark = null
}:(pattern-start:#GuiMark,pattern-end:#GuiMark)
search-prev:この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。
public {Graphic.search-prev
pattern:SearchPattern,
gm:#GuiMark = null
}:(#GuiMark, #GuiMark)
search-prev-here:この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-prev を呼び出します。
public {Graphic.search-prev-here
pattern:SearchPattern,
gm:#GuiMark = null
}:(#GuiMark, #GuiMark)
set-layout:Graphic のレイアウト オブジェクトを設定します。
public {Graphic.set-layout l:#Layout}:void
set-size:このオブジェクトにレイアウト幅と高さを代入します。
public {Graphic.set-size lc:LayoutContext, bounds:GRect}:void
start-pagination:パジネートできるように Graphic を準備します。
public {Graphic.start-pagination}:PaginationState
xy-offset-to:2 つの グラフィカル オブジェクトの起点の間の (x、y) オフセットを計算します。
public {Graphic.xy-offset-to}:(x:Distance, y:Distance, valid?:bool)
メソッド 継承 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
メソッド 継承 GraphicOptions: any-to-Distance, get-display-context
メソッド 継承 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
メソッド 継承 DataBindingTarget: add-data-binding, get-data-binding, refresh-data-binding, remove-data-binding, unset-property, update-data-binding, validate-data-binding
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, remove-event-handler, verify-event
メソッド 継承 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
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 InitRestArgParser: process-rest-args
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
clone-appearance-from (コンストラクタ)
protected {Graphic.clone-appearance-from other:Graphic}

このタイプの新しいオブジェクトを作成するために Visual.clone-appearance が使用するコンストラクタ。

other: クローンする Graphic

注意事項

クローン化をサポートする Graphic のサブクラスには、このコンストラクタを呼び出すコンストラクタが必要です。ただし、これらのコンストラクタがそれぞれ自身のオプションをクローン化する場合は、その限りではありません。


default (コンストラクタ)
public {Graphic.default ...}

Graphic を初期化します。

説明

キーワード引数は、最終的にそれらをオプション設定として解釈する OptionListInterface.keyword-init-arg によって処理されます。位置引数は、Visual.non-keyword-init-arg によって処理され、このとき引数は EventHandler あることが必要です。これらは両方ともサブクラスでオーバーライドできます。


from-any (ファクトリ)
public implicit {Graphic.from-any obj:any}:Graphic

any から Graphic を作成します。

説明

このファクトリーは、 他の Graphic ファクトリーと一致しない型を持つ値を処理するために存在します。そのような型を処理するためには記述されておらず、動作も他のファクトリーと異ります。


from-Dynamic (ファクトリ)
public implicit {Graphic.from-Dynamic obj:Dynamic}:Graphic

Dynamic から Graphic を作成します。



from-Path (ファクトリ)
public implicit {Graphic.from-Path path:Path}:Graphic

Path から Graphic を作成します。



from-Pixmap (ファクトリ)
public implicit {Graphic.from-Pixmap pixmap:Pixmap}:Graphic

Pixmap から Graphic を作成します。



from-Region (ファクトリ)
public implicit {Graphic.from-Region region:Region}:Graphic

Region から Graphic を作成します。



from-string (ファクトリ)
public implicit {Graphic.from-string obj:String}:Graphic

String から Graphic を作成します。



from-TextVisual (ファクトリ)
public implicit {Graphic.from-TextVisual obj:TextVisual}:Graphic

TextVisual から Graphic を作成します。



from-Visual (ファクトリ)
public implicit {Graphic.from-Visual obj:Visual}:Graphic

Visual から Graphic を作成します。




プロパティ詳細
avoid-page-break? (ローカル オプション)
public Graphic.avoid-page-break?:bool

Graphicが、現在のページにフィットしない時に次のページに押し出すどうかを決定します。



background (ローカル オプション)
public Graphic.background:Background =Background.transparent

グラフィカル オブジェクトの背景色または背景パターン。

説明

グラフィカル オブジェクトの背景色または背景パターンを、"red" などの FillPattern に自動変換する BackgroundFillPattern、 または String に設定します。


例: 背景を文字列に設定
{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"}
        }
}

注意事項

背景を Observable でもある FillPattern アニメーションに設定すると、必要に応じて Graphic がそれ自体を再描画するように FillPattern が登録されます。

ただし、よりシンプルな call-back メカニズムによって背景を NotifyingFillPattern に設定した場合もこのような処理が行われるので注意してください。


border-color (非ローカル オプション)
public Graphic.border-color:FillPattern

グラフィカル オブジェクトの境界の色またはパターン。

説明

境界色は、境界が存在する場合、つまり、オブジェクトの border-width オプションを設定した場合にのみ適用されます。

任意の FillPattern オブジェクトに border-color、またはサポートしている String に設定し、FillPattern に自動変換します。

オブジェクトの border-width は定義されているが border-color が定義されていない場合、オブジェクトの境界はオブジェクトの背景色を使ってペイントされます。オブジェクトの背景色は、オブジェクトの border-style オプションによっては境界が見えない場合もあります。

次の図は、グラフィカル オブジェクトの境界を青色で表示しています。



参照: Graphic.background, Graphic.border-width, Graphic.border-style.


border-spec (ローカル オプション)
public Graphic.border-spec:#BorderSpec =null

GraphicBorderSpec を指定します。

説明

NULL の場合、GraphicGraphic.border-widthGraphic.margin を使用して、そのボーダーとマージンを指定します。
NULL でない場合は、BorderSpec に指定されたボーダーとマージンを使用します。BorderSpec.left-border-widthBorderSpec.right-border-widthBorderSpec.top-border-width、および BorderSpec.bottom-border-width のどれもが null であると、GraphicGraphic.border-width で指定された値を使用します。
同様に、BorderSpec.left-marginBorderSpec.right-marginBorderSpec.top-margin、および BorderSpec.bottom-margin のどれもが null であると、GraphicGraphic.margin で指定された値を使用します。


例: 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
            }                
    }
}


border-style (ローカル オプション)
public Graphic.border-style:BorderStyle =BorderStyle.flat

オブジェクトの境界の外観を指定します。

説明

有効値は次のとおりです。


例: 次は、さまざまなテーブル セルのボーダー スタイルを青で表示しています (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
}

注意事項

参照: Graphic.border-width, border-color.


border-width (ローカル オプション)
public Graphic.border-width:any =0pt

オブジェクトの境界の幅を指定します。

説明

有効な値は次のとおりです。
既定値は 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 ピクセルに切り上げられます。


cell-border-spec (非ローカル オプション)
public Graphic.cell-border-spec:#BorderSpec

Table セルの BorderSpec を指定します。

説明

NULL の場合、Tablecell-border-widthcell-margin を使用して、Table セルのボーダーとマージンを指定します。
NULL でない場合は、BorderSpec に指定されたボーダーとマージンを使用します。BorderSpec.left-border-widthBorderSpec.right-border-widthBorderSpec.top-border-width、および BorderSpec.bottom-border-width のどれもが null であると、Tablecell-border-width で指定された値を使用します。
同様に、BorderSpec.left-marginBorderSpec.right-marginBorderSpec.top-margin、および BorderSpec.bottom-margin のどれもが null であると、Tablecell-margin で指定された値を使用します。


例: 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
            }                
    }
}


cell-border-width (非ローカル オプション)
public Graphic.cell-border-width:any

Table のテーブル セル ボーダーの幅を指定します。

説明

DistancePixelDistanceEmDistance の値を指定します。既定値は 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 ピクセルに切り上げられます。


cell-margin (非ローカル オプション)
public Graphic.cell-margin:any

テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。

説明

DistancePixelDistanceEmDistance の値を指定します。既定値は 1mm です。

注意事項

cell-margin に代入する値には、10pt (10points)、.5cm (.5centimeters)、0.3in (0.3inches)、または 1px (1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (1pt = 1/72 インチ) で表していると見なされます。

Graphic.width プロパティや Graphic.height プロパティと同様に、指定したマージンがピクセル サイズの正確な倍数にならない場合、ピクセル サイズに最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。

次にいくつかの異なるセル マージン サイズが青で表示されています。テーブル ボーダーは黒です。テーブル セル ボーダーは白です。




clip-child-shadows? (アクセサ)
アクセサ public Graphic.clip-child-shadows?:bool

この Graphic の子の影がこの box の目に見える境界の外に描画されるかどうかを規定します。

オーバーライド

既定では、true を返します。そのため、このオブジェクトの子の影はこのオブジェクトの境界の外には描画されません。子の影がその目に見える境界の外に描画される場合、false を返します。
Boxの既定の実装は、falseを返すようにオーバーライドします。
導入: バージョン 6.0


discrete-select-in-range? (ローカル オプション)
public Graphic.discrete-select-in-range?:bool =false

この GraphicGuiRangeSelectionContext でリーフのように機能するかどうかを決定します。

説明

範囲選択のために個別リーフとして扱われる Graphic を認識するために、GuiRangeSelectionContext で使用します。


display-context (非ローカル オプション)
public Graphic.display-context:#DisplayContext

このオブジェクトに関連付けられている 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 オプションでの変更をモニタリングするコードは、この可能性を考慮に入れ、この状況における望ましくない動作の実行を回避しなくてはなりません。


enabled? (非ローカル オプション)
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 がコントロールの場合、コントロールのユーザー インターフェイスは無効になります。前述したように、ラベル上の任意のテキストは、無効状態で表示されます。
    さらに、コントロールに ReactiveLabel があれば、ラベルは既定ラベルの代わりに ReactiveLabel.label-disabled のプロパティを表示します。


    {radio-buttons 
        value = "first",
        {RadioButton radio-value = "first"},
        {RadioButton
            radio-value = "second",
            reactive-label = {ReactiveLabel
                                 label-disabled = "(second)"
                             },
            enabled? = false
        },
        {RadioButton radio-value = "third"}
    }
    


graphic-selectable (ローカル オプション)
public Graphic.graphic-selectable:#GraphicSelectable =null

この GraphicDiscreteGraphicSelectionContext 内で選択可能にするかどうかを決定します。

説明

このオプションの詳細については GraphicSelectable を参照してください。


height (ローカル オプション)
public Graphic.height:any

Graphic の高さ設定。

説明

詳細については Graphic.width を参照してください。


horigin (ローカル オプション)
public Graphic.horigin:any ="origin"

オブジェクトの外側起点の x 座標を指定します。

説明

外側起点の既定位置は、オブジェクトの内側起点になります。horigin オプションの有効な値は、以下のように指定します。次の例は、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}}


is-paginating? (フィールド)
public-get private-set Graphic.is-paginating?:bool

true の場合は、この Graphic がパジネートします。

注意事項

Graphic がパジネートするかどうかを調べるには、このフィールドを使用します。Graphic.pagination-state が NULL であるかどうかの検査にはオプション検索が伴うので、このフィールドの検査はより高速になります。


layout (フィールド)
public-get protected-set Graphic.layout:#Layout

このオブジェクトに関連付けて、Layout オブジェクトをポイントします。



margin (ローカル オプション)
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"}}}


opaque-to-events? (ローカル オプション)
public Graphic.opaque-to-events?:bool =false

透明なセクションに発生する PointerEvent をこのオブジェクトが受け取るかどうかを指定する bool

説明

この値を true に設定した場合、背景が透明で他のオブジェクトが透けて表示されていても、オブジェクトの境界の内側のすべての PointerEvent はこのオブジェクトで発生します。この値が false の場合は、イベントはこのオブジェクトの後ろに見えるオブジェクトに渡される場合があります。

注意事項

このオプションを false に設定しても、イベントが可視オブジェクトを通過してしまうことはありません


option-parent (アクセサ)
アクセサ public Graphic.option-parent:#GraphicOptions

オブジェクトのオプションの親を返します。

戻り値

このオブジェクトのオプションの親である OptionListInterface。ただし、このオブジェクトがオプションの親を持たない場合は、null になります。

オーバーライド

既定の実装 OptionListInterface.option-parent は常に null を返します。サブクラスでは、通常は super.option-parent は呼び出さずに、適切な値を返すコードでこのメソッドをオーバーライドします。


outside-margin (ローカル オプション)
public Graphic.outside-margin:#OffsetSpec =null

Graphic の外側マージンとして適用される OffsetSpec を規定します。

説明

null の場合、Graphic は外側マージンを持ちません。
そうでなければ、Graphic のセル境界の各側の余白を確保するために、OffsetSpec.leftOffsetSpec.rightOffsetSpec.topOffsetSpec.bottom で指定された幅を使用します。これらの幅は、オブジェクトが親のコンテナによって配置された時に Graphic.widthGraphic.height の設定に追加されます。

次のコードは、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


pagination-state (ローカル オプション)
public Graphic.pagination-state:#PaginationState =null

このオプションが非 null のときは、この Graphic に対するパジネーション シーケンスの状態を表します。

注意事項

このオプションは通常、印刷操作時には非 NULL になっています。

プログラミング注意事項

このオプションの値を直接変更しないでください。Graphic.start-pagination はそれを非 NULL に設定し、Graphic.end-pagination はその設定を解除します。
Graphic がパジネーションを行うかどうかを調べるには、Graphic.is-paginating? を使用します。Graphic がパジネーションを行う場合は、その現在のパジネーション状態を取得する Graphic.get-pagination-state を呼び出します。


parent (アクセサ)
アクセサ public Graphic.parent:#Box

オブジェクトのグラフィカルな親を返します。

戻り値

オブジェクトの親。オブジェクトが親を持たない場合、null を返します。

オーバーライド

通常はオーバーライドされません。


possibly-displayed? (アクセサ)
アクセサ public Graphic.possibly-displayed?:bool

このオブジェクトが表示されているかどうかを伝えます。

説明

このオブジェクトがスクリーン上に表示されているかもしれない時、true を返します。オブジェクトが明らかに表示されていない時は、false を返します。解はあくまで"ベストエフォート" を基本にしており、オブジェクトが表示されていない時でも true を返す可能性があります。
導入: バージョン 7.0


selection-context (非ローカル オプション)
public Graphic.selection-context:#SelectionContext

このグラフィックとそのグラフィック子孫に関連付けられた SelectionContext



shadow-color (非ローカル オプション)
public Graphic.shadow-color:FillPattern

影の色です。既定の色は黒で、アルファ値は 0.175 です。

導入: バージョン 6.0


shadow-spec (ローカル オプション)
public Graphic.shadow-spec:#ShadowSpec =null

GraphicShadowSpec を指定します。

説明

null の場合、Graphic には影の装飾がありません。
そうでなければ、Graphic.draw-shadow メソッドは、Graphic.draw メソッドが呼び出される前に呼び出されます。

注意事項

影はアルファ混合(つまり、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


visible? (ローカル オプション)
public Graphic.visible?:bool =true

描画や PointerEvent ディスパッチの目的でこのオブジェクトを透明にして不可視にするかどうかを示す bool

説明

visible? オプションが true (既定値) の場合、オブジェクトは表示されて正常に動作します。visible? オプションが false の場合、オブジェクトは同じ量のスペースを確保しますが、ピクセルを描画せずポインタ イベントに対して透過になります。
表示されていないオブジェクトも、キーボードフォーカスを取得できるので、visible? = false が設定された場合は、enabled? = false も設定することを推奨します。


visual-parent (アクセサ)
アクセサ public Graphic.visual-parent:#Visual

このオブジェクトの直接の親であるVisualを取得します。

戻り値

このオブジェクトの直近の親であるVisual。このオブジェクトが親を持たない場合、 nullが返されます。
導入: バージョン 7.0


vorigin (ローカル オプション)
public Graphic.vorigin:any ="origin"

Graphic.horigin オプションとほぼ同じですが、オブジェクトの外側起点の y 座標を指定する点が異なります。

説明

このオプションに指定可能な値は、"origin""top""center""bottom" です。Graphic.horigin に対して指定可能な値 "origin""left""center""right" ではありません。詳細については、Graphic.horigin を参照してください。


width (ローカル オプション)
public Graphic.width:any

Graphic の幅設定。

説明

次の情報は、width および height オプションに適用します。

このオプションは、この Graphicコンテナが、レイアウト ネゴシエーション中にこの Graphic の幅または高さ設定として受け取る値を記述します。このオプションは、そのオブジェクト自体Graphic.get-width-preference メソッドによって返された値 (本来の幅設定) に必ずしも一致しません。

このオプションには、次の型の値を指定できます。

プロシージャを除き、指定した値は、幅または高さ設定の記述に使用される前に、内部レイアウト ルーチンによって OriginElastic に変換されます。OriginElastic およびレイアウト システムでの使用方法の詳細については、「エラスティックスとページ レイアウト」の章を参照してください。以下は、幅または高さ設定を OriginElastic に変換する場合に注意する点です。



次のプロシージャが、

{proc {g:Graphic, e:OriginElastic}:OriginElastic ...}

width オプションまたは height オプションの値として指定されると、対応するサイズ設定 (幅または高さ) の計算が必要になるたびにこのプロシージャが呼び出されます。g はオプションを設定した Graphic になり、eg の本来のサイズ設定です。さらに、プロシージャの戻り値は 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 番目の行を生成するのに使用したスタイルを使用する必要があります。





メソッド詳細
after-reposition (メソッド)
public {Graphic.after-reposition layout-context:LayoutContext}:void

Graphic が移動またはサイズ変更されたことを、Graphic に通知します。

layout-context: このオブジェクトを含んでいるグラフィック階層のサブツリーに対応する LayoutContext オブジェクト。

プログラミング注意事項

この Graphic を移動またはサイズ変更した操作の前に、Graphic.before-reposition を呼び出した場合、このメソッドはこの操作後に呼び出されます。この操作の前にオブジェクトが見えなかったとしても、操作前に Graphic.before-reposition を呼び出さなかった場合は、この操作後に、Graphic.after-reposition でなく Graphic.request-draw が呼び出されます。

Graphic に対して g.after-reposition g が呼び出されるのは、この操作の前に g.before-reposition を呼び出した場合のみです。ただし、この操作の前に g.before-reposition を呼び出しても、この操作の後に g.after-reposition が呼び出されない場合もあります。このような事態が発生するのは、オブジェクトを移動やサイズ変更がなかったと (g の親などが) 判断した場合、あるいは他のオブジェクトが、操作前と操作後の両方で、g の位置の可視境界全体に対する LayoutContext.request-draw-rect-in-root 操作を 1 回以上呼び出した場合です。

Graphic.before-repositionGraphic.after-reposition はともに、オブジェクトの位置が有効な場合にしか呼び出されません。

オーバーライド

既定の定義 Graphic.after-reposition は、単に Graphic.request-draw を呼び出すだけです。Graphic.request-draw は、Graphic.before-repositionの既定の実装でも使用されていることを前提とした適切な処理方法です。ただし、Graphic.before-reposition をオーバーライドする場合は、Graphic.after-reposition もオーバーライドする必要があります。


attempt-revalidate-layout (メソッド)
public {Graphic.attempt-revalidate-layout lc:LayoutContext}:bool

最後のレイアウト ネゴシエーションが完了してから、Graphic のレイアウト設定が変更されたかどうかを判定します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext

戻り値

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 状態に設定する必要があります。

プログラミング注意事項

このメソッドは通常このオブジェクトの親 BoxBox.attempt-revalidate-layout メソッドによって呼び出されます。この目的は、非効率な計算をトリガしないで、このオブジェクトから得た前回のレイアウト設定がまだ有効であるかどうかを確認するクイック ファスト チェックを行なうことです。

オーバーライド

既定のメソッド Graphic.attempt-revalidate-layout は、単に false を返します。false は常に安全な応答です。レイアウト設定が実際には変更されなかったできる限り多くの状況で true を返すメソッドで、このメソッドをオーバーライドするには、より正確な応答を提供できる Graphic のサブクラスを使用することをお勧めします。


before-reposition (メソッド)
public {Graphic.before-reposition layout-context:LayoutContext}:void

Graphic が移動またはサイズ変更されることを、Graphic に対して通知します。

layout-context: このオブジェクトを含んでいるグラフィック階層のサブツリーに対応する LayoutContext オブジェクト。

プログラミング注意事項

このメソッドは、レイアウト ネゴシエーションまたはその他の操作で可視オブジェクトを移動またはサイズ変更するときに必ず呼び出します。このメソッドは、オブジェクトが見えない場合でも呼び出すことができます。また、このメソッドを呼び出したとしても、その後オブジェクトを移動またはサイズ変更しなくてもかまいません。

オーバーライド

既定の定義 Graphic.before-reposition は、 単にGraphic.request-draw を呼び出します。これは常に正しい処理です。ただし、高度なオブジェクトでは、このメソッドを次のいずれかのコードでオーバーライドできます。


constrain-height (メソッド)
public {Graphic.constrain-height
lc:LayoutContext,
ascent:Distance,
descent:Distance
}:Dimension

指定した高さの制約を受けた場合にこの Graphic の幅設定を返します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext
ascent, descent: 高さの制約。この Graphic の起点からの相対的な上昇および下降の距離で表されます。

戻り値

オブジェクトの幅設定を表す Dimension。この Dimension は、後続のレイアウト処理中に OriginElastic に変換されます。

オーバーライド

既定のメソッド Graphic.constrain-height は、単に Graphic.get-width-preference を呼び出します。このメソッドは、オブジェクトが幅設定を計算する際に高さの制約を考慮しなくてもいい場合はオーバーライドする必要がありません。

このメソッドをオーバライドするクラスでは必ず Dimension を返すようにして、これで必要な水平軸に沿ったスペースをそのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な OriginElastic または Dimension を返すことを意味します。Dimension の場合は、「次元から OriginElastics への変換」で説明する変換規則に従って、適切な OriginElastic に変換されます。

重要:このメソッドのオーバーライド実装には、レイアウト ネゴシエーションが確実にグラフィック階層全体に適用されるように、スーパークラス実装の呼び出しを含める必要があります。


constrain-width (メソッド)
public {Graphic.constrain-width
lc:LayoutContext,
lextent:Distance,
rextent:Distance
}:Dimension

指定した高さの制約を受けた場合にこの Graphic の高さ設定を返します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext
lextent, rextent: 幅の制約。起点からの左と右の相対距離で表されます。

戻り値

オブジェクトの高さ設定を表す Dimension。この Dimension は、後続のレイアウト処理中に OriginElastic に変換されます。

オーバーライド

既定のメソッド Graphic.constrain-width は、単に Graphic.get-height-preference を呼び出します。このメソッドは、オブジェクトが高さ設定を計算する際に幅制約を考慮しなくてもいい場合はオーバーライドする必要がありません。

このメソッドをオーバライドするクラスでは必ず Dimension を返すようにして、これで必要な垂直軸に沿ったスペースをそのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な OriginElastic または Dimension を返すことを意味します。Dimension の場合は、「次元から OriginElastics への変換」で説明する変換規則に従って、適切な OriginElastic に変換されます。

重要:このメソッドのオーバーライド実装には、レイアウト ネゴシエーションが確実にグラフィック階層全体に適用されるように、スーパークラス実装の呼び出しを含める必要があります。


contains-point? (メソッド)
public {Graphic.contains-point? x:Distance, y:Distance}:bool

指定されたポイントで発生するイベントが、ターゲット ボックス (BasicBox.contains-point? を参照) か、またはそのグラフィカルな子のどちらに関するものかを判定します。

x, y: ポイントの座標。ターゲット オブジェクトの起点を基準として表現します。

プログラミング注意事項

このメソッドは通常、ポインタ イベントを子のオブジェクトに転送するかどうかを判断するために、ターゲット オブジェクトのグラフィカルな親によって呼び出されます。

オーバーライド

ポイントがオブジェクトの境界ボックス内にある場合にのみ、既定のメソッドは true を返します。円などの複雑な形状を含むオブジェクトは、最初に {super.contains-point? x, y} を呼び出し、その呼び出しにより false が返された場合に false を返すメソッドで、このメソッドをオーバーライドします。その呼び出しが true を返した場合、オブジェクトに実際にポイントを保持しているかどうかを判定するための計算をメソッドでさらに実行します。このようなスタイルに従うことにより、メソッドは非効率的な計算の前に効率的な bounding-box チェックを行います。このような規律が大切なのは、オブジェクトから離れた (x,y) 位置から contains-point? が頻繁に呼び出されるためです。


create-pagination-state (メソッド)
protected {Graphic.create-pagination-state
bounds:GRect,
show-decorations-at-page-breaks?:bool
}:PaginationState

PaginationState オブジェクトをインスタンス化します。

注意事項

このオブジェクトは、Layout.start-pagination が呼び出されときに作成されます。

オーバーライド

PaginationState のサブクラスであるパジネーション状態オブジェクトを返したい場合は、これをオーバーライドします。そうしないと、Graphic のサブクラスが常に各ページにボーダーとマージンを表示したい場合は、Graphic がパジネートされます。後者の場合は、trueshow-decorations-at-page-breaks? に渡すことによって super.create-pagination-state を呼び出すことができます。


detach (メソッド)
public {Graphic.detach}:void

self をそのグラフィカルな親から削除します。



draw (メソッド)
public {Graphic.draw renderer2d:Renderer2d}:void

このオブジェクトの可視表現を描画します。

renderer2d: このオブジェクトを使用してそれ自身を描画する Renderer2d

オーバーライド

既定のメソッド Graphic.draw は何もしません。Graphic のサブクラスは、必要とされる描画の操作を実行するコードでこのメソッドをオーバーライドしなければなりません。
このメソッドをオーバーライドする場合は、再描画が必要となる時はいつでも、描画する Graphic の範囲が有効でない事を確認しなければなりません。たとえば、データの値を更新するために描画をする時は、データの値が変わる時にアプレットは必ず Graphic.request-drawGraphic.request-draw-rectを呼び出さなければなりません。


draw-range-as-selected (メソッド)
public {Graphic.draw-range-as-selected
rng:GuiRange,
background:FillPattern,
color:FillPattern,
gc:Renderer2d
}:void

このグラフィックの一部を選択領域として描画します。

説明

このメソッドは GuiRangeSelectionContext による使用を目的とし、このグラフィックを描画するときに指定領域が選択されていることを示します。
rng: 選択時に描画されるグラフィックの範囲を限定するGuiRange。 この値はGuiRange.intersects-graphic?で指定されたグラフィックと交差されなくてはいけません。
background: 選択されたバックグランドの色を指す FillPattern
color: 選択されたフォーグランドの色を指すFillPattern
gc: Renderer2d

オーバーライド

このメソッドの実装では、rngGuiRange.intersects-graphic? で指定されたとおりにこのグラフィックを "交差" させることを前提とします。


draw-shadow (メソッド)
public {Graphic.draw-shadow renderer2d:Renderer2d}:void

オブジェクトの影を描画します。

renderer2d: このオブジェクトを使用して影を描画する Renderer2d

オーバーライド

Graphic のサブクラスは独自の影を描画する為に、このメソッドをオーバーライドしなければなりません。

説明

影の境界を取得するためには、Layout.get-shadow-bounds を呼び出します。
導入: バージョン 6.0


end-pagination (メソッド)
public {Graphic.end-pagination}:void

この Graphic に対するパジネーション プロセスを終了し、PaginationState を記録するためのデータ構造を割り当て解除します。

プログラミング注意事項

Graphic.start-pagination が呼び出されたすべての Graphic のついて、このメソッドを呼び出す必要があります。

注意事項

これは、Layout.end-pagination を呼び出したときに呼び出されます。


find-ancestor (メソッド)
public {Graphic.find-ancestor p:{proc-type {Graphic}:bool}}:#Graphic

与えられた述語に適合する最も近いグラフィックの祖先を返します。

p: 述語を指定するプロシージャ。

戻り値

{p a} が true を返す最も近い祖先 a{p self} が true を返す場合、self が返されます。p に適合する祖先が見つからない場合、戻り値は null になります。


find-graphic-at (メソッド)
public {Graphic.find-graphic-at
x:Distance,
y:Distance,
test:{proc-type {Graphic}:bool}
}:#Graphic

指定ポイントをカバーし、指定テストの条件を満たす Graphic を見つけます。

x, y: self の座標フレームを基準にしたポイントの座標。
test: テスト。Graphic を引数として与えると test が true を返す場合、Graphic はこのテストの条件を満たしているといえます。

戻り値

このオブジェクトが test の条件を満たす場合はこれを返します。その他の場合は null を返します。

プログラミング注意事項

このメソッドは、ポインタ イベントを他のオブジェクトにリダイレクトするグラフィカル オブジェクトで使います。このメソッドによりポインタ イベントの転送先オブジェクトを見つけます。

オーバーライド

このメソッドのオーバーライドでは、super.find-graphic-at を呼び出すか、それと同様のテストを実行する必要があります。


find-graphical-ancestor (メソッド)
public {Graphic.find-graphical-ancestor
p:{proc-type {Graphic}:bool}
}:#Graphic

与えられた述語に適合する最も近いグラフィックの祖先を返します。

p: 述語を指定するプロシージャ。

戻り値

{p a} が true を返す最も近い祖先 a{p self} が true を返す場合、self が返されます。p に適合する祖先が見つからない場合、戻り値は null になります。


fire-inferior-crossing-event (メソッド)
protected {Graphic.fire-inferior-crossing-event}:void

このオブジェクトで PointerCrossing イベントを発生させます。

ce: スロットに埋め込まれた後に発生する PointerCrossing イベント。
e: ce のスロットにコピーされる情報を提供する GuiInputEvent

プログラミング注意事項

Graphic.pointer-enter-occurredGraphic.pointer-leave-occurred から呼び出されます。他の方法による呼び出しには適していません。

オーバーライド

通常はオーバーライドされません。


get-graphical-root (メソッド)
public {Graphic.get-graphical-root}:Graphic

Visual のグラフィック階層のルートで、オブジェクトを取得します。

戻り値

ルート Graphic オブジェクトです。

オーバーライド

サブクラスは、この値を取得するために Visual.get-origin-in-root を呼び出す。そのメソッドはまずレイアウトを検証します。一方、このメソッドは、たとえレイアウト検証が不可能な場合でも値を返すことができます。


get-gui-path (メソッド)
public final {Graphic.get-gui-path root:Box}:{Array-of int}

ソート目的で位置の配列を提供します。

root: パスに関係するBox

戻り値

このメソッドは、root配下のグラフィック階層内のVisualの位置を、親の中でのそれぞれの親オブジェクトを表す整数の配列として返します。その配列は、グラフィックオブジェクトの合理的な順序を取得する為に比較されます。

例外のスロー

ChildNotInRootErrorselfrootの子孫でない場合

注意事項

コンテナオブジェクトは、子オブジェクト左から右に並べる為に、合理的なスキーマを使用するかもしれません。その為GUIパスの数値の詳細は、あるCurlセッションと他のセッションで同じであることは保証されません。

オーバーライド

Visual上の子のメソッドの基本定義は、エラーをスローするだけです。Visualの直接のサブクラスの多く、例えばGraphicは、このメソッドに適した定義を提供しています。したがって、Visualから間接的に継承されたユーザー定義のクラスは、一般的にこのメソッドをオーバーライドする必要はありません。
導入: バージョン 7.0


get-height-preference (メソッド)
public abstract {Graphic.get-height-preference}:Dimension

この Graphic の高さ設定を返します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext

戻り値

オブジェクトの高さ設定を表す Dimension。この Dimension は、後続のレイアウト処理中に OriginElastic に変換されます。

オーバーライド

このメソッドは、Graphic のサブクラス内で定義する必要があります。

このメソッドをオーバライドするクラスでは必ず Dimension を返すようにして、これで必要な垂直軸に沿ったスペースをそのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な OriginElastic または Dimension を返すことを意味します。Dimension の場合は、「次元から OriginElastics への変換」で説明する変換規則に従って、適切な OriginElastic に変換されます。


get-origin-in-graphical-ancestor (メソッド)
public {Graphic.get-origin-in-graphical-ancestor
ancestor:Graphic
}:(x:Distance, y:Distance, found?:bool)

グラフィック階層内における指定された祖先に対する Visual の相対的位置を見つけます。

ancestor: 対象の上位オブジェクトです。

戻り値

対象の座標、ならびに ancestorself の上位オブジェクトである場合は true に、それ以外の場合は false に指定された bool です。この bool が false の場合、返される座標には意味はありません。

オーバーライド

これは Visual のサブクラスに定義されなくてはならない抽象メソッドです。

注意事項

このメソッドは有効なレイアウトを持つオブジェクトで呼び出されなければなりません。そうでなければ、このメソッドの戻り値は有用ではありません。


get-origin-in-root (メソッド)
public {Graphic.get-origin-in-root
}:(x:Distance, y:Distance, root:Graphic)

グラフィック階層のルートにあるオブジェクトを基準とし、Visual の位置を取得します。

戻り値

ロケーションとルート オブジェクトでは次のようになります。
  1. ルートの内側起点を基準とした、Visual内側起点の x 座標。
  2. ルートの内側起点を基準とした、Visual の内側起点の y 座標。
  3. ルート オブジェクトそのもの ( Graphic)。

注意事項

このメソッドは、起点座標を正しく変換するために、レイアウト検証を実行する必要があります。ここで必要とされるのがグラフィカル ルートのみである場合、代わりに Visual.get-graphical-root を呼び出します。


get-pagination-state (メソッド)
public {Graphic.get-pagination-state query-only?:bool}:PaginationState

GraphicPaginationState を返します。

query-only?: true の場合は、この GraphicPaginationState のクローンが返されます。

戻り値

グラフィックの現在のパジネーション状態。

プログラミング注意事項

このメソッドを呼び出して、Graphic の現在の PaginationState を取得します。
Graphic がパジネートしないと、エラーがスローされます。


get-range-as-selected-text (メソッド)
public {Graphic.get-range-as-selected-text
into:StringBuf,
start-bound:#GuiMark = null,
end-bound:#GuiMark = null
}:void

start-boundend-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。

into: 結果を格納する StringBuf
start-bound: グラフィック内の開始ポイントを区切る GuiMark。null の場合、開始ポイントはグラフィックの先頭の端と見なされます。
end-bound: グラフィック内の終了ポイントを区切る GuiMark。null の場合、終了ポイントは、グラフィックの最後の端と見なされます。

オーバーライド

通常コンテナは再帰的に呼び出しを実行して、適切な区切り文字を挿入します。その他のサブクラスは、直接テキストを提供します。


get-top-left-in-ancestor (メソッド)
public {Graphic.get-top-left-in-ancestor
ancestor:Graphic
}:(x:Distance, y:Distance, found?:bool)

グラフィック階層に含まれる指定上位オブジェクトの座標フレームでこのオブジェクトの左上隅のロケーションを見つけます。

ancestor: 対象の上位オブジェクトです。

戻り値

対象の座標、ならびに ancestorself の上位オブジェクトである場合は true に、それ以外の場合は false に指定された bool です。この bool が false の場合、返される座標には意味はありません。

オーバーライド

これは Visual のサブクラスに定義されなくてはならない抽象メソッドです。

注意事項

レイアウトが現在有効ではないオブジェクトでの、このメソッドの呼び出しについては、Layout.get-bounds に含まれる注意を参照してください。


get-visible-bounds-into (メソッド)
public {Graphic.get-visible-bounds-into grect:GRect}:void

オブジェクトの実際の可視領域の境界ボックスを計算します。

grect: この四角形の記述を格納する GRect。四角形の値は、現在のオブジェクトの内側起点からの相対値です。このオブジェクトが View を祖先に持っていない場合、grect が設定されて空の四角形を表します。

オーバーライド

通常はオーバーライドされません。

注意事項

レイアウトが現在有効ではないオブジェクトでの、このメソッドの呼び出しについては、Layout.get-bounds に含まれる注意を参照してください。


get-width-preference (メソッド)
public abstract {Graphic.get-width-preference}:Dimension

この Graphic の幅設定を返します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext

戻り値

このオブジェクトの幅設定を表す Dimension。この Dimension は、後続のレイアウト処理中に OriginElastic に変換されます。

オーバーライド

このメソッドは、Graphic のサブクラスで定義する必要があります。

このメソッドをオーバライドするクラスでは必ず Dimension を返すようにして、これで必要な水平軸に沿ったスペースをそのオブジェクトの起点との関係を含めて表します。実際には、これはこのメソッドが適切な OriginElastic または Dimension を返すことを意味します。Dimension の場合は、「次元から OriginElastics への変換」で説明する変換規則に従って、適切な OriginElastic に変換されます。


graphical-child-visible-at (メソッド)
public {Graphic.graphical-child-visible-at}:#Graphic

位置 x、y にある目に見えるグラフィカルな子を規定します。

説明

このメソッドは、(x, y) に描画された順番で最上位のグラフィカルな子を返します。
x, y: self の座標フレームを基準にしたポイントの座標。

戻り値

子のオブジェクトが見つかればそれを返します。そうでなければ、null を返します。

プログラミング注意事項

このメソッドは本来、操作を解釈する SelectionContext 用にデザインされており、様々なポジションのグラフィックを見つけるためにグラフィカル階層を "drill down" する必要があります。特に、Graphic.find-graphic-at とは異なっており、これはポインタの転送を意図し、イベントを許可しないコンテナ内の空のスペースは明白に無視します。

注意事項

既定の実装では、null を返します。子を持つことができる Graphic のサブクラスは、(x, y) に描画された順番で最上位のグラフィカルな子を返すためにオーバーライドします。
導入: バージョン 6.0


make-gui-mark (メソッド)
public {Graphic.make-gui-mark}:GuiMark

この Graphic を参照する GuiMark を作成する標準的な方法。

戻り値

初期化されてグラフィックの先頭の端に新しく割り当てられた GuiMark

オーバーライド

GuiMark のカスタム サブクラスが Graphic のコンテンツを参照する必要がある場合、Graphic のサブクラスでこのメソッドをオーバーライドします。


on-drag-enter (メソッド)
public {Graphic.on-drag-enter e:DragEnter}:void

DragEnter イベントのスタティック イベント ハンドラ

説明

スタティック イベント ハンドラの一般的な情報については、GuiEventTarget.on-pointer-event を参照してください。


on-inspection (メソッド)
public {Graphic.on-inspection e:Inspection}:void

Inspection イベントのスタティック イベント ハンドラ

説明

スタティック イベント ハンドラの一般的な情報については、GuiEventTarget.on-pointer-event を参照してください。

オーバーライド

通常はオーバーライドされませんが、このイベントの処理時にインスペクション メニューを表示する定義を提供する Graphic 自体による場合は例外です。


on-pointer-enter (メソッド)
public {Graphic.on-pointer-enter e:PointerEnter}:void

PointerEnter イベントのスタティック イベント ハンドラ

説明

スタティック イベント ハンドラの一般的な情報については、GuiEventTarget.on-pointer-event を参照してください。


option-changed (メソッド)
public {Graphic.option-changed key:String, value:any}:void

このオブジェクトにオプションの値が変更したことを通知します。

key: 値が変更されたオプションの名前を指定する String
value: 新しい値。オプションが削除されている場合、新しい値は "no value" となりますが、value には特別な値 unbound-option を指定します。このメソッド内のコードは、unbound-option? プロシージャを呼び出して、この値が存在するかどうかを確認する必要があります。option-value プロシージャの使用も、この値の処理に有益です。

プログラミング注意事項

オプションが (a) ローカル オプションの場合、あるいは (b) 非ローカル オプションで、このオプションに対してオブジェクトが option-change ハンドラ プロシージャを宣言している場合、オプションの値がバインド、変更、またはバインド解除されるたびにオプション パッケージはこのメソッドを一度呼び出します。

オーバーライド

既定の実装 OptionListInterface.option-changed では何も行われません。サブクラスでは、key がサブクラスの実装に関連するオプション名であるかどうかをテストした後、このメソッドをオーバーライドして、{super.option-changed key, value} を呼び出す必要があります。


paginate (メソッド)
public {Graphic.paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)

グラフィックにパジネーションを適用します。

page-height: グラフィックをページにレンダリングするのに有効な高さ。これには、ボーダーとマージンが占めるスペースは含まれません。
next-page-height: このグラフィックが次のページに移動される場合に、このグラフィックをパジネートするのに有効な高さ。
query-only?: true の場合は、この Graphic に対する PaginationState の状態は変わりません。詳細については、Graphic.get-pagination-state および注を参照してください。

戻り値

返される PaginationState は、このメソッドが呼び出された後の Graphic のパジネーション状態です。
返される PaginationQuality 値は、与えられた page-height を使用して達成されるページ分割の品質を示します。

プログラミング注意事項

Graphic にパジネーションを適用する前に、true に設定された query-only? でこの関数を呼び出すことができます。このように、呼び出し元は、与えられた page-height でどんな PaginationQuality を達成できるかを決定することができます。呼び出し元は、PaginationQuality に応じて、現行ページにあるオブジェクトの一部にパジネーションを適用するか、オブジェクト全体を次のページに押し込むことができます。これを行うには、このオブジェクトの先頭を指すように、Graphic に関連付けられた PaginationStatePaginationState.end-offset を設定します。

オーバーライド

Graphic 自身が何らかの具体的な方法でページ間でパジネーションを実行するようにしたい場合は、このメソッドをオーバーライドします。
このメソッドをオーバーライドするときは、以下の規則に従う必要があります。
query-only?Graphic.get-pagination-state を呼び出して、この Graphic の現在のパジネーションの状態を取得します。query-only?true であると、メソッドはこの GraphicPaginationState のクローンに作用します。
このメソッドが前に PaginationQuality.complete を返した Graphic で呼び出される場合は、PaginationState.start-offsetPaginationState.end-offset に設定されていて、返されたパジネーションの質が PaginationQuality.complete であることを確認してください。
page-height が負または無視できるほどである場合は、返されたパジネーション状態がオブジェクトの現在のパジネーション状態であり、返されたパジネーションの質が PaginationQuality.clipped-outside でなければなりません。
そうでない場合は、page-height が使用可能であれば、新しいページの PaginationState.start-offsetPaginationState.end-offset、および PaginationState.min-end-offset を計算して設定し、このパジネーション シーケンスにふさわしい PaginationQuality を返してください。
Box などのコンテナ (パジネーションによってその子をページ間で分割しないようにする場合)。このようなコンテナは、現行ページに子を収容できない場合は、次の 2 つのステップに従う必要があります。
1. その子が改ページしないように要求しているかどうかを調べる (Graphic.avoid-page-break? を参照)。要求している場合は、現行ページでこのグラフィックに使用できる高さが next-page-height より小さければ、その子を次のページに押し込みます。子を次のページに押し込むためには、コンテナがその現在の PaginationStatePaginationState.end-offset を、-{child.get-cell-bounds}.ascent である子の先頭に設定する必要があります。
2. 子にパジネーションを依頼し、返された PaginationQualityPaginationQuality.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
}
}
}

注意事項

これは、Layout.paginate を呼び出したときに呼び出されます。


paint-with-decorations (メソッド)
public {Graphic.paint-with-decorations gc:Renderer2d}:void

ボーダーやマージンを含めたオブジェクトのセル全体を描画します。

gc: グラフィックの描画に使用する Renderer2d。現在のオブジェクトの起点は、gc の起点で描画されます。

プログラミング注意事項

オブジェクトの描画がオブジェクトの親以外から要求されるという例外的な状況にのみ、このメソッドが呼び出されます。このメソッドを提供するきっかけとなる例として、ドラッグ / ドロップ操作中のオブジェクトのコピーの描画があります。

オーバーライド

通常はオーバーライドされません。


pointer-enter-occurred (メソッド)
public {Graphic.pointer-enter-occurred e:GuiInputEvent}:void

このオブジェクトで PointerLeafEnter を発生させます。

プログラミング注意事項

ポインタがオブジェクトに入ると Graphic.on-pointer-enter で呼び出されます。
e: このオブジェクトが入ったことを示す座標を持つ GuiInputEvent

オーバーライド

通常はオーバーライドされません。


pointer-leave-occurred (メソッド)
public {Graphic.pointer-leave-occurred e:GuiInputEvent}:void

このオブジェクトで PointerLeafLeave を発生させます。

プログラミング注意事項

ポインタがオブジェクトを出ると Graphic.on-pointer-leave で呼び出されます。
e: このオブジェクトが出たことを示す座標を持つ GuiInputEvent

オーバーライド

通常はオーバーライドされません。


replace-with (メソッド)
public {Graphic.replace-with g:Graphic}:Graphic

このオブジェクトに代わって別のオブジェクトをグラフィック階層に置きます。

g: このオブジェクトに代わりに配置するオブジェクト。

戻り値

g オブジェクト。g として非 Graphic が提供された場合、replace-with の呼び出し中に Graphic にキャストされます。したがって、返される値は必ず self を置き換えるのに使用した Graphic になります。


request-draw (メソッド)
public {Graphic.request-draw
layout-context:LayoutContext = {self.get-layout-context}
}:void

描画する Graphic に属するピクセルを確認します。

layout-context: このオブジェクトを含むグラフィック階層のサブツリーに対応する LayoutContext オブジェクト。このキーワード引数が提供されない場合、Graphic.get-layout-context を呼び出して、適切な値を取得します。

注意事項

このオブジェクトを現在の位置で描画する場合、オブジェクトの Graphic.draw メソッドによってペイントされる、またはペイントされたピクセルすべてをカバーする回数の Graphic.request-draw-rect 呼び出しがこのメソッドで実行されます。既定のメソッド Graphic.request-draw が使用する単純な方法は、Graphic のレイアウト オブジェクトで Layout.request-draw-child を呼び出すことで、Graphic の境界ボックス全体の再描画を要求するというものです。

プログラミング注意事項

このオブジェクトのピクセルの再ペイントが必要になる何らかの理由があったとき、このメソッドが呼び出されます。このような状況が発生するのは、オブジェクトが初めて表示されるとき、ビューから削除されるとき、移動やサイズ変更が行なわれるとき (この場合、移動やサイズ変更の前と後でこのメソッドを呼び出す必要があります) などがあります。

オーバーライド

既定の定義 Graphic.request-draw はほとんどの目的に対応していますが、オブジェクトで実際にペイントされないピクセルが境界ボックスに多数ある場合はこのメソッドをオーバーライドして、より正確に計算する Graphic.request-draw-rect の呼び出しまたはそのセットを起動します。


request-draw-rect (メソッド)
public {Graphic.request-draw-rect
rect:GRect,
layout-context:LayoutContext = {self.get-layout-context}
}:void

指定した GRect を再描画するためにピクセルを要求します。

rect: 再描画する領域を記述する GRect
layout-context: 操作の実行に使用される LayoutContext を提供するオプションのパラメータ。このパラメータが提供されない場合、Graphic.get-layout-context を呼び出して LayoutContext を取得します。

プログラミング注意事項

このメソッドは、通常 Graphic.request-draw から呼び出されますが、Graphic の一部を再ペイントする必要があるときには常に呼び出すことができます。このメソッドを呼び出した後に、このオブジェクトの Graphic.draw メソッドが呼び出されて、影響する領域が再描画されることがあります(影響する領域が可視でない場合、Graphic.draw の呼び出しを省略できます)。

注意事項

このメソッドは、この Graphic のレイアウト オブジェクトで Layout.request-draw-rect を呼び出すことにより処理を行います。

オーバーライド

通常はオーバーライドされません。


request-layout (メソッド)
public {Graphic.request-layout}:void

Graphic のレイアウト設定が変更されたため、新しいレイアウト ネゴシエーションを行う必要があることを通知します。

オーバーライド

request-layout 操作の実行時に更新される記録情報を持つ Graphic のサブクラスによって、このメソッドをオーバーライドできます。このようなオーバーライド メソッドは、必ず {super.request-layout} を呼び出します。オーバーライド メソッドの例として、BasicBox.request-layout があります。


request-pointer-trace (メソッド)
public {Graphic.request-pointer-trace}:void

表示されたオブジェクトの幾何形状が変更されていることを宣言し、必要な PointerCrossing イベントの発生を要求します。

説明

要求は、このオブジェクトのグラフィック階層のルートに到達するまでグラフィカルな祖先のチェイン上を転送されていきます。このルートが View で、ポインタがその View 内にある場合、PointerNonevent を含む PointerEnvelopeEvent が発生し、必要な PointerCrossing イベントの生成を引き起こします。

オーバーライド

ポイント (x,y) を含む子オブジェクトの識別に (x,y) の位置をマップする、キャッシュされた状態を格納する SequenceBox のようなサブクラスによってオーバーライドできます。こうした状態はリセットして、グラフィック階層のオブジェクトの幾何形状が変更されても新しい PointerEnvelopeEvent が適切に送信されるようにします。このメソッドをオーバーライドする場合、オーバーライド メソッドには以下の呼び出しを含めます。

{super.request-pointer-trace}


search-next (メソッド)
public {Graphic.search-next
pattern:SearchPattern,
gm:#GuiMark = null
}:(pattern-start:#GuiMark,pattern-end:#GuiMark)

この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。

pattern: 検索する SearchPattern
gm: 検索を開始する GuiMark。指定しない場合は Graphic の左端から検索を開始します。gm を指定する場合、gm.graphic の参照先が、このメソッドを呼び出す Graphic かそのグラフィックな子孫の 1 つになる必要がある点に注意してください。

戻り値

パターンの開始を定める GuiMark と、終了を定める GuiMark

説明

searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
このメソッドは、Graphic を右から左に検索する Graphic.search-prev に似ています。

オーバーライド

通常はオーバーライドしません。新しい Graphics 用にカスタム検索機能を開発する場合は、代わりに Graphic.search-next-here をオーバーライドしてください。


search-next-here (メソッド)
public {Graphic.search-next-here
pattern:SearchPattern,
gm:#GuiMark = null
}:(pattern-start:#GuiMark,pattern-end:#GuiMark)

この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-next を呼び出します。

pattern: 検索する SearchPattern
gm: 検索を開始する GuiMark。指定しない場合は Graphic の先端から検索を開始します。gm を指定する場合、gm.graphic がこのメソッドを呼び出す Graphic等しくなければならない点に注意してください。

戻り値

パターンの開始を定める GuiMark と、終了を定める GuiMark

説明

searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
このメソッドは、Graphic を右から左に検索する Graphic.search-prev-here に似ています。

オーバーライド

このメソッドの基本実装は常に null, null を返します。SearchPattern を実際に識別して探し出せる Graphic のサブクラスでは、それを実行するためにこのメソッドをオーバーライドする必要があります。


search-prev (メソッド)
public {Graphic.search-prev
pattern:SearchPattern,
gm:#GuiMark = null
}:(#GuiMark, #GuiMark)

この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。

pattern: 検索する SearchPattern
gm: 検索を開始する GuiMark。指定しない場合、Graphic の右端から検索を開始します。gm を指定する場合、gm.graphic の参照先が、このメソッドを呼び出す Graphic かそのグラフィックな子孫の 1 つになる必要がある点に注意してください。

戻り値

パターンの開始を定める GuiMark と、終了を定める GuiMark

説明

searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
このメソッドは、Graphic を開始から終了まで検索する Graphic.search-next に似ています。

オーバーライド

通常はオーバーライドしません。新しい Graphics 用にカスタム検索機能を開発する場合は、代わりに Graphic.search-prev-here をオーバーライドしてください。

注意事項

グラフィック階層でこのメソッドを呼び出すと、Box.reverse-ordered-children (この既定の実装では一時的な参照配列にグラフィカルな子をそれぞれ割り当てます) を繰り返して使用する必要が生じます。このメソッドの呼び出しでは、関連する割り当ての数は検索対象の Box 数に等しくなり、割り当ての総量は検索対象の Graphic 数に比例します。


search-prev-here (メソッド)
public {Graphic.search-prev-here
pattern:SearchPattern,
gm:#GuiMark = null
}:(#GuiMark, #GuiMark)

この Graphic 内か、その子の 1 つに現れるパターンの境界を返します。通常このメソッドは、アプリケーション コードから直接呼び出しません。代わりに Graphic.search-prev を呼び出します。

pattern: 検索する SearchPattern
gm: 検索を開始する GuiMark。指定しない場合は Graphic の左端から検索を開始します。gm を指定する場合、gm.graphic がこのメソッドを呼び出す Graphic等しくなければならない点に注意してください。

戻り値

パターンの開始を定める GuiMark と、終了を定める GuiMark

説明

searchable? が true であるグラフィカルな子は、この Graphic の内容とともに再帰的に検索されます。
このメソッドは、Graphic を左から右に検索する Graphic.search-next-here に似ています。

オーバーライド

このメソッドの基本実装は常に null, null を返します。SearchPattern を実際に識別して探し出せる Graphic のサブクラスでは、それを実行するためにこのメソッドをオーバーライドする必要があります。


set-layout (メソッド)
public {Graphic.set-layout l:#Layout}:void

Graphic のレイアウト オブジェクトを設定します。

l: 設置するレイアウト オブジェクト。

プログラミング注意事項

このメソッドは、このオブジェクトをグラフィカルな親に接続する過程で呼び出されます。グラフィック階層のオブジェクトの接続/切断に使われるプロトコルを理解せずにこのメソッドを使用するのは危険です。

注意事項

この Graphic が既にレイアウト オブジェクトを持っている場合、Graphic.detach によって先にこの Graphic がそのレイアウト オブジェクトから切断されてから、新しいレイアウト オブジェクトに接続されます。

オーバーライド

通常はオーバーライドされません。


set-size (メソッド)
public {Graphic.set-size lc:LayoutContext, bounds:GRect}:void

このオブジェクトにレイアウト幅と高さを代入します。

説明

このオブジェクトで set-size を呼び出すと、オブジェクトのレイアウト サイズを代入し、オブジェクトのレイアウト ネゴシエーションを完了します。グラフィック階層のすべてのオブジェクトにレイアウト サイズが代入された後で階層のレイアウト ネゴシエーションが完了します。
lc: このレイアウト ネゴシエーションに対して有効な LayoutContext
bounds: このオブジェクトの境界ボックスの左右および上下の範囲をオブジェクトの起点から相対的に示す GRect

プログラミング注意事項

このメソッドは、オブジェクトのグラフィカルな親によって呼び出されます。

オーバーライド

既定のメソッド Graphic.set-size は何も行ないません。Graphicのサブクラスはこのメソッドをオーバーライドして、ここで提供した情報をインターセプトできます。


start-pagination (メソッド)
public {Graphic.start-pagination}:PaginationState

パジネートできるように Graphic を準備します。

注意事項

これは、Layout.start-pagination を呼び出したときに呼び出されます。
この Graphic のレイアウトは、この呼び出しが行われたときに有効であり、Graphic.end-pagination を呼び出すまで変わらないことが重要です。

オーバーライド

このメソッドは、この GraphicPaginationState を作成する Graphic.create-pagination-state を呼び出し、このオブジェクトで Graphic.pagination-state を設定します。


xy-offset-to (メソッド)
public {Graphic.xy-offset-to}:(x:Distance, y:Distance, valid?:bool)

2 つの グラフィカル オブジェクトの起点の間の (x、y) オフセットを計算します。

g: オフセットを算出する対象のグラフィック。

戻り値

返された Distance 値は、現在のオブジェクトから g までの (x,y) オフセットとなります。bool 値はこのオフセットが妥当であるかどうかを示しています。false である場合、他の結果が無効であることを意味します。これは 2 個のオブジェクトが現在同じスクリーンに表示されていない場合に起きます。

注意事項

このメソッドのコードは、2 つのオブジェクトが同じグラフィカル階層にあるときしかオフセットを計算できません。それ以外の場合、返される bool 値は false です。ただし、将来的には、2 つのオブジェクトが別々の View に属していても同じ画面 (またはディスプレイ デバイス) 上にある場合に対応できるようにこのメソッドを拡張する予定です。

レイアウトが現在有効でないオブジェクトでのこのメソッドの呼び出しについては、Layout.get-bounds の注意事項を参照してください。

詳細については、Visual.xy-offset-to を参照してください。