--- /dev/null
+/* HomeBank -- Free, easy, personal accounting for everyone.
+ * Copyright (C) 1995-2012 Maxime DOYEN
+ *
+ * This file is part of HomeBank.
+ *
+ * HomeBank is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * HomeBank is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __CHARTSTACK_H__
+#define __CHARTSTACK_H__
+
+#include "gtk-chart-colors.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer.
+ * Macros for testing whether `widget' or `klass' are of type GTK_TYPE_WIDGET.
+ */
+#define GTK_TYPE_CHARTSTACK (ui_chart_stack_get_type ())
+#define GTK_CHARTSTACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CHARTSTACK, ChartStack))
+#define GTK_CHARTSTACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CHARTSTACK, ChartStackClass)
+#define GTK_IS_CHARTSTACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CHARTSTACK))
+#define GTK_IS_CHARTSTACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CHARTSTACK))
+#define GTK_CHARTSTACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CHARTSTACK, ChartStackClass))
+
+typedef struct _ChartStack ChartStack;
+typedef struct _ChartStackClass ChartStackClass;
+
+typedef struct _StackItem StackItem;
+
+typedef gchar (* ChartStackPrintIntFunc) (gint value, gboolean minor);
+typedef gchar (* ChartStackPrintDoubleFunc) (gdouble value, gboolean minor);
+
+/* = = = = = = = = = = */
+/* = = = = = = = = = = = = = = = = = = = = */
+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
+
+#define GTK_CHARTSTACK_BARW 32
+#define CHART_BUFFER_LENGTH 128
+
+
+#define DEFAULT_DELAY 500 /* Default delay in ms */
+
+
+#define CHART_MARGIN 18 //standard a4 margin
+#define CHART_SPACING 6
+
+
+
+struct _StackItem
+{
+ /* data part */
+ gchar *label;
+ gdouble spent;
+ gdouble budget;
+ gdouble result;
+ gchar *status;
+
+ /* draw stuffs */
+ gdouble rate;
+ gboolean warn;
+
+ /* tmp datas */
+ gdouble rawrate;
+
+};
+
+
+
+/* you should access only the entry and list fields directly */
+struct _ChartStack
+{
+ /*< private >*/
+ GtkBox hbox;
+
+ GtkWidget *drawarea;
+ GtkAdjustment *adjustment;
+ GtkWidget *scrollbar;
+
+ /* data storage */
+ gint nb_items;
+ GArray *items;
+
+ /*gchar **titles;
+ gdouble *spent;
+ gdouble *budget;*/
+
+ gchar *title;
+ gchar *subtitle;
+
+ gchar *budget_title;
+ gchar *result_title;
+
+ gboolean minor;
+ guint32 kcur;
+ gdouble minor_rate;
+ gchar *minor_symbol;
+
+
+
+ /* color datas */
+ GtkColorScheme color_scheme;
+
+ /* cairo default value */
+ PangoFontDescription *pfd;
+ gint pfd_size;
+
+ /* buffer surface */
+ cairo_surface_t *surface;
+
+
+ double barw, blkw;
+
+ /* draw area coordinates */
+ double l, t, b, r, w, h;
+
+ /* zones height */
+ double title_zh;
+ double subtitle_zh, subtitle_y;
+ double header_zh, header_y;
+ double item_zh;
+
+ /* column width */
+ double cat_col_w;
+ double bud_col_w;
+ double res_col_w;
+ double rel_col_w;
+
+
+ double graph_width, graph_height; //graph dimension
+ gint visible;
+
+ gint active, lastactive;
+
+ gchar buffer[CHART_BUFFER_LENGTH];
+
+};
+
+
+struct _ChartStackClass {
+ GtkBoxClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_gtk_reserved1) (void);
+ void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
+};
+
+
+GType ui_chart_stack_get_type (void);
+
+
+/* public function */
+GtkWidget *ui_chart_stack_new(void);
+
+void ui_chart_stack_set_color_scheme(ChartStack * chart, gint colorscheme);
+void ui_chart_stack_set_dualdatas(ChartStack *chart, GtkTreeModel *model, gchar *coltitle1, gchar *coltitle2, gchar *title, gchar *subtitle);
+void ui_chart_stack_set_title(ChartStack * chart, gchar *title);
+void ui_chart_stack_set_subtitle(ChartStack * chart, gchar *subtitle);
+void ui_chart_stack_set_barw(ChartStack * chart, gdouble barw);
+void ui_chart_stack_show_minor(ChartStack * chart, gboolean minor);
+
+void ui_chart_stack_set_minor_prefs(ChartStack * chart, gdouble rate, gchar *symbol);
+void ui_chart_stack_set_currency(ChartStack * chart, guint32 kcur);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __CHARTSTACK_H__ */