Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
masks_gui.c File Reference
#include "common/darktable.h"
#include "develop/masks.h"
#include "bauhaus/bauhaus.h"
#include "common/debug.h"
#include "control/signal.h"
#include "develop/imageop_gui.h"
#include "dtgtk/button.h"
#include "dtgtk/paint.h"
#include "gui/actions/menu.h"
#include "gui/draw.h"
#include "gui/gtk.h"
#include <math.h>
#include <stdlib.h>
+ Include dependency graph for masks_gui.c:

Go to the source code of this file.

Data Structures

struct  dt_masks_shape_button_def_t
 
struct  dt_masks_shape_buttons_data_t
 
struct  dt_masks_gui_interaction_slider_t
 

Macros

#define DT_MASKS_SHAPE_BUTTON_COUNT   5
 
#define masks_gtk_menu_item_new_bold(label, selected, state, icon)
 

Typedefs

typedef struct dt_masks_shape_button_def_t dt_masks_shape_button_def_t
 
typedef struct dt_masks_shape_buttons_data_t dt_masks_shape_buttons_data_t
 
typedef struct dt_masks_gui_interaction_slider_t dt_masks_gui_interaction_slider_t
 

Functions

static void _masks_shape_buttons_deactivate (GtkWidget *active_button, dt_masks_shape_buttons_data_t *data)
 
static void _masks_shape_buttons_deactivate_signal (gpointer instance, GtkWidget *active_button, dt_masks_shape_buttons_data_t *data)
 
void dt_masks_shape_buttons_deactivate_all (GtkWidget *active_button)
 
static int _masks_shape_button_index (const dt_masks_shape_buttons_data_t *data, GtkWidget *button)
 
static gboolean _masks_shape_button_is_current_creation (const dt_masks_shape_buttons_data_t *data, const int button_index)
 
static gboolean _masks_shape_button_pressed (GtkWidget *button, GdkEventButton *event, gpointer user_data)
 
static void _masks_shape_buttons_destroy (GtkWidget *widget, dt_masks_shape_buttons_data_t *data)
 
GtkWidgetdt_masks_shape_buttons_create (const dt_masks_shape_buttons_config_t *config)
 Build a synchronized toolbar for creating masks shapes.
 
static void _masks_gui_interaction_commit (dt_masks_gui_interaction_slider_t *data)
 
static void _masks_gui_interaction_apply_value (dt_masks_gui_interaction_slider_t *data, float value)
 
static void _masks_gui_menu_item_block_activate (GtkWidget *widget, gpointer user_data)
 
static gboolean _masks_gui_menu_item_forward_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
static void _masks_gui_interaction_slider_changed (GtkWidget *widget, gpointer user_data)
 
static GtkWidget_masks_gui_add_interaction_slider (GtkWidget *menu, const char *label, dt_masks_form_group_t *form_group, dt_masks_interaction_t interaction, dt_masks_increment_t increment, float min, float max, float step, float value, int digits, const char *format, float factor, dt_masks_form_gui_t *gui, dt_iop_module_t *module)
 
int dt_masks_gui_confirm_delete_form_dialog (const char *form_name)
 
static void _masks_gui_delete_form_callback (GtkWidget *menu, gpointer user_data)
 
void _masks_gui_delete_node_callback (GtkWidget *menu, gpointer user_data)
 
static void _masks_gui_exit_creation_callback (GtkWidget *menu, gpointer user_data)
 
static void _masks_move_up_down_callback (gpointer user_data, const int up)
 
static void _masks_moveup_callback (GtkWidget *menu, gpointer user_data)
 
static void _masks_movedown_callback (GtkWidget *menu, gpointer user_data)
 
static void _masks_operation_callback (GtkWidget *menu, gpointer user_data)
 
GtkWidgetdt_masks_create_menu (dt_masks_form_gui_t *gui, dt_masks_form_t *form, const dt_masks_form_group_t *formgroup, const float pzx, const float pzy)
 

Variables

static const dt_masks_shape_button_def_t _masks_shape_button_defs []
 

Macro Definition Documentation

◆ DT_MASKS_SHAPE_BUTTON_COUNT

#define DT_MASKS_SHAPE_BUTTON_COUNT   5

Definition at line 34 of file masks_gui.c.

◆ masks_gtk_menu_item_new_bold

#define masks_gtk_menu_item_new_bold (   label,
  selected,
  state,
  icon 
)
Value:
{ \
gchar *op_label = g_strdup(label); \
sub_menu, \
(selected != 0), \
dt_free(op_label); \
op_label = NULL; \
g_object_set_data(G_OBJECT(menu_item), "state_op", GINT_TO_POINTER(state)); \
g_object_set_data(G_OBJECT(menu_item), "op_form", op_form); \
g_object_set_data(G_OBJECT(menu_item), "form_pos", GINT_TO_POINTER(form_pos)); \
}
@ DT_MASKS_STATE_INVERSE
Definition masks.h:170
static void _masks_operation_callback(GtkWidget *menu, gpointer user_data)
Definition masks_gui.c:565
GtkWidget * ctx_gtk_check_menu_item_new_with_markup_and_pixbuf(const char *label, GdkPixbuf *icon, GtkWidget *menu, void(*activate_callback)(GtkWidget *widget, gpointer user_data), gpointer user_data, const gboolean checked, const gboolean show_checkbox)
Definition menu.c:283
const float uint32_t state[4]

Definition at line 587 of file masks_gui.c.

Typedef Documentation

◆ dt_masks_gui_interaction_slider_t

◆ dt_masks_shape_button_def_t

◆ dt_masks_shape_buttons_data_t

Function Documentation

◆ _masks_gui_add_interaction_slider()

◆ _masks_gui_delete_form_callback()

◆ _masks_gui_delete_node_callback()

◆ _masks_gui_exit_creation_callback()

static void _masks_gui_exit_creation_callback ( GtkWidget menu,
gpointer  user_data 
)
static

Definition at line 525 of file masks_gui.c.

References dt_masks_form_exit_creation().

Referenced by dt_masks_create_menu().

◆ _masks_gui_interaction_apply_value()

◆ _masks_gui_interaction_commit()

◆ _masks_gui_interaction_slider_changed()

static void _masks_gui_interaction_slider_changed ( GtkWidget widget,
gpointer  user_data 
)
static

◆ _masks_gui_menu_item_block_activate()

static void _masks_gui_menu_item_block_activate ( GtkWidget widget,
gpointer  user_data 
)
static

Definition at line 295 of file masks_gui.c.

Referenced by _masks_gui_add_interaction_slider().

◆ _masks_gui_menu_item_forward_event()

static gboolean _masks_gui_menu_item_forward_event ( GtkWidget widget,
GdkEvent *  event,
gpointer  user_data 
)
static

◆ _masks_move_up_down_callback()

◆ _masks_movedown_callback()

static void _masks_movedown_callback ( GtkWidget menu,
gpointer  user_data 
)
static

Definition at line 558 of file masks_gui.c.

References _masks_move_up_down_callback().

Referenced by dt_masks_create_menu().

◆ _masks_moveup_callback()

static void _masks_moveup_callback ( GtkWidget menu,
gpointer  user_data 
)
static

Definition at line 553 of file masks_gui.c.

References _masks_move_up_down_callback().

Referenced by dt_masks_create_menu().

◆ _masks_operation_callback()

◆ _masks_shape_button_index()

static int _masks_shape_button_index ( const dt_masks_shape_buttons_data_t data,
GtkWidget button 
)
static

◆ _masks_shape_button_is_current_creation()

◆ _masks_shape_button_pressed()

◆ _masks_shape_buttons_deactivate()

static void _masks_shape_buttons_deactivate ( GtkWidget active_button,
dt_masks_shape_buttons_data_t data 
)
static

◆ _masks_shape_buttons_deactivate_signal()

static void _masks_shape_buttons_deactivate_signal ( gpointer  instance,
GtkWidget active_button,
dt_masks_shape_buttons_data_t data 
)
static

◆ _masks_shape_buttons_destroy()

static void _masks_shape_buttons_destroy ( GtkWidget widget,
dt_masks_shape_buttons_data_t data 
)
static

◆ dt_masks_create_menu()

GtkWidget * dt_masks_create_menu ( dt_masks_form_gui_t gui,
dt_masks_form_t form,
const dt_masks_form_group_t formgroup,
const float  pzx,
const float  pzy 
)

Definition at line 603 of file masks_gui.c.

References _masks_gui_add_interaction_slider(), _masks_gui_delete_form_callback(), _masks_gui_delete_node_callback(), _masks_gui_exit_creation_callback(), _masks_movedown_callback(), _masks_moveup_callback(), dt_masks_form_gui_t::creation, ctx_gtk_menu_item_new_with_markup(), ctx_gtk_menu_item_new_with_markup_and_pixbuf(), darktable, darktable_t::develop, dt_draw_get_pixbuf_from_cairo(), dt_free, DT_MASKS_BRUSH, DT_MASKS_CIRCLE, DT_MASKS_ELLIPSE, dt_masks_form_get_interaction_value(), dt_masks_form_group_from_parentid(), dt_masks_get_from_id(), DT_MASKS_GRADIENT, DT_MASKS_GROUP, DT_MASKS_INCREMENT_ABSOLUTE, DT_MASKS_INCREMENT_SCALE, DT_MASKS_INTERACTION_HARDNESS, DT_MASKS_INTERACTION_OPACITY, DT_MASKS_INTERACTION_SIZE, DT_MASKS_IS_RETOUCHE, DT_MASKS_POLYGON, DT_MASKS_STATE_DIFFERENCE, DT_MASKS_STATE_EXCLUSION, DT_MASKS_STATE_INTERSECTION, DT_MASKS_STATE_INVERSE, DT_MASKS_STATE_IS_COMBINE_OP, DT_MASKS_STATE_UNION, DT_PIXEL_APPLY_DPI, dtgtk_cairo_paint_masks_difference(), dtgtk_cairo_paint_masks_exclusion(), dtgtk_cairo_paint_masks_intersection(), dtgtk_cairo_paint_masks_inverse(), dtgtk_cairo_paint_masks_union(), FALSE, dt_masks_form_gui_t::form_selected, dt_masks_form_group_t::formid, dt_masks_form_t::formid, dt_masks_form_t::functions, dt_develop_t::gui_module, IS_NULL_PTR, k, masks_gtk_menu_item_new_bold, MAX, menu_item_set_fake_accel, dt_masks_form_t::name, dt_masks_form_gui_t::node_hovered, dt_masks_form_gui_t::node_selected, dt_masks_form_group_t::parentid, dt_masks_form_t::points, dt_masks_functions_t::populate_context_menu, dt_masks_form_gui_t::seg_hovered, dt_masks_form_group_t::state, state, TRUE, dt_masks_form_t::type, and width.

Referenced by dt_masks_events_button_pressed().

◆ dt_masks_gui_confirm_delete_form_dialog()

int dt_masks_gui_confirm_delete_form_dialog ( const char *  form_name)

Dialogs

Definition at line 439 of file masks_gui.c.

References darktable, dt_ui_main_window(), darktable_t::gui, IS_NULL_PTR, and dt_gui_gtk_t::ui.

Referenced by dt_masks_remove_or_delete().

◆ dt_masks_shape_buttons_create()

GtkWidget * dt_masks_shape_buttons_create ( const dt_masks_shape_buttons_config_t config)

Build a synchronized toolbar for creating masks shapes.

The buttons all use the same creation callback and listen to a process-wide deactivation signal. This keeps multiple mask toolbars, such as blending, retouch and the shape manager, from showing stale active buttons after another toolbar starts or exits a shape creation.

Definition at line 180 of file masks_gui.c.

References _masks_shape_button_defs, _masks_shape_button_pressed(), _masks_shape_buttons_deactivate_signal(), _masks_shape_buttons_destroy(), dt_masks_shape_buttons_config_t::action_section, dt_masks_shape_buttons_data_t::box, dt_masks_shape_buttons_config_t::buttons, dt_masks_shape_buttons_data_t::buttons, dt_masks_shape_buttons_data_t::config, dt_masks_shape_button_def_t::ctrl_label, darktable, DT_DEBUG_CONTROL_SIGNAL_CONNECT, DT_GUI_BOX_SPACING, dt_iop_togglebutton_new(), dt_iop_togglebutton_new_no_register(), DT_SIGNAL_MASK_SHAPE_BUTTONS_DEACTIVATE, dtgtk_togglebutton_new(), FALSE, dt_masks_shape_button_def_t::flag, dt_masks_shape_buttons_config_t::flags, i, dt_masks_shape_button_def_t::index, IS_NULL_PTR, dt_masks_shape_button_def_t::label, dt_masks_shape_buttons_config_t::local, dt_masks_shape_buttons_config_t::owner_module, dt_masks_shape_button_def_t::paint, dt_masks_shape_buttons_config_t::register_flags, darktable_t::signals, dt_masks_shape_button_def_t::type, dt_masks_shape_buttons_config_t::types, and dt_masks_shape_buttons_data_t::types.

Referenced by _blendop_masks_create_shape_buttons(), gui_init(), and gui_init().

◆ dt_masks_shape_buttons_deactivate_all()

Variable Documentation

◆ _masks_shape_button_defs

const dt_masks_shape_button_def_t _masks_shape_button_defs[]
static
Initial value:
= {
N_("add gradient"), N_("add multiple gradients"), dtgtk_cairo_paint_masks_gradient },
N_("add brush"), N_("add multiple brush strokes"), dtgtk_cairo_paint_masks_brush },
N_("add polygon"), N_("add multiple polygons"), dtgtk_cairo_paint_masks_polygon },
N_("add ellipse"), N_("add multiple ellipses"), dtgtk_cairo_paint_masks_ellipse },
N_("add circle"), N_("add multiple circles"), dtgtk_cairo_paint_masks_circle },
}
void dtgtk_cairo_paint_masks_circle(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
void dtgtk_cairo_paint_masks_brush(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
void dtgtk_cairo_paint_masks_ellipse(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
Paint a 45 deg-rotated ellipse that touches the unit square boundaries.
void dtgtk_cairo_paint_masks_gradient(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
void dtgtk_cairo_paint_masks_polygon(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
@ DT_MASKS_SHAPE_INDEX_BRUSH
Definition masks.h:935
@ DT_MASKS_SHAPE_INDEX_ELLIPSE
Definition masks.h:933
@ DT_MASKS_SHAPE_INDEX_CIRCLE
Definition masks.h:934
@ DT_MASKS_SHAPE_INDEX_GRADIENT
Definition masks.h:931
@ DT_MASKS_SHAPE_INDEX_POLYGON
Definition masks.h:932
@ DT_MASKS_POLYGON
Definition masks.h:132
@ DT_MASKS_BRUSH
Definition masks.h:137
@ DT_MASKS_ELLIPSE
Definition masks.h:136
@ DT_MASKS_GRADIENT
Definition masks.h:135
@ DT_MASKS_CIRCLE
Definition masks.h:131
@ DT_MASKS_SHAPE_BUTTONS_GRADIENT
Definition masks.h:951
@ DT_MASKS_SHAPE_BUTTONS_CIRCLE
Definition masks.h:943
@ DT_MASKS_SHAPE_BUTTONS_BRUSH
Definition masks.h:949
@ DT_MASKS_SHAPE_BUTTONS_ELLIPSE
Definition masks.h:945
@ DT_MASKS_SHAPE_BUTTONS_POLYGON
Definition masks.h:947

Definition at line 54 of file masks_gui.c.

Referenced by dt_masks_shape_buttons_create().