blob: 16def7a45ba563488cf6e14874a983735a4a3b65 [file] [log] [blame]
Chris Wilsonb98bade2013-08-20 21:39:27 +01001/*
2 * Copyright © 2013 Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
22 *
23 */
24
25#ifndef CHART_H
26#define CHART_H
27
Chris Wilsonf9a50de2013-08-17 11:12:07 +010028struct chart {
29 const char *name;
30 int x, y, w, h;
31 int num_samples;
32 int current_sample;
33 int range_automatic;
Chris Wilson06c0cc02013-08-17 12:32:17 +010034 enum chart_mode {
35 CHART_STROKE = 0,
36 CHART_FILL,
37 CHART_FILL_STROKE,
38 } mode;
Chris Wilson1391ae02013-08-18 19:16:29 +010039 enum chart_smooth {
40 CHART_LINE = 0,
41 CHART_CURVE,
42 } smooth;
Chris Wilsoncc9de392013-08-17 20:32:58 +010043 float fill_rgb[4];
44 float stroke_rgb[4];
45 double stroke_width;
Chris Wilsonf9a50de2013-08-17 11:12:07 +010046 double range[2];
47 double *samples;
48};
49
50int chart_init(struct chart *chart, const char *name, int num_samples);
Chris Wilson06c0cc02013-08-17 12:32:17 +010051void chart_set_mode(struct chart *chart, enum chart_mode mode);
Chris Wilson1391ae02013-08-18 19:16:29 +010052void chart_set_smooth(struct chart *chart, enum chart_smooth smooth);
Chris Wilson06c0cc02013-08-17 12:32:17 +010053void chart_set_fill_rgba(struct chart *chart, float red, float green, float blue, float alpha);
Chris Wilsoncc9de392013-08-17 20:32:58 +010054void chart_set_stroke_width(struct chart *chart, float width);
Chris Wilson06c0cc02013-08-17 12:32:17 +010055void chart_set_stroke_rgba(struct chart *chart, float red, float green, float blue, float alpha);
Chris Wilsonf9a50de2013-08-17 11:12:07 +010056void chart_set_position(struct chart *chart, int x, int y);
57void chart_set_size(struct chart *chart, int w, int h);
58void chart_set_range(struct chart *chart, double min, double max);
59void chart_add_sample(struct chart *chart, double value);
60void chart_draw(struct chart *chart, cairo_t *cr);
Chris Wilsoncc9de392013-08-17 20:32:58 +010061void chart_fini(struct chart *chart);
62
63void chart_get_range(struct chart *chart, double *range);
Chris Wilsonb98bade2013-08-20 21:39:27 +010064
65#endif /* CHART_H */