Merge branch '#134_float128.vapi' into develop

This commit is contained in:
Kolan Sh 2017-08-19 00:09:43 +03:00
commit 10e5a906b6
10 changed files with 45 additions and 32 deletions

View File

@ -7,5 +7,12 @@ SET (LibExtraSources ${CMAKE_CURRENT_BINARY_DIR}/library_constructor.c)
SET (LC_RELATIVE_PREFIX "..")
CONFIGURE_FILE ( "${CMAKE_SOURCE_DIR}/cmake/backbone/templates/library_constructor.c.in" "${LibExtraSources}")
INCLUDE_DIRECTORIES ("${CMAKE_SOURCE_DIR}/src")
SET (LibCustomVapis ${CMAKE_SOURCE_DIR}/src/float128type.vapi)
SET (LibCustomVapis ${CMAKE_SOURCE_DIR}/src/cairo-chart-float128type.vapi)
INCLUDE (ValaLibCommonRules)
INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/cairo-chart-float128type.h DESTINATION include
RENAME cairo-chart-float128type-${MAJOR}.h)
INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/cairo-chart-float128type.vapi DESTINATION share/vala/vapi
RENAME cairo-chart-float128type-${MAJOR}.vapi)
CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/cairo-chart.deps.in
${CMAKE_CURRENT_BINARY_DIR}/cairo-chart-${MAJOR}.deps)
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/cairo-chart-${MAJOR}.deps DESTINATION share/vala/vapi)

View File

@ -43,8 +43,8 @@ namespace Gtk.CairoChart {
bg_color = Color (1, 1, 1);
}
protected Double128 cur_x_min = 0.0;
protected Double128 cur_x_max = 0.0;
protected Float128 cur_x_min = 0.0;
protected Float128 cur_x_max = 0.0;
protected double cur_y_min = 0.0;
protected double cur_y_max = 0.0;
@ -402,10 +402,10 @@ namespace Gtk.CairoChart {
protected virtual void calc_axis_rec_sizes (Series.Axis axis, out double max_rec_width, out double max_rec_height, bool is_horizontal = true) {
max_rec_width = max_rec_height = 0;
for (var i = 0; i < axis_rec_npoints; ++i) {
Double128 x = axis.min + (axis.max - axis.min) / axis_rec_npoints * i;
Float128 x = axis.min + (axis.max - axis.min) / axis_rec_npoints * i;
switch (axis.type) {
case Series.Axis.Type.NUMBERS:
var text = new Text (axis.format.printf(x) + (is_horizontal ? "_" : ""));
var text = new Text (axis.format.printf((LongDouble)x) + (is_horizontal ? "_" : ""));
text.style = axis.font_style;
max_rec_width = double.max (max_rec_width, text.get_width(context));
max_rec_height = double.max (max_rec_height, text.get_height(context));
@ -435,8 +435,8 @@ namespace Gtk.CairoChart {
}
}
protected virtual Double128 calc_round_step (Double128 aver_step, bool date_time = false) {
Double128 step = 1.0;
protected virtual Float128 calc_round_step (Float128 aver_step, bool date_time = false) {
Float128 step = 1.0;
if (aver_step > 1.0) {
if (date_time) while (step < aver_step) step *= 60;
@ -463,7 +463,7 @@ namespace Gtk.CairoChart {
bool common_x_axes = false;
bool common_y_axes = false;
bool are_intersect (Double128 a_min, Double128 a_max, Double128 b_min, Double128 b_max) {
bool are_intersect (Float128 a_min, Float128 a_max, Float128 b_min, Float128 b_max) {
if ( a_min < a_max <= b_min < b_max
|| b_min < b_max <= a_min < a_max)
return false;
@ -594,8 +594,8 @@ namespace Gtk.CairoChart {
}
}
bool point_belong (Double128 p, Double128 a, Double128 b) {
if (a > b) { Double128 tmp = a; a = b; b = tmp; }
bool point_belong (Float128 p, Float128 a, Float128 b) {
if (a > b) { Float128 tmp = a; a = b; b = tmp; }
if (a <= p <= b) return true;
return false;
}
@ -612,12 +612,12 @@ namespace Gtk.CairoChart {
long max_nrecs = (long) ((plot_area_x_max - plot_area_x_min) * (s.place.x_high - s.place.x_low) / max_rec_width);
// 3. Calculate grid step.
Double128 step = calc_round_step ((s.axis_x.max - s.axis_x.min) / max_nrecs, s.axis_x.type == Series.Axis.Type.DATE_TIME);
Float128 step = calc_round_step ((s.axis_x.max - s.axis_x.min) / max_nrecs, s.axis_x.type == Series.Axis.Type.DATE_TIME);
if (step > s.axis_x.max - s.axis_x.min)
step = s.axis_x.max - s.axis_x.min;
// 4. Calculate x_min (s.axis_x.min / step, round, multiply on step, add step if < s.axis_x.min).
Double128 x_min = 0.0;
Float128 x_min = 0.0;
if (step >= 1) {
int64 x_min_nsteps = (int64) (s.axis_x.min / step);
x_min = x_min_nsteps * step;
@ -652,18 +652,19 @@ namespace Gtk.CairoChart {
}
// 5. Draw records, update cur_{x,y}_{min,max}.
for (Double128 x = x_min, x_max = s.axis_x.max; point_belong (x, x_min, x_max); x += step) {
for (Float128 x = x_min, x_max = s.axis_x.max; point_belong (x, x_min, x_max); x += step) {
if (common_x_axes) set_source_rgba(Color(0,0,0,1));
else set_source_rgba(s.axis_x.color);
string text = "", time_text = "";
switch (s.axis_x.type) {
case Series.Axis.Type.NUMBERS:
text = s.axis_x.format.printf(x);
text = s.axis_x.format.printf((LongDouble)x);
break;
case Series.Axis.Type.DATE_TIME:
var dt = new DateTime.from_unix_utc((int64)x);
text = dt.format(s.axis_x.date_format);
var dsec_str = ("%."+(s.axis_x.dsec_signs.to_string())+"Lf").printf((x - (int64)x)).offset(1);
var dsec_str =
("%."+(s.axis_x.dsec_signs.to_string())+"Lf").printf((LongDouble)(x - (int64)x)).offset(1);
time_text = dt.format(s.axis_x.time_format) + dsec_str;
break;
default:
@ -799,12 +800,12 @@ namespace Gtk.CairoChart {
long max_nrecs = (long) ((plot_area_y_max - plot_area_y_min) * (s.place.y_high - s.place.y_low) / max_rec_height);
// 3. Calculate grid step.
Double128 step = calc_round_step ((s.axis_y.max - s.axis_y.min) / max_nrecs);
Float128 step = calc_round_step ((s.axis_y.max - s.axis_y.min) / max_nrecs);
if (step > s.axis_y.max - s.axis_y.min)
step = s.axis_y.max - s.axis_y.min;
// 4. Calculate y_min (s.axis_y.min / step, round, multiply on step, add step if < s.axis_y.min).
Double128 y_min = 0.0;
Float128 y_min = 0.0;
if (step >= 1) {
int64 y_min_nsteps = (int64) (s.axis_y.min / step);
y_min = y_min_nsteps * step;
@ -839,10 +840,10 @@ namespace Gtk.CairoChart {
}
// 5. Draw records, update cur_{x,y}_{min,max}.
for (Double128 y = y_min, y_max = s.axis_y.max; point_belong (y, y_min, y_max); y += step) {
for (Float128 y = y_min, y_max = s.axis_y.max; point_belong (y, y_min, y_max); y += step) {
if (common_y_axes) set_source_rgba(Color(0,0,0,1));
else set_source_rgba(s.axis_y.color);
var text = s.axis_y.format.printf(y);
var text = s.axis_y.format.printf((LongDouble)y);
var scr_y = plot_area_y_max - (plot_area_y_max - plot_area_y_min)
* (s.place.y_low + (s.place.y_high - s.place.y_low) / (s.axis_y.max - s.axis_y.min) * (y - s.axis_y.min));
var text_t = new Text(text, s.axis_y.font_style, s.axis_y.color);
@ -936,12 +937,12 @@ namespace Gtk.CairoChart {
context.stroke ();
}
protected virtual double get_scr_x (Series s, Double128 x) {
protected virtual double get_scr_x (Series s, Float128 x) {
return plot_area_x_min + (plot_area_x_max - plot_area_x_min) * (s.place.x_low + (x - s.axis_x.min)
/ (s.axis_x.max - s.axis_x.min) * (s.place.x_high - s.place.x_low));
}
protected virtual double get_scr_y (Series s, Double128 y) {
protected virtual double get_scr_y (Series s, Float128 y) {
return plot_area_y_max - (plot_area_y_max - plot_area_y_min) * (s.place.y_low + (y - s.axis_y.min)
/ (s.axis_y.max - s.axis_y.min) * (s.place.y_high - s.place.y_low));
}

View File

@ -5,10 +5,10 @@ namespace Gtk.CairoChart {
public class Series {
public struct Point {
Double128 x;
Double128 y;
Float128 x;
Float128 y;
public Point (Double128 x, Double128 y) {
public Point (Float128 x, Float128 y) {
this.x = x; this.y = y;
}
}
@ -25,8 +25,8 @@ namespace Gtk.CairoChart {
// then draw separate axis for each/all series
// or specify series name near the axis
public class Axis {
public Double128 min = 0;
public Double128 max = 1;
public Float128 min = 0;
public Float128 max = 1;
public Text title = new Text ("");
public enum Type {
NUMBERS = 0,
@ -137,7 +137,7 @@ namespace Gtk.CairoChart {
public Grid grid = new Grid ();
public GLib.List<Double128?> cursors = new List<Double128?> ();
public GLib.List<Float128?> cursors = new List<Float128?> ();
public LineStyle line_style = new LineStyle ();
protected Color _color = Color (0.0, 0.0, 0.0, 1.0);

View File

@ -0,0 +1,2 @@
typedef __float128 cairo_chart_float128;
typedef long double cairo_chart_long_double;

View File

@ -0,0 +1,6 @@
namespace Gtk.CairoChart {
[CCode (cname = "cairo_chart_float128", has_type_id = false, cheader_filename = "cairo-chart-float128type.h")]
public struct Float128 : double {}
[CCode (cname = "cairo_chart_long_double", has_type_id = false, cheader_filename = "cairo-chart-float128type.h")]
public struct LongDouble : double {}
}

1
src/cairo-chart.deps.in Normal file
View File

@ -0,0 +1 @@
cairo-chart-float128type-@MAJOR@

View File

@ -1 +0,0 @@
typedef long double double128;

View File

@ -1,2 +0,0 @@
[CCode (cname = "double128", has_type_id = false, cheader_filename = "float128type.h")]
public struct Double128 : double {}

View File

@ -1,7 +1,7 @@
SET (BinName chart_test)
FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ChartTest.vala)
SET (BinPackages gtk+-3.0)
SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi ${CMAKE_SOURCE_DIR}/src/float128type.vapi)
SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi ${CMAKE_SOURCE_DIR}/src/cairo-chart-float128type.vapi)
SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME})
INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src;${CMAKE_SOURCE_DIR}/src")
INCLUDE (ValaBinCommonRules)

View File

@ -379,7 +379,6 @@ int main (string[] args) {
window.show_all();
Double128 d = 5.5;
Gtk.main();
return 0;
}