Honor the outputs scale factor
This commit is contained in:
		@ -124,6 +124,8 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
			
		||||
        eek_renderer_set_allocation_size (priv->renderer,
 | 
			
		||||
                                          allocation.width,
 | 
			
		||||
                                          allocation.height);
 | 
			
		||||
        eek_renderer_set_scale_factor (priv->renderer,
 | 
			
		||||
                                       gtk_widget_get_scale_factor (self));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
			
		||||
 | 
			
		||||
@ -48,6 +48,7 @@ typedef struct _EekRendererPrivate
 | 
			
		||||
    gdouble allocation_width;
 | 
			
		||||
    gdouble allocation_height;
 | 
			
		||||
    gdouble scale;
 | 
			
		||||
    gint scale_factor; /* the outputs scale factor */
 | 
			
		||||
 | 
			
		||||
    PangoFontDescription *ascii_font;
 | 
			
		||||
    PangoFontDescription *font;
 | 
			
		||||
@ -499,20 +500,20 @@ render_key (EekRenderer *self,
 | 
			
		||||
 | 
			
		||||
 #define SCALE 0.4
 | 
			
		||||
    if (eek_symbol_get_icon_name (symbol)) {
 | 
			
		||||
 | 
			
		||||
        gint scale = priv->scale_factor;
 | 
			
		||||
        cairo_surface_t *icon_surface =
 | 
			
		||||
            eek_renderer_get_icon_surface (self,
 | 
			
		||||
                                           eek_symbol_get_icon_name (symbol),
 | 
			
		||||
                                           MIN(bounds.width, bounds.height),
 | 
			
		||||
                                           1);
 | 
			
		||||
                                           scale);
 | 
			
		||||
        if (icon_surface) {
 | 
			
		||||
            gint width = cairo_image_surface_get_width (icon_surface);
 | 
			
		||||
            gint height = cairo_image_surface_get_height (icon_surface);
 | 
			
		||||
 | 
			
		||||
            cairo_save (cr);
 | 
			
		||||
            cairo_translate (cr,
 | 
			
		||||
                             (bounds.width - width * SCALE) / 2,
 | 
			
		||||
                             (bounds.height - height * SCALE) / 2);
 | 
			
		||||
                             (bounds.width - width * SCALE / scale) / 2,
 | 
			
		||||
                             (bounds.height - height * SCALE / scale) / 2);
 | 
			
		||||
            cairo_rectangle (cr, 0, 0, width, height);
 | 
			
		||||
            cairo_scale (cr, SCALE, SCALE);
 | 
			
		||||
            cairo_clip (cr);
 | 
			
		||||
@ -845,6 +846,7 @@ eek_renderer_init (EekRenderer *self)
 | 
			
		||||
    priv->allocation_width = 0.0;
 | 
			
		||||
    priv->allocation_height = 0.0;
 | 
			
		||||
    priv->scale = 1.0;
 | 
			
		||||
    priv->scale_factor = 1;
 | 
			
		||||
    priv->font = NULL;
 | 
			
		||||
    priv->outline_surface_cache =
 | 
			
		||||
        g_hash_table_new_full (g_direct_hash,
 | 
			
		||||
@ -1029,6 +1031,15 @@ eek_renderer_get_scale (EekRenderer *renderer)
 | 
			
		||||
    return priv->scale;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
eek_renderer_set_scale_factor (EekRenderer *renderer, gint scale)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (EEK_IS_RENDERER(renderer));
 | 
			
		||||
 | 
			
		||||
    EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer);
 | 
			
		||||
    priv->scale_factor = scale;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PangoLayout *
 | 
			
		||||
eek_renderer_create_pango_layout (EekRenderer  *renderer)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -82,6 +82,8 @@ void             eek_renderer_get_key_bounds   (EekRenderer     *renderer,
 | 
			
		||||
                                                gboolean         rotate);
 | 
			
		||||
 | 
			
		||||
gdouble          eek_renderer_get_scale        (EekRenderer     *renderer);
 | 
			
		||||
void             eek_renderer_set_scale_factor (EekRenderer     *renderer,
 | 
			
		||||
                                                gint             scale);
 | 
			
		||||
 | 
			
		||||
PangoLayout     *eek_renderer_create_pango_layout
 | 
			
		||||
                                               (EekRenderer     *renderer);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user