1 /***************************************************************************
6 * Fri Jan 10 20:06:41 2003
7 * Copyright 2003 Todd Goyen
8 * wettoad@knighthoodofbuh.org
10 * Mon May 01 04:04:00 2006
11 * Copyright 2006 Ulf Lamping
14 * Source code is LGPL'd,
15 * but may be distributed under any other open source license
16 ****************************************************************************/
18 #ifndef __GTKVUMETER_H__
19 #define __GTKVUMETER_H__
25 #define GTK_TYPE_VUMETER (gtk_vumeter_get_type ())
26 #define GTK_VUMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_VUMETER, GtkVUMeter))
27 #define GTK_VUMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass) , GTK_TYPE_VUMETER GtkVUMeterClass))
28 #define GTK_IS_VUMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_VUMETER))
29 #define GTK_IS_VUMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass) , GTK_TYPE_VUMETER))
30 #define GTK_VUMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj) , GTK_TYPE_VUMETER, GtkVUMeterClass))
32 typedef struct _GtkVUMeter GtkVUMeter;
33 typedef struct _GtkVUMeterClass GtkVUMeterClass;
36 GTK_VUMETER_PEAK_FALLOFF_SLOW=1, /* start with 1 to prevent CLAMP warnings */
37 GTK_VUMETER_PEAK_FALLOFF_MEDIUM,
38 GTK_VUMETER_PEAK_FALLOFF_FAST,
39 GTK_VUMETER_PEAK_FALLOFF_USER
40 } GtkVUMeterPeakFalloff;
43 GTK_VUMETER_SCALING_LINEAR=1, /* start with 1 to prevent CLAMP warnings */
44 GTK_VUMETER_SCALING_LOG
49 GTK_VUMETER_LEFT_TO_RIGHT=1, /* start with 1 to prevent CLAMP warnings */
50 GTK_VUMETER_RIGHT_TO_LEFT,
51 GTK_VUMETER_BOTTOM_TO_TOP,
52 GTK_VUMETER_TOP_TO_BOTTOM
53 } GtkVUMeterOrientation;
60 gboolean scale_inverted;
62 gint reduced_thickness;
72 GtkVUMeterScaling scaling;
76 gint scale_pitch_holes;
81 gint peak_redraw_rate;
83 gint peak_hold_factor;
85 GtkVUMeterPeakFalloff peak_falloff_mode;
86 gint peak_falloff_rate;
89 GdkColormap *colormap;
97 gboolean colors_inverted;
101 struct _GtkVUMeterClass {
102 GtkWidgetClass parent_class;
105 typedef struct _GtkVUMeterScaleItem {
106 gint level; /* level where to show the item (clamped: level_min/level_max) */
107 gboolean large; /* TRUE for a large, FALSE for a small pitch line */
108 const gchar *label; /* the label or NULL */
109 } GtkVUMeterScaleItem;
111 GType gtk_vumeter_get_type (void) G_GNUC_CONST;
113 GtkWidget *gtk_vumeter_new (void);
114 void gtk_vumeter_set_orientation(GtkVUMeter *vumeter, GtkVUMeterOrientation orientation);
115 GtkVUMeterOrientation gtk_vumeter_get_orientation(GtkVUMeter *vumeter);
116 void gtk_vumeter_set_thickness (GtkVUMeter *vumeter, gint size);
117 gint gtk_vumeter_get_thickness (GtkVUMeter *vumeter);
118 void gtk_vumeter_set_thickness_reduction (GtkVUMeter *vumeter, gint size);
119 gint gtk_vumeter_get_thickness_reduction (GtkVUMeter *vumeter);
121 void gtk_vumeter_set_min_max (GtkVUMeter *vumeter, gint *min, gint *max);
122 void gtk_vumeter_get_min_max (GtkVUMeter *vumeter, gint *min, gint *max);
123 void gtk_vumeter_set_level (GtkVUMeter *vumeter, gint level);
124 gint gtk_vumeter_get_level (GtkVUMeter *vumeter);
125 void gtk_vumeter_set_scaling (GtkVUMeter *vumeter, GtkVUMeterScaling scale);
126 GtkVUMeterScaling gtk_vumeter_get_scaling (GtkVUMeter *vumeter);
128 void gtk_vumeter_set_scale_items (GtkVUMeter *vumeter, GList *scale_items);
129 GList *gtk_vumeter_get_scale_items (GtkVUMeter *vumeter);
130 void gtk_vumeter_free_scale_items(GList *scale_items);
131 void gtk_vumeter_set_scale_hole_size (GtkVUMeter *vumeter, gint hole_size);
132 gint gtk_vumeter_get_scale_hole_size (GtkVUMeter *vumeter);
134 void gtk_vumeter_set_peak (GtkVUMeter *vumeter, gboolean peak, guint redraw_rate);
135 void gtk_vumeter_get_peak (GtkVUMeter *vumeter, gboolean *peak, guint *redraw_rate);
136 void gtk_vumeter_set_peak_hold_factor (GtkVUMeter *vumeter, gint hold_factor);
137 gint gtk_vumeter_get_peak_hold_factor (GtkVUMeter *vumeter);
138 void gtk_vumeter_set_peak_falloff (GtkVUMeter *vumeter, GtkVUMeterPeakFalloff peak_falloff, guint user_rate);
139 void gtk_vumeter_get_peak_falloff (GtkVUMeter *vumeter, GtkVUMeterPeakFalloff *peak_falloff, guint *user_rate);
141 void gtk_vumeter_set_colors_inverted (GtkVUMeter *vumeter, gboolean inverted);
142 gboolean gtk_vumeter_get_colors_inverted (GtkVUMeter *vumeter);
143 void gtk_vumeter_set_yellow_level (GtkVUMeter *vumeter, gint yellow_level);
144 gint gtk_vumeter_get_yellow_level (GtkVUMeter *vumeter);
145 void gtk_vumeter_set_brightness (GtkVUMeter *vumeter, gint foreground, gint background);
146 void gtk_vumeter_get_brightness (GtkVUMeter *vumeter, gint *foreground, gint *background);
150 #endif /* __GTKVUMETER_H__ */