void gimp_value_set_rgb (GValue *value, const GimpRGB *rgb) { g_return_if_fail (GIMP_VALUE_HOLDS_RGB (value)); g_return_if_fail (rgb != NULL); g_value_set_boxed (value, rgb); }
void gimp_value_get_rgb (const GValue *value, GimpRGB *rgb) { g_return_if_fail (GIMP_VALUE_HOLDS_RGB (value)); g_return_if_fail (rgb != NULL); if (value->data[0].v_pointer) *rgb = *((GimpRGB *) value->data[0].v_pointer); else gimp_rgba_set (rgb, 0.0, 0.0, 0.0, 1.0); }
gint64 gimp_g_value_get_memsize (GValue *value) { gint64 memsize = 0; if (! value) return 0; if (G_VALUE_HOLDS_STRING (value)) { memsize += gimp_string_get_memsize (g_value_get_string (value)); } else if (G_VALUE_HOLDS_BOXED (value)) { if (GIMP_VALUE_HOLDS_RGB (value)) { memsize += sizeof (GimpRGB); } else if (GIMP_VALUE_HOLDS_MATRIX2 (value)) { memsize += sizeof (GimpMatrix2); } else if (GIMP_VALUE_HOLDS_PARASITE (value)) { memsize += gimp_parasite_get_memsize (g_value_get_boxed (value), NULL); } else if (GIMP_VALUE_HOLDS_ARRAY (value) || GIMP_VALUE_HOLDS_INT8_ARRAY (value) || GIMP_VALUE_HOLDS_INT16_ARRAY (value) || GIMP_VALUE_HOLDS_INT32_ARRAY (value) || GIMP_VALUE_HOLDS_FLOAT_ARRAY (value)) { GimpArray *array = g_value_get_boxed (value); if (array) memsize += (sizeof (GimpArray) + array->static_data ? 0 : array->length); } else if (GIMP_VALUE_HOLDS_STRING_ARRAY (value)) { GimpArray *array = g_value_get_boxed (value); if (array) { memsize += sizeof (GimpArray); if (! array->static_data) { gchar **tmp = (gchar **) array->data; gint i; memsize += array->length * sizeof (gchar *); for (i = 0; i < array->length; i++) memsize += gimp_string_get_memsize (tmp[i]); } } } else { g_printerr ("%s: unhandled boxed value type: %s\n", G_STRFUNC, G_VALUE_TYPE_NAME (value)); } } else if (G_VALUE_HOLDS_OBJECT (value)) { g_printerr ("%s: unhandled object value type: %s\n", G_STRFUNC, G_VALUE_TYPE_NAME (value)); } return memsize + sizeof (GValue); }