GimpSymmetry * gimp_symmetry_from_parasite (const GimpParasite *parasite, GimpImage *image, GType type) { GimpSymmetry *symmetry; gchar *parasite_name; const gchar *str; GError *error = NULL; parasite_name = gimp_symmetry_parasite_name (type); g_return_val_if_fail (parasite != NULL, NULL); g_return_val_if_fail (strcmp (gimp_parasite_name (parasite), parasite_name) == 0, NULL); g_free (parasite_name); str = gimp_parasite_data (parasite); g_return_val_if_fail (str != NULL, NULL); symmetry = gimp_image_symmetry_new (image, type); if (! gimp_config_deserialize_string (GIMP_CONFIG (symmetry), str, gimp_parasite_data_size (parasite), NULL, &error)) { g_warning ("Failed to deserialize symmetry parasite: %s", error->message); g_error_free (error); } return symmetry; }
GimpSymmetry * gimp_symmetry_from_parasite (const GimpParasite *parasite, GimpImage *image, GType type) { GimpSymmetry *symmetry; gchar *parasite_name; const gchar *str; GError *error = NULL; parasite_name = gimp_symmetry_parasite_name (type); g_return_val_if_fail (parasite != NULL, NULL); g_return_val_if_fail (strcmp (gimp_parasite_name (parasite), parasite_name) == 0, NULL); str = gimp_parasite_data (parasite); if (! str) { g_warning ("Empty symmetry parasite \"%s\"", parasite_name); return NULL; } symmetry = gimp_image_symmetry_new (image, type); g_object_set (symmetry, "version", -1, NULL); if (! gimp_config_deserialize_string (GIMP_CONFIG (symmetry), str, gimp_parasite_data_size (parasite), NULL, &error)) { g_printerr ("Failed to deserialize symmetry parasite: %s\n" "\t- parasite name: %s\n\t- parasite data: %s\n", error->message, parasite_name, str); g_error_free (error); g_object_unref (symmetry); symmetry = NULL; } g_free (parasite_name); if (symmetry) { gint version; g_object_get (symmetry, "version", &version, NULL); if (version == -1) { /* If version has not been updated, let's assume this parasite was * not representing symmetry settings. */ g_object_unref (symmetry); symmetry = NULL; } else if (GIMP_SYMMETRY_GET_CLASS (symmetry)->update_version (symmetry) && ! GIMP_SYMMETRY_GET_CLASS (symmetry)->update_version (symmetry)) { g_object_unref (symmetry); symmetry = NULL; } } return symmetry; }