/* HomeBank -- Free, easy, personal accounting for everyone.
- * Copyright (C) 1995-2018 Maxime DOYEN
+ * Copyright (C) 1995-2019 Maxime DOYEN
*
* This file is part of HomeBank.
*
#include "gtk-chart-colors.h"
#include "gtk-chart.h"
+
#define MYDEBUG 0
}
}
+ /* average */
+ if( chart->show_average )
+ {
+ if( chart->average < 0 )
+ {
+ y = 0.5 + chart->oy + (ABS(chart->average)/chart->range) * chart->graph.height;
+ }
+ else
+ {
+ y = 0.5 + chart->oy - (ABS(chart->average)/chart->range) * chart->graph.height;
+ }
+
+ DB( g_print(" draw average: x%d, y%f, w%d\n", chart->l, y, chart->w) );
+
+ cairo_user_set_rgbacol(cr, &global_colors[THTEXT], 1.0);
+ cairo_set_line_width(cr, 1.0);
+ cairo_set_dash (cr, dashed3, 1, 0);
+ cairo_move_to(cr, chart->graph.x, y);
+ cairo_line_to (cr, chart->graph.x + chart->graph.width, y);
+ cairo_stroke(cr);
+ }
+
g_object_unref (layout);
cairo_destroy(cr);
}
x += chart->blkw;
}
-/* overdrawn */
+ /* average */
+
+ if( chart->show_average )
+ {
+ if( chart->average < 0 )
+ {
+ y = 0.5 + chart->oy + (ABS(chart->average)/chart->range) * chart->graph.height;
+ }
+ else
+ {
+ y = 0.5 + chart->oy - (ABS(chart->average)/chart->range) * chart->graph.height;
+ }
- DB( g_print(" min=%.2f range=%.2f\n", chart->min, chart->range) );
+ y2 = (ABS(chart->min)/chart->range) * chart->graph.height - (y - chart->oy) + 1;
+
+ DB( g_print(" draw average: x%d, y%f, w%d, h%f\n", chart->l, y, chart->w, y2) );
+ cairo_user_set_rgbacol(cr, &global_colors[THTEXT], 1.0);
+ cairo_set_line_width(cr, 1.0);
+ cairo_set_dash (cr, dashed3, 1, 0);
+ cairo_move_to(cr, chart->graph.x, y);
+ cairo_line_to (cr, chart->graph.x + chart->graph.width, y);
+ cairo_stroke(cr);
+ }
+
+
+
+ /* overdrawn */
+ DB( g_print(" min=%.2f range=%.2f\n", chart->min, chart->range) );
if( chart->show_over )
{
GtkChart *chart = GTK_CHART(user_data);
cairo_t *cr;
- if(chart->nb_items <= 0)
+ if(chart->nb_items <= 0 || chart->total == 0.0)
return;
DB( g_print("\n[pie] draw slices\n") );
//cr = cairo_create (chart->surface);
DB( g_print("rayon=%d\n", chart->rayon) );
+ DB( g_print("total=%.f\n", chart->total) );
for(i=0; i< chart->nb_items ;i++)
{
dx = cx;
dy = cy;
+ DB( g_print("- s%2d: %.2f%% a1=%.2f a2=%.2f | %s %.f\n", i, sum / chart->total, a1, a2, item->label, item->serie1) );
+
+
cairo_move_to(cr, dx, dy);
cairo_arc(cr, dx, dy, radius, a1, a2);
cairo_stroke_preserve(cr);
#endif
- DB( g_print("- s%2d: %.2f%% a1=%.2f a2=%.2f\n", i, sum / chart->total, a1, a2) );
-
//g_print("color : %f %f %f\n", COLTOCAIRO(colors[i].r), COLTOCAIRO(colors[i].g), COLTOCAIRO(colors[i].b));
color = i % chart->color_scheme.nb_cols;
// chart_recompute(chart);
}
+
+void gtk_chart_show_average(GtkChart * chart, gdouble value, gboolean visible)
+{
+ g_return_if_fail (GTK_IS_CHART (chart));
+
+ DB( g_print("\n[gtkchart] set show average %f\n", value) );
+
+ chart->average = value;
+ chart->show_average = visible;
+
+ //if(chart->type == CHART_TYPE_LINE)
+ // chart_recompute(chart);
+}
+
+
+
/*
** chnage the overdrawn visibility
*/