void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_lowlight_gui_data_t)); dt_iop_lowlight_gui_data_t *c = (dt_iop_lowlight_gui_data_t *)self->gui_data; dt_iop_lowlight_params_t *p = (dt_iop_lowlight_params_t *)self->params; c->transition_curve = dt_draw_curve_new(0.0, 1.0, CATMULL_ROM); (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[DT_IOP_LOWLIGHT_BANDS-2]-1.0, p->transition_y[DT_IOP_LOWLIGHT_BANDS-2]); for(int k=0; k<DT_IOP_LOWLIGHT_BANDS; k++) (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[k], p->transition_y[k]); (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[1]+1.0, p->transition_y[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_LOWLIGHT_BANDS; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); c->area = GTK_DRAWING_AREA(gtk_drawing_area_new()); gtk_drawing_area_size(c->area, 195, 195); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(c->area),FALSE, FALSE, 0); 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 (lowlight_expose), self); g_signal_connect (G_OBJECT (c->area), "button-press-event", G_CALLBACK (lowlight_button_press), self); g_signal_connect (G_OBJECT (c->area), "button-release-event", G_CALLBACK (lowlight_button_release), self); g_signal_connect (G_OBJECT (c->area), "motion-notify-event", G_CALLBACK (lowlight_motion_notify), self); g_signal_connect (G_OBJECT (c->area), "leave-notify-event", G_CALLBACK (lowlight_leave_notify), self); g_signal_connect (G_OBJECT (c->area), "scroll-event", G_CALLBACK (lowlight_scrolled), self); c->scale_blueness = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 5.0, p->blueness, 2)); dtgtk_slider_set_default_value(c->scale_blueness, p->blueness); dtgtk_slider_set_label(c->scale_blueness,_("blue shift")); dtgtk_slider_set_unit(c->scale_blueness,"%"); dtgtk_slider_set_format_type(c->scale_blueness,DARKTABLE_SLIDER_FORMAT_PERCENT); g_object_set(G_OBJECT(c->scale_blueness), "tooltip-text", _("blueness in shadows"), (char *)NULL); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(c->scale_blueness), TRUE, TRUE, 5); g_signal_connect (G_OBJECT (c->scale_blueness), "value-changed", G_CALLBACK (blueness_callback), self); }
// TODO: some quality/compression stuff in case "off" is selected void gui_init(dt_imageio_module_format_t *self) { dt_imageio_j2k_gui_t *gui = (dt_imageio_j2k_gui_t *)malloc(sizeof(dt_imageio_j2k_gui_t)); self->gui_data = (void *)gui; self->widget = gtk_vbox_new(TRUE, 5); GtkWidget *hbox = gtk_hbox_new(TRUE, 5); gtk_box_pack_start(GTK_BOX(self->widget), hbox, TRUE, TRUE, 0); int format_last = dt_conf_get_int("plugins/imageio/format/j2k/format"); int preset_last = dt_conf_get_int("plugins/imageio/format/j2k/preset"); int quality_last = dt_conf_get_int("plugins/imageio/format/j2k/quality"); GtkWidget *radiobutton = gtk_radio_button_new_with_label(NULL, _("jp2")); gui->jp2 = GTK_TOGGLE_BUTTON(radiobutton); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(radiobutton), "toggled", G_CALLBACK(radiobutton_changed), (gpointer)JP2_CFMT); if(format_last == JP2_CFMT) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton), TRUE); radiobutton = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radiobutton), _("j2k")); gui->j2k = GTK_TOGGLE_BUTTON(radiobutton); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(radiobutton), "toggled", G_CALLBACK(radiobutton_changed), (gpointer)J2K_CFMT); if(format_last == J2K_CFMT) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton), TRUE); gui->quality = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 1, 100, 1, 97, 0)); dtgtk_slider_set_label(gui->quality,_("quality")); dtgtk_slider_set_default_value(gui->quality, 97); if(quality_last > 0 && quality_last <= 100) dtgtk_slider_set_value(gui->quality, quality_last); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(gui->quality), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (gui->quality), "value-changed", G_CALLBACK (quality_changed), (gpointer)0); hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(self->widget), hbox, TRUE, TRUE, 0); GtkWidget *label = gtk_label_new(_("dcp mode")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); GtkWidget *combo = gtk_combo_box_new_text(); gui->preset = GTK_COMBO_BOX(combo); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("off")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema2k, 24fps")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema2k, 48fps")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema4k, 24fps")); gtk_combo_box_set_active(GTK_COMBO_BOX(combo), preset_last); gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(combobox_changed), NULL); // TODO: options for "off" }
void gui_init (dt_imageio_module_format_t *self) { dt_imageio_jpeg_gui_data_t *g = (dt_imageio_jpeg_gui_data_t *)malloc(sizeof(dt_imageio_jpeg_gui_data_t)); self->gui_data = g; // construct gui with jpeg specific options: GtkWidget *box = gtk_hbox_new(FALSE, 20); self->widget = box; // quality slider g->quality = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 0, 100, 1, 97, 0)); dtgtk_slider_set_label(g->quality,_("quality")); dtgtk_slider_set_default_value(g->quality, 97); gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(g->quality), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (g->quality), "value-changed", G_CALLBACK (quality_changed), (gpointer)0); // TODO: add more options: subsample dreggn }