void context_foreground_green_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpRGB color; return_if_no_context (context, data); gimp_context_get_foreground (context, &color); color.g = action_select_value ((GimpActionSelectType) value, color.g, 0.0, 1.0, 1.0, 1.0 / 255.0, 0.01, 0.1, 0.0, FALSE); gimp_context_set_foreground (context, &color); }
void select_stroke_last_vals_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpDrawable *drawable; GimpContext *context; GtkWidget *widget; GimpStrokeOptions *options; GError *error = NULL; return_if_no_image (image, data); return_if_no_context (context, data); return_if_no_widget (widget, data); drawable = gimp_image_get_active_drawable (image); if (! drawable) { gimp_message_literal (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING, _("There is no active layer or channel to stroke to.")); return; } options = g_object_get_data (G_OBJECT (image->gimp), "saved-stroke-options"); if (options) g_object_ref (options); else options = gimp_stroke_options_new (image->gimp, context, TRUE); if (! gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (image)), drawable, context, options, NULL, TRUE, NULL, &error)) { gimp_message_literal (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING, error->message); g_clear_error (&error); } else { gimp_image_flush (image); } g_object_unref (options); }
void vectors_stroke_last_vals_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpVectors *vectors; GimpDrawable *drawable; GimpContext *context; GtkWidget *widget; GimpStrokeDesc *desc; GError *error = NULL; return_if_no_vectors (image, vectors, data); return_if_no_context (context, data); return_if_no_widget (widget, data); drawable = gimp_image_get_active_drawable (image); if (! drawable) { gimp_message (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING, _("There is no active layer or channel to stroke to.")); return; } desc = g_object_get_data (G_OBJECT (image->gimp), "saved-stroke-desc"); if (desc) g_object_ref (desc); else desc = gimp_stroke_desc_new (image->gimp, context); if (! gimp_item_stroke (GIMP_ITEM (vectors), drawable, context, desc, FALSE, NULL, &error)) { gimp_message (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING, "%s", error->message); g_clear_error (&error); } else { gimp_image_flush (image); } g_object_unref (desc); }
void drawable_flip_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpImage *image; GimpDrawable *drawable; GimpItem *item; GimpContext *context; gint off_x, off_y; gdouble axis = 0.0; return_if_no_drawable (image, drawable, data); return_if_no_context (context, data); item = GIMP_ITEM (drawable); gimp_item_get_offset (item, &off_x, &off_y); switch ((GimpOrientationType) value) { case GIMP_ORIENTATION_HORIZONTAL: axis = ((gdouble) off_x + (gdouble) gimp_item_get_width (item) / 2.0); break; case GIMP_ORIENTATION_VERTICAL: axis = ((gdouble) off_y + (gdouble) gimp_item_get_height (item) / 2.0); break; default: break; } if (gimp_item_get_linked (item)) { gimp_item_linked_flip (item, context, (GimpOrientationType) value, axis, FALSE); } else { gimp_item_flip (item, context, (GimpOrientationType) value, axis, FALSE); } gimp_image_flush (image); }
void tools_fg_select_brush_size_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_FOREGROUND_SELECT_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, G_OBJECT (tool_info->tool_options), "stroke-width", 1.0, 4.0, 16.0, FALSE); } }
void tools_ink_blob_angle_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_INK_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, G_OBJECT (tool_info->tool_options), "blob-angle", 1.0, 1.0, 15.0, TRUE); } }
void tools_paint_brush_scale_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_PAINT_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, G_OBJECT (tool_info->tool_options), "brush-scale", 0.01, 0.1, 1.0, FALSE); } }
void tools_color_average_radius_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_COLOR_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, G_OBJECT (tool_info->tool_options), "average-radius", 1.0, 1.0, 10.0, FALSE); } }
void tools_toggle_visibility_cmd_callback (GtkAction *action, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info) { gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); if (active != tool_info->visible) g_object_set (tool_info, "visible", active, NULL); } }
void context_background_value_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpRGB color; GimpHSV hsv; return_if_no_context (context, data); gimp_context_get_background (context, &color); gimp_rgb_to_hsv (&color, &hsv); hsv.v = action_select_value ((GimpActionSelectType) value, hsv.v, 0.0, 1.0, 1.0, 0.01, 0.01, 0.1, 0.0, FALSE); gimp_hsv_to_rgb (&hsv, &color); gimp_context_set_background (context, &color); }
void tools_paintbrush_aspect_ratio_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_PAINT_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, action_data_get_display (data), G_OBJECT (tool_info->tool_options), "brush-aspect-ratio", 0.01, 0.1, 1.0, 0.1, TRUE); } }
void tools_transform_preview_opacity_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_TRANSFORM_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, action_data_get_display (data), G_OBJECT (tool_info->tool_options), "preview-opacity", 0.01, 0.1, 0.5, 0.1, FALSE); } }
void context_brush_spacing_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpBrush *brush; return_if_no_context (context, data); brush = gimp_context_get_brush (context); if (GIMP_IS_BRUSH (brush) && gimp_data_is_writable (GIMP_DATA (brush))) { action_select_property ((GimpActionSelectType) value, action_data_get_display (data), G_OBJECT (brush), "spacing", 1.0, 5.0, 20.0, 0.1, FALSE); } }
void tools_warp_effect_size_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_WARP_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, action_data_get_display (data), G_OBJECT (tool_info->tool_options), "effect-size", 1.0, 4.0, 16.0, 0.1, FALSE); } }
void tools_mybrush_radius_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_MYBRUSH_OPTIONS (tool_info->tool_options)) { action_select_property ((GimpActionSelectType) value, action_data_get_display (data), G_OBJECT (tool_info->tool_options), "radius", 0.1, 0.1, 0.5, 1.0, FALSE); } }
void context_brush_angle_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpBrush *brush; return_if_no_context (context, data); brush = gimp_context_get_brush (context); if (GIMP_IS_BRUSH_GENERATED (brush) && gimp_data_is_writable (GIMP_DATA (brush))) { GimpBrushGenerated *generated = GIMP_BRUSH_GENERATED (brush); GimpDisplay *display; gdouble angle; angle = gimp_brush_generated_get_angle (generated); if (value == GIMP_ACTION_SELECT_FIRST) angle = 0.0; else if (value == GIMP_ACTION_SELECT_LAST) angle = 90.0; else angle = action_select_value ((GimpActionSelectType) value, angle, 0.0, 180.0, 0.0, 0.1, 1.0, 15.0, 0.1, TRUE); gimp_brush_generated_set_angle (generated, angle); display = action_data_get_display (data); if (display) { action_message (action_data_get_display (data), G_OBJECT (brush), _("Brush Angle: %2.2f"), angle); } } }
void tools_object_2_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpTool *tool; return_if_no_context (context, data); tool = tool_manager_get_active (context->gimp); if (tool) { const gchar *action_desc; action_desc = gimp_tool_control_get_action_object_2 (tool->control); if (action_desc) tools_activate_enum_action (action_desc, value); } }
void context_paint_mode_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; GimpLayerModeEffects paint_mode; gint index; return_if_no_context (context, data); paint_mode = gimp_context_get_paint_mode (context); index = action_select_value ((GimpActionSelectType) value, context_paint_mode_index (paint_mode), 0, G_N_ELEMENTS (paint_modes) - 1, 0, 0.0, 1.0, 1.0, 0.0, FALSE); gimp_context_set_paint_mode (context, paint_modes[index]); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_TOOL_OPTIONS (tool_info->tool_options)) { GimpDisplay *display; const char *value_desc; gimp_enum_get_value (GIMP_TYPE_LAYER_MODE_EFFECTS, index, NULL, NULL, &value_desc, NULL); display = action_data_get_display (data); if (value_desc && display) { action_message (display, G_OBJECT (tool_info->tool_options), _("Paint Mode: %s"), value_desc); } } }
void drawable_rotate_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpImage *image; GimpDrawable *drawable; GimpContext *context; GimpItem *item; gint off_x, off_y; gdouble center_x, center_y; gboolean clip_result = FALSE; return_if_no_drawable (image, drawable, data); return_if_no_context (context, data); item = GIMP_ITEM (drawable); gimp_item_get_offset (item, &off_x, &off_y); center_x = ((gdouble) off_x + (gdouble) gimp_item_get_width (item) / 2.0); center_y = ((gdouble) off_y + (gdouble) gimp_item_get_height (item) / 2.0); if (GIMP_IS_CHANNEL (item)) clip_result = TRUE; if (gimp_item_get_linked (item)) { gimp_item_linked_rotate (item, context, (GimpRotationType) value, center_x, center_y, FALSE); } else { gimp_item_rotate (item, context, (GimpRotationType) value, center_x, center_y, clip_result); } gimp_image_flush (image); }
void colormap_add_color_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpImage *image; return_if_no_context (context, data); return_if_no_image (image, data); if (gimp_image_get_colormap_size (image) < 256) { GimpRGB color; if (value) gimp_context_get_background (context, &color); else gimp_context_get_foreground (context, &color); gimp_image_add_colormap_entry (image, &color); gimp_image_flush (image); } }
void tools_raise_to_top_cmd_callback (GtkAction *action, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info) { GimpContainer *container; gint index; container = context->gimp->tool_info_list; index = gimp_container_get_child_index (container, GIMP_OBJECT (tool_info)); if (index > 0) gimp_container_reorder (container, GIMP_OBJECT (tool_info), 0); } }
void tools_lower_to_bottom_cmd_callback (GtkAction *action, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; return_if_no_context (context, data); tool_info = gimp_context_get_tool (context); if (tool_info) { GimpContainer *container; gint index; container = context->gimp->tool_info_list; index = gimp_container_num_children (container) - 1; index = index >= 0 ? index : 0; gimp_container_reorder (container, GIMP_OBJECT (tool_info), index); } }
void select_stroke_last_vals_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpDrawable *drawable; GimpContext *context; GtkWidget *widget; GimpStrokeDesc *desc; return_if_no_image (image, data); return_if_no_context (context, data); return_if_no_widget (widget, data); drawable = gimp_image_get_active_drawable (image); if (! drawable) { gimp_message (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING, _("There is no active layer or channel to stroke to.")); return; } desc = g_object_get_data (G_OBJECT (image->gimp), "saved-stroke-desc"); if (desc) g_object_ref (desc); else desc = gimp_stroke_desc_new (image->gimp, context); gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (image)), drawable, context, desc, FALSE, NULL); g_object_unref (desc); gimp_image_flush (image); }