GtkDatabox
A set of GTK+ widgets to display large amounts of numerical data quickly and easily.
|
00001 /* $Id: gtkdatabox.h 3 2008-06-22 08:45:45Z rbock $ */ 00002 /* GtkDatabox - An extension to the gtk+ library 00003 * Copyright (C) 1998 - 2008 Dr. Roland Bock 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public License 00007 * as published by the Free Software Foundation; either version 2.1 00008 * of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 */ 00019 00020 #ifndef __GTK_DATABOX_H__ 00021 #define __GTK_DATABOX_H__ 00022 00023 #include <gtkdatabox_typedefs.h> 00024 #include <gtkdatabox_graph.h> 00025 #include <gtkdatabox_ruler.h> 00026 #include <gtk/gtkwidget.h> 00027 #include <gtk/gtkadjustment.h> 00028 00054 G_BEGIN_DECLS 00055 #define GTK_TYPE_DATABOX (gtk_databox_get_type ()) 00056 #define GTK_DATABOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 00057 GTK_TYPE_DATABOX, \ 00058 GtkDatabox)) 00059 #define GTK_DATABOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ 00060 GTK_TYPE_DATABOX, \ 00061 GtkDataboxClass)) 00062 #define GTK_IS_DATABOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 00063 GTK_TYPE_DATABOX)) 00064 #define GTK_IS_DATABOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ 00065 GTK_TYPE_DATABOX)) 00066 #define GTK_DATABOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ 00067 GTK_TYPE_DATABOX, \ 00068 GtkDataboxClass)) 00069 00070 00071 typedef struct _GtkDataboxClass GtkDataboxClass; 00072 00080 typedef struct _GtkDataboxPrivate GtkDataboxPrivate; 00081 00082 typedef struct 00083 { 00084 gfloat x1; 00085 gfloat x2; 00086 gfloat y1; 00087 gfloat y2; 00088 } GtkDataboxValueRectangle; 00089 00098 struct _GtkDatabox 00099 { 00100 /*< private >*/ 00101 GtkWidget box; 00102 00103 GtkDataboxPrivate *priv; 00104 }; 00105 00106 struct _GtkDataboxClass 00107 { 00108 GtkWidgetClass parent_class; 00109 00110 void (*zoomed) (GtkDatabox * box); 00111 void (*selection_started) (GtkDatabox * box, 00112 GtkDataboxValueRectangle * selectionValues); 00113 void (*selection_changed) (GtkDatabox * box, 00114 GtkDataboxValueRectangle * selectionValues); 00115 void (*selection_finalized) (GtkDatabox * box, 00116 GtkDataboxValueRectangle * 00117 selectionValues); 00118 void (*selection_canceled) (GtkDatabox * box); 00119 }; 00120 00121 GType gtk_databox_get_type (void); 00122 00123 GtkWidget *gtk_databox_new (void); 00124 00125 gint gtk_databox_graph_add (GtkDatabox * box, GtkDataboxGraph * graph); 00126 gint gtk_databox_graph_add_front (GtkDatabox * box, GtkDataboxGraph * graph); 00127 00128 gint gtk_databox_graph_remove (GtkDatabox * box, GtkDataboxGraph * graph); 00129 gint gtk_databox_graph_remove_all (GtkDatabox * box); 00130 00131 gint gtk_databox_auto_rescale (GtkDatabox * box, gfloat border); 00132 gint gtk_databox_calculate_extrema (GtkDatabox * box, 00133 gfloat * min_x, gfloat * max_x, 00134 gfloat * min_y, gfloat * max_y); 00135 00136 void gtk_databox_set_total_limits (GtkDatabox * box, 00137 gfloat left, gfloat right, 00138 gfloat top, gfloat bottom); 00139 void gtk_databox_set_visible_limits (GtkDatabox * box, 00140 gfloat left, gfloat right, 00141 gfloat top, gfloat bottom); 00142 void gtk_databox_get_total_limits (GtkDatabox * box, 00143 gfloat * left, gfloat * right, 00144 gfloat * top, gfloat * bottom); 00145 void gtk_databox_get_visible_limits (GtkDatabox * box, 00146 gfloat * left, gfloat * right, 00147 gfloat * top, gfloat * bottom); 00148 00149 void gtk_databox_set_adjustment_x (GtkDatabox * box, GtkAdjustment * adj); 00150 void gtk_databox_set_adjustment_y (GtkDatabox * box, GtkAdjustment * adj); 00151 GtkAdjustment *gtk_databox_get_adjustment_x (GtkDatabox * box); 00152 GtkAdjustment *gtk_databox_get_adjustment_y (GtkDatabox * box); 00153 00154 void gtk_databox_set_ruler_x (GtkDatabox * box, GtkDataboxRuler * ruler); 00155 void gtk_databox_set_ruler_y (GtkDatabox * box, GtkDataboxRuler * ruler); 00156 GtkDataboxRuler *gtk_databox_get_ruler_x (GtkDatabox * box); 00157 GtkDataboxRuler *gtk_databox_get_ruler_y (GtkDatabox * box); 00158 00159 void gtk_databox_set_scale_type_x (GtkDatabox * box, 00160 GtkDataboxScaleType scale_type); 00161 void gtk_databox_set_scale_type_y (GtkDatabox * box, 00162 GtkDataboxScaleType scale_type); 00163 GtkDataboxScaleType gtk_databox_get_scale_type_x (GtkDatabox * box); 00164 GtkDataboxScaleType gtk_databox_get_scale_type_y (GtkDatabox * box); 00165 00166 void gtk_databox_set_enable_selection (GtkDatabox * box, gboolean enable); 00167 void gtk_databox_set_enable_zoom (GtkDatabox * box, gboolean enable); 00168 void gtk_databox_set_box_shadow(GtkDatabox * box, GtkShadowType which_shadow); 00169 00170 gboolean gtk_databox_get_enable_selection (GtkDatabox * box); 00171 gboolean gtk_databox_get_enable_zoom (GtkDatabox * box); 00172 GtkShadowType gtk_databox__get_box_shadow(GtkDatabox * box); 00173 00174 void gtk_databox_zoom_to_selection (GtkDatabox * box); 00175 void gtk_databox_zoom_out (GtkDatabox * box); 00176 void gtk_databox_zoom_home (GtkDatabox * box); 00177 00178 gint16 gtk_databox_value_to_pixel_x (GtkDatabox * box, gfloat value); 00179 gint16 gtk_databox_value_to_pixel_y (GtkDatabox * box, gfloat value); 00180 gfloat gtk_databox_pixel_to_value_x (GtkDatabox * box, gint16 pixel); 00181 gfloat gtk_databox_pixel_to_value_y (GtkDatabox * box, gint16 pixel); 00182 void gtk_databox_values_to_pixels (GtkDatabox * box, 00183 guint len, 00184 const gfloat * values_x, 00185 const gfloat * values_y, 00186 GdkPoint * pixels); 00187 00188 void gtk_databox_create_box_with_scrollbars_and_rulers (GtkWidget ** 00189 p_box, 00190 GtkWidget ** 00191 p_table, 00192 gboolean scrollbar_x, 00193 gboolean scrollbar_y, 00194 gboolean ruler_x, 00195 gboolean ruler_y); 00196 00197 void 00198 gtk_databox_create_box_with_scrollbars_and_rulers_positioned (GtkWidget ** p_box, 00199 GtkWidget ** p_table, 00200 gboolean scrollbar_x, 00201 gboolean scrollbar_y, 00202 gboolean ruler_x, 00203 gboolean ruler_y, 00204 gboolean ruler_x_top, 00205 gboolean ruler_y_left); 00206 00207 /* Used by graph objects */ 00208 GdkPixmap* gtk_databox_get_backing_pixmap(GtkDatabox * box); 00209 00210 G_END_DECLS 00211 #endif /* __GTK_DATABOX_H__ */