static gboolean _blendop_blendif_expose(GtkWidget *widget, GdkEventExpose *event, dt_iop_module_t *module) { if(darktable.gui->reset) return FALSE; dt_iop_gui_blend_data_t *data = module->blend_data; float picker_mean[8], picker_min[8], picker_max[8]; float cooked[8]; float *raw_mean, *raw_min, *raw_max; char text[256]; GtkLabel *label; if(widget == GTK_WIDGET(data->lower_slider)) { raw_mean = module->picked_color; raw_min = module->picked_color_min; raw_max = module->picked_color_max; label = data->lower_picker_label; } else { raw_mean = module->picked_output_color; raw_min = module->picked_output_color_min; raw_max = module->picked_output_color_max; label = data->upper_picker_label; } darktable.gui->reset = 1; if(module->request_color_pick) { _blendif_scale(data->csp, raw_mean, picker_mean); _blendif_scale(data->csp, raw_min, picker_min); _blendif_scale(data->csp, raw_max, picker_max); _blendif_cook(data->csp, raw_mean, cooked); if(data->channels[data->tab][0] >= 8) // min and max make no sense for HSL and LCh picker_min[data->tab] = picker_max[data->tab] = picker_mean[data->tab]; snprintf(text, 256, "(%.1f)", cooked[data->tab]); dtgtk_gradient_slider_multivalue_set_picker_meanminmax(DTGTK_GRADIENT_SLIDER(widget), picker_mean[data->tab], picker_min[data->tab], picker_max[data->tab]); gtk_label_set_text(label, text); } else { dtgtk_gradient_slider_multivalue_set_picker(DTGTK_GRADIENT_SLIDER(widget), -1.0f); gtk_label_set_text(label, ""); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->colorpicker), (module->request_color_pick < 0 ? 1 : 0)); darktable.gui->reset = 0; return FALSE; }
static gboolean _blendop_blendif_expose(GtkWidget *widget, GdkEventExpose *event, dt_iop_module_t *module) { if(darktable.gui->reset) return FALSE; dt_iop_gui_blend_data_t *data = module->blend_data; float picker_mean[4], picker_min[4], picker_max[4]; float cooked[4]; float *raw_mean, *raw_min, *raw_max; char text[256]; GtkLabel *label; if(widget == GTK_WIDGET(data->lower_slider)) { raw_mean = module->picked_color; raw_min = module->picked_color_min; raw_max = module->picked_color_max; label = data->lower_picker_label; } else { raw_mean = module->picked_output_color; raw_min = module->picked_output_color_min; raw_max = module->picked_output_color_max; label = data->upper_picker_label; } darktable.gui->reset = 1; if(module->request_color_pick) { _blendif_scale(data->csp, raw_mean, picker_mean); _blendif_scale(data->csp, raw_min, picker_min); _blendif_scale(data->csp, raw_max, picker_max); _blendif_cook(data->csp, raw_mean, cooked); snprintf(text, 256, "(%.1f)", cooked[data->channel]); dtgtk_gradient_slider_multivalue_set_picker_meanminmax(DTGTK_GRADIENT_SLIDER(widget), picker_mean[data->channel], picker_min[data->channel], picker_max[data->channel]); gtk_label_set_text(label, text); } else { dtgtk_gradient_slider_multivalue_set_picker(DTGTK_GRADIENT_SLIDER(widget), -1.0f); gtk_label_set_text(label, ""); } darktable.gui->reset = 0; return FALSE; }