Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: charted/lib/charts/chart_area.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 //
2 // Copyright 2014 Google Inc. All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 //
8
9 part of charted.charts;
10
11 ///
12 /// Area for rendering cartesian charts. A cartesian chart creates
13 /// visualization by carefully placing elements along the dimension
14 /// and measure axes (in a 2 dimensional plane).
15 ///
16 /// Some renderers may use additional dimensions that is made visible
17 /// by size and color of the rendered elements.
18 ///
19 /// For example:
20 /// - A bar-chart draws bars indicating a value along measure axis.
21 /// - A bubble-chart where a circle is positioned across two dimension
22 /// axes. A bubble-chart may also use color and size of circles to
23 /// indicate more dimensions.
24 ///
25 /// In a [CartesianArea], more than one series can be rendered together.
26 ///
27 abstract class CartesianArea implements ChartArea {
28 /// When set to true, [ChartArea] uses both 'x' and 'y' axes for dimensions.
29 /// Examples:
30 /// - A bar-chart has one dimension axis (typically the 'x' axis)
31 /// - A bubble-chart has two dimension axis (both 'x' and 'y')
32 bool get useTwoDimensionAxes;
33
34 /// Scales used to render the measure axis of the given [ChartSeries]. Each
35 /// series may use more than one measure scale.
36 ///
37 /// For example, a scatter plot may use different scales for color, shape
38 /// and size of the rendering.
39 Iterable<Scale> measureScales(ChartSeries s);
40
41 /// Scales used to render the dimension axes. The number of scales returned
42 /// is either one or two based on [useTwoDimensions]
43 Iterable<Scale> get dimensionScales;
44
45 /// List of dimensions using a band of space on the axis
46 Iterable<int> get dimensionsUsingBands;
47
48 /// Stream to notify when chart axes get updated.
49 Stream<ChartArea> get onChartAxesUpdated;
50
51 /// Factory method to create an instance of the default implementation
52 /// - [host] must be an Element that has clientHeight and clientWidth
53 /// properties defined (i.e cannot be inline elements)
54 /// - [data] is an instance of [ChartData]
55 /// - [config] is an implementation of [ChartConfig]
56 /// - If [autoUpdate] is set, chart is updated when data or config
57 /// change. When not set, [draw] must be called to update the chart.
58 /// - When [useTwoDimensionAxes] is set, the chart uses both 'x' and 'y'
59 /// axes as dimensions.
60 factory CartesianArea(
61 dynamic host,
62 ChartData data,
63 ChartConfig config, {
64 bool autoUpdate: false,
65 bool useTwoDimensionAxes: false,
66 bool useRowColoring: false,
67 ChartState state }) =>
68 new DefaultCartesianAreaImpl(host, data, config, autoUpdate,
69 useTwoDimensionAxes, useRowColoring, state);
70 }
71
72 ///
73 /// Area for rendering layout charts. A layout chart creates visualization by
74 /// distributing available space to each measure.
75 ///
76 /// For example:
77 /// - A pie-chart distributes a radial area to each measure.
78 /// - In a tree-map a rectangular area is distributed to each measure.
79 ///
80 /// In a [LayoutArea], only one series can be rendered and the area does
81 /// not have any scales and axes.
82 ///
83 abstract class LayoutArea implements ChartArea {
84 /// Layout area always uses row coloring.
85 bool get useRowColoring => true;
86
87 factory LayoutArea(
88 dynamic host,
89 ChartData data,
90 ChartConfig config, {
91 bool autoUpdate: false,
92 ChartState state }) =>
93 new DefaultLayoutAreaImpl(host, data, config, autoUpdate, state);
94 }
95
96 ///
97 /// Base interface for all implementations of a chart drawing area.
98 ///
99 abstract class ChartArea implements ChartAreaBehaviorSource {
100 /// Data used by the chart. Chart isn't updated till the next call to
101 /// draw function if [autoUpdate] is set to false.
102 ///
103 /// Setting new value to [data] will update chart if [autoUpdate] is set.
104 ChartData data;
105
106 /// Configuration for this chart. [ChartArea] subscribes to changes on
107 /// [config] and calls draw upon any changes.
108 ///
109 /// Refer to [ChartConfig] for further documentation about which changes
110 /// are added to the stream, which in turn trigger an update on the chart.
111 ChartConfig config;
112
113 /// Theme for this chart. Any changes to [theme] are not applied to the chart
114 /// until it is redrawn. Changes can be forced by calling [draw] function.
115 ChartTheme theme;
116
117 /// When set to true, [ChartArea] subscribes to changes on data and updates
118 /// the chart when [data] or [config] changes. Defaults to false.
119 bool autoUpdate;
120
121 /// Geometry of components in this [ChartArea]
122 ChartAreaLayout get layout;
123
124 /// Host element of the ChartArea
125 Element get host;
126
127 /// True when all components of the chart have been updated - either already
128 /// drawn or are in the process of transitioning in.
129 bool get isReady;
130
131 /// When true, [ChartArea] and renderers that support coloring by row,
132 /// use row indices and values to color the chart. Defaults to false.
133 bool get useRowColoring;
134
135 /// State of the chart - selection and highlights.
136 ChartState get state;
137
138 /// Draw the chart with current data and configuration.
139 /// - If [preRender] is set, [ChartArea] attempts to build all non data
140 /// dependant elements of the chart.
141 /// - When [schedulePostRender] is not null, non-essential elements/tasks
142 /// of chart building are postponed until the future is resolved.
143 void draw({bool preRender: false, Future schedulePostRender});
144
145 /// Force destroy the ChartArea.
146 /// - Clear references to all passed objects and subscriptions.
147 /// - Call dispose on all renderers and behaviors.
148 void dispose();
149 }
150
151 ///
152 /// Class representing geometry of the [ChartArea] and various components
153 /// that are created by the ChartArea.
154 ///
155 abstract class ChartAreaLayout {
156 /// Sizes of axes by orientation.
157 /// Only valid on [CartesianArea], null otherwise.
158 Map<String, Rect> get axes;
159
160 /// Size of render area.
161 Rect get renderArea => new Rect();
162
163 /// Size of chart area.
164 Rect get chartArea => new Rect();
165 }
OLDNEW
« no previous file with comments | « charted/lib/charts/cartesian_renderers/stackedbar_chart_renderer.dart ('k') | charted/lib/charts/chart_config.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698