|
@@ -98,6 +98,22 @@ create_transformation_matrix (UfoAnkaBackprojectTaskPrivate *priv, float tomo_an
|
|
|
priv->tmatrix[7] = EXTRACT_FLOAT (priv->center, 1) - EXTRACT_INT (priv->projection_offset, 1);
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+set_region (GValueArray *src, GValueArray **dst)
|
|
|
+{
|
|
|
+ if (EXTRACT_INT (src, 0) > EXTRACT_INT (src, 1)) {
|
|
|
+ g_log ("Ufo", G_LOG_LEVEL_CRITICAL,
|
|
|
+ "Error <%s:%i>: Invalid region [\"from\", \"to\", \"step\"]: [%d, %d, %d], "\
|
|
|
+ "\"from\" has to be less than or equal to \"to\"",
|
|
|
+ __FILE__, __LINE__,
|
|
|
+ EXTRACT_INT (src, 0), EXTRACT_INT (src, 1), EXTRACT_INT (src, 2));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ g_value_array_free (*dst);
|
|
|
+ *dst = g_value_array_copy (src);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
UfoNode *
|
|
|
ufo_anka_backproject_task_new (void)
|
|
|
{
|
|
@@ -295,18 +311,15 @@ ufo_anka_backproject_task_set_property (GObject *object,
|
|
|
switch (property_id) {
|
|
|
case PROP_X_REGION:
|
|
|
array = (GValueArray *) g_value_get_boxed (value);
|
|
|
- g_value_array_free (priv->x_region);
|
|
|
- priv->x_region = g_value_array_copy (array);
|
|
|
+ set_region (array, &priv->x_region);
|
|
|
break;
|
|
|
case PROP_Y_REGION:
|
|
|
array = (GValueArray *) g_value_get_boxed (value);
|
|
|
- g_value_array_free (priv->y_region);
|
|
|
- priv->y_region = g_value_array_copy (array);
|
|
|
+ set_region (array, &priv->y_region);
|
|
|
break;
|
|
|
case PROP_Z_REGION:
|
|
|
array = (GValueArray *) g_value_get_boxed (value);
|
|
|
- g_value_array_free (priv->z_region);
|
|
|
- priv->z_region = g_value_array_copy (array);
|
|
|
+ set_region (array, &priv->z_region);
|
|
|
break;
|
|
|
case PROP_PROJECTION_OFFSET:
|
|
|
array = (GValueArray *) g_value_get_boxed (value);
|