mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-01 00:11:29 +00:00
css: Inherit device scale in _gtk_css_image_get_surface
To handle hidpi support we need to make sure we don't downscale scaled css images. Note: If cairo_surface_create_similar starts doing this by itself we need to back this out.
This commit is contained in:
parent
8c7a8e9314
commit
499cef1bb0
@ -389,16 +389,30 @@ _gtk_css_image_get_surface (GtkCssImage *image,
|
|||||||
{
|
{
|
||||||
cairo_surface_t *result;
|
cairo_surface_t *result;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
double sx, sy;
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL);
|
g_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL);
|
||||||
g_return_val_if_fail (surface_width > 0, NULL);
|
g_return_val_if_fail (surface_width > 0, NULL);
|
||||||
g_return_val_if_fail (surface_height > 0, NULL);
|
g_return_val_if_fail (surface_height > 0, NULL);
|
||||||
|
|
||||||
|
|
||||||
if (target)
|
if (target)
|
||||||
result = cairo_surface_create_similar (target,
|
{
|
||||||
CAIRO_CONTENT_COLOR_ALPHA,
|
#ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE
|
||||||
surface_width,
|
cairo_surface_get_device_scale (target, &sx, &sy);
|
||||||
surface_height);
|
#else
|
||||||
|
sx = sy = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
result = cairo_surface_create_similar (target,
|
||||||
|
CAIRO_CONTENT_COLOR_ALPHA,
|
||||||
|
surface_width*sx,
|
||||||
|
surface_height*sy);
|
||||||
|
|
||||||
|
#ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE
|
||||||
|
cairo_surface_set_device_scale (result, sx, sy);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else
|
else
|
||||||
result = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
result = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
||||||
surface_width,
|
surface_width,
|
||||||
|
Loading…
Reference in New Issue
Block a user