void gimp_histogram_view_set_background (GimpHistogramView *view, GimpHistogram *histogram) { g_return_if_fail (GIMP_IS_HISTOGRAM_VIEW (view)); #if 0 g_return_if_fail (histogram == NULL || view->histogram == NULL || gimp_histogram_n_channels (view->histogram) == gimp_histogram_n_channels (histogram)); #endif if (view->bg_histogram != histogram) { if (view->bg_histogram) gimp_histogram_unref (view->bg_histogram); view->bg_histogram = histogram; if (histogram) { gimp_histogram_ref (histogram); if (view->channel >= gimp_histogram_n_channels (histogram)) gimp_histogram_view_set_channel (view, GIMP_HISTOGRAM_VALUE); } } gtk_widget_queue_draw (GTK_WIDGET (view)); }
void gimp_histogram_box_set_channel (GimpHistogramBox *box, GimpHistogramChannel channel) { g_return_if_fail (GIMP_IS_HISTOGRAM_BOX (box)); if (box->view) gimp_histogram_view_set_channel (box->view, channel); }
static void gimp_histogram_editor_menu_update (GimpHistogramEditor *editor) { GimpHistogramView *view = GIMP_HISTOGRAM_BOX (editor->box)->view; gtk_widget_queue_draw (editor->menu); if (! gimp_histogram_editor_channel_valid (editor, view->channel)) { gimp_histogram_view_set_channel (view, GIMP_HISTOGRAM_VALUE); } }
static void levels_channel_callback (GtkWidget *widget, GimpLevelsTool *tool) { gint value; if (gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget), &value)) { tool->channel = value; gimp_histogram_view_set_channel (GIMP_HISTOGRAM_VIEW (tool->hist_view), tool->channel); /* FIXME: hack */ if (! tool->color) tool->channel = (tool->channel == GIMP_HISTOGRAM_ALPHA) ? 1 : 0; levels_update (tool, ALL); } }
static void gimp_threshold_tool_config_notify (GimpFilterTool *filter_tool, GimpConfig *config, const GParamSpec *pspec) { GimpThresholdTool *t_tool = GIMP_THRESHOLD_TOOL (filter_tool); GIMP_FILTER_TOOL_CLASS (parent_class)->config_notify (filter_tool, config, pspec); if (! t_tool->histogram_box) return; if (! strcmp (pspec->name, "channel")) { GimpHistogramChannel channel; g_object_get (config, "channel", &channel, NULL); gimp_histogram_view_set_channel (t_tool->histogram_box->view, channel); } else if (! strcmp (pspec->name, "low") || ! strcmp (pspec->name, "high")) { gdouble low; gdouble high; gint n_bins; g_object_get (config, "low", &low, "high", &high, NULL); n_bins = gimp_histogram_n_bins (t_tool->histogram); gimp_histogram_view_set_range (t_tool->histogram_box->view, low * (n_bins - 0.0001), high * (n_bins - 0.0001)); } }
static void gimp_threshold_tool_dialog (GimpFilterTool *filter_tool) { GimpThresholdTool *t_tool = GIMP_THRESHOLD_TOOL (filter_tool); GimpToolOptions *tool_options = GIMP_TOOL_GET_OPTIONS (filter_tool); GtkWidget *main_vbox; GtkWidget *main_frame; GtkWidget *frame_vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *hbox2; GtkWidget *box; GtkWidget *button; GimpHistogramChannel channel; main_vbox = gimp_filter_tool_dialog_get_vbox (filter_tool); main_frame = gimp_frame_new (NULL); gtk_box_pack_start (GTK_BOX (main_vbox), main_frame, TRUE, TRUE, 0); gtk_widget_show (main_frame); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_frame_set_label_widget (GTK_FRAME (main_frame), hbox); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (_("Cha_nnel:")); gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); t_tool->channel_menu = gimp_prop_enum_combo_box_new (filter_tool->config, "channel", -1, -1); gimp_enum_combo_box_set_icon_prefix (GIMP_ENUM_COMBO_BOX (t_tool->channel_menu), "gimp-channel"); gimp_int_combo_box_set_sensitivity (GIMP_INT_COMBO_BOX (t_tool->channel_menu), gimp_threshold_tool_channel_sensitive, filter_tool, NULL); gtk_box_pack_start (GTK_BOX (hbox), t_tool->channel_menu, FALSE, FALSE, 0); gtk_widget_show (t_tool->channel_menu); gtk_label_set_mnemonic_widget (GTK_LABEL (label), t_tool->channel_menu); hbox2 = gimp_prop_enum_icon_box_new (G_OBJECT (tool_options), "histogram-scale", "gimp-histogram", 0, 0); gtk_box_pack_end (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0); gtk_widget_show (hbox2); frame_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_container_add (GTK_CONTAINER (main_frame), frame_vbox); gtk_widget_show (frame_vbox); box = gimp_histogram_box_new (); gtk_box_pack_start (GTK_BOX (frame_vbox), box, TRUE, TRUE, 0); gtk_widget_show (box); t_tool->histogram_box = GIMP_HISTOGRAM_BOX (box); g_object_get (filter_tool->config, "channel", &channel, NULL); gimp_histogram_view_set_channel (t_tool->histogram_box->view, channel); g_signal_connect (t_tool->histogram_box->view, "range-changed", G_CALLBACK (gimp_threshold_tool_histogram_range), t_tool); g_object_bind_property (G_OBJECT (tool_options), "histogram-scale", G_OBJECT (t_tool->histogram_box->view), "histogram-scale", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (frame_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gtk_button_new_with_mnemonic (_("_Auto")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gimp_help_set_help_data (button, _("Automatically adjust to optimal " "binarization threshold"), NULL); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (gimp_threshold_tool_auto_clicked), t_tool); }