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:
@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user