eekboard: merge eekboard-gtk.c to eekboard.c

This commit is contained in:
Daiki Ueno
2010-06-16 15:55:06 +09:00
parent e25b53814b
commit efa7d00c03
9 changed files with 252 additions and 652 deletions

View File

@ -312,7 +312,6 @@ create_texture_for_key (EekKey *key)
{
ClutterActor *texture;
cairo_t *cr;
cairo_pattern_t *pat;
EekOutline *outline;
EekBounds bounds;
@ -321,29 +320,7 @@ create_texture_for_key (EekKey *key)
texture = clutter_cairo_texture_new (bounds.width, bounds.height);
cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE(texture));
cairo_set_line_width (cr, 1);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0);
cairo_pattern_add_color_stop_rgba (pat, 1, 0.5, 0.5, 0.5, 1);
cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1);
cairo_set_source (cr, pat);
eek_draw_rounded_polygon (cr,
TRUE,
outline->corner_radius,
outline->points,
outline->num_points);
cairo_pattern_destroy (pat);
cairo_set_source_rgba (cr, 0.3, 0.3, 0.3, 0.5);
eek_draw_rounded_polygon (cr,
FALSE,
outline->corner_radius,
outline->points,
outline->num_points);
eek_draw_outline (cr, outline);
cairo_destroy (cr);
return texture;
}

View File

@ -177,6 +177,36 @@ eek_get_fonts (EekKeyboard *keyboard,
fonts[EEK_KEYSYM_CATEGORY_KEYNAME] = font_desc;
}
void
eek_draw_outline (cairo_t *cr, EekOutline *outline)
{
cairo_pattern_t *pat;
cairo_set_line_width (cr, 1);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0);
cairo_pattern_add_color_stop_rgba (pat, 1, 0.5, 0.5, 0.5, 1);
cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1);
cairo_set_source (cr, pat);
eek_draw_rounded_polygon (cr,
TRUE,
outline->corner_radius,
outline->points,
outline->num_points);
cairo_pattern_destroy (pat);
cairo_set_source_rgba (cr, 0.3, 0.3, 0.3, 0.5);
eek_draw_rounded_polygon (cr,
FALSE,
outline->corner_radius,
outline->points,
outline->num_points);
}
/*
* The functions below are borrowed from
* libgnomekbd/gkbd-keyboard-drawing.c.

View File

@ -16,6 +16,9 @@ void eek_get_fonts (EekKeyboard *keyboard,
PangoLayout *layout,
PangoFontDescription **fonts);
void eek_draw_outline (cairo_t *cr,
EekOutline *outline);
void eek_draw_rounded_polygon (cairo_t *cr,
gboolean filled,
gdouble radius,

View File

@ -117,21 +117,13 @@ draw_key (EekElement *element, gpointer user_data)
EekBounds bounds;
guint keysym;
gdk_cairo_set_source_color (priv->cr, priv->dark_color);
cairo_set_line_width (priv->cr, 1);
cairo_set_line_join (priv->cr, CAIRO_LINE_JOIN_ROUND);
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
cairo_save (priv->cr);
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
cairo_translate (priv->cr, bounds.x, bounds.y);
outline = eek_key_get_outline (key);
eek_draw_rounded_polygon (priv->cr,
FALSE,
outline->corner_radius,
outline->points,
outline->num_points);
cairo_stroke (priv->cr);
eek_draw_outline (priv->cr, outline);
gdk_cairo_set_source_color (priv->cr, priv->dark_color);
keysym = eek_key_get_keysym (key);
if (keysym != EEK_INVALID_KEYSYM) {

View File

@ -511,6 +511,37 @@ set_xkb_component_names (EekXklLayout *layout, XklConfigRec *config)
XkbComponentNamesRec names;
gboolean success = FALSE;
#define DEBUG 1
#if DEBUG
if (config->layouts) {
gint i;
fprintf (stderr, "layout = ");
for (i = 0; config->layouts[i] != NULL; i++)
fprintf (stderr, "\"%s\" ", config->layouts[i]);
fputc ('\n', stderr);
} else
fprintf (stderr, "layouts = NULL\n");
if (config->variants) {
gint i;
fprintf (stderr, "variant = ");
for (i = 0; config->variants[i]; i++)
fprintf (stderr, "\"%s\" ", config->variants[i]);
fputc ('\n', stderr);
} else
fprintf (stderr, "variants = NULL\n");
if (config->options) {
gint i;
fprintf (stderr, "option = ");
for (i = 0; config->options[i]; i++)
fprintf (stderr, "\"%s\" ", config->options[i]);
fputc ('\n', stderr);
} else
fprintf (stderr, "options = NULL\n");
#endif
/* Disabled since the current EekXklLayout implementation does not
change the server setting. */
#if 0