Add text import capability, like text2pcap, directly into the GUI.
[obnox/wireshark/wip.git] / gtk / gtkvumeter.h
1 /***************************************************************************
2  *            gtkvumeter.h
3  *
4  * $Id$
5  *
6  *  Fri Jan 10 20:06:41 2003
7  *  Copyright  2003  Todd Goyen
8  *  wettoad@knighthoodofbuh.org
9  *
10  *  Mon May 01 04:04:00 2006
11  *  Copyright  2006  Ulf Lamping
12  *  ulf.lamping@web.de
13  *
14  *  Source code is LGPL'd,
15  *  but may be distributed under any other open source license
16  ****************************************************************************/
17
18 #ifndef __GTKVUMETER_H__
19 #define __GTKVUMETER_H__
20
21 #include <gtk/gtk.h>
22
23 G_BEGIN_DECLS
24
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))
31
32 typedef struct _GtkVUMeter      GtkVUMeter;
33 typedef struct _GtkVUMeterClass GtkVUMeterClass;
34
35 typedef enum {
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;
41
42 typedef enum {
43     GTK_VUMETER_SCALING_LINEAR=1,       /* start with 1 to prevent CLAMP warnings */
44     GTK_VUMETER_SCALING_LOG
45 } GtkVUMeterScaling;
46
47 typedef enum
48 {
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;
54
55 struct _GtkVUMeter {
56     GtkWidget   widget;
57
58     /* geometry */
59     gboolean    vertical;
60     gboolean    scale_inverted;
61     gint        thickness;
62     gint        reduced_thickness;
63     gint        padding_left;
64     gint        padding_right;
65     gint        padding_top;
66     gint        padding_bottom;
67
68     /* signal level */
69     gint        level;
70     gint        level_min;
71     gint        level_max;
72     GtkVUMeterScaling scaling;
73
74     /* the scale */
75     GList       *scale_items;
76     gint        scale_pitch_holes;
77
78     /* peak indicator */
79     gboolean    peak;
80     gint        peak_level;
81     gint        peak_redraw_rate;
82     guint       peak_timeout;
83     gint        peak_hold_factor;
84     gint        peak_hold;
85     GtkVUMeterPeakFalloff peak_falloff_mode;
86     gint        peak_falloff_rate;
87
88     /* colors */
89     GdkColormap *colormap;
90     gint        colors;
91     GdkGC       **f_gc;
92     GdkGC       **b_gc;
93     GdkColor    *f_colors;
94     GdkColor    *b_colors;
95     gint        f_brightness;
96     gint        b_brightness;
97     gboolean    colors_inverted;
98     gint        yellow_level;
99 };
100
101 struct _GtkVUMeterClass {
102     GtkWidgetClass  parent_class;
103 };
104
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;
110
111 GType    gtk_vumeter_get_type (void) G_GNUC_CONST;
112
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);
120
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);
127
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);
133
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);
140
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);
147
148 G_END_DECLS
149
150 #endif /* __GTKVUMETER_H__ */