From 4d09ff324419fe4e671233044e424378da53969b Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Tue, 9 Jun 2015 14:20:30 +0300
Subject: [PATCH] Remove Gdk-dependency from gtk-encode-symbolic-svg

Building gtk-encode-symbolic-svg without building Gdk is useful
as only the icon tools are needed on the native build: this makes
native build much faster and requires much less dependencies.

Upstream-Status: Pending

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
 gtk/encodesymbolic.c | 36 ++++++++++--------------------------
 1 file changed, 10 insertions(+), 26 deletions(-)

diff --git a/gtk/encodesymbolic.c b/gtk/encodesymbolic.c
index 9f7d015..1f07563 100644
--- a/gtk/encodesymbolic.c
+++ b/gtk/encodesymbolic.c
@@ -19,7 +19,6 @@
 
 #include <glib.h>
 #include <gdk-pixbuf/gdk-pixdata.h>
-#include <gdk/gdk.h>
 #include <glib/gi18n.h>
 
 #ifdef HAVE_UNISTD_H
@@ -43,30 +42,18 @@ static GdkPixbuf *
 load_symbolic_svg (char *file_data, gsize file_len,
                    int width,
                    int height,
-                   const GdkRGBA  *fg,
-                   const GdkRGBA  *success_color,
-                   const GdkRGBA  *warning_color,
-                   const GdkRGBA  *error_color,
+                   const char *css_fg,
+                   const char *css_success,
+                   const char *css_warning,
+                   const char *css_error,
                    GError        **error)
 {
   GInputStream *stream;
   GdkPixbuf *pixbuf;
-  gchar *css_fg;
-  gchar *css_success;
-  gchar *css_warning;
-  gchar *css_error;
   gchar *data;
   gchar *svg_width, *svg_height;
   gchar *escaped_file_data;
 
-  css_fg = gdk_rgba_to_string (fg);
-
-  css_success = css_warning = css_error = NULL;
-
-  css_warning = gdk_rgba_to_string (warning_color);
-  css_error = gdk_rgba_to_string (error_color);
-  css_success = gdk_rgba_to_string (success_color);
-
   /* Fetch size from the original icon */
   stream = g_memory_input_stream_new_from_data (file_data, file_len, NULL);
   pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);
@@ -105,10 +92,6 @@ load_symbolic_svg (char *file_data, gsize file_len,
                       "</svg>",
                       NULL);
   g_free (escaped_file_data);
-  g_free (css_fg);
-  g_free (css_warning);
-  g_free (css_error);
-  g_free (css_success);
   g_free (svg_width);
   g_free (svg_height);
 
@@ -167,7 +150,8 @@ make_symbolic_pixbuf (char *file,
                       GError        **error)
 
 {
-  GdkRGBA r = { 1,0,0,1}, g = {0,1,0,1};
+  const char r[] = "rgba(255,0,0,1)";
+  const char g[] = "rgba(0,255,0,1)";
   GdkPixbuf *loaded;
   GdkPixbuf *pixbuf;
   int plane;
@@ -196,10 +180,10 @@ make_symbolic_pixbuf (char *file,
        * the "rest", as all color fractions should add up to 1.
        */
       loaded = load_symbolic_svg (file_data, file_len, width, height,
-                                  &g,
-                                  plane == 0 ? &r : &g,
-                                  plane == 1 ? &r : &g,
-                                  plane == 2 ? &r : &g,
+                                  g,
+                                  plane == 0 ? r : g,
+                                  plane == 1 ? r : g,
+                                  plane == 2 ? r : g,
                                   error);
       if (loaded == NULL)
         return NULL;
-- 
2.1.4

