render: Simplify drawing

Instead of doing scale guessing we know that we get a properly
sized image from GTK+ so just scale it down a bit so it gets
some border within the drawing area.
This commit is contained in:
Guido Günther
2019-07-11 11:32:46 +02:00
parent d6a8a85b5e
commit c529e9ed9c

View File

@ -492,37 +492,23 @@ render_key (EekRenderer *self,
if (!symbol) if (!symbol)
return; return;
#define SCALE 0.8
if (eek_symbol_get_icon_name (symbol)) { if (eek_symbol_get_icon_name (symbol)) {
cairo_surface_t *icon_surface = cairo_surface_t *icon_surface =
eek_renderer_get_icon_surface (self, eek_renderer_get_icon_surface (self,
eek_symbol_get_icon_name (symbol), eek_symbol_get_icon_name (symbol),
MIN(bounds.width, bounds.height) * 0.5); MIN(bounds.width, bounds.height));
if (icon_surface) { if (icon_surface) {
gint width = cairo_image_surface_get_width (icon_surface); gint width = cairo_image_surface_get_width (icon_surface);
gint height = cairo_image_surface_get_height (icon_surface); gint height = cairo_image_surface_get_height (icon_surface);
gdouble scale;
if (width < bounds.width && height < bounds.height)
scale = 1;
else {
if (height * bounds.width / width <= bounds.height)
scale = bounds.width / width;
else if (width * bounds.height / height <= bounds.width)
scale = bounds.height / height;
else {
if (width * bounds.height < height * bounds.width)
scale = width / bounds.width;
else
scale = height / bounds.height;
}
}
cairo_save (cr); cairo_save (cr);
cairo_translate (cr, cairo_translate (cr,
(bounds.width - width * scale) / 2, (bounds.width - width * SCALE) / 2,
(bounds.height - height * scale) / 2); (bounds.height - height * SCALE) / 2);
cairo_rectangle (cr, 0, 0, width, height); cairo_rectangle (cr, 0, 0, width, height);
cairo_scale (cr, SCALE, SCALE);
cairo_clip (cr); cairo_clip (cr);
/* Draw the shape of the icon using the foreground color */ /* Draw the shape of the icon using the foreground color */
cairo_set_source_rgba (cr, foreground.red, cairo_set_source_rgba (cr, foreground.red,