1 /* $Id: gtkdatabox_ruler.h 4 2008-06-22 09:19:11Z rbock $ */ 2 /* GTK - The GIMP Toolkit 3 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the 17 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18 * Boston, MA 02110-1301 USA. 19 */ 20 21 /* 22 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 23 * file for a list of people on the GTK+ Team. See the ChangeLog 24 * files for a list of changes. These files are distributed with 25 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 26 */ 27 28 /* 29 * Modified by Roland Bock 2007 - 2008. 30 */ 31 32 /** 33 * SECTION:gtkdatabox_ruler 34 * @short_description: An improved version of the #GtkRuler. 35 * @include: gtkdatabox_ruler.h 36 * @see_also: #GtkDatabox 37 * 38 * #GtkDataboxRuler is a widget for the GTK+ library similar to GtkRuler. 39 * 40 * It is improved in several ways: 41 * 42 * <itemizedlist> 43 * <listitem> 44 * <para> 45 * It supports linear and logarithmic scales. 46 * </para> 47 * </listitem> 48 * <listitem> 49 * <para> 50 * In the vertical orientation, the labels are rotated 90° (instead of being written 51 * as a vertical column of horizontal characters). This increases readability. 52 * </para> 53 * </listitem> 54 * <listitem> 55 * <para> 56 * It works for very small and very large value ranges. 57 * </para> 58 * </listitem> 59 * </itemizedlist> 60 **/ 61 #ifndef __GTK_DATABOX_RULER_H__ 62 #define __GTK_DATABOX_RULER_H__ 63 64 #ifdef _MSC_VER 65 #define log2(x) (log(x)/log(2)) 66 #endif 67 68 #include <gdk/gdk.h> 69 #include <gtk/gtk.h> 70 #include <gtkdatabox_scale.h> 71 72 G_BEGIN_DECLS 73 #define GTK_DATABOX_TYPE_RULER (gtk_databox_ruler_get_type ()) 74 #define GTK_DATABOX_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_DATABOX_TYPE_RULER, GtkDataboxRuler)) 75 #define GTK_DATABOX_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_DATABOX_TYPE_RULER, GtkDataboxRulerClass)) 76 #define GTK_DATABOX_IS_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_DATABOX_TYPE_RULER)) 77 #define GTK_DATABOX_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_DATABOX_TYPE_RULER)) 78 #define GTK_DATABOX_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_DATABOX_TYPE_RULER, GtkDataboxRulerClass)) 79 /** 80 * GtkDataboxRuler: 81 * 82 * An improved version (see above) of GtkRuler which supports linear and logarithmic scales. 83 * 84 **/ 85 typedef struct _GtkDataboxRuler GtkDataboxRuler; 86 typedef struct _GtkDataboxRulerClass GtkDataboxRulerClass; 87 88 /** 89 * GTK_DATABOX_RULER_MAX_MAX_LENGTH 90 * 91 * The maximum upper limit of label length in characters 92 */ 93 #define GTK_DATABOX_RULER_MAX_MAX_LENGTH 63 94 95 /** 96 * GtkDataboxRulerPrivate 97 * 98 * A private data structure used by the #GtkDataboxRuler. It shields all internal things 99 * from developers who are just using the object. 100 * 101 **/ 102 typedef struct _GtkDataboxRulerPrivate GtkDataboxRulerPrivate; 103 104 struct _GtkDataboxRuler 105 { 106 GtkWidget widget; 107 108 GtkDataboxRulerPrivate *priv; 109 }; 110 111 struct _GtkDataboxRulerClass 112 { 113 GtkWidgetClass parent_class; 114 }; 115 116 117 GType 118 gtk_databox_ruler_get_type (void) 119 G_GNUC_CONST; 120 GtkWidget *gtk_databox_ruler_new (GtkOrientation orientation); 121 122 void gtk_databox_ruler_set_range (GtkDataboxRuler * ruler, 123 gdouble lower, 124 gdouble upper, gdouble position); 125 void gtk_databox_ruler_set_max_length (GtkDataboxRuler * ruler, 126 guint max_length); 127 void gtk_databox_ruler_set_scale_type (GtkDataboxRuler * ruler, 128 guint scale_type); 129 130 void gtk_databox_ruler_get_range (GtkDataboxRuler * ruler, 131 gdouble * lower, 132 gdouble * upper, gdouble * position); 133 guint gtk_databox_ruler_get_max_length (GtkDataboxRuler * ruler); 134 GtkDataboxScaleType gtk_databox_ruler_get_scale_type (GtkDataboxRuler * 135 ruler); 136 137 void gtk_databox_ruler_set_orientation (GtkDataboxRuler * ruler, GtkOrientation orientation); 138 GtkOrientation gtk_databox_ruler_get_orientation (GtkDataboxRuler *ruler); 139 140 void gtk_databox_ruler_set_text_orientation (GtkDataboxRuler * ruler, GtkOrientation orientation); 141 GtkOrientation gtk_databox_ruler_get_text_orientation (GtkDataboxRuler *ruler); 142 143 void gtk_databox_ruler_set_text_alignment (GtkDataboxRuler * ruler, PangoAlignment alignment); 144 PangoAlignment gtk_databox_ruler_get_text_alignment (GtkDataboxRuler * ruler); 145 146 void gtk_databox_ruler_set_text_hoffset (GtkDataboxRuler * ruler,gint offset); 147 gint gtk_databox_ruler_get_text_hoffset (GtkDataboxRuler * ruler); 148 149 void gtk_databox_ruler_set_draw_ticks(GtkDataboxRuler * ruler, gboolean draw); 150 gboolean gtk_databox_ruler_get_draw_ticks(GtkDataboxRuler * ruler); 151 152 void gtk_databox_ruler_set_draw_position(GtkDataboxRuler * ruler, gboolean draw); 153 gboolean gtk_databox_ruler_get_draw_position(GtkDataboxRuler * ruler); 154 155 void gtk_databox_ruler_set_draw_subticks(GtkDataboxRuler * ruler, gboolean draw); 156 gboolean gtk_databox_ruler_get_draw_subticks(GtkDataboxRuler * ruler); 157 158 void gtk_databox_ruler_set_invert_edge(GtkDataboxRuler * ruler, gboolean invert); 159 gboolean gtk_databox_ruler_get_invert_edge(GtkDataboxRuler * ruler); 160 161 void gtk_databox_ruler_set_linear_label_format(GtkDataboxRuler * ruler, gchar *format); 162 void gtk_databox_ruler_set_log_label_format(GtkDataboxRuler * ruler, gchar *format); 163 164 gchar* gtk_databox_ruler_get_linear_label_format(GtkDataboxRuler * ruler); 165 gchar* gtk_databox_ruler_get_log_label_format(GtkDataboxRuler * ruler); 166 167 void gtk_databox_ruler_set_manual_ticks(GtkDataboxRuler * ruler, gfloat* manual_ticks); 168 gfloat* gtk_databox_ruler_get_manual_ticks(GtkDataboxRuler * ruler); 169 170 void gtk_databox_ruler_set_manual_tick_cnt(GtkDataboxRuler * ruler, guint manual_tick_cnt); 171 guint gtk_databox_ruler_get_manual_tick_cnt(GtkDataboxRuler * ruler); 172 173 void gtk_databox_ruler_set_manual_tick_labels(GtkDataboxRuler * ruler, gchar *labels[]); 174 gchar ** gtk_databox_ruler_get_manual_tick_labels(GtkDataboxRuler * ruler); 175 176 void gtk_databox_ruler_set_box_shadow(GtkDataboxRuler * ruler, GtkShadowType which_shadow); 177 GtkShadowType gtk_databox_ruler_get_box_shadow(GtkDataboxRuler * ruler); 178 179 G_END_DECLS 180 #endif /* __GTK_DATABOX_RULER_H__ */ 181