Chart (クラス)
public abstract Chart {inherits Shape}
パッケージ: CURL.GUI.CHARTS
直接継承しているサブクラス: LayeredChart, PieChart

データドリブン グラフを表す抽象クラス。実装には LayeredChartPieChart があります。

説明

ChartShape オブジェクトです。ShapeGraphic オブジェクトではありませんが、ShapeBoxChartBox または Canvas を使用して標準グラフィック階層に表示できます。ChartBox は、Chart をグラフィック階層に挿入すると、常に暗黙的に作成されます。CURL.GUI.CHARTS のほとんどの例は、この特性を使用するものです。また、ChartBox を明示的に作成することによって、グラフの周りを境界線で囲んだり、グラフに背景色を付けたりすることもできます。あるいは、Chart を、他の Shape とともに Canvas に配置することもできます。
グラフ作成のほとんどの要素は、実際の実装にデリゲートされます。Chart クラスを使用して、グラフ レイアウト システムを制御し、高度な凡例の作成と配置を管理することができます。
レイアウトについては、Chart.invalidate-layout を参照してください。Chart レベルでの凡例の作成については、Chart.create-legendChart.legend-factory、および Chart.legend-entry-factory を参照してください。

注意事項

このオブジェクトは、"Chart"のスタイル ルールを記述することでスタイル化することが出来ます。

コンストラクタ
default:新しい Chart オブジェクトを作成します。
コンストラクタ public {Chart.default
width:Distance = -1m,
height:Distance = -1m,
legend-location:LegendLocation = LegendLocation.right,
legend-alignment:double = 0.2,
color-palette:{Array-of FillPattern} = default-chart-color-palette,
...
}

プロパティ
bottom-margin:Chart の下の余白に割り当てられたスペースの量。
ローカル オプション public Chart.bottom-margin:any =null
color-palette:データ系列のプロット時に使用される FillPattern の配列。
フィールド public Chart.color-palette:{Array-of FillPattern}
default-height:高さが指定されていない場合に、この Chart が使用する高さ。
アクセサ public Chart.default-height:Distance
default-width:幅が指定されていない場合に、この Chart が使用する幅。
アクセサ public Chart.default-width:Distance
display-context:このオブジェクトに関連付けられている DisplayContext
非ローカル オプション public Chart.display-context:#DisplayContext
font-family:テキストのフォント書体を設定します。
非ローカル オプション public Chart.font-family:String
font-size:オブジェクト内のテキストの既定サイズを指定します。
非ローカル オプション public Chart.font-size:any
font-style:オブジェクト内のテキストを斜体や斜投影法などのフォントにするかどうかを指定します。
非ローカル オプション public Chart.font-style:FontStyle
font-weight:オブジェクト内のテキストを、太字として強調表示するかどうかを指定します。
非ローカル オプション public Chart.font-weight:FontWeight
height:グラフの現在の高さ。
フィールド public-get private-set Chart.height:Distance =-1m
layout-scheduled?:この Chart でレイアウト操作が保留中であるかどうかを示します。
アクセサ public final Chart.layout-scheduled?:bool
left-margin:Chart の左の余白に割り当てられたスペースの量。
ローカル オプション public Chart.left-margin:any =null
legend-alignment:Chart.legend-location で選択されたグラフの辺に沿った凡例の配置。
アクセサ public Chart.legend-alignment:double
セッター public Chart.legend-alignment:double
legend-enabled?:Chart の凡例作成を有効または無効にするために使用できる bool
非ローカル オプション public Chart.legend-enabled?:bool
legend-entry-factory:Chart の凡例の個別の凡例項目を生成するために使用されるファクトリ プロシージャ。
非ローカル オプション public Chart.legend-entry-factory:LegendEntryFactory
legend-factory:Chart の凡例を表す Graphic の生成のためのファクトリ。
ローカル オプション public Chart.legend-factory:Chart.LegendFactory =Chart.default-legend-factory
legend-location:グラフの凡例の位置 (LegendLocation を使用して定義されます)。
アクセサ public Chart.legend-location:LegendLocation
セッター public Chart.legend-location:LegendLocation
legend-shape:凡例を格納するために使用される GraphicShape オブジェクト (ある場合)。
フィールド public constant Chart.legend-shape:GraphicShape
plot-area-bounds:このグラフ内でプロットに使用されるエリア。
フィールド public constant Chart.plot-area-bounds:GRect ={GRect.empty}
right-margin:Chart の右の余白に割り当てられたスペースの量。
ローカル オプション public Chart.right-margin:any =null
style-element:スタイリングの目的のための、この Visual の "要素" や "型" です。
アクセサ public Chart.style-element:String
text-line-through?:オブジェクト内のテキストに、取り消し線を適用するかどうかを指定します。
非ローカル オプション public Chart.text-line-through?:bool
text-underline?:このオブジェクト内のテキストに、下線を引かれるかどうかを指定します。
非ローカル オプション public Chart.text-underline?:bool
top-margin:Chart の上の余白に割り当てられたスペースの量。
ローカル オプション public Chart.top-margin:any =null
width:グラフの現在の幅。
フィールド public-get private-set Chart.width:Distance =-1m
プロパティ 継承 Shape: as-Shape, border-color, color, draw-operation, graphical-parent, option-parent, possibly-displayed?, selection-context, shape-parent, shape-selectable, stroke-thickness, transformation, visible?
プロパティ 継承 ShapeContainerBase: as-ShapeRoot, shape-children
プロパティ 継承 Visual: _style-element, clonable-class?, completely-clonable-children?, cursor, data-source, dragee, has-key-focus?, input-method-enabled?, input-method-keyboard-mode, name, options, style-class, style-manager, style-options, test-child?, test-description, test-name, test-parent?, test-type-name, test-visible?, tooltip, user-data, visual-parent
プロパティ 継承 DataBindingTarget: data-binding-context, data-bindings
プロパティ 継承 EventTarget: event-handlers
プロパティ 継承 OptionListInterface: option-register-proc, options-present-here, registered-option-keys

クラス変数と定数
LegendFactory:Chart の凡例の生成に使用されるファクトリー プロシージャの Type。これは、オプション Chart.legend-factory の型です。
public constant Chart.LegendFactory:ProcType ={proc-type {chart:Chart, include-scrollbox?:bool }:#Graphic }

クラス プロシージャ
default-legend-entry-factory:標準凡例項目を作成します。
public {Chart.default-legend-entry-factory
chart:Chart,
data-series:ChartDataSeries,
record:#Record,
color:FillPattern,
legend-index:int
}:Graphic
default-legend-factory:標準垂直方向レイアウトの凡例を作成します。
public {Chart.default-legend-factory
chart:Chart,
include-scrollbox?:bool
}:#Graphic

メソッド
constrain-own-layout-bounds:境界制約 (ローカル座標系) をこの Shape に適用します。
public {Chart.constrain-own-layout-bounds
lc:LayoutContext,
bounds:GRect
}:void
create-legend:このグラフの凡例 Graphic を作成します。
public {Chart.create-legend include-scrollbox?:bool = false}:#Graphic
draw:このオブジェクトの可視表現を描画します。
public {Chart.draw renderer2d:Renderer2d}:void
ensure-layout-valid:保留中のレイアウト処理が直ちに実行されるように強制します。
public {Chart.ensure-layout-valid force-layout?:bool = false}:void
estimate-margins:この Chart の必要余白を概算します。
protected abstract {Chart.estimate-margins
need-left?:bool,
need-right?:bool,
need-top?:bool,
need-bottom?:bool,
left:Distance,
right:Distance,
top:Distance,
bottom:Distance
}:(left:Distance, right:Distance, top:Distance, bottom:Distance)
get-actual-bottom-margin:Chart の下の余白に使用される実際の値を返します。
public final {Chart.get-actual-bottom-margin}:Distance
get-actual-left-margin:Chart の左の余白に使用される実際の値を返します。
public final {Chart.get-actual-left-margin}:Distance
get-actual-right-margin:Chart の右の余白に使用される実際の値を返します。
public final {Chart.get-actual-right-margin}:Distance
get-actual-top-margin:Chart の上の余白に使用される実際の値を返します。
public final {Chart.get-actual-top-margin}:Distance
get-legend-entries:この Chart の凡例に必要なすべての項目を作成します。
public abstract {Chart.get-legend-entries}:{Array-of Graphic}
get-own-bounds:ローカル座標系におけるこの Shape の四角形のレンダリング境界を計算します。
public {Chart.get-own-bounds dest:GRect = {GRect.empty}}:GRect
get-shape-layout-bounds:このオブジェクトのローカル座標系における、このオブジェクトとその子の四角形のレイアウト境界を計算します。
public {Chart.get-shape-layout-bounds
lc:LayoutContext,
width-first?:bool = true,
dest:GRect = {GRect.empty}
}:GRect
invalidate-layout:Chart がすぐにレイアウト操作を実行するように要求します。
public {Chart.invalidate-layout}:void
layout-chart:このチャートにおけるレイアウトの現在のプロセスを実行します。
public {Chart.layout-chart}:void
note-color-palette-changed:この ChartChart.color-palette の内容が変更されたことを通知します。
public {Chart.note-color-palette-changed}:void
position-legend:凡例を Chart 内に位置付けます。
public {Chart.position-legend}:void
request-draw:描画する Visual に属するピクセルを確認します。
public {Chart.request-draw
layout-context:LayoutContext = {self.get-layout-context}
}:void
self-contains-point?:ポイントがこの Shape 内にあるかどうかを判定します。
public {Chart.self-contains-point? x:Distance, y:Distance}:bool
self-intersects-polygon?:ポリゴンがこの Shape と交差するかどうかを判定します。
public {Chart.self-intersects-polygon?}:bool
set-chart-size:Chart のサイズを設定します。
public {Chart.set-chart-size width:Distance, height:Distance}:void
to-Graphic:このオブジェクトに値する Graphic を返します。
public {Chart.to-Graphic}:Graphic
transformation-changed:Shape.transformation が変更されたことの通知。
public {Chart.transformation-changed}:void
update-layout:Chart.plot-area-bounds に基づいてレイアウト操作を実行します。
protected abstract {Chart.update-layout}:void
メソッド 継承 Shape: apply-rotation, apply-scale, apply-transformation, apply-translation, apply-translation-in-parent, constrain-shape-layout-bounds, contains-point?, detach, find-graphical-ancestor, fire-crossing-event, fire-in-child, get-display-context, get-down-orientation-in-shape-parent, get-graphical-root, get-gui-path, get-gui-path-to-child, get-local-device-pixel-size, get-origin-in-graphical-ancestor, get-origin-in-root, get-origin-in-shape-parent, get-origin-in-shape-root, get-own-bounds-in-shape-root, get-own-layout-bounds, get-right-orientation-in-shape-parent, get-shape-bounds, get-shape-bounds-in-shape-root, get-top-left-in-ancestor, get-transformation-to-shape-root, keyword-init-arg, option-change-notify, overdraw-for-selection, quantize-line-thickness, request-draw-self, reset-transformation, set-rotation, set-scale, set-transformation, set-translation-in-parent, transform-from-display-coordinates, transform-from-graphical-root-coordinates, transform-point-from-shape-root, transform-point-to-shape-root, transform-to-display-coordinates, transform-to-graphical-root-coordinates, transform-vector-from-shape-root, transform-vector-to-shape-root, transformation-changing
メソッド 継承 ShapeContainerBase: add, clear, clone-children, draw-shape-child, draw-shape-children, get-all-children-at-point, get-child-at-point, get-leaf-at-point, get-shape-root, note-attached, note-detaching, notify-option-children, on-drag-enter, on-pointer-enter, on-pointer-envelope-event, register-options, remove, set-shape-index, set-shape-index-after, set-shape-index-before, shape-container-fire-inferior-crossing-event, shape-container-handle-crossing, shape-container-pick-child, shape-container-pointer-enter-occurred, shape-container-pointer-leave-occurred
メソッド 継承 Visual: add-from-init-args, animate, change-cursor, clonable-appearance?, clone-appearance, clone-appearance-helper, find-test-children, get-focus-manager, get-layout-context, get-test-parent, get-test-property, get-text, get-view, maybe-fire-attach-event, maybe-fire-detach-event, non-keyword-init-arg, note-caret-position, on-drag-leave, on-pointer-leave, pop-cursor, prepare-test-object, prepare-test-parent, push-cursor, quantize-width, refresh-style-options, release-key-focus, request-key-focus, scroll-to-include, test-record, test-run, xy-offset-to
メソッド 継承 GraphicOptions: any-to-Distance
メソッド 継承 GuiEventTarget: handle-delegate-event, handle-event, on-action, on-cancel-mode, on-command-changed, on-commit, on-composition-change-event, on-composition-result-event, on-context-menu-event, on-current-record-change-request, on-current-record-changed, on-destroy-notify, on-destroy-requested, on-drag-over, on-drag-pointer, on-drag-started, on-drop, on-end-composition-event, on-focus-event, on-focus-in, on-focus-out, on-gesture, on-gesture-begin, on-gesture-end, on-gesture-magnify, on-gesture-pan, on-gesture-rotate, on-gesture-swipe, on-gesture-tap, on-gesture-touch, on-grab-release, on-gui-event, on-input-method-event, on-inspection, on-key-event, on-key-press, on-pointer-button, on-pointer-crossing, on-pointer-event, on-pointer-motion, on-pointer-press, on-pointer-release, on-pointer-scroll, on-raw-key-event, on-raw-key-press, on-raw-key-release, on-reset, on-selectable-added, on-selectable-removed, on-selection-changed, on-selection-context-activated, on-selection-context-deactivated, on-selection-event, on-start-composition-event, on-start-event, on-stop-event, on-view-activate, on-view-deactivate, on-window-close, remove-event-handlers-for-event-class
メソッド 継承 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, local-add-notify, local-remove-notify, name-to-option-key, new-option-item, option-changed, option-lookup, option-lookup-here, option-propagate-notify, option-set?, propagate-option-change, remove-option, remove-style-option, remove-styles, set-option-by-name, set-style-option-by-name, unset-option-by-name, unset-style-option-by-name
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 InitRestArgParser: process-rest-args
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {Chart.default
width:Distance = -1m,
height:Distance = -1m,
legend-location:LegendLocation = LegendLocation.right,
legend-alignment:double = 0.2,
color-palette:{Array-of FillPattern} = default-chart-color-palette,
...
}

新しい Chart オブジェクトを作成します。

width: グラフの初期幅。Chart.width を参照してください。
height: グラフの初期の高さ。Chart.height を参照してください。
legend-location: 凡例の初期位置。Chart.legend-location を参照してください。
legend-alignment: 凡例の初期配置。Chart.legend-alignment を参照してください。
color-palette: データ系列のプロット時に使用される FillPattern の配列。詳細については、Chart.color-palette を参照してください。
...: コンストラクタ Shape.default に渡される引数。キーワード引数を使用してオプションを初期化できます。非キーワード引数には、このオブジェクトの子として追加される EventHandlerDataBinding、または Shape オブジェクトを使用できます。

説明

このコンストラクタは、Chart のサブクラスによってのみ使用されます。



プロパティ詳細
bottom-margin (ローカル オプション)
public Chart.bottom-margin:any =null

Chart の下の余白に割り当てられたスペースの量。

説明

レイアウト操作および余白の役割については、Chart.height および Chart.plot-area-bounds を参照してください。このオプションとグラフの内容に基づいて実際の結果を計算する、Chart.get-actual-bottom-margin も参照してください。
有効な値の型は次のとおりです。
既定値は null で、Chart に、非プロット要素を格納する必要余白を見積もり、その値を使用するように指示します。
有効な値の例としては次のものがあります。
  • 2cm
  • 1.5in
  • 36pt
  • 3px
  • 36 (これは 36pt と同じです)
値をピクセルに換算して数量化する方法については、Shape.quantize-line-thickness を参照してください。

例については、Chart.left-margin を参照してください。


color-palette (フィールド)
public Chart.color-palette:{Array-of FillPattern}

データ系列のプロット時に使用される FillPattern の配列。

説明

各データ系列がプロットされている間、この配列が繰り返されます。このように、最初の FillPattern は最初のデータ系列に対して使用され、2 番目の FillPattern は 2 番目のデータ系列に対して使用され、以降同様に行われます。データ系列の数がこの配列の要素より多い場合は、もう一度始めから繰り返されます。
既定では、この値は default-chart-color-palette を参照するので、この配列は同じアプレット内のすべてのグラフで共有されます。
使用される色を変更するには、別の配列を使用するようにこのフィールドを設定するか、default-chart-color-palette を直接変更します。ただし、いずれの場合も、Chart.note-color-palette-changed を呼び出すことによって、その配列を使用しているグラフに変更を通知する必要があります。

注意事項

代替組み込みパレットが存在します。pastel-chart-color-palette を参照してください。

この例は、棒グラフの色としての LinearGradientFillPattern の使用法を示しています。

{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{define-proc package {h-gradient
                         start-color:FillPattern,
                         highlight-color:FillPattern,
                         end-color:FillPattern,
                         highlight-pos:double = 0.2
                     }:FillPattern
    {return
        {LinearGradientFillPattern
            {Fraction2d 0, 0},
            {Fraction2d 1, 0},
            {Spectrum.from-envelope
                start-color,
                0.0,
                highlight-color,
                highlight-pos,
                end-color,
                1.0
            }
        }
    }
}

{LayeredChart
    width = 15cm,
    height = 6cm,
    color-palette =
        {new {Array-of FillPattern},
            {h-gradient "gray", "white", "gray"},
            {h-gradient "blue", "lavender", "steelblue"},
            {h-gradient "red", "mistyrose", "crimson"},
            {h-gradient "purple", "lavender", "blueviolet"},
            {h-gradient "lime", "mintcream", "green"}
        },
    {BarLayer
        sample-records,
        "Wins",
        "Points",
        "Age"
    }
}
次の例では、ドロップダウン リストを使用して、配列の最初の要素を変更できます。グローバル配列が変更されることに注意してください。このアプレットに他のグラフがあった場合は、このグラフに特殊な配列を使用するか、他のグラフにも変更を通知する必要があります。

{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}
{RecordGrid height = 6cm, record-source = sample-records}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        left-axis = {new {NumericAxis-of double}, 0, 70},
        right-axis = {ChartAxis {ChartDataSeries sample-records, "Height"}},
        {BarLayer
            {ChartDataSeries sample-records, "Age"},
            {ChartDataSeries sample-records, "Wins"},
            {ChartDataSeries sample-records, "Height"},
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}

{value chart}

First element of color-palette:
{DropdownList
    "black", "blue", "turquoise", "purple", "crimson",
    list-item-creation-proc =
        {proc {val:any}:ListItem
            {return
                {ListValueItem
                    value=val,
                    {RectangleGraphic fill-color=val,
                        width=50pt, height=10pt
                    }
                }
            }
        },
    {on ValueChanged at ddl:DropdownList do
        set chart.color-palette[0] = ddl.value asa FillPattern
        {chart.note-color-palette-changed}
    }
}


default-height (アクセサ)
アクセサ public Chart.default-height:Distance

高さが指定されていない場合に、この Chart が使用する高さ。

説明

Chart は、get-own-bounds のサイズ設定を宣言する必要があります。このためコンストラクタまたは set-chart-size で設定が指定されていない (あるいは負数が指定されている) 場合、代わりにこの値が使用されます。


default-width (アクセサ)
アクセサ public Chart.default-width:Distance

幅が指定されていない場合に、この Chart が使用する幅。

説明

Chart は、get-own-bounds のサイズ設定を宣言する必要があります。このためコンストラクタまたは set-chart-size で設定が指定されていない (あるいは負数が指定されている) 場合、代わりにこの値が使用されます。


display-context (非ローカル オプション)
public Chart.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 オプションでの変更をモニタリングするコードは、この可能性を考慮に入れ、この状況における望ましくない動作の実行を回避しなくてはなりません。


font-family (非ローカル オプション)
public Chart.font-family:String

テキストのフォント書体を設定します。

説明

テキストをレンダリングするフォントの検索に使用するフォント ファミリー名 (または名前のリスト) を指定します。
フォントの指定方法の詳細については、Font を参照してください。

{VBox
    {text font-family = "serif", serif},
    {text font-family = "sans-serif", sans-serif},
    {text font-family = "monospace", monospace},
    {text
        font-family = "Arial, Nimbus Sans L, sans-serif",
        prefer a particular sans-serif
    },
    {text
        font-family =
            "Times New Roman, Nimbus Roman No9 L, serif",
        prefer a particular serif
    }
}


font-size (非ローカル オプション)
public Chart.font-size:any

オブジェクト内のテキストの既定サイズを指定します。

説明

この値の妥当なタイプは DistancePixelDistanceEmDistance を含んでいます。許可されたタイプを判断するための詳細な情報については verify-any-is-distance-type を御覧下さい。
値は正の値でなければなりません。負の値や、0 はオプションをに設定することはできますが、実行する際にランタイムエラーが発生します。

font-size オプションを使用したテキスト サイズの指定方法の例をいくつか示します。"Medium" という語を持つテキスト オブジェクトが、それを含むテキスト オブジェクトから、どのようにフォント サイズを取得するかに注意してください。


{text font-size=12pt,
    {text font-size=8pt, Little}
    {text font-size=1cm, Pretty big}
    {text Medium}
    {text font-size=1in, Huge!}
}
{text And this is the default}

参照:

文字書式: tiny, small, big, huge


font-style (非ローカル オプション)
public Chart.font-style:FontStyle

オブジェクト内のテキストを斜体や斜投影法などのフォントにするかどうかを指定します。

説明

適切な値は次のとおりです。

このオプションは、非ローカル オプション ControlFrame.control-appearance-changeable? がコントロール上で true の場合、コントロール内のテキストの外観に反映されます。DialogMenuPane MenuBarDialog.use-look-and-feel? が true の場合、フォント書体は外観で指定された値に設定されるため、ダイアログやメニューで値を設定しても効果はありません。


{paragraph font-style="italic", Everything in this paragraph
    should be in an italic font,
    {text font-style="normal", except for this text fragment.}
}

参照:

文字書式: italic


font-weight (非ローカル オプション)
public Chart.font-weight:FontWeight

オブジェクト内のテキストを、太字として強調表示するかどうかを指定します。

説明

適切な値は次のとおりです。

このオプションは、非ローカル オプション ControlFrame.control-appearance-changeable? がコントロール上で true の場合、コントロール内のテキストの外観に反映されます。DialogMenuPane MenuBarDialog.use-look-and-feel? が true の場合、フォント スタイルは外観で指定された値に設定されるため、ダイアログやメニューで値を設定しても効果はありません。


{paragraph Everything in this paragraph
    should be normally weighted,
    {text font-weight="bold", except for this text fragment.}
}

参照:

文字書式: bold


height (フィールド)
public-get private-set Chart.height:Distance =-1m

グラフの現在の高さ。

説明

正数の場合、この測定にすべての要素が含まれますが、厳密な制約ではありません。(場合によっては、軸ラベルや目盛りラベルなどの要素がこの寸法を超えて拡張する場合があります。)
具体的には、この測定には Chart.plot-area-boundsChart.top-margin、および Chart.bottom-margin が含まれます。
この値は、Chart.set-chart-size を使用することによって、あるいはコンストラクタ Chart.default によって制御されます。Chart は、そのコンテナのサイズへの適合をサポートします。Chart.set-chart-size を参照してください。


layout-scheduled? (アクセサ)
アクセサ public final Chart.layout-scheduled?:bool

この Chart でレイアウト操作が保留中であるかどうかを示します。

説明

レイアウトは、Chart.invalidate-layout を使用してスケジュールし、Chart.ensure-layout-valid を使用してトリガできます。そうしない場合は、レイアウトは、保留中の Event が扱われると、直ちに処理されます。


left-margin (ローカル オプション)
public Chart.left-margin:any =null

Chart の左の余白に割り当てられたスペースの量。

説明

レイアウト操作および余白の役割については、Chart.width および Chart.plot-area-bounds を参照してください。このオプションとグラフの内容に基づいて実際の結果を計算する、Chart.get-actual-left-margin も参照してください。
有効な値の型は次のとおりです。
既定値は null で、Chart に、非プロット要素を格納する必要余白を見積もり、その値を使用するように指示します。
有効な値の例としては次のものがあります。
  • 2cm
  • 1.5in
  • 36pt
  • 3px
  • 36 (これは 36pt と同じです)
値をピクセルに換算して数量化する方法については、Shape.quantize-line-thickness を参照してください。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{RecordGrid height = 6cm, record-source = sample-records}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        left-axis = {new {NumericAxis-of double}, 0, 70},
        right-axis = {ChartAxis {ChartDataSeries sample-records, "Height"}},
        {LineLayer
            {ChartDataSeries sample-records, "Age"},
            {ChartDataSeries sample-records, "Wins"},
            {ChartDataSeries sample-records, "Height"},
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}


{let left:TextField =
    {TextField
        value = "null",
        {on ValueFinished at tf:TextField do
            let val:String = tf.value
            set chart.left-margin = {evaluate val}
        }
    }
}

{let right:TextField =
    {TextField
        value = "null",
        {on ValueFinished at tf:TextField do
            let val:String = tf.value
            set chart.right-margin = {evaluate val}
        }
    }
}

{let top:TextField =
    {TextField
        value = "null",
        {on ValueFinished at tf:TextField do
            let val:String = tf.value
            set chart.top-margin = {evaluate val}
        }
    }
}

{let bottom:TextField =
    {TextField
        value = "null",
        {on ValueFinished at tf:TextField do
            let val:String = tf.value
            set chart.bottom-margin = {evaluate val}
        }
    }
}

{Canvas
    width = chart.width,
    height = chart.height,
    chart
}
{Fill width = 1cm}
{VBox
    spacing = .25cm,
    "Margins:",
    {Table
        cell-border-width = 1pt,
        cell-border-color = "silver",
        cell-border-style = "sunken",
        border-width = 1pt,
        border-color="silver",
        border-style = "sunken",
        {column-prototype
            {bold side},
            "left",
            "right",
            "top",
            "bottom"
        },
        {column-prototype
            width = 3cm,
            {bold value},
            left,
            right,
            top,
            bottom
        }
    }
}


legend-alignment (アクセサ)
アクセサ public Chart.legend-alignment:double
セッター public Chart.legend-alignment:double

Chart.legend-location で選択されたグラフの辺に沿った凡例の配置。

説明

この値は、0.0 から 1.0 の範囲にある必要があります。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{RecordGrid height = 6cm, record-source = sample-records}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        left-axis = {new {NumericAxis-of double}, 0, 70},
        right-axis = {ChartAxis {ChartDataSeries sample-records, "Height"}},
        {LineLayer
            {ChartDataSeries sample-records, "Age"},
            {ChartDataSeries sample-records, "Wins"},
            {ChartDataSeries sample-records, "Height"},
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}


{Canvas
    width = chart.width,
    height = chart.height,
    chart
}

Legend location:
{DropdownList
    LegendLocation.left,
    LegendLocation.right,
    LegendLocation.top,
    LegendLocation.bottom,
    list-item-creation-proc =
        {proc {val:any}:ListItem
            {return
                {ListValueItem
                    value = val,
                    (val asa LegendLocation).name
                }
            }
        },
    {on ValueChanged at ddl:DropdownList do
        set chart.legend-location = ddl.value asa LegendLocation
    },
    value = LegendLocation.right
}

Legend alignment:
{TextField
    value = {format "%.2f", chart.legend-alignment},
    {on ValueFinished at tf:TextField do
        set chart.legend-alignment = {tf.value.to-double}
    }
}


legend-enabled? (非ローカル オプション)
public Chart.legend-enabled?:bool

Chart の凡例作成を有効または無効にするために使用できる bool

説明

legend-enabled? を参照してください。


legend-entry-factory (非ローカル オプション)
public Chart.legend-entry-factory:LegendEntryFactory

Chart の凡例の個別の凡例項目を生成するために使用されるファクトリ プロシージャ。

説明

legend-entry-factory を参照してください。


legend-factory (ローカル オプション)
public Chart.legend-factory:Chart.LegendFactory =Chart.default-legend-factory

Chart の凡例を表す Graphic の生成のためのファクトリ。

説明

このオプションを設定することは、凡例のトップレベルの外観を変更する最も簡単な方法です。既定でのこの実行方法の詳細については、Chart.default-legend-factory を参照してください。legend-entry-factory を使用して、凡例項目の外観を変更したい場合もあります。
プロシージャのパラメータについては、Chart.LegendFactory を参照してください。

このコードは、Chart.legend-factorylegend-entry-factory の両方を使用して、水平方向の凡例を作成する方法を示しています。この凡例は、データ系列の色を表示するためにテキストの色を使用します。

{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{RecordGrid height = 6cm, record-source = sample-records}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        left-axis = {new {NumericAxis-of double}, 0, 70},
        right-axis = {ChartAxis {ChartDataSeries sample-records, "Height"}},
        legend-location = LegendLocation.top,
        legend-alignment = 0.5,
        legend-entry-factory =
            {proc
                {chart:Chart,
                 data-series:ChartDataSeries,
                 record:#Record,
                 color:FillPattern,
                 legend-index:int
                }:Graphic
                {return
                    {Frame
                        color = color,
                        {if-non-null record then
                            {data-series.field.domain.format
                                record[data-series.field.name]
                            }
                         else
                            data-series.field.caption
                        }
                    }
                }
            },
        legend-factory =
            {proc {chart:Chart, include-scrollbox?:bool}:#Graphic
                let constant entries:{Array-of Graphic} =
                    {chart.get-legend-entries}
                {if entries.empty? then
                    {return null}
                }
                
                let box:Box =
                    {HBox
                        margin = 4pt,
                        spacing = 8pt
                    }
                {for g in entries do {box.add g}}

                {return
                    {if include-scrollbox? then
                        {ScrollBox
                            border-width = 1px,
                            border-color = FillPattern.black,
                            box
                        }
                     else
                        set box.border-width = 1px
                        set box.border-color = FillPattern.black
                        {return box}
                    }
                }
            },
        {LineLayer
            {ChartDataSeries sample-records, "Age"},
            {ChartDataSeries sample-records, "Wins"},
            {ChartDataSeries sample-records, "Height"},
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}

{Canvas
    width = chart.width,
    height = chart.height,
    chart
}


legend-location (アクセサ)
アクセサ public Chart.legend-location:LegendLocation
セッター public Chart.legend-location:LegendLocation

グラフの凡例の位置 (LegendLocation を使用して定義されます)。

注意事項

例については、Chart.legend-alignment を参照してください。


legend-shape (フィールド)
public constant Chart.legend-shape:GraphicShape

凡例を格納するために使用される GraphicShape オブジェクト (ある場合)。

説明

凡例がない場合、legend-shape.graphic は null になります。
一般的に、このオブジェクトを使用する必要はありませんが、凡例を処理したい場合は、役立ちます。グラフ レイアウト処理中に、凡例 Graphic 自体が再生成されることがよくあることに注意してください。レイアウト処理の詳細については、Chart.invalidate-layout および Chart.ensure-layout-valid を参照してください。


plot-area-bounds (フィールド)
public constant Chart.plot-area-bounds:GRect ={GRect.empty}

このグラフ内でプロットに使用されるエリア。

説明

この値は、実際にプロットを含むグラフのサブセットです。一般的にこの領域から除外されるオブジェクトには軸、目盛り、目盛りラベル、軸ラベル、および凡例があります。

注意事項

このフィールドは情報専用です。GRect の内容は変更しないでください。


right-margin (ローカル オプション)
public Chart.right-margin:any =null

Chart の右の余白に割り当てられたスペースの量。

説明

レイアウト操作および余白の役割については、Chart.width および Chart.plot-area-bounds を参照してください。このオプションとグラフの内容に基づいて実際の結果を計算する、Chart.get-actual-right-margin も参照してください。
有効な値の型は次のとおりです。
既定値は null で、Chart に、非プロット要素を格納する必要余白を見積もり、その値を使用するように指示します。
有効な値の例としては次のものがあります。
  • 2cm
  • 1.5in
  • 36pt
  • 3px
  • 36 (これは 36pt と同じです)
値をピクセルに換算して数量化する方法については、Shape.quantize-line-thickness を参照してください。

例については、Chart.left-margin を参照してください。


style-element (アクセサ)
アクセサ public Chart.style-element:String

スタイリングの目的のための、この Visual の "要素" や "型" です。

説明

この実装によって Visual._style-elementの値が返されますが、通常は定数を返すためにオーバーライドされます。

オーバーライド

Visual のサブクラスのスタイルが他のオブジェクトと異なる場合、このゲッターは適切な文字列を返すようにオーバーライドされる必要があります。 慣例では,この文字列はクラス名または、オブジェクトを生成するマークアップの名前です。
オーバーライドでは、空の文字列でないかぎり、self._style-elementを返さなければなりません。
導入: バージョン 6.0


text-line-through? (非ローカル オプション)
public Chart.text-line-through?:bool

オブジェクト内のテキストに、取り消し線を適用するかどうかを指定します。

説明

true または false に設定します。

line-through も参照してください。このオプション用の定義済み文字書式です。


{paragraph
    Modified Shopping List: onions, carrots, french bread,
    {text text-line-through?=true, pot roast},
    London Broil, Camembert, eggs, {text
    text-line-through?=true, orange juice}, butter, jam.}

参照:

文字書式:line-through


text-underline? (非ローカル オプション)
public Chart.text-underline?:bool

このオブジェクト内のテキストに、下線を引かれるかどうかを指定します。

説明

true または false に設定します。


{paragraph
    This is the result of
    {text text-underline?=true, setting text-underline? to true}
    for a text fragment.
}
{paragraph
    {underline But notice what I am doing here{em-dash}I
    am using the underline character format and
    {text text-underline?=false, setting text-underline? to false.}}
}

参照:

文字書式: underline


top-margin (ローカル オプション)
public Chart.top-margin:any =null

Chart の上の余白に割り当てられたスペースの量。

説明

レイアウト操作および余白の役割については、Chart.height および Chart.plot-area-bounds を参照してください。このオプションとグラフの内容に基づいて実際の結果を計算する、Chart.get-actual-top-margin も参照してください。
有効な値の型は次のとおりです。
既定値は null で、Chart に、非プロット要素を格納する必要余白を見積もり、その値を使用するように指示します。
有効な値の例としては次のものがあります。
  • 2cm
  • 1.5in
  • 36pt
  • 3px
  • 36 (これは 36pt と同じです)
値をピクセルに換算して数量化する方法については、Shape.quantize-line-thickness を参照してください。

例については、Chart.left-margin を参照してください。


width (フィールド)
public-get private-set Chart.width:Distance =-1m

グラフの現在の幅。

説明

正数の場合、この測定にすべての要素が含まれますが、厳密な制約ではありません。(場合によっては、軸ラベルや目盛りラベルなどの要素がこの寸法を超えて拡張する場合があります。)
具体的には、この測定には Chart.plot-area-boundsChart.left-margin、および Chart.right-margin が含まれます。
この値は、Chart.set-chart-size を使用することによって、あるいはコンストラクタ Chart.default によって制御されます。Chart は、そのコンテナのサイズへの適合をサポートします。Chart.set-chart-size を参照してください。



クラス変数と定数の詳細
LegendFactory (クラス定数)
public constant Chart.LegendFactory:ProcType ={proc-type {chart:Chart, include-scrollbox?:bool }:#Graphic }

Chart の凡例の生成に使用されるファクトリー プロシージャの Type。これは、オプション Chart.legend-factory の型です。

chart: 凡例が作成される Chart
include-scrollbox?:
true の場合、返される凡例は ScrollBox で囲まれます。これは、Chartwidth および height オプションを直接設定して返されるオブジェクトのサイズを限定する必要があるため役立ちます。詳細については、Chart.create-legend を参照してください。
独自のShape ファクトリを作成する場合は、このパラメータは要件ではなく推奨と見なすことができます。ただし、default-legend-factory は常にこれに従います。

戻り値

凡例を表す Graphic、または null (凡例が不要な場合)。

説明

詳細と例については、Chart.legend-factory を参照してください。



クラス プロシージャ詳細
default-legend-entry-factory (クラスプロシージャ)
public {Chart.default-legend-entry-factory
chart:Chart,
data-series:ChartDataSeries,
record:#Record,
color:FillPattern,
legend-index:int
}:Graphic

標準凡例項目を作成します。

data-series: 凡例項目が生成される ChartDataSeries
record: 凡例項目が生成される Record (ある場合)。LayeredChart オブジェクトの場合、凡例項目はレコードではなく、データ系列に対して生成されるので、これは null になります。ただし、PieChart オブジェクトの場合、項目はレコード ベースであるので、この値は非 null になります。
color: データをプロットするために使用される FillPattern
legend-index: 凡例内のこの固有の項目のインデックス (ゼロから始まります)。

戻り値

凡例に入れる Graphic オブジェクト。

説明

これは、legend-entry-factory の既定値となります。これは、次のように実装されます。
let constant vertical?:bool =
    (chart.legend-location == LegendLocation.left or
     chart.legend-location == LegendLocation.right)
{return
    {HBox
        valign = "center",
        {Fill
            width = 8pt,
            height = 8pt,
            background = color,
            border-width = 1px
        },
        {Fill width = {if vertical? then 10pt else 4pt}},
        {if-non-null record then
            {data-series.field.domain.format
                record[data-series.field.name]
            }
         else
            data-series.field.caption
        }
    }
}


default-legend-factory (クラスプロシージャ)
public {Chart.default-legend-factory
chart:Chart,
include-scrollbox?:bool
}:#Graphic

標準垂直方向レイアウトの凡例を作成します。

chart: 凡例が生成される Chart
include-scrollbox?: true の場合、返される凡例は ScrollBox で囲まれます。これは、Chartwidth および height オプションを直接設定して、返されるオブジェクト サイズを限定する必要があるため、役立ちます。詳細については、Chart.create-legend を参照してください。

戻り値

凡例 (凡例を表示しない場合は NULL) を含む Graphic

説明

これは、Chart.legend-factory の既定値となります。これは、次のように実装されます。
let constant entries:{Array-of Graphic} =
    {chart.get-legend-entries}
{if entries.empty? then
    {return null}
}
let constant vertical?:bool =
    (chart.legend-location == LegendLocation.left or
     chart.legend-location == LegendLocation.right)
let box:Box =
    {if vertical? then
        {VBox margin = 4pt, spacing = 2pt}
     else
        {HBox margin = 3pt, spacing = 7pt}
    }
{for g in entries do {box.add g}}
{return
    {if include-scrollbox? then
        {ScrollBox
            border-width = 1px,
            border-color = FillPattern.black,
            box
        }
     else
        set box.border-width = 1px
        set box.border-color = FillPattern.black
        box
    }
}



メソッド詳細
constrain-own-layout-bounds (メソッド)
public {Chart.constrain-own-layout-bounds
lc:LayoutContext,
bounds:GRect
}:void

境界制約 (ローカル座標系) をこの Shape に適用します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext
bounds: 適用する制約です。

説明

Shape は制約に従う必要はありません。ただし、制約に従わない場合、Shape の全体を表示することができません。
既定の実装では、制約を無視します。

注意事項

Shape が境界を変更することで制約に対応する場合は、ShapeRoot.invalidate-shape-layout を呼び出す必要があります。無限ループを回避するため、制約とレイアウト境界のサイズの差が1 ピクセル未満の場合は、無視する必要があります。


create-legend (メソッド)
public {Chart.create-legend include-scrollbox?:bool = false}:#Graphic

このグラフの凡例 Graphic を作成します。

include-scrollbox?: true の場合、凡例ファクトリは ScrollBox 内の凡例を折り返します。(指定する凡例ファクトリはこのパラメータを無視できますが、既定の汎用ファクトリはこれを無視できないことに注意してください。Chart.LegendFactory を参照してください。)グラフに直接組み込むために凡例が作成される場合は、これは望ましいことです。サイズ超過の凡例はその幅または高さに制約があるためです。ただし、独自のグラフィカル階層に凡例を含める場合は、自動的に生成された ScrollBox を省略することができます。これは、便利な GUI ツールキット レイアウト システムを使用するか、または ScrollBox をより高位レベルに配置して、空間要件を処理するほうが簡単なためです。

戻り値

作成される Graphic、あるいは凡例が作成されない場合は null。凡例に入力する凡例項目が使用できない場合は、凡例は作成されません。たとえば、LayeredChart に非ローカル オプション legend-enabled?false に設定すると、どの ChartLayer も凡例項目を作成しません。これに対処する例については、以下を参照してください。

説明

このメソッドは通常、Chart の実装内から呼び出されます。ただし、グラフそのものの外部にある凡例を使用したい場合、このメソッドを直接呼び出すこともできます。
このメソッドではグラフ レベルでの legend-enabled? オプションは無視されるので、Chart で凡例の作成を禁止できますが、外部使用用には凡例を作成できます。ただし、ChartLayer または PieSet のそれぞれで legend-enabled? を true に設定し、それらが凡例項目を生成できるようにする必要があります。次の例はこのことを示しています。
凡例コンテナが作成される方法を変更するには、このメソッドをオーバーライドできます。ただし、多くの場合、Chart.legend-factory を設定するほうが簡単です。凡例生成の例については、Chart.default-legend-factory を参照してください。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{RecordGrid height = 6cm, record-source = sample-records}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        left-axis = {new {NumericAxis-of double}, 0, 70},
        right-axis = {ChartAxis {ChartDataSeries sample-records, "Height"}},
        legend-enabled? = false,
        {LineLayer
            legend-enabled? = true,
            {ChartDataSeries sample-records, "Age"},
            {ChartDataSeries sample-records, "Wins"},
            {ChartDataSeries sample-records, "Height"},
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}

{Canvas
    width = chart.width,
    height = chart.height,
    chart
}

{HBox
    height = 4cm,
    spacing = 1cm,
    {text
        The legend is placed in a height-constrained HBox, along with
        this text.  A Frame is used to provide an extra border.
    },
    {Frame
        background = "#cccccc",
        border-style = "sunken",
        border-width = 3px,
        {chart.create-legend}
    }
}


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

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

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

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。


ensure-layout-valid (メソッド)
public {Chart.ensure-layout-valid force-layout?:bool = false}:void

保留中のレイアウト処理が直ちに実行されるように強制します。

force-layout?: true の場合、スケジュールされていない場合でもレイアウト処理が実行されます。

説明

このメソッドは、Chart のプロット エリア (Chart.plot-area-bounds) をその必要余白、Chart.width、および Chart.height に基づいて計算します。ここでグラフ オブジェクトのレイアウト処理と生成をトリガするために、Chart.update-layout が呼び出されます。

注意事項

このメソッドを直接呼び出す必要があることはまれです。ただし、まだ有効になっていない Chart の要素とプログラムでやりとりする必要がある場合に役立ちます。たとえば、LayeredChart.bottom-axis を使用して、LayeredChart の自動的に生成された下の軸のタイプを検証したい場合、最初にこのメソッドを呼び出すことをお勧めします。
レイアウトの無効化は多くの理由で発生するため、レイアウトに依存する値がいつ変更されたか知る必要がある場合、ChartLayoutChanged イベントを処理する必要があります。特に、レイアウト処理中に生成された要素を操作する場合、ChartLayoutChanged イベント ハンドラ内で実行してください。
ChartLayoutChanged のイベント ハンドラの使用例については、ChartLayer.get-data-mapping を参照してください。


estimate-margins (メソッド)
protected abstract {Chart.estimate-margins
need-left?:bool,
need-right?:bool,
need-top?:bool,
need-bottom?:bool,
left:Distance,
right:Distance,
top:Distance,
bottom:Distance
}:(left:Distance, right:Distance, top:Distance, bottom:Distance)

この Chart の必要余白を概算します。

need-left?: 左の余白の見積もりが必要であるかどうかを示します。必要ない場合は、左の余白に left が返されます。
need-right?: 右の余白の見積もりが必要であるかどうかを示します。必要ない場合は、右の余白に right が返されます。
need-top?: 上の余白の見積もりが必要であるかどうかを示します。必要ない場合は、上の余白に top が返されます。
need-bottom?: 下の余白の見積もりが必要であるかどうかを示します。必要ない場合は、下の余白に bottom が返されます。
left: 左の余白の既定値を示します。need-left? が true の場合、この値を返します。true でない場合、無視されます。
right: 右の余白の既定値を示します。need-right? が true の場合、この値を返します。true でない場合、無視されます。
top: 上の余白の既定値を示します。need-top? が true の場合、この値を返します。true でない場合、無視されます。
bottom: 下の余白の既定値を示します。need-bottom? が true の場合、この値を返します。true でない場合、無視されます。

説明

このメソッドは、レイアウト処理の過程で内部的に使用されます。このメソッドを直接呼び出す必要があることは想定されていません。代わりに Chart.get-actual-left-marginChart.get-actual-right-marginChart.get-actual-top-margin、または Chart.get-actual-bottom-margin を使用します。必要な場合、これらの呼び出しの結果、このメソッドが呼び出されます。

注意事項

estimate-margins を呼び出す前に、Chart レイアウト システムは、最初の近似値としてグラフの plot-area-bounds をグラフ領域全体に設定します。estimate-margins の実装は、必要に応じて、見積もり処理の過程でこれらを自由に上書きできます。


get-actual-bottom-margin (メソッド)
public final {Chart.get-actual-bottom-margin}:Distance

Chart の下の余白に使用される実際の値を返します。

説明

この値は、Chart.bottom-margin の計算結果を表します。Chart.bottom-marginnull である場合、これに必要余白の近似値が含まれます。


get-actual-left-margin (メソッド)
public final {Chart.get-actual-left-margin}:Distance

Chart の左の余白に使用される実際の値を返します。

説明

この値は、Chart.left-margin の計算結果を表します。Chart.left-marginnull である場合、これに必要余白の近似値が含まれます。


get-actual-right-margin (メソッド)
public final {Chart.get-actual-right-margin}:Distance

Chart の右の余白に使用される実際の値を返します。

説明

この値は、Chart.right-margin の計算結果を表します。Chart.right-marginnull である場合、これに必要余白の近似値が含まれます。


get-actual-top-margin (メソッド)
public final {Chart.get-actual-top-margin}:Distance

Chart の上の余白に使用される実際の値を返します。

説明

この値は、Chart.top-margin の計算結果を表します。Chart.top-marginnull である場合、これに必要余白の近似値が含まれます。


get-legend-entries (メソッド)
public abstract {Chart.get-legend-entries}:{Array-of Graphic}

この Chart の凡例に必要なすべての項目を作成します。

説明

一般的に言えば、このメソッドは、グラフのプロット コンポーネント (たとえば、LayeredChartChartLayer) を繰り返し、それぞれのプロット コンポーネントに必要なすべての項目を作成します。
このメソッドは通常、Chart.create-legend によって呼び出される Chart.legend-factory によって呼び出されます。既定の凡例項目の処理方法については、Chart.default-legend-factory を参照してください。


get-own-bounds (メソッド)
public {Chart.get-own-bounds dest:GRect = {GRect.empty}}:GRect

ローカル座標系におけるこの Shape の四角形のレンダリング境界を計算します。

dest: データを返すために使用されるオプションの GRect オブジェクト。

戻り値

境界を含む GRect オブジェクト。これは、常に dest と同じオブジェクトになります。この GRect は正しい形式である必要があります。つまり、次の条件が true でなければなりません。 -dest.lextent <= dest.rextent and -dest.ascent <= dest.descent

説明

返された境界は、このオブジェクトによって描画されるすべてのピクセルをカバーしている必要があります。ただし、このオブジェクトのすべての子を含んでいません

注意事項

レンダリング境界 (get-own-bounds) とレイアウト境界 (get-own-layout-bounds) は、通常似ていますが、同じではありません。特に、レンダリング境界は非常に包括的ですが、レイアウト境界はそれぞれが整然と隣接するため、Shape を厳密に記述しなければならなりません。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。データを返すには、dest パラメータを使用する必要があります。


get-shape-layout-bounds (メソッド)
public {Chart.get-shape-layout-bounds
lc:LayoutContext,
width-first?:bool = true,
dest:GRect = {GRect.empty}
}:GRect

このオブジェクトのローカル座標系における、このオブジェクトとその子の四角形のレイアウト境界を計算します。

lc: このレイアウト ネゴシエーションに対して有効な LayoutContext
width-first?: GraphicShape の場合、width-first レイアウト ネゴシエーションを使用して計算されるべき境界であるかを示します。このパラメータは、通常他のサブクラスでは使用されません。
dest: データを返すために使用されるオプションの GRect オブジェクト。

戻り値

境界を含む GRect オブジェクト。これは、常に dest と同じオブジェクトになります。この GRect は正しい形式である必要があります。つまり、次の条件が true でなければなりません。 -dest.lextent <= dest.rextent and -dest.ascent <= dest.descent

説明

返された境界には、レイアウトの使用について、オブジェクトに関する詳細な記述があります。また、このオブジェクトのすべての子も含まれています


invalidate-layout (メソッド)
public {Chart.invalidate-layout}:void

Chart がすぐにレイアウト操作を実行するように要求します。

説明

グラフのレイアウト処理は通常、無効化の直後には行われません。これは通常、一括して行われる無効化変更のためです。たとえば、ChartDataSeries によって参照されるデータが変更されると、複数の経路から無効化がトリガされる可能性があります。たとえば、データが ChartAxisChartLayer の両方によって使用される場合、両方のオブジェクトは、このメソッドを通じて Chart にそのレイアウトを無効化するように通知します。
こうした不要なレイアウト操作が繰り返されないようにするには、遅延システムが使用されます。このメソッドの最初の呼び出しにより、Alarm を使用してレイアウト処理がスケジュールされます。実際にレイアウト処理が行われるまでは、後続の呼び出しでは何も行われません。
これは、Chart またはその関連データを変更する際、レイアウトに依存する値を直ちに更新する場合は、Chart.ensure-layout-valid を呼び出す必要があることを意味します。(これは、ChartAxis オブジェクトや ChartLayer の内容など、レイアウトの変更対象の Chart の要素とプログラムでやりとりする場合にのみ必要です。) あるいは、ChartLayoutChanged イベントを使用して、Chart レイアウトの終了時に通知を受け取り、イベント ハンドラでレイアウトに応じた操作を実行することもできます。
レイアウトの無効化は多くの理由で発生する可能性があるため、レイアウトに依存する値がいつ変更されたか知る必要がある場合、ChartLayoutChanged イベントを処理する必要があります。

注意事項

ほとんどのアプリケーションは、直接レイアウトの無効化を行う必要はありません。独自のレイアウト無効化シナリオを持つグラフ作成クラスを書いた場合は、これを行う必要があります。(たとえば、外部データに依存する ChartAxis サブクラスを書いた場合、そのデータが変更されると、Chart.invalidate-layout を呼び出す必要があります。)
形状を計算するのに外部データに依存する BarLayer.shape-factory などのファクトリ プロシージャを提供した場合も、このメソッドを呼び出す必要があります。その外部データが変更されると、レイアウト処理をトリガして、形状が再生成されるようにする必要があります。


layout-chart (メソッド)
public {Chart.layout-chart}:void

このチャートにおけるレイアウトの現在のプロセスを実行します。

説明

このメソッドを直接呼び出してはいけません。; グラフのレイアウトをトリガしたい場合は、Chart.ensure-layout-valid を呼び出してください。 Chart.layout-chart が呼び出されます。 このメソッドは、子のクラスでオーバーライドされるのが理想的です。その中で、グラフの現在のレイアウトの前(又は後)の動作を実行します。
導入: バージョン 6.0


note-color-palette-changed (メソッド)
public {Chart.note-color-palette-changed}:void

この ChartChart.color-palette の内容が変更されたことを通知します。

説明

Chart.color-palette を直接変更する場合、ポイントする配列を変更するかフィールドの値を変更して、このメソッドを呼び出す必要があります。これにより、グラフの適切なコンポーネントが確実に再生成されます。


position-legend (メソッド)
public {Chart.position-legend}:void

凡例を Chart 内に位置付けます。

説明

このメソッドは、Chart.legend-locationChart.legend-alignment、および Chart.plot-area-bounds に従って凡例の位置を計算します。次にこの位置が Chart.legend-shape に割り当てられます。
また凡例が大きすぎる場合は、このメソッドでこれに合うように legend-shape.graphic の幅と高さを直接制限します。このため、グラフ内に含まれる凡例は通常、ScrollBox の内部に置かれます。詳細については、Chart.create-legend を参照してください。

注意事項

ほとんどのアプリケーションは、このメソッドを呼び出す必要はありません。ただし、凡例の位置をプログラムで変更しており、それをリセットしたい場合は、このメソッドを使用して実行できます。


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

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

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

注意事項

このメソッドは、View.request-draw-rect-in-root の呼び出しを必要な回数だけ発行し (通常はビジュアルの境界で Graphic.request-draw-rect への呼び出しを実行することにより)、再ペイントが必要なすべてのピクセルをカバーする責任があります。

プログラミング注意事項

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


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

ポイントがこの Shape 内にあるかどうかを判定します。

x: 点の X 座標。
y: 点の Y 座標。

戻り値

この Shape が (xy) を含む場合は、true

説明

ポイントは、このオブジェクトのローカル座標系にあります。このメソッドは、その子を考慮しません。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。このメソッドは、PointerMotion などのマウス イベントをこのオブジェクトにいつ送信するかなどを決定します。
通常は、このメソッドを実装して、ポイントが形状の境界内にあるかどうかだけでなく、ポイントが形状のレンダリングされたプリミティブ内にあるどうかを確認する必要があります。このメソッドは必要なメトリックを使用して自在に実装できます。


self-intersects-polygon? (メソッド)
public {Chart.self-intersects-polygon?}:bool

ポリゴンがこの Shape と交差するかどうかを判定します。

polygon: この形状のローカル座標空間にポリゴンを記述するポイント セットを含むオブジェクト。このポリゴンは必ず凸型であり、反時計回りのワインディング順に従います。

説明

このメソッドは、ポイントではなく領域を処理する点を除けば、Shape.self-contains-point? とよく似ています。主に領域ベースの選択をサポートするために使用されますが、直接呼び出すこともできます。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。子を考慮する必要はありません。
通常は、このメソッドを実装して、領域が形状の境界内にあるかどうかだけでなく、領域が形状のレンダリングされたプリミティブと交差するかどうかを確認する必要があります。このメソッドは、必要なメトリックを使用して自在に実装できます。このメソッドの実装が Shape.self-contains-point? と調和しない場合は、このオブジェクトを選択すると予期しない結果になります。
選択機能を使用しない場合は、このメソッドを単純に false を返すように実装できます。


set-chart-size (メソッド)
public {Chart.set-chart-size width:Distance, height:Distance}:void

Chart のサイズを設定します。

width: グラフの合計の幅。詳細については、Chart.width を参照してください。
height: グラフの合計の高さ。詳細については、Chart.height を参照してください。

説明

これにより直接、Chart.width および Chart.height が設定され、これらの値に適合できるように、グラフのレイアウトは無効になります。
レイアウト処理が行われると、プロット エリアと余白の全体がここで指定した寸法に収まるように、グラフでプロット エリアの変更が試みられます。場合によっては、軸ラベルや目盛りラベルなどの要素がこの寸法を超えて拡張する場合があります。これは、ごく小さなプロット エリアをもつグラフ要素であってもそのすべてを収めるためのスペースが不足しているか、自動的ラベルの交互配置またはサイズ変更にセンシティブな他のパラメータが原因で、グラフで試みられた必要な余白の見積もりが不正確であったために起こる可能性があります。単純にすべての要素用のスペースが不足している場合は、グラフにさらにスペースを追加するか、一部の要素 (軸ラベルや凡例など) を削除できます。余白のスペースが不足している場合は、通常、直接余白を設定するのが一番簡単です (たとえば、Chart.left-margin を使用)。ただし、Chart.estimate-margins をオーバーライドして、見積もりアルゴリズムを拡大することもできます。
グラフの無効化は一括して行われることが多いので、レイアウト処理は即時に行われません。詳細については、Chart.invalidate-layout を参照してください。即時にレイアウト検証が必要な場合、Chart.ensure-layout-valid を使用できます。

注意事項

一方または両方の寸法を負の値に設定すれば、これらの寸法をコンテナのサイズに合わせることができます。これが有効となるのは、この ChartChartBox または ShapeBox に含まれている場合、あるいは Shape.constrain-shape-layout-bounds が他の環境下で呼び出される場合だけです。
ChartGraphic 階層に追加されると、それらは ChartBox の内部に暗黙的に配置されることに注意してください。両方の寸法の自動サイズ適合は、Chart の既定の動作であることにも注意してください。
Chart に十分なスペースがないことを検出するには、グラフの要素がそのコンテナの境界を越えるかどうかで判別できます。get-shape-bounds-in-shape-root を使用して Chart およびそのすべての子の境界を取得します。これは、CanvasShapeBox または ChartBox などの Graphic となる、形状ルートの座標系を基準とした境界です。
これらの境界を取得したら、それを形状ルートのグラフィック レイアウトの境界と比較して、これらの境界を越えるかどうかを確認します。Graphic.layout.get-bounds を使用して (形状ルートなどの) Graphic のレイアウト境界を取得できます。形状ルートへのポインタがない場合は、Shape.get-shape-root を使用して、ポインタを含む ShapeRootShape をクエリすることができます。


to-Graphic (メソッド)
public {Chart.to-Graphic}:Graphic

このオブジェクトに値する Graphic を返します。

説明

既定では、このメソッドはこの Chart を含む ChartBox を返します。
このメソッドは、Chart がグラフィカル階層に追加されると Curl レイアウト システムによって呼び出されます。通常、直接呼び出されません。


transformation-changed (メソッド)
public {Chart.transformation-changed}:void

Shape.transformation が変更されたことの通知。

オーバーライド

重要:このメソッドのオーバーライド実装にスーパークラス実装の呼び出しを含めて、オブジェクトの新しい領域を無効にする必要があります。


update-layout (メソッド)
protected abstract {Chart.update-layout}:void

Chart.plot-area-bounds に基づいてレイアウト操作を実行します。

説明

このメソッドは、Chart.ensure-layout-valid 内からのみ呼び出されます。Chart 実装では、このメソッドで軸の位置決めやサイズ決定など、実際のレイアウト処理が実行されます。また、実装はそれ自体とこのメソッド内の関連するグラフ オブジェクトで ChartLayoutChanged イベントを発生させます。