[sushi] font-loader: add a synchronous version of new_ft_face_from_uri()



commit 91376f5d8903030401ff1cad6944c40cf1dfb00b
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Fri Apr 27 18:41:22 2012 -0400

    font-loader: add a synchronous version of new_ft_face_from_uri()
    
    This will be needed for gnome-font-viewer.

 src/libsushi/sushi-font-loader.c |   50 +++++++++++++++++++++++++++++++-------
 src/libsushi/sushi-font-loader.h |    5 ++++
 2 files changed, 46 insertions(+), 9 deletions(-)
---
diff --git a/src/libsushi/sushi-font-loader.c b/src/libsushi/sushi-font-loader.c
index 6bb6ac3..45481c6 100644
--- a/src/libsushi/sushi-font-loader.c
+++ b/src/libsushi/sushi-font-loader.c
@@ -109,6 +109,22 @@ font_load_job_callback (gpointer user_data)
   return FALSE;
 }
 
+static void
+font_load_job_do_load (FontLoadJob *job,
+                       GError **error)
+{
+  gchar *contents;
+  gsize length;
+
+  g_file_load_contents (job->file, NULL,
+                        &contents, &length, NULL, error);
+
+  if (*error == NULL) {
+    job->face_contents = contents;
+    job->face_length = length;
+  }
+}
+
 static gboolean
 font_load_job (GIOSchedulerJob *sched_job,
                GCancellable *cancellable,
@@ -116,18 +132,11 @@ font_load_job (GIOSchedulerJob *sched_job,
 {
   FontLoadJob *job = user_data;
   GError *error = NULL;
-  gchar *contents;
-  gsize length;
 
-  g_file_load_contents (job->file, NULL,
-                        &contents, &length, NULL, &error);
+  font_load_job_do_load (job, &error);
 
-  if (error != NULL) {
+  if (error != NULL)
     g_simple_async_result_take_error (job->result, error);
-  } else {
-    job->face_contents = contents;
-    job->face_length = length;
-  }
 
   g_io_scheduler_job_send_to_mainloop_async (sched_job,
                                              font_load_job_callback,
@@ -137,6 +146,29 @@ font_load_job (GIOSchedulerJob *sched_job,
 }
 
 /**
+ * sushi_new_ft_face_from_uri: (skip)
+ *
+ */
+FT_Face
+sushi_new_ft_face_from_uri (FT_Library library,
+                            const gchar *uri,
+                            gchar **contents,
+                            GError **error)
+{
+  FontLoadJob *job = NULL;
+
+  job = font_load_job_new (library, uri, NULL, NULL);
+  font_load_job_do_load (job, error);
+
+  if (*error != NULL) {
+    g_object_unref (job);
+    return NULL;
+  }
+
+  return create_face_from_contents (job, contents, error);
+}
+
+/**
  * sushi_new_ft_face_from_uri_async: (skip)
  *
  */
diff --git a/src/libsushi/sushi-font-loader.h b/src/libsushi/sushi-font-loader.h
index 98cb967..cb3e4f7 100644
--- a/src/libsushi/sushi-font-loader.h
+++ b/src/libsushi/sushi-font-loader.h
@@ -32,6 +32,11 @@
 #include FT_FREETYPE_H
 #include <gio/gio.h>
 
+FT_Face sushi_new_ft_face_from_uri (FT_Library library,
+                                    const gchar *uri,
+                                    gchar **contents,
+                                    GError **error);
+
 void sushi_new_ft_face_from_uri_async (FT_Library library,
                                        const gchar *uri,
                                        GAsyncReadyCallback callback,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]