gboolean gimp_drawable_bucket_fill (GimpDrawable *drawable, GimpContext *context, GimpBucketFillMode fill_mode, gint paint_mode, gdouble opacity, gboolean fill_transparent, GimpSelectCriterion fill_criterion, gdouble threshold, gboolean sample_merged, gdouble x, gdouble y, GError **error) { GimpRGB color = { 0, }; GimpPattern *pattern = NULL; g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE); g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); if (fill_mode == GIMP_BUCKET_FILL_FG) { gimp_context_get_foreground (context, &color); } else if (fill_mode == GIMP_BUCKET_FILL_BG) { gimp_context_get_background (context, &color); } else if (fill_mode == GIMP_BUCKET_FILL_PATTERN) { pattern = gimp_context_get_pattern (context); if (! pattern) { g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED, _("No patterns available for this operation.")); return FALSE; } } else { g_warning ("%s: invalid fill_mode passed", G_STRFUNC); return FALSE; } gimp_drawable_bucket_fill_internal (drawable, fill_mode, paint_mode, opacity, fill_transparent, fill_criterion, threshold, sample_merged, x, y, &color, pattern); return TRUE; }
gboolean gimp_drawable_bucket_fill (GimpDrawable *drawable, GimpContext *context, GimpFillType fill_type, gint paint_mode, gdouble opacity, gboolean fill_transparent, GimpSelectCriterion fill_criterion, gdouble threshold, gboolean sample_merged, gboolean diagonal_neighbors, gdouble x, gdouble y, GError **error) { GimpPattern *pattern; GimpRGB color; g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE); g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); if (! gimp_get_fill_params (context, fill_type, &color, &pattern, error)) return FALSE; gimp_palettes_add_color_history (context->gimp, &color); gimp_drawable_bucket_fill_internal (drawable, fill_type, paint_mode, opacity, fill_transparent, fill_criterion, threshold, sample_merged, diagonal_neighbors, x, y, &color, pattern); return TRUE; }