diff options
Diffstat (limited to 'src/editing_tools/EditingTools.vala')
-rw-r--r-- | src/editing_tools/EditingTools.vala | 103 |
1 files changed, 71 insertions, 32 deletions
diff --git a/src/editing_tools/EditingTools.vala b/src/editing_tools/EditingTools.vala index c61a38c..b2ba172 100644 --- a/src/editing_tools/EditingTools.vala +++ b/src/editing_tools/EditingTools.vala @@ -755,28 +755,28 @@ public class CropTool : EditingTool { result += new ConstraintDescription(_("Screen"), 0, 0, true, SCREEN_ASPECT_RATIO); result += new ConstraintDescription(_("Original Size"), 0, 0, true, ORIGINAL_ASPECT_RATIO); result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR); - result += new ConstraintDescription(_("SD Video (4 : 3)"), 4, 3, true); - result += new ConstraintDescription(_("HD Video (16 : 9)"), 16, 9, true); + result += new ConstraintDescription(_("SD Video (4 ∶ 3)"), 4, 3, true); + result += new ConstraintDescription(_("HD Video (16 ∶ 9)"), 16, 9, true); result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR); - result += new ConstraintDescription(_("Wallet (2 x 3 in.)"), 3, 2, true); - result += new ConstraintDescription(_("Notecard (3 x 5 in.)"), 5, 3, true); - result += new ConstraintDescription(_("4 x 6 in."), 6, 4, true); - result += new ConstraintDescription(_("5 x 7 in."), 7, 5, true); - result += new ConstraintDescription(_("8 x 10 in."), 10, 8, true); - result += new ConstraintDescription(_("Letter (8.5 x 11 in.)"), 85, 110, true); - result += new ConstraintDescription(_("11 x 14 in."), 14, 11, true); - result += new ConstraintDescription(_("Tabloid (11 x 17 in.)"), 17, 11, true); - result += new ConstraintDescription(_("16 x 20 in."), 20, 16, true); + result += new ConstraintDescription(_("Wallet (2 × 3 in.)"), 3, 2, true); + result += new ConstraintDescription(_("Notecard (3 × 5 in.)"), 5, 3, true); + result += new ConstraintDescription(_("4 × 6 in."), 6, 4, true); + result += new ConstraintDescription(_("5 × 7 in."), 7, 5, true); + result += new ConstraintDescription(_("8 × 10 in."), 10, 8, true); + result += new ConstraintDescription(_("Letter (8.5 × 11 in.)"), 85, 110, true); + result += new ConstraintDescription(_("11 × 14 in."), 14, 11, true); + result += new ConstraintDescription(_("Tabloid (11 × 17 in.)"), 17, 11, true); + result += new ConstraintDescription(_("16 × 20 in."), 20, 16, true); result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR); - result += new ConstraintDescription(_("Metric Wallet (9 x 13 cm)"), 13, 9, true); - result += new ConstraintDescription(_("Postcard (10 x 15 cm)"), 15, 10, true); - result += new ConstraintDescription(_("13 x 18 cm"), 18, 13, true); - result += new ConstraintDescription(_("18 x 24 cm"), 24, 18, true); - result += new ConstraintDescription(_("A4 (210 x 297 mm)"), 210, 297, true); - result += new ConstraintDescription(_("20 x 30 cm"), 30, 20, true); - result += new ConstraintDescription(_("24 x 40 cm"), 40, 24, true); - result += new ConstraintDescription(_("30 x 40 cm"), 40, 30, true); - result += new ConstraintDescription(_("A3 (297 x 420 mm)"), 420, 297, true); + result += new ConstraintDescription(_("Metric Wallet (9 × 13 cm)"), 13, 9, true); + result += new ConstraintDescription(_("Postcard (10 × 15 cm)"), 15, 10, true); + result += new ConstraintDescription(_("13 × 18 cm"), 18, 13, true); + result += new ConstraintDescription(_("18 × 24 cm"), 24, 18, true); + result += new ConstraintDescription(_("A4 (210 × 297 mm)"), 210, 297, true); + result += new ConstraintDescription(_("20 × 30 cm"), 30, 20, true); + result += new ConstraintDescription(_("24 × 40 cm"), 40, 24, true); + result += new ConstraintDescription(_("30 × 40 cm"), 40, 30, true); + result += new ConstraintDescription(_("A3 (297 × 420 mm)"), 420, 297, true); result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR); result += new ConstraintDescription(_("Custom"), 0, 0, true, CUSTOM_ASPECT_RATIO); @@ -2205,6 +2205,9 @@ public class AdjustTool : EditingTool { public Gtk.Scale exposure_slider = new Gtk.Scale.with_range(Gtk.Orientation.HORIZONTAL, ExposureTransformation.MIN_PARAMETER, ExposureTransformation.MAX_PARAMETER, 1.0); + public Gtk.HScale contrast_slider = new Gtk.HScale.with_range( + ContrastTransformation.MIN_PARAMETER, ContrastTransformation.MAX_PARAMETER, + 1.0); public Gtk.Scale saturation_slider = new Gtk.Scale.with_range(Gtk.Orientation.HORIZONTAL, SaturationTransformation.MIN_PARAMETER, SaturationTransformation.MAX_PARAMETER, 1.0); @@ -2244,19 +2247,27 @@ public class AdjustTool : EditingTool { exposure_slider.set_size_request(SLIDER_WIDTH, -1); exposure_slider.set_draw_value(false); exposure_slider.set_margin_right(0); - + + Gtk.Label contrast_label = new Gtk.Label.with_mnemonic(_("Contrast:")); + contrast_label.set_alignment(0.0f, 0.5f); + slider_organizer.attach(contrast_label, 0, 1, 1, 1); + slider_organizer.attach(contrast_slider, 1, 1, 1, 1); + contrast_slider.set_size_request(SLIDER_WIDTH, -1); + contrast_slider.set_draw_value(false); + contrast_slider.set_margin_right(0); + Gtk.Label saturation_label = new Gtk.Label.with_mnemonic(_("Saturation:")); saturation_label.set_alignment(0.0f, 0.5f); - slider_organizer.attach(saturation_label, 0, 1, 1, 1); - slider_organizer.attach(saturation_slider, 1, 1, 1, 1); + slider_organizer.attach(saturation_label, 0, 2, 1, 1); + slider_organizer.attach(saturation_slider, 1, 2, 1, 1); saturation_slider.set_size_request(SLIDER_WIDTH, -1); saturation_slider.set_draw_value(false); saturation_slider.set_margin_right(0); Gtk.Label tint_label = new Gtk.Label.with_mnemonic(_("Tint:")); tint_label.set_alignment(0.0f, 0.5f); - slider_organizer.attach(tint_label, 0, 2, 1, 1); - slider_organizer.attach(tint_slider, 1, 2, 1, 1); + slider_organizer.attach(tint_label, 0, 3, 1, 1); + slider_organizer.attach(tint_slider, 1, 3, 1, 1); tint_slider.set_size_request(SLIDER_WIDTH, -1); tint_slider.set_draw_value(false); tint_slider.set_margin_right(0); @@ -2264,24 +2275,24 @@ public class AdjustTool : EditingTool { Gtk.Label temperature_label = new Gtk.Label.with_mnemonic(_("Temperature:")); temperature_label.set_alignment(0.0f, 0.5f); - slider_organizer.attach(temperature_label, 0, 3, 1, 1); - slider_organizer.attach(temperature_slider, 1, 3, 1, 1); + slider_organizer.attach(temperature_label, 0, 4, 1, 1); + slider_organizer.attach(temperature_slider, 1, 4, 1, 1); temperature_slider.set_size_request(SLIDER_WIDTH, -1); temperature_slider.set_draw_value(false); temperature_slider.set_margin_right(0); Gtk.Label shadows_label = new Gtk.Label.with_mnemonic(_("Shadows:")); shadows_label.set_alignment(0.0f, 0.5f); - slider_organizer.attach(shadows_label, 0, 4, 1, 1); - slider_organizer.attach(shadows_slider, 1, 4, 1, 1); + slider_organizer.attach(shadows_label, 0, 5, 1, 1); + slider_organizer.attach(shadows_slider, 1, 5, 1, 1); shadows_slider.set_size_request(SLIDER_WIDTH, -1); shadows_slider.set_draw_value(false); shadows_slider.set_margin_right(0); Gtk.Label highlights_label = new Gtk.Label.with_mnemonic(_("Highlights:")); highlights_label.set_alignment(0.0f, 0.5f); - slider_organizer.attach(highlights_label, 0, 5, 1, 1); - slider_organizer.attach(highlights_slider, 1, 5, 1, 1); + slider_organizer.attach(highlights_label, 0, 6, 1, 1); + slider_organizer.attach(highlights_slider, 1, 6, 1, 1); highlights_slider.set_size_request(SLIDER_WIDTH, -1); highlights_slider.set_draw_value(false); @@ -2482,6 +2493,7 @@ public class AdjustTool : EditingTool { private bool disable_histogram_refresh = false; private OneShotScheduler? temperature_scheduler = null; private OneShotScheduler? tint_scheduler = null; + private OneShotScheduler? contrast_scheduler = null; private OneShotScheduler? saturation_scheduler = null; private OneShotScheduler? exposure_scheduler = null; private OneShotScheduler? shadows_scheduler = null; @@ -2552,6 +2564,12 @@ public class AdjustTool : EditingTool { histogram_transformer.attach_transformation(exposure_trans); adjust_tool_window.exposure_slider.set_value(exposure_trans.get_parameter()); + /* set up contrast */ + ContrastTransformation contrast_trans = (ContrastTransformation) + transformations.get_transformation(PixelTransformationType.CONTRAST); + histogram_transformer.attach_transformation(contrast_trans); + adjust_tool_window.contrast_slider.set_value(contrast_trans.get_parameter()); + bind_canvas_handlers(canvas); bind_window_handlers(); @@ -2690,7 +2708,6 @@ public class AdjustTool : EditingTool { private void on_tint_adjustment() { if (tint_scheduler == null) tint_scheduler = new OneShotScheduler("tint", on_delayed_tint_adjustment); - tint_scheduler.after_timeout(SLIDER_DELAY_MSEC, true); } @@ -2700,6 +2717,19 @@ public class AdjustTool : EditingTool { slider_updated(new_tint_trans, _("Tint")); } + private void on_contrast_adjustment() { + if (this.contrast_scheduler == null) + this.contrast_scheduler = new OneShotScheduler("contrast", on_delayed_contrast_adjustment); + this.contrast_scheduler.after_timeout(SLIDER_DELAY_MSEC, true); + } + + private void on_delayed_contrast_adjustment() { + ContrastTransformation new_exp_trans = new ContrastTransformation( + (float) adjust_tool_window.contrast_slider.get_value()); + slider_updated(new_exp_trans, _("Contrast")); + } + + private void on_saturation_adjustment() { if (saturation_scheduler == null) saturation_scheduler = new OneShotScheduler("saturation", on_delayed_saturation_adjustment); @@ -2794,6 +2824,7 @@ public class AdjustTool : EditingTool { adjust_tool_window.reset_button.clicked.connect(on_reset); adjust_tool_window.cancel_button.clicked.connect(notify_cancel); adjust_tool_window.exposure_slider.value_changed.connect(on_exposure_adjustment); + adjust_tool_window.contrast_slider.value_changed.connect(on_contrast_adjustment); adjust_tool_window.saturation_slider.value_changed.connect(on_saturation_adjustment); adjust_tool_window.tint_slider.value_changed.connect(on_tint_adjustment); adjust_tool_window.temperature_slider.value_changed.connect(on_temperature_adjustment); @@ -2803,6 +2834,7 @@ public class AdjustTool : EditingTool { adjust_tool_window.saturation_slider.button_press_event.connect(on_hscale_reset); adjust_tool_window.exposure_slider.button_press_event.connect(on_hscale_reset); + adjust_tool_window.contrast_slider.button_press_event.connect(on_hscale_reset); adjust_tool_window.tint_slider.button_press_event.connect(on_hscale_reset); adjust_tool_window.temperature_slider.button_press_event.connect(on_hscale_reset); adjust_tool_window.shadows_slider.button_press_event.connect(on_hscale_reset); @@ -2814,6 +2846,7 @@ public class AdjustTool : EditingTool { adjust_tool_window.reset_button.clicked.disconnect(on_reset); adjust_tool_window.cancel_button.clicked.disconnect(notify_cancel); adjust_tool_window.exposure_slider.value_changed.disconnect(on_exposure_adjustment); + adjust_tool_window.contrast_slider.value_changed.disconnect(on_contrast_adjustment); adjust_tool_window.saturation_slider.value_changed.disconnect(on_saturation_adjustment); adjust_tool_window.tint_slider.value_changed.disconnect(on_tint_adjustment); adjust_tool_window.temperature_slider.value_changed.disconnect(on_temperature_adjustment); @@ -2823,6 +2856,7 @@ public class AdjustTool : EditingTool { adjust_tool_window.saturation_slider.button_press_event.disconnect(on_hscale_reset); adjust_tool_window.exposure_slider.button_press_event.disconnect(on_hscale_reset); + adjust_tool_window.contrast_slider.button_press_event.disconnect(on_hscale_reset); adjust_tool_window.tint_slider.button_press_event.disconnect(on_hscale_reset); adjust_tool_window.temperature_slider.button_press_event.disconnect(on_hscale_reset); adjust_tool_window.shadows_slider.button_press_event.disconnect(on_hscale_reset); @@ -2876,6 +2910,11 @@ public class AdjustTool : EditingTool { ((ShadowDetailTransformation) transformation).get_parameter()); break; + case PixelTransformationType.CONTRAST: + adjust_tool_window.contrast_slider.set_value( + ((ContrastTransformation) transformation).get_parameter()); + break; + case PixelTransformationType.HIGHLIGHTS: adjust_tool_window.highlights_slider.set_value( ((HighlightDetailTransformation) transformation).get_parameter()); |