2018-01-10 11:32:51 +03:00
|
|
|
namespace CairoChart {
|
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* {@link Series} Marker.
|
|
|
|
*/
|
2018-01-10 11:32:51 +03:00
|
|
|
public class Marker {
|
|
|
|
|
2018-01-22 09:04:26 +03:00
|
|
|
Chart chart;
|
2018-01-21 15:41:04 +03:00
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* ``Marker`` shape.
|
|
|
|
*/
|
2018-01-22 12:56:17 +03:00
|
|
|
public enum Shape {
|
2018-01-21 15:36:08 +03:00
|
|
|
NONE = 0,
|
2018-01-10 12:58:35 +03:00
|
|
|
SQUARE,
|
|
|
|
CIRCLE,
|
|
|
|
TRIANGLE,
|
|
|
|
PRICLE_SQUARE,
|
|
|
|
PRICLE_CIRCLE,
|
|
|
|
PRICLE_TRIANGLE
|
|
|
|
}
|
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* ``Marker`` shape.
|
|
|
|
*/
|
2018-01-22 13:39:26 +03:00
|
|
|
public Shape shape;
|
2018-01-21 15:36:08 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* ``Marker`` size.
|
|
|
|
*/
|
2018-01-22 09:04:26 +03:00
|
|
|
public double size;
|
2018-01-10 12:58:35 +03:00
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* Constructs a new ``Marker``.
|
2018-01-22 13:11:57 +03:00
|
|
|
* @param chart ``Chart`` instance.
|
2018-01-22 13:39:26 +03:00
|
|
|
* @param shape ``Marker`` shape.
|
2018-01-21 15:36:08 +03:00
|
|
|
* @param size ``Marker`` size.
|
|
|
|
*/
|
2018-01-21 15:41:04 +03:00
|
|
|
public Marker (Chart chart,
|
2018-01-22 13:39:26 +03:00
|
|
|
Shape shape = Shape.NONE,
|
2018-01-19 20:34:08 +03:00
|
|
|
double size = 8.0
|
|
|
|
) {
|
2018-01-21 15:41:04 +03:00
|
|
|
this.chart = chart;
|
2018-01-22 13:39:26 +03:00
|
|
|
this.shape = shape;
|
2018-01-10 12:58:35 +03:00
|
|
|
this.size = size;
|
|
|
|
}
|
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* Gets a copy of the ``Marker``.
|
|
|
|
*/
|
2018-01-15 12:05:21 +03:00
|
|
|
public virtual Marker copy () {
|
2018-01-22 13:39:26 +03:00
|
|
|
return new Marker (chart, shape, size);
|
2018-01-10 12:58:35 +03:00
|
|
|
}
|
|
|
|
|
2018-01-21 15:36:08 +03:00
|
|
|
/**
|
|
|
|
* Draws the ``Marker`` at specific position.
|
2018-01-22 13:10:27 +03:00
|
|
|
* @param p coordinates.
|
2018-01-21 15:36:08 +03:00
|
|
|
*/
|
2018-01-22 13:10:27 +03:00
|
|
|
public virtual void draw_at_pos (Point p) {
|
|
|
|
chart.ctx.move_to (p.x, p.y);
|
2018-01-22 13:39:26 +03:00
|
|
|
switch (shape) {
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.SQUARE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.rectangle (p.x - size / 2, p.y - size / 2, size, size);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.fill();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.CIRCLE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.arc (p.x, p.y, size / 2, 0, 2 * GLib.Math.PI);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.fill();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.TRIANGLE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.move_to (p.x - size / 2, p.y - size / 2);
|
2018-01-22 08:55:59 +03:00
|
|
|
chart.ctx.rel_line_to (size, 0);
|
|
|
|
chart.ctx.rel_line_to (-size / 2, size);
|
|
|
|
chart.ctx.rel_line_to (-size / 2, -size);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.fill();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.PRICLE_SQUARE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.rectangle (p.x - size / 2, p.y - size / 2, size, size);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.stroke();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.PRICLE_CIRCLE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.arc (p.x, p.y, size / 2, 0, 2 * GLib.Math.PI);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.stroke();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
|
2018-01-22 12:56:17 +03:00
|
|
|
case Shape.PRICLE_TRIANGLE:
|
2018-01-22 13:10:27 +03:00
|
|
|
chart.ctx.move_to (p.x - size / 2, p.y - size / 2);
|
2018-01-22 08:57:36 +03:00
|
|
|
chart.ctx.rel_line_to (size, 0);
|
|
|
|
chart.ctx.rel_line_to (-size / 2, size);
|
|
|
|
chart.ctx.rel_line_to (-size / 2, -size);
|
2018-01-17 10:36:10 +03:00
|
|
|
chart.ctx.stroke();
|
2018-01-10 11:32:51 +03:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|