65 return _(
"Masking & Blending");
70 static const char *
v[] = {
"darkroom", NULL};
94 return dt_dev_get_global() &&
module && g_list_find(dt_dev_get_global()->iop, module);
101 GList *children = gtk_container_get_children(GTK_CONTAINER(self->
widget));
102 for(GList *iter = children; iter; iter = g_list_next(iter))
103 gtk_widget_destroy(GTK_WIDGET(iter->data));
104 g_list_free(children);
122 d->hosted_module = NULL;
135 gtk_label_set_markup(GTK_LABEL(label), markup);
136 gtk_label_set_xalign(GTK_LABEL(label), 0.0f);
137 gtk_label_set_line_wrap(GTK_LABEL(label),
TRUE);
140 gtk_widget_set_sensitive(label,
FALSE);
144 gtk_widget_show_all(label);
166 gchar *markup = g_markup_printf_escaped(_(
"<i>Select a module to edit its blending settings.</i>"));
180 gchar *markup = g_markup_printf_escaped(_(
"<i>Blending is not available for the <b>%s</b> module.</i>"), module_label);
189 const gboolean module_changed = (
d->active_module != module);
190 d->active_module =
module;
200 d->hosted_module =
module;
209 self->
data = (
void *)
d;
void dt_iop_gui_init_blending_body(GtkWidget *container, dt_iop_module_t *module)
void dt_iop_gui_update_blending(dt_iop_module_t *module)
void dt_iop_gui_cleanup_blending_body(dt_iop_module_t *module)
The blending panel's GUI state and API, cut out of develop/blend.h.
static void _clear_box(dt_lib_module_t *self)
void gui_cleanup(dt_lib_module_t *self)
int expandable(dt_lib_module_t *self __attribute__((unused)))
static void _show_message(dt_lib_module_t *self, gchar *markup)
static void _release(dt_lib_module_t *self)
const char ** views(dt_lib_module_t *self __attribute__((unused)))
static gboolean _module_is_current(const dt_iop_module_t *module)
static gboolean _can_host(const dt_iop_module_t *module)
static void _gui_changed_callback(gpointer instance __attribute__((unused)), dt_lib_module_t *self)
uint32_t container(dt_lib_module_t *self __attribute__((unused)))
void gui_init(dt_lib_module_t *self)
struct _GtkWidget GtkWidget
GtkWidget, opaque, spelled exactly as GTK spells it.
struct dt_develop_t * dt_dev_get_global(void)
gchar * dt_history_item_get_name(const struct dt_iop_module_t *module)
@ IOP_FLAGS_SUPPORTS_BLENDING
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
#define dt_free_align(ptr)
Release memory from dt_alloc_align() and set ptr to NULL.
static void * dt_calloc_align(size_t size)
dt_alloc_align() followed by a zero fill.
#define dt_free(ptr)
g_free() ptr and set it to NULL, skipping both if it is already NULL.
#define DT_MODULE(MODVER)
Instantiate the version handshake every module must export. Use once, at file scope,...
#define DT_DEBUG_CONTROL_SIGNAL_DISCONNECT(ctlsig, cb, user_data)
struct dt_control_signal_t * dt_control_signal_get_global(void)
@ DT_SIGNAL_DEVELOP_MASKS_GUI_CHANGED
#define DT_DEBUG_CONTROL_SIGNAL_CONNECT(ctlsig, signal, cb, user_data)
float dt_aligned_pixel_simd_t __attribute__((vector_size(16), aligned(16)))
Apply one channel's tone curve to each of the three colour channels, or pass the channel through unto...
struct dt_iop_module_gui_t * gui
dt_iop_module_t * hosted_module
dt_iop_module_t * active_module
@ DT_UI_CONTAINER_PANEL_LEFT_CENTER