]> Dogcows Code - chaz/homebank/blobdiff - src/gtk-chart.h
import homebank-5.1.7
[chaz/homebank] / src / gtk-chart.h
index 0c4d56e06704b6e953ccf24e5996ba1f8869e5d9..b9033db6d4ed7d13d621a92916e728c43da0e83a 100644 (file)
@@ -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.
  *
 #ifndef __GTK_CHART_H__
 #define __GTK_CHART_H__
 
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-#include <cairo.h>
-#include <math.h>
+#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);
This page took 0.022844 seconds and 4 git commands to generate.