void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_monochrome_gui_data_t)); dt_iop_monochrome_gui_data_t *g = (dt_iop_monochrome_gui_data_t *)self->gui_data; g->dragging = 0; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, 0)); g->area = GTK_DRAWING_AREA(gtk_drawing_area_new()); GtkWidget *asp = gtk_aspect_frame_new(NULL, 0.5, 0.5, 1.0, TRUE); gtk_box_pack_start(GTK_BOX(self->widget), asp, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(asp), GTK_WIDGET(g->area)); gtk_drawing_area_size(g->area, 258, 258); g_object_set(G_OBJECT(g->area), "tooltip-text", _("drag and scroll mouse wheel to adjust the virtual color filter"), (char *)NULL); gtk_widget_add_events(GTK_WIDGET(g->area), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect (G_OBJECT (g->area), "expose-event", G_CALLBACK (dt_iop_monochrome_expose), self); g_signal_connect (G_OBJECT (g->area), "button-press-event", G_CALLBACK (dt_iop_monochrome_button_press), self); g_signal_connect (G_OBJECT (g->area), "button-release-event", G_CALLBACK (dt_iop_monochrome_button_release), self); g_signal_connect (G_OBJECT (g->area), "motion-notify-event", G_CALLBACK (dt_iop_monochrome_motion_notify), self); g_signal_connect (G_OBJECT (g->area), "leave-notify-event", G_CALLBACK (dt_iop_monochrome_leave_notify), self); g_signal_connect (G_OBJECT (g->area), "scroll-event", G_CALLBACK (dt_iop_monochrome_scrolled), self); g->hsRGB = dt_colorspaces_create_srgb_profile(); g->hLab = dt_colorspaces_create_lab_profile(); g->xform = cmsCreateTransform(g->hLab, TYPE_Lab_DBL, g->hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, 0);//cmsFLAGS_NOTPRECALC); }
void init_pipe (struct dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece) { piece->data = malloc(sizeof(dt_iop_colorout_data_t)); dt_iop_colorout_data_t *d = (dt_iop_colorout_data_t *)piece->data; d->softproof_enabled = 0; d->softproof = d->output = NULL; d->xform = 0; d->Lab = dt_colorspaces_create_lab_profile(); self->commit_params(self, self->default_params, pipe, piece); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_colortransfer_gui_data_t)); self->widget = gtk_label_new(_("this module will be removed in the future\nand is only here so you can " "switch it off\nand move to the new color mapping module.")); gtk_misc_set_alignment(GTK_MISC(self->widget), 0.0f, 0.5f); #if 0 self->gui_data = malloc(sizeof(dt_iop_colortransfer_gui_data_t)); dt_iop_colortransfer_gui_data_t *g = (dt_iop_colortransfer_gui_data_t *)self->gui_data; // dt_iop_colortransfer_params_t *p = (dt_iop_colortransfer_params_t *)self->params; g->flowback_set = 0; g->hsRGB = dt_colorspaces_create_srgb_profile(); g->hLab = dt_colorspaces_create_lab_profile(); g->xform = cmsCreateTransform(g->hLab, TYPE_Lab_DBL, g->hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, 0); self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); g_signal_connect (G_OBJECT(self->widget), "expose-event", G_CALLBACK(expose), self); g->area = gtk_drawing_area_new(); gtk_widget_set_size_request(GTK_WIDGET(g->area), 300, 100); gtk_box_pack_start(GTK_BOX(self->widget), g->area, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (g->area), "expose-event", G_CALLBACK (cluster_preview_expose), self); GtkBox *box = GTK_BOX(gtk_hbox_new(FALSE, 5)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(box), TRUE, TRUE, 0); GtkWidget *button; g->spinbutton = GTK_SPIN_BUTTON(gtk_spin_button_new_with_range(1, MAXN, 1)); g_object_set(G_OBJECT(g->spinbutton), "tooltip-text", _("number of clusters to find in image"), (char *)NULL); gtk_box_pack_start(box, GTK_WIDGET(g->spinbutton), FALSE, FALSE, 0); g_signal_connect(G_OBJECT(g->spinbutton), "value-changed", G_CALLBACK(spinbutton_changed), (gpointer)self); button = dtgtk_button_new_with_label(_("acquire"), NULL, CPF_STYLE_FLAT|CPF_DO_NOT_USE_BORDER); g->acquire_button = button; g_object_set(G_OBJECT(button), "tooltip-text", _("analyze this image"), (char *)NULL); gtk_box_pack_start(box, button, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(acquire_button_pressed), (gpointer)self); g->apply_button = dtgtk_button_new_with_label(_("apply"), NULL, CPF_STYLE_FLAT|CPF_DO_NOT_USE_BORDER); g_object_set(G_OBJECT(g->apply_button), "tooltip-text", _("apply previously analyzed image look to this image"), (char *)NULL); gtk_box_pack_start(box, g->apply_button, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(g->apply_button), "clicked", G_CALLBACK(apply_button_pressed), (gpointer)self); FILE *f = fopen("/tmp/dt_colortransfer_loaded", "rb"); if(f) { if(fread(&g->flowback, self->params_size, 1, f) > 0) g->flowback_set = 1; fclose(f); } else gtk_widget_set_sensitive(GTK_WIDGET(g->apply_button), FALSE); #endif }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_colorcorrection_gui_data_t)); dt_iop_colorcorrection_gui_data_t *g = (dt_iop_colorcorrection_gui_data_t *)self->gui_data; g->selected = 0; self->widget = gtk_vbox_new(FALSE, DT_BAUHAUS_SPACE); g->area = GTK_DRAWING_AREA(gtk_drawing_area_new()); GtkWidget *asp = gtk_aspect_frame_new(NULL, 0.5, 0.5, 1.0, TRUE); gtk_box_pack_start(GTK_BOX(self->widget), asp, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(asp), GTK_WIDGET(g->area)); gtk_drawing_area_size(g->area, 258, 258); g_object_set (GTK_OBJECT(g->area), "tooltip-text", _("drag the line for split toning. " "bright means highlights, dark means shadows. " "use mouse wheel to change saturation."), (char *)NULL); gtk_widget_add_events(GTK_WIDGET(g->area), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect (G_OBJECT (g->area), "expose-event", G_CALLBACK (dt_iop_colorcorrection_expose), self); g_signal_connect (G_OBJECT (g->area), "button-press-event", G_CALLBACK (dt_iop_colorcorrection_button_press), self); g_signal_connect (G_OBJECT (g->area), "motion-notify-event", G_CALLBACK (dt_iop_colorcorrection_motion_notify), self); g_signal_connect (G_OBJECT (g->area), "leave-notify-event", G_CALLBACK (dt_iop_colorcorrection_leave_notify), self); g_signal_connect (G_OBJECT (g->area), "scroll-event", G_CALLBACK (dt_iop_colorcorrection_scrolled), self); g->slider = dt_bauhaus_slider_new_with_range(self, -3.0f, 3.0f, 0.01f, 1.0f, 2); gtk_box_pack_start(GTK_BOX(self->widget), g->slider, TRUE, TRUE, 0); g_object_set (GTK_OBJECT(g->slider), "tooltip-text", _("set the global saturation"), (char *)NULL); dt_bauhaus_widget_set_label(g->slider,_("saturation")); g_signal_connect (G_OBJECT (g->slider), "value-changed", G_CALLBACK (sat_callback), self); g->hsRGB = dt_colorspaces_create_srgb_profile(); g->hLab = dt_colorspaces_create_lab_profile(); g->xform = cmsCreateTransform(g->hLab, TYPE_Lab_DBL, g->hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, 0);//cmsFLAGS_NOTPRECALC); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_colorzones_gui_data_t)); dt_iop_colorzones_gui_data_t *c = (dt_iop_colorzones_gui_data_t *)self->gui_data; dt_iop_colorzones_params_t *p = (dt_iop_colorzones_params_t *)self->params; // c->channel = DT_IOP_COLORZONES_C; c->channel = dt_conf_get_int("plugins/darkroom/colorzones/gui_channel"); int ch = (int)c->channel; c->minmax_curve = dt_draw_curve_new(0.0, 1.0, CATMULL_ROM); (void)dt_draw_curve_add_point(c->minmax_curve, p->equalizer_x[ch][DT_IOP_COLORZONES_BANDS-2]-1.0, p->equalizer_y[ch][DT_IOP_COLORZONES_BANDS-2]); for(int k=0; k<DT_IOP_COLORZONES_BANDS; k++) (void)dt_draw_curve_add_point(c->minmax_curve, p->equalizer_x[ch][k], p->equalizer_y[ch][k]); (void)dt_draw_curve_add_point(c->minmax_curve, p->equalizer_x[ch][1]+1.0, p->equalizer_y[ch][1]); c->mouse_x = c->mouse_y = c->mouse_pick = -1.0; c->dragging = 0; c->x_move = -1; c->mouse_radius = 1.0/DT_IOP_COLORZONES_BANDS; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); // select by which dimension GtkHBox *hbox = GTK_HBOX(gtk_hbox_new(FALSE, 5)); GtkWidget *label = gtk_label_new(_("select by")); gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f); c->select_by = gtk_combo_box_new_text(); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_combo_box_append_text(GTK_COMBO_BOX(c->select_by), _("hue")); gtk_combo_box_append_text(GTK_COMBO_BOX(c->select_by), _("saturation")); gtk_combo_box_append_text(GTK_COMBO_BOX(c->select_by), _("lightness")); gtk_box_pack_start(GTK_BOX(hbox), c->select_by, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (c->select_by), "changed", G_CALLBACK (select_by_changed), (gpointer)self); GtkWidget *tb = dtgtk_togglebutton_new(dtgtk_cairo_paint_colorpicker, CPF_STYLE_FLAT); g_object_set(G_OBJECT(tb), "tooltip-text", _("pick gui color from image"), (char *)NULL); g_signal_connect(G_OBJECT(tb), "toggled", G_CALLBACK(request_pick_toggled), self); gtk_box_pack_start(GTK_BOX(hbox), tb, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(hbox), FALSE, FALSE, 0); // tabs GtkVBox *vbox = GTK_VBOX(gtk_vbox_new(FALSE, 0));//DT_GUI_IOP_MODULE_CONTROL_SPACING)); c->channel_tabs = GTK_NOTEBOOK(gtk_notebook_new()); gtk_notebook_append_page(GTK_NOTEBOOK(c->channel_tabs), GTK_WIDGET(gtk_hbox_new(FALSE,0)), gtk_label_new(_("lightness"))); gtk_notebook_append_page(GTK_NOTEBOOK(c->channel_tabs), GTK_WIDGET(gtk_hbox_new(FALSE,0)), gtk_label_new(_("saturation"))); gtk_notebook_append_page(GTK_NOTEBOOK(c->channel_tabs), GTK_WIDGET(gtk_hbox_new(FALSE,0)), gtk_label_new(_("hue"))); gtk_widget_show_all(GTK_WIDGET(gtk_notebook_get_nth_page(c->channel_tabs, c->channel))); gtk_notebook_set_current_page(GTK_NOTEBOOK(c->channel_tabs), c->channel); g_object_set(G_OBJECT(c->channel_tabs), "homogeneous", TRUE, (char *)NULL); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(c->channel_tabs), FALSE, FALSE, 0); g_signal_connect(G_OBJECT(c->channel_tabs), "switch_page", G_CALLBACK (colorzones_tab_switch), self); // the nice graph c->area = GTK_DRAWING_AREA(gtk_drawing_area_new()); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(c->area), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(vbox), TRUE, TRUE, 5); gtk_drawing_area_size(c->area, 195, 195); gtk_widget_add_events(GTK_WIDGET(c->area), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect (G_OBJECT (c->area), "expose-event", G_CALLBACK (colorzones_expose), self); g_signal_connect (G_OBJECT (c->area), "button-press-event", G_CALLBACK (colorzones_button_press), self); g_signal_connect (G_OBJECT (c->area), "button-release-event", G_CALLBACK (colorzones_button_release), self); g_signal_connect (G_OBJECT (c->area), "motion-notify-event", G_CALLBACK (colorzones_motion_notify), self); g_signal_connect (G_OBJECT (c->area), "leave-notify-event", G_CALLBACK (colorzones_leave_notify), self); g_signal_connect (G_OBJECT (c->area), "enter-notify-event", G_CALLBACK (colorzones_enter_notify), self); g_signal_connect (G_OBJECT (c->area), "scroll-event", G_CALLBACK (colorzones_scrolled), self); c->hsRGB = dt_colorspaces_create_srgb_profile(); c->hLab = dt_colorspaces_create_lab_profile(); c->xform = cmsCreateTransform(c->hLab, TYPE_Lab_DBL, c->hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, 0); }