[librsvg] handle: move is_loaded to rust



commit f3bde8ff35e74115ce9e4ba0ef4496ced0ec7591
Author: Paolo Borelli <pborelli gnome org>
Date:   Sat Dec 29 12:39:26 2018 +0100

    handle: move is_loaded to rust

 librsvg/rsvg-handle.c        | 41 ++++++++---------------------------------
 rsvg_internals/src/handle.rs | 29 +++++++++++++++++++++++++++++
 rsvg_internals/src/lib.rs    |  1 +
 3 files changed, 38 insertions(+), 33 deletions(-)
---
diff --git a/librsvg/rsvg-handle.c b/librsvg/rsvg-handle.c
index ee790c8c..eee914f3 100644
--- a/librsvg/rsvg-handle.c
+++ b/librsvg/rsvg-handle.c
@@ -162,6 +162,7 @@ extern GFile *rsvg_handle_rust_get_base_gfile (RsvgHandleRust *raw_handle);
 extern guint rsvg_handle_rust_get_flags (RsvgHandleRust *raw_handle);
 extern void rsvg_handle_rust_set_flags (RsvgHandleRust *raw_handle, guint flags);
 extern RsvgHandleState rsvg_handle_rust_get_load_state (RsvgHandleRust *raw_handle);
+extern gboolean rsvg_handle_rust_is_loaded (RsvgHandle *handle);
 extern gboolean rsvg_handle_rust_read_stream_sync (RsvgHandle *handle,
                                                    GInputStream *stream,
                                                    GCancellable *cancellable,
@@ -967,32 +968,6 @@ rsvg_handle_get_rust (RsvgHandle *handle)
     return handle->priv->rust_handle;
 }
 
-static gboolean
-is_loaded (RsvgHandle *handle)
-{
-    switch (rsvg_handle_rust_get_load_state (handle->priv->rust_handle)) {
-    case RSVG_HANDLE_STATE_START:
-        g_warning ("RsvgHandle has not been loaded");
-        return FALSE;
-
-    case RSVG_HANDLE_STATE_LOADING:
-        g_warning ("RsvgHandle is still loading; call rsvg_handle_close() first");
-        return FALSE;
-
-    case RSVG_HANDLE_STATE_CLOSED_OK:
-        return TRUE;
-
-    case RSVG_HANDLE_STATE_CLOSED_ERROR:
-        g_warning ("RsvgHandle could not read or parse the SVG; did you check for errors\n"
-                   "during the loading stage?");
-        return FALSE;
-
-    default:
-        g_assert_not_reached();
-        return FALSE;
-    }
-}
-
 /**
  * rsvg_handle_render_cairo_sub:
  * @handle: A #RsvgHandle
@@ -1015,7 +990,7 @@ rsvg_handle_render_cairo_sub (RsvgHandle * handle, cairo_t * cr, const char *id)
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
     g_return_val_if_fail (cr != NULL, FALSE);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return FALSE;
     }
 
@@ -1056,7 +1031,7 @@ rsvg_handle_get_dimensions (RsvgHandle * handle, RsvgDimensionData * dimension_d
     g_return_if_fail (RSVG_IS_HANDLE (handle));
     g_return_if_fail (dimension_data != NULL);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return;
     }
 
@@ -1096,7 +1071,7 @@ rsvg_handle_get_dimensions_sub (RsvgHandle * handle, RsvgDimensionData * dimensi
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
     g_return_val_if_fail (dimension_data, FALSE);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return FALSE;
     }
 
@@ -1138,7 +1113,7 @@ rsvg_handle_get_geometry_sub (RsvgHandle * handle, RsvgRectangle * ink_rect, Rsv
 {
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return FALSE;
     }
 
@@ -1168,7 +1143,7 @@ rsvg_handle_get_position_sub (RsvgHandle * handle, RsvgPositionData * position_d
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
     g_return_val_if_fail (position_data != NULL, FALSE);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return FALSE;
     }
 
@@ -1210,7 +1185,7 @@ rsvg_handle_has_sub (RsvgHandle *handle,
 {
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), FALSE);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return FALSE;
     }
 
@@ -1244,7 +1219,7 @@ rsvg_handle_get_pixbuf_sub (RsvgHandle * handle, const char *id)
 {
     g_return_val_if_fail (RSVG_IS_HANDLE (handle), NULL);
 
-    if (!is_loaded (handle)) {
+    if (!rsvg_handle_rust_is_loaded (handle)) {
         return NULL;
     }
 
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index 806c91ec..12d25224 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -821,6 +821,35 @@ pub unsafe extern "C" fn rsvg_handle_rust_get_load_state(raw_handle: *const Hand
     rhandle.load_state.get()
 }
 
+#[no_mangle]
+pub unsafe extern "C" fn rsvg_handle_rust_is_loaded(
+    handle: *const RsvgHandle,
+) -> glib_sys::gboolean {
+    let rhandle = get_rust_handle(handle);
+
+    match rhandle.load_state.get() {
+        LoadState::Start => {
+            rsvg_g_warning("RsvgHandle has not been loaded");
+            false.to_glib()
+        }
+
+        LoadState::Loading => {
+            rsvg_g_warning("RsvgHandle is still loading; call rsvg_handle_close() first");
+            false.to_glib()
+        }
+
+        LoadState::ClosedOk => true.to_glib(),
+
+        LoadState::ClosedError => {
+            rsvg_g_warning(
+                "RsvgHandle could not read or parse the SVG; did you check for errors during the \
+                 loading stage?",
+            );
+            false.to_glib()
+        }
+    }
+}
+
 #[no_mangle]
 pub unsafe extern "C" fn rsvg_handle_rust_read_stream_sync(
     handle: *mut RsvgHandle,
diff --git a/rsvg_internals/src/lib.rs b/rsvg_internals/src/lib.rs
index f8a66c23..33901690 100644
--- a/rsvg_internals/src/lib.rs
+++ b/rsvg_internals/src/lib.rs
@@ -47,6 +47,7 @@ pub use handle::{
     rsvg_handle_rust_get_load_state,
     rsvg_handle_rust_get_pixbuf_sub,
     rsvg_handle_rust_has_sub,
+    rsvg_handle_rust_is_loaded,
     rsvg_handle_rust_new,
     rsvg_handle_rust_read_stream_sync,
     rsvg_handle_rust_render_cairo_sub,


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