1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
/***************************************************************************
* gtkvumeter.h
*
* Fri Jan 10 20:06:41 2003
* Copyright 2003 Todd Goyen
* wettoad@knighthoodofbuh.org
*
* Mon May 01 04:04:00 2006
* Copyright 2006 Ulf Lamping
* ulf.lamping@web.de
*
* Source code is LGPL'd,
* but may be distributed under any other open source license
****************************************************************************/
#ifndef __GTKVUMETER_H__
#define __GTKVUMETER_H__
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GTK_TYPE_VUMETER (gtk_vumeter_get_type ())
#define GTK_VUMETER(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_VUMETER, GtkVUMeter))
#define GTK_VUMETER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_VUMETER GtkVUMeterClass))
#define GTK_IS_VUMETER(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_VUMETER))
#define GTK_IS_VUMETER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_VUMETER))
#define GTK_VUMETER_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_VUMETER, GtkVUMeterClass))
typedef struct _GtkVUMeter GtkVUMeter;
typedef struct _GtkVUMeterClass GtkVUMeterClass;
typedef enum {
GTK_VUMETER_PEAK_FALLOFF_SLOW=1, /* start with 1 to prevent CLAMP warnings */
GTK_VUMETER_PEAK_FALLOFF_MEDIUM,
GTK_VUMETER_PEAK_FALLOFF_FAST,
GTK_VUMETER_PEAK_FALLOFF_USER
} GtkVUMeterPeakFalloff;
typedef enum {
GTK_VUMETER_SCALING_LINEAR=1, /* start with 1 to prevent CLAMP warnings */
GTK_VUMETER_SCALING_LOG
} GtkVUMeterScaling;
typedef enum
{
GTK_VUMETER_LEFT_TO_RIGHT=1, /* start with 1 to prevent CLAMP warnings */
GTK_VUMETER_RIGHT_TO_LEFT,
GTK_VUMETER_BOTTOM_TO_TOP,
GTK_VUMETER_TOP_TO_BOTTOM
} GtkVUMeterOrientation;
struct _GtkVUMeter {
GtkWidget widget;
/* geometry */
gboolean vertical;
gboolean scale_inverted;
gint thickness;
gint reduced_thickness;
gint padding_left;
gint padding_right;
gint padding_top;
gint padding_bottom;
/* signal level */
gint level;
gint level_min;
gint level_max;
GtkVUMeterScaling scaling;
/* the scale */
GList *scale_items;
gint scale_pitch_holes;
/* peak indicator */
gboolean peak;
gint peak_level;
gint peak_redraw_rate;
guint peak_timeout;
gint peak_hold_factor;
gint peak_hold;
GtkVUMeterPeakFalloff peak_falloff_mode;
gint peak_falloff_rate;
/* colors */
GdkColormap *colormap;
gint colors;
GdkGC **f_gc;
GdkGC **b_gc;
GdkColor *f_colors;
GdkColor *b_colors;
gint f_brightness;
gint b_brightness;
gboolean colors_inverted;
gint yellow_level;
};
struct _GtkVUMeterClass {
GtkWidgetClass parent_class;
};
typedef struct _GtkVUMeterScaleItem {
gint level; /* level where to show the item (clamped: level_min/level_max) */
gboolean large; /* TRUE for a large, FALSE for a small pitch line */
const gchar *label; /* the label or NULL */
} GtkVUMeterScaleItem;
GtkType gtk_vumeter_get_type (void) G_GNUC_CONST;
GtkWidget *gtk_vumeter_new (void);
void gtk_vumeter_set_orientation(GtkVUMeter *vumeter, GtkVUMeterOrientation orientation);
GtkVUMeterOrientation gtk_vumeter_get_orientation(GtkVUMeter *vumeter);
void gtk_vumeter_set_thickness (GtkVUMeter *vumeter, gint size);
gint gtk_vumeter_get_thickness (GtkVUMeter *vumeter);
void gtk_vumeter_set_thickness_reduction (GtkVUMeter *vumeter, gint size);
gint gtk_vumeter_get_thickness_reduction (GtkVUMeter *vumeter);
void gtk_vumeter_set_min_max (GtkVUMeter *vumeter, gint *min, gint *max);
void gtk_vumeter_get_min_max (GtkVUMeter *vumeter, gint *min, gint *max);
void gtk_vumeter_set_level (GtkVUMeter *vumeter, gint level);
gint gtk_vumeter_get_level (GtkVUMeter *vumeter);
void gtk_vumeter_set_scaling (GtkVUMeter *vumeter, GtkVUMeterScaling scale);
GtkVUMeterScaling gtk_vumeter_get_scaling (GtkVUMeter *vumeter);
void gtk_vumeter_set_scale_items (GtkVUMeter *vumeter, GList *scale_items);
GList *gtk_vumeter_get_scale_items (GtkVUMeter *vumeter);
void gtk_vumeter_free_scale_items(GList *scale_items);
void gtk_vumeter_set_scale_hole_size (GtkVUMeter *vumeter, gint hole_size);
gint gtk_vumeter_get_scale_hole_size (GtkVUMeter *vumeter);
void gtk_vumeter_set_peak (GtkVUMeter *vumeter, gboolean peak, guint redraw_rate);
void gtk_vumeter_get_peak (GtkVUMeter *vumeter, gboolean *peak, guint *redraw_rate);
void gtk_vumeter_set_peak_hold_factor (GtkVUMeter *vumeter, gint hold_factor);
gint gtk_vumeter_get_peak_hold_factor (GtkVUMeter *vumeter);
void gtk_vumeter_set_peak_falloff (GtkVUMeter *vumeter, GtkVUMeterPeakFalloff peak_falloff, guint user_rate);
void gtk_vumeter_get_peak_falloff (GtkVUMeter *vumeter, GtkVUMeterPeakFalloff *peak_falloff, guint *user_rate);
void gtk_vumeter_set_colors_inverted (GtkVUMeter *vumeter, gboolean inverted);
gboolean gtk_vumeter_get_colors_inverted (GtkVUMeter *vumeter);
void gtk_vumeter_set_yellow_level (GtkVUMeter *vumeter, gint yellow_level);
gint gtk_vumeter_get_yellow_level (GtkVUMeter *vumeter);
void gtk_vumeter_set_brightness (GtkVUMeter *vumeter, gint foreground, gint background);
void gtk_vumeter_get_brightness (GtkVUMeter *vumeter, gint *foreground, gint *background);
G_END_DECLS
#endif /* __GTKVUMETER_H__ */
|