X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fgtk-chart.h;h=b9033db6d4ed7d13d621a92916e728c43da0e83a;hp=0c4d56e06704b6e953ccf24e5996ba1f8869e5d9;hb=cd13d9691c46c2b2d6d459e9e6a76bed1c21b7a6;hpb=27f6e3b112df235c8e9afc9911b1f6bce208a001 diff --git a/src/gtk-chart.h b/src/gtk-chart.h index 0c4d56e..b9033db 100644 --- a/src/gtk-chart.h +++ b/src/gtk-chart.h @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2014 Maxime DOYEN + * Copyright (C) 1995-2018 Maxime DOYEN * * This file is part of HomeBank. * @@ -20,11 +20,7 @@ #ifndef __GTK_CHART_H__ #define __GTK_CHART_H__ -#include -#include -#include -#include -#include +#include "gtk-chart-colors.h" G_BEGIN_DECLS #define GTK_TYPE_CHART (gtk_chart_get_type ()) @@ -52,31 +48,44 @@ typedef gchar (* GtkChartPrintDoubleFunc) (gdouble value, gboolean minor); /* default zoomx for charts */ -#define GTK_CHART_BARW 24 -#define GTK_CHART_MINBARW 8 -#define GTK_CHART_MAXBARW 64 -#define GTK_CHART_MINRADIUS 64 +#define GTK_CHART_BARW 41 //24 + +#define GTK_CHART_MINBARW 8 //4 +#define GTK_CHART_MAXBARW 41 //128 +#define GTK_CHART_SPANBARW GTK_CHART_MAXBARW+1 +#define GTK_CHART_MINRADIUS 64 #define CHART_BUFFER_LENGTH 128 -// for cairo pie -#define PIE_LINE_SLICE 0 -#define SOFT_LIGHT 0 -#define GRADIENT 0 -#define CHART_PIE_DONUT 1 + +// char draw options +#define CHART_PARAM_PIE_DONUT TRUE +#define CHART_PARAM_PIE_LINE FALSE +#define CHART_PARAM_PIE_MARK FALSE +#define CHART_PARAM_PIE_HOLEVALUE 0.5 + + /* new stuff */ -#define CHART_MARGIN 18 //standard a4 margin +#define CHART_MARGIN 12 //standard a4 margin is 18 #define CHART_SPACING 6 +#define CHART_LINE_SPACING 1.25 + //#define PROP_SHOW_MINOR 6 //#define PROP_SHOW_LEGEND 7 +#define ROUNDHALF(x) floor(x *2) / 2 + + + enum { + CHART_TYPE_NONE, CHART_TYPE_COL, + CHART_TYPE_PIE, CHART_TYPE_LINE, CHART_TYPE_MAX @@ -102,7 +111,7 @@ struct _ChartItem gdouble serie2; gdouble rate; - /* cairo part */ + /* draw stuffs */ gchar *legend; double angle2; /* rate for pie */ double height; /* for column */ @@ -118,15 +127,13 @@ struct _GtkChart /* all below should be in priv normally */ - GtkHBox hbox; + GtkBox hbox; GtkWidget *drawarea; GtkAdjustment *adjustment; GtkWidget *scrollbar; - GtkWidget *scrollwin; - GtkWidget *treeview; - GtkTreeModel *legend; + GtkTreeModel *model; /* data storage */ gint nb_items; @@ -136,33 +143,50 @@ struct _GtkChart gchar *subtitle; /* chart properties */ - gint type; + gint type; // column/pie/line + gboolean dual; gboolean abs; + gboolean show_legend; + gboolean show_legend_wide; gboolean show_over; gboolean show_xval; + gboolean show_mono; gint every_xval; - //guint32 kcur; + guint32 kcur; gboolean minor; gdouble minor_rate; gchar *minor_symbol; /* color datas */ - struct rgbcol *colors; - gint nb_cols; - gint cs_red, cs_green, cs_blue, cs_yellow; + GtkColorScheme color_scheme; + + /* cairo default value */ + PangoFontDescription *pfd; + gint pfd_size; /* buffer surface */ cairo_surface_t *surface; - /* draw area coordinates */ - double l, t, b, r, w, h; - /* our drawing rectangle with margin */ - double legend_w; + /* drawing datas */ + double font_h; + int l, t, b, r, w, h; + cairo_rectangle_t graph; + cairo_rectangle_t legend; + + /* legend dimension */ + double label_w; + double legend_font_h; + double legend_label_w; + double legend_value_w; + double legend_rate_w; /* zones height */ - double title_zh; + double title_zh; double subtitle_zh, subtitle_y; + double header_zh, header_y; + double item_zh; + double ox, oy; @@ -173,26 +197,30 @@ struct _GtkChart /* pie specifics */ gdouble total; - gint rayon, left, top; + gint rayon, mark, left, top; + gint leg_nb_l, leg_width_l, leg_vspace_l; + gint leg_nb_r, leg_width_r, leg_vspace_r; /* bar specifics */ double rawmin, rawmax, range, min, max, unit, minimum; gint div; gint visible; - double font_h; + double scale_x, scale_y, scale_w, scale_h; - double graph_x, graph_y, graph_width, graph_height; //graph dimension + double item_x, item_y, item_w; double barw, blkw, posbarh, negbarh; + double usrbarw; gchar buffer1[CHART_BUFFER_LENGTH]; gchar buffer2[CHART_BUFFER_LENGTH]; }; + struct _GtkChartClass { - GtkHBoxClass parent_class; + GtkBoxClass parent_class; /* Padding for future expansion */ void (*_gtk_reserved1) (void); @@ -211,15 +239,16 @@ void gtk_chart_set_color_scheme(GtkChart * chart, gint colorscheme); void gtk_chart_queue_redraw(GtkChart *chart); -void gtk_chart_set_datas(GtkChart *chart, GtkTreeModel *model, guint column, gchar *title); -void gtk_chart_set_dualdatas(GtkChart *chart, GtkTreeModel *model, guint column1, guint column2, gchar *title); +void gtk_chart_set_datas(GtkChart *chart, GtkTreeModel *model, guint column, gchar *title, gchar *subtitle); +void gtk_chart_set_dualdatas(GtkChart *chart, GtkTreeModel *model, guint column1, guint column2, gchar *title, gchar *subtitle); void gtk_chart_set_minor_prefs(GtkChart * chart, gdouble rate, gchar *symbol); -//void gtk_chart_set_currency(GtkChart * chart, guint32 kcur); +void gtk_chart_set_currency(GtkChart * chart, guint32 kcur); void gtk_chart_set_overdrawn(GtkChart * chart, gdouble minimum); -void gtk_chart_set_every_xval(GtkChart * chart, gint decay); +//void gtk_chart_set_every_xval(GtkChart * chart, gint decay); void gtk_chart_set_barw(GtkChart * chart, gdouble barw); +void gtk_chart_set_showmono(GtkChart * chart, gboolean mono); void gtk_chart_show_legend(GtkChart * chart, gboolean visible, gboolean showextracol); void gtk_chart_show_overdrawn(GtkChart * chart, gboolean visible);