1 #ifndef E_CLIENT_VOLUME_H_
2 #define E_CLIENT_VOLUME_H_
3 
4 typedef struct _E_Client_Volume_Sink E_Client_Volume_Sink;
5 typedef struct _E_Event_Client_Volume_Sink E_Event_Client_Volume_Sink;
6 
7 typedef void (*E_Client_Volume_Sink_Get)(int *volume, Eina_Bool *mute, void *data);
8 typedef void (*E_Client_Volume_Sink_Set)(int volume, Eina_Bool mute, void *data);
9 typedef int (*E_Client_Volume_Sink_Min_Get)(void *data);
10 typedef int (*E_Client_Volume_Sink_Max_Get)(void *data);
11 typedef const char *(*E_Client_Volume_Sink_Name_Get)(void *data);
12 
13 E_API extern int E_EVENT_CLIENT_VOLUME;
14 E_API extern int E_EVENT_CLIENT_MUTE;
15 E_API extern int E_EVENT_CLIENT_UNMUTE;
16 E_API extern int E_EVENT_CLIENT_VOLUME_SINK_ADD;
17 E_API extern int E_EVENT_CLIENT_VOLUME_SINK_DEL;
18 E_API extern int E_EVENT_CLIENT_VOLUME_SINK_CHANGED;
19 
20 struct _E_Client_Volume_Sink
21 {
22    E_Client_Volume_Sink_Get func_get;
23    E_Client_Volume_Sink_Set func_set;
24    E_Client_Volume_Sink_Min_Get func_min_get;
25    E_Client_Volume_Sink_Max_Get func_max_get;
26    E_Client_Volume_Sink_Name_Get func_name_get;
27    void *data;
28    Eina_List *clients;
29 };
30 
31 struct _E_Event_Client_Volume_Sink
32 {
33    E_Client *ec;
34    E_Client_Volume_Sink *sink;
35 };
36 
37 
38 EINTERN int        e_client_volume_init(void);
39 EINTERN void       e_client_volume_shutdown(void);
40 
41 E_API void         e_client_volume_set(E_Client *ec, int volume);
42 E_API void         e_client_volume_mute_set(E_Client *ec, Eina_Bool mute);
43 
44 E_API Evas_Object *e_client_volume_object_add(E_Client *ec, Evas *evas);
45 
46 E_API E_Client_Volume_Sink *e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink_Set func_set, E_Client_Volume_Sink_Min_Get func_min_get, E_Client_Volume_Sink_Max_Get func_max_get, E_Client_Volume_Sink_Name_Get func_name_get, void *data);
47 E_API void         e_client_volume_sink_del(E_Client_Volume_Sink *mixer);
48 E_API void         e_client_volume_sink_set(E_Client_Volume_Sink *mixer, int volume, Eina_Bool mute);
49 E_API void         e_client_volume_sink_get(const E_Client_Volume_Sink *mixer, int *volume, Eina_Bool *mute);
50 E_API int          e_client_volume_sink_min_get(const E_Client_Volume_Sink *mixer);
51 E_API int          e_client_volume_sink_max_get(const E_Client_Volume_Sink *mixer);
52 E_API const char * e_client_volume_sink_name_get(const E_Client_Volume_Sink *mixer);
53 E_API void         e_client_volume_sink_append(E_Client *ec, E_Client_Volume_Sink *mixer);
54 E_API void         e_client_volume_sink_remove(E_Client *ec, E_Client_Volume_Sink *mixer);
55 E_API void         e_client_volume_sink_update(E_Client_Volume_Sink *mixer);
56 
57 E_API void         e_client_volume_display_set(E_Client *ec, int volume, Eina_Bool mute);
58 E_API void         e_client_volume_object_emit(E_Client *ec, const char *sig, const char *src);
59 
60 #endif
61