- g_slice_free (GtkBorderImage, image);
- }
-}
-
-GParameter *
-_gtk_border_image_unpack (const GValue *value,
- guint *n_params)
-{
- GParameter *parameter = g_new0 (GParameter, 4);
- GtkBorderImage *image = g_value_get_boxed (value);
-
- parameter[0].name = "border-image-source";
-
- if ((image != NULL) &&
- (image->source_gradient != NULL))
- g_value_init (¶meter[0].value, GTK_TYPE_GRADIENT);
- else
- g_value_init (¶meter[0].value, CAIRO_GOBJECT_TYPE_PATTERN);
-
- parameter[1].name = "border-image-slice";
- g_value_init (¶meter[1].value, GTK_TYPE_BORDER);
-
- parameter[2].name = "border-image-repeat";
- g_value_init (¶meter[2].value, GTK_TYPE_CSS_BORDER_IMAGE_REPEAT);
-
- parameter[3].name = "border-image-width";
- g_value_init (¶meter[3].value, GTK_TYPE_BORDER);
-
- if (image != NULL)
- {
- if (image->source_gradient != NULL)
- g_value_set_boxed (¶meter[0].value, image->source_gradient);
- else
- g_value_set_boxed (¶meter[0].value, image->source);
-
- g_value_set_boxed (¶meter[1].value, &image->slice);
- g_value_set_boxed (¶meter[2].value, &image->repeat);
- g_value_set_boxed (¶meter[3].value, image->width);
- }
-
- *n_params = 4;
- return parameter;
-}
-
-void
-_gtk_border_image_pack (GValue *value,
- GtkStyleProperties *props,
- GtkStateFlags state)
-{
- GtkBorderImage *image;
- cairo_pattern_t *source;
- GtkBorder *slice, *width;
- GtkCssBorderImageRepeat *repeat;
-
- gtk_style_properties_get (props, state,
- "border-image-source", &source,
- "border-image-slice", &slice,
- "border-image-repeat", &repeat,
- "border-image-width", &width,
- NULL);
-
- if (source == NULL)
- {
- g_value_take_boxed (value, NULL);
- }
- else
- {
- image = _gtk_border_image_new (source, slice, width, repeat);
- g_value_take_boxed (value, image);
-
- cairo_pattern_destroy (source);
- }
-
- if (slice != NULL)
- gtk_border_free (slice);
-
- if (width != NULL)
- gtk_border_free (width);
-
- if (repeat != NULL)
- g_free (repeat);