libeek: share a single drawing context among each clutter elements

A new class EekClutterDrawingContext maintains the context used to draw actors. Single EekClutterDrawingContext instance is shared by EekClutterKeyboard, EekClutterSection, EekClutterKey, and EekClutterKeyActor.
This commit is contained in:
Daiki Ueno
2010-06-16 10:32:34 +09:00
parent 63b9fea27b
commit 473a9a9b2a
15 changed files with 349 additions and 145 deletions

View File

@ -87,26 +87,21 @@ egf_key_callback (EekElement *element,
{
EekKey *key = EEK_KEY(element);
GetFontSizeCallbackData *data = user_data;
guint *keysyms;
gint num_groups, num_levels, i;
gdouble font_size;
guint keysym;
EekBounds bounds;
const gchar *label;
eek_key_get_keysyms (key, &keysyms, &num_groups, &num_levels);
for (i = 0; i < num_groups * num_levels; i++) {
guint keysym = keysyms[i];
EekBounds bounds;
const gchar *label;
keysym = eek_key_get_keysym (key);
if (keysym == EEK_INVALID_KEYSYM ||
eek_keysym_get_category (keysym) != data->category)
return;
if (keysym == EEK_INVALID_KEYSYM ||
eek_keysym_get_category (keysym) != data->category)
continue;
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
label = eek_keysym_to_string (keysym);
font_size = get_font_size (label, &bounds, data->layout);
if (font_size < data->font_size && font_size >= data->minimum_font_size)
data->font_size = font_size;
}
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
label = eek_keysym_to_string (keysym);
font_size = get_font_size (label, &bounds, data->layout);
if (font_size < data->font_size && font_size >= data->minimum_font_size)
data->font_size = font_size;
}
static void