2008-04-17 Emmanuele Bassi <ebassi@openedhand.com>
[clutter-gtk] / clutter-gtk / gtk-clutter-util.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <gtk/gtk.h>
6 #include <clutter/clutter.h>
7
8 #include "gtk-clutter-util.h"
9
10 /**
11  * SECTION:gtk-clutter-util
12  * @short_description: Utility functions for integrating Clutter in GTK+
13  *
14  * FIXME
15  *
16  */
17
18 static inline void
19 gtk_clutter_get_component (GtkWidget    *widget,
20                            GtkRcFlags    component,
21                            GtkStateType  state,
22                            ClutterColor *color)
23 {
24   GtkStyle *style = gtk_widget_get_style (widget);
25   GdkColor gtk_color = { 0, };
26
27   switch (component)
28     {
29     case GTK_RC_FG:
30       gtk_color = style->fg[state];
31       break;
32
33     case GTK_RC_BG:
34       gtk_color = style->bg[state];
35       break;
36
37     case GTK_RC_TEXT:
38       gtk_color = style->text[state];
39       break;
40
41     case GTK_RC_BASE:
42       gtk_color = style->base[state];
43       break;
44
45     default:
46       g_assert_not_reached ();
47       break;
48     }
49
50   color->red   = (guint8) ((gtk_color.red   / 65535.0) * 255);
51   color->green = (guint8) ((gtk_color.green / 65535.0) * 255);
52   color->blue  = (guint8) ((gtk_color.blue  / 65535.0) * 255);
53 }
54
55 /**
56  * gtk_clutter_get_fg_color:
57  * @widget:
58  * @state:
59  * @color:
60  *
61  * FIXME
62  *
63  * Since: 0.8
64  */
65 void
66 gtk_clutter_get_fg_color (GtkWidget    *widget,
67                           GtkStateType  state,
68                           ClutterColor *color)
69 {
70   g_return_if_fail (GTK_IS_WIDGET (widget));
71   g_return_if_fail (state >= GTK_STATE_NORMAL &&
72                     state <= GTK_STATE_INSENSITIVE);
73   g_return_if_fail (color != NULL);
74
75   gtk_clutter_get_component (widget, GTK_RC_FG, state, color);
76 }
77
78 /**
79  * gtk_clutter_get_bg_color:
80  * @widget:
81  * @state:
82  * @color:
83  *
84  * FIXME
85  *
86  * Since: 0.8
87  */
88 void
89 gtk_clutter_get_bg_color (GtkWidget    *widget,
90                           GtkStateType  state,
91                           ClutterColor *color)
92 {
93   g_return_if_fail (GTK_IS_WIDGET (widget));
94   g_return_if_fail (state >= GTK_STATE_NORMAL &&
95                     state <= GTK_STATE_INSENSITIVE);
96   g_return_if_fail (color != NULL);
97
98   gtk_clutter_get_component (widget, GTK_RC_BG, state, color);
99 }
100
101 /**
102  * gtk_clutter_get_text_color:
103  * @widget:
104  * @state:
105  * @color:
106  *
107  * FIXME
108  *
109  * Since: 0.8
110  */
111 void
112 gtk_clutter_get_text_color (GtkWidget    *widget,
113                             GtkStateType  state,
114                             ClutterColor *color)
115 {
116   g_return_if_fail (GTK_IS_WIDGET (widget));
117   g_return_if_fail (state >= GTK_STATE_NORMAL &&
118                     state <= GTK_STATE_INSENSITIVE);
119   g_return_if_fail (color != NULL);
120
121   gtk_clutter_get_component (widget, GTK_RC_TEXT, state, color);
122 }
123
124 /**
125  * gtk_clutter_get_base_color:
126  * @widget:
127  * @state:
128  * @color:
129  *
130  * FIXME
131  *
132  * Since: 0.8
133  */
134 void
135 gtk_clutter_get_base_color (GtkWidget    *widget,
136                             GtkStateType  state,
137                             ClutterColor *color)
138 {
139   g_return_if_fail (GTK_IS_WIDGET (widget));
140   g_return_if_fail (state >= GTK_STATE_NORMAL &&
141                     state <= GTK_STATE_INSENSITIVE);
142   g_return_if_fail (color != NULL);
143
144   gtk_clutter_get_component (widget, GTK_RC_BASE, state, color);
145 }
146