OK In progress...
This commit is contained in:
parent
b14abc7ef6
commit
2d1f588393
|
@ -52,7 +52,10 @@ namespace CairoChart {
|
|||
public Cairo.Rectangle zoom = Cairo.Rectangle()
|
||||
{ x = 0, y = 0, width = 1, height = 1 };
|
||||
|
||||
public int zoom_first_show { get; protected set; default = 0; }
|
||||
/**
|
||||
* 1'st shown series index in zoom area.
|
||||
*/
|
||||
public int zoom_1st_idx { get; protected set; default = 0; }
|
||||
|
||||
public double title_width { get; protected set; default = 0.0; }
|
||||
public double title_height { get; protected set; default = 0.0; }
|
||||
|
@ -103,7 +106,7 @@ namespace CairoChart {
|
|||
chart.title_indent = this.title_indent;
|
||||
chart.title_width = this.title_width;
|
||||
chart.pos = this.pos;
|
||||
chart.zoom_first_show = this.zoom_first_show;
|
||||
chart.zoom_1st_idx = this.zoom_1st_idx;
|
||||
return chart;
|
||||
}
|
||||
|
||||
|
@ -241,10 +244,10 @@ namespace CairoChart {
|
|||
}
|
||||
}
|
||||
|
||||
zoom_first_show = 0;
|
||||
zoom_1st_idx = 0;
|
||||
for (var si = 0, max_i = series.length; si < max_i; ++si)
|
||||
if (series[si].zoom_show) {
|
||||
zoom_first_show = si;
|
||||
zoom_1st_idx = si;
|
||||
break;
|
||||
}
|
||||
var new_zoom = zoom;
|
||||
|
@ -270,7 +273,7 @@ namespace CairoChart {
|
|||
s.place.zoom_y_max = s.place.y_max;
|
||||
}
|
||||
zoom = Cairo.Rectangle() { x = 0, y = 0, width = 1, height = 1 };
|
||||
zoom_first_show = 0;
|
||||
zoom_1st_idx = 0;
|
||||
}
|
||||
public virtual void move (Point delta) {
|
||||
var d = delta;
|
||||
|
|
|
@ -283,7 +283,7 @@ namespace CairoChart {
|
|||
|
||||
// show joint X value
|
||||
if (chart.joint_x) {
|
||||
var s = chart.series[chart.zoom_first_show];
|
||||
var s = chart.series[chart.zoom_1st_idx];
|
||||
var x = s.get_real_x(chart.rel2scr_x(c.x));
|
||||
string text = "", time_text = "";
|
||||
switch (s.axis_x.type) {
|
||||
|
@ -341,7 +341,7 @@ namespace CairoChart {
|
|||
|
||||
// show joint Y value
|
||||
if (chart.joint_y) {
|
||||
var s = chart.series[chart.zoom_first_show];
|
||||
var s = chart.series[chart.zoom_1st_idx];
|
||||
var y = s.get_real_y(chart.rel2scr_y(c.y));
|
||||
var text_t = new Text(s.axis_y.format.printf((LongDouble)y, s.axis_y.font_style));
|
||||
var print_y = s.compact_rec_y_pos (y, text_t);
|
||||
|
@ -430,12 +430,12 @@ namespace CairoChart {
|
|||
if (chart.series.length == 0) return false;
|
||||
if (list.length() + (is_cursor_active ? 1 : 0) != 2) return false;
|
||||
if (chart.joint_x && cursor_style.orientation == Orientation.VERTICAL) {
|
||||
Float128 val1 = chart.series[chart.zoom_first_show].get_real_x(chart.rel2scr_x(list.nth_data(0).x));
|
||||
Float128 val1 = chart.series[chart.zoom_1st_idx].get_real_x(chart.rel2scr_x(list.nth_data(0).x));
|
||||
Float128 val2 = 0;
|
||||
if (is_cursor_active)
|
||||
val2 = chart.series[chart.zoom_first_show].get_real_x(chart.rel2scr_x(active_cursor.x));
|
||||
val2 = chart.series[chart.zoom_1st_idx].get_real_x(chart.rel2scr_x(active_cursor.x));
|
||||
else
|
||||
val2 = chart.series[chart.zoom_first_show].get_real_x(chart.rel2scr_x(list.nth_data(1).x));
|
||||
val2 = chart.series[chart.zoom_1st_idx].get_real_x(chart.rel2scr_x(list.nth_data(1).x));
|
||||
if (val2 > val1)
|
||||
delta = val2 - val1;
|
||||
else
|
||||
|
@ -443,12 +443,12 @@ namespace CairoChart {
|
|||
return true;
|
||||
}
|
||||
if (chart.joint_y && cursor_style.orientation == Orientation.HORIZONTAL) {
|
||||
Float128 val1 = chart.series[chart.zoom_first_show].get_real_y(chart.rel2scr_y(list.nth_data(0).y));
|
||||
Float128 val1 = chart.series[chart.zoom_1st_idx].get_real_y(chart.rel2scr_y(list.nth_data(0).y));
|
||||
Float128 val2 = 0;
|
||||
if (is_cursor_active)
|
||||
val2 = chart.series[chart.zoom_first_show].get_real_y(chart.rel2scr_y(active_cursor.y));
|
||||
val2 = chart.series[chart.zoom_1st_idx].get_real_y(chart.rel2scr_y(active_cursor.y));
|
||||
else
|
||||
val2 = chart.series[chart.zoom_first_show].get_real_y(chart.rel2scr_y(list.nth_data(1).y));
|
||||
val2 = chart.series[chart.zoom_1st_idx].get_real_y(chart.rel2scr_y(list.nth_data(1).y));
|
||||
if (val2 > val1)
|
||||
delta = val2 - val1;
|
||||
else
|
||||
|
@ -462,7 +462,7 @@ namespace CairoChart {
|
|||
Float128 delta = 0.0;
|
||||
if (!get_cursors_delta(chart, out delta)) return "";
|
||||
var str = "";
|
||||
var s = chart.series[chart.zoom_first_show];
|
||||
var s = chart.series[chart.zoom_1st_idx];
|
||||
if (chart.joint_x)
|
||||
switch (s.axis_x.type) {
|
||||
case Axis.Type.NUMBERS:
|
||||
|
|
|
@ -131,7 +131,7 @@ namespace CairoChart {
|
|||
s.join_relative_y_axes (si, true, ref max_rec_width, ref max_rec_height, ref max_font_indent, ref max_axis_font_width, ref nskip);
|
||||
|
||||
// for 4.2. Cursor values for joint X axis
|
||||
if (si == chart.zoom_first_show && chart.cursors.cursors_crossings.length != 0) {
|
||||
if (si == chart.zoom_1st_idx && chart.cursors.cursors_crossings.length != 0) {
|
||||
switch (chart.cursors.cursor_style.orientation) {
|
||||
case Cursors.Orientation.VERTICAL:
|
||||
if (is_x && chart.joint_x)
|
||||
|
@ -149,12 +149,12 @@ namespace CairoChart {
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (is_x && (!chart.joint_x || si == chart.zoom_first_show))
|
||||
if (is_x && (!chart.joint_x || si == chart.zoom_1st_idx))
|
||||
switch (axis.position) {
|
||||
case Axis.Position.LOW: chart.plot_y_max -= max_rec_height + max_font_indent + max_axis_font_height; break;
|
||||
case Axis.Position.HIGH: chart.plot_y_min += max_rec_height + max_font_indent + max_axis_font_height; break;
|
||||
}
|
||||
if (!is_x && (!chart.joint_y || si == chart.zoom_first_show))
|
||||
if (!is_x && (!chart.joint_y || si == chart.zoom_1st_idx))
|
||||
switch (s.axis_y.position) {
|
||||
case Axis.Position.LOW: chart.plot_x_min += max_rec_width + max_font_indent + max_axis_font_width; break;
|
||||
case Axis.Position.HIGH: chart.plot_x_max -= max_rec_width + max_font_indent + max_axis_font_width; break;
|
||||
|
@ -319,7 +319,7 @@ namespace CairoChart {
|
|||
public virtual void draw_horizontal_axis (int si, ref int nskip) {
|
||||
var s = chart.series[si];
|
||||
if (!s.zoom_show) return;
|
||||
if (chart.joint_x && si != chart.zoom_first_show) return;
|
||||
if (chart.joint_x && si != chart.zoom_1st_idx) return;
|
||||
|
||||
// 1. Detect max record width/height by axis.nrecords equally selected points using format.
|
||||
double max_rec_width, max_rec_height;
|
||||
|
@ -444,7 +444,7 @@ namespace CairoChart {
|
|||
public virtual void draw_vertical_axis (int si, ref int nskip) {
|
||||
var s = chart.series[si];
|
||||
if (!s.zoom_show) return;
|
||||
if (chart.joint_y && si != chart.zoom_first_show) return;
|
||||
if (chart.joint_y && si != chart.zoom_1st_idx) return;
|
||||
// 1. Detect max record width/height by axis.nrecords equally selected points using format.
|
||||
double max_rec_width, max_rec_height;
|
||||
s.axis_y.calc_rec_sizes (chart, out max_rec_width, out max_rec_height, false);
|
||||
|
|
Loading…
Reference in New Issue