mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-28 22:41:43 +00:00
pixbufutils: Escape file data only once
This commit is contained in:
parent
1a931da046
commit
c0827e2c54
@ -132,8 +132,7 @@ _gdk_pixbuf_new_from_resource_scaled (const gchar *resource_path,
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
load_symbolic_svg (const char *file_data,
|
||||
gsize file_len,
|
||||
load_symbolic_svg (const char *escaped_file_data,
|
||||
int width,
|
||||
int height,
|
||||
double scale,
|
||||
@ -149,7 +148,6 @@ load_symbolic_svg (const char *file_data,
|
||||
GdkPixbuf *pixbuf;
|
||||
gchar *data;
|
||||
gchar *svg_width, *svg_height;
|
||||
gchar *escaped_file_data;
|
||||
|
||||
if (width == 0)
|
||||
width = icon_width * scale;
|
||||
@ -159,8 +157,6 @@ load_symbolic_svg (const char *file_data,
|
||||
svg_width = g_strdup_printf ("%d", icon_width);
|
||||
svg_height = g_strdup_printf ("%d", icon_height);
|
||||
|
||||
escaped_file_data = g_base64_encode ((guchar *) file_data, file_len);
|
||||
|
||||
data = g_strconcat ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<svg version=\"1.1\"\n"
|
||||
" xmlns=\"http://www.w3.org/2000/svg\"\n"
|
||||
@ -184,7 +180,6 @@ load_symbolic_svg (const char *file_data,
|
||||
" <xi:include href=\"data:text/xml;base64,", escaped_file_data, "\"/>\n"
|
||||
"</svg>",
|
||||
NULL);
|
||||
g_free (escaped_file_data);
|
||||
g_free (svg_width);
|
||||
g_free (svg_height);
|
||||
|
||||
@ -246,6 +241,7 @@ gtk_make_symbolic_pixbuf_from_data (const char *file_data,
|
||||
GdkPixbuf *pixbuf = NULL;
|
||||
int plane;
|
||||
int icon_width, icon_height;
|
||||
char *escaped_file_data;
|
||||
|
||||
/* Fetch size from the original icon */
|
||||
{
|
||||
@ -262,6 +258,8 @@ gtk_make_symbolic_pixbuf_from_data (const char *file_data,
|
||||
g_object_unref (reference);
|
||||
}
|
||||
|
||||
escaped_file_data = g_base64_encode ((guchar *) file_data, file_len);
|
||||
|
||||
for (plane = 0; plane < 3; plane++)
|
||||
{
|
||||
/* Here we render the svg with all colors solid, this should
|
||||
@ -276,7 +274,7 @@ gtk_make_symbolic_pixbuf_from_data (const char *file_data,
|
||||
* channels, with the color of the fg being implicitly
|
||||
* the "rest", as all color fractions should add up to 1.
|
||||
*/
|
||||
loaded = load_symbolic_svg (file_data, file_len, width, height, scale,
|
||||
loaded = load_symbolic_svg (escaped_file_data, width, height, scale,
|
||||
icon_width,
|
||||
icon_height,
|
||||
g_string,
|
||||
@ -303,6 +301,8 @@ gtk_make_symbolic_pixbuf_from_data (const char *file_data,
|
||||
g_object_unref (loaded);
|
||||
}
|
||||
|
||||
g_free (escaped_file_data);
|
||||
|
||||
return pixbuf;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user