diff options
Diffstat (limited to 'src/editing_tools/EditingTools.vala')
-rw-r--r-- | src/editing_tools/EditingTools.vala | 56 |
1 files changed, 18 insertions, 38 deletions
diff --git a/src/editing_tools/EditingTools.vala b/src/editing_tools/EditingTools.vala index d160f23..ee08f84 100644 --- a/src/editing_tools/EditingTools.vala +++ b/src/editing_tools/EditingTools.vala @@ -265,29 +265,7 @@ public abstract class PhotoCanvas { default_ctx.fill(); // paint the actual image - Gdk.cairo_set_source_pixbuf(default_ctx, pixbuf, scaled_position.x, scaled_position.y); - default_ctx.rectangle(scaled_position.x, scaled_position.y, - pixbuf.get_width(), pixbuf.get_height()); - default_ctx.fill(); - default_ctx.restore(); - } - - public void paint_pixbuf_area(Gdk.Pixbuf pixbuf, Box source_area) { - default_ctx.save(); - if (pixbuf.get_has_alpha()) { - set_source_color_from_string(default_ctx, "#000"); - default_ctx.rectangle(scaled_position.x + source_area.left, - scaled_position.y + source_area.top, - source_area.get_width(), source_area.get_height()); - default_ctx.fill(); - - } - Gdk.cairo_set_source_pixbuf(default_ctx, pixbuf, scaled_position.x, - scaled_position.y); - default_ctx.rectangle(scaled_position.x + source_area.left, - scaled_position.y + source_area.top, - source_area.get_width(), source_area.get_height()); - default_ctx.fill(); + paint_pixmap_with_background(default_ctx, pixbuf, scaled_position.x, scaled_position.y); default_ctx.restore(); } @@ -460,7 +438,7 @@ public abstract class PhotoCanvas { Cairo.Surface surface = new Cairo.Surface.similar(default_ctx.get_target(), Cairo.Content.COLOR_ALPHA, pos.width, pos.height); Cairo.Context ctx = new Cairo.Context(surface); - Gdk.cairo_set_source_pixbuf(ctx, pixbuf, 0, 0); + paint_pixmap_with_background(ctx, pixbuf, 0, 0); ctx.paint(); return surface; } @@ -2207,7 +2185,7 @@ public class RedeyeTool : EditingTool { } public class AdjustTool : EditingTool { - private const int SLIDER_WIDTH = 160; + private const int SLIDER_WIDTH = 200; private const uint SLIDER_DELAY_MSEC = 100; private class AdjustToolWindow : EditingToolWindow { @@ -2255,7 +2233,7 @@ public class AdjustTool : EditingTool { slider_organizer.attach(exposure_label, 0, 0, 1, 1); slider_organizer.attach(exposure_slider, 1, 0, 1, 1); exposure_slider.set_size_request(SLIDER_WIDTH, -1); - exposure_slider.set_draw_value(false); + exposure_slider.set_value_pos(Gtk.PositionType.RIGHT); exposure_slider.set_margin_end(0); Gtk.Label contrast_label = new Gtk.Label.with_mnemonic(_("Contrast:")); @@ -2264,7 +2242,7 @@ public class AdjustTool : EditingTool { 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_value_pos(Gtk.PositionType.RIGHT); contrast_slider.set_margin_end(0); Gtk.Label saturation_label = new Gtk.Label.with_mnemonic(_("Saturation:")); @@ -2273,7 +2251,7 @@ public class AdjustTool : EditingTool { 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_value_pos(Gtk.PositionType.RIGHT); saturation_slider.set_margin_end(0); Gtk.Label tint_label = new Gtk.Label.with_mnemonic(_("Tint:")); @@ -2282,7 +2260,7 @@ public class AdjustTool : EditingTool { 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_value_pos(Gtk.PositionType.RIGHT); tint_slider.set_margin_end(0); Gtk.Label temperature_label = @@ -2292,7 +2270,7 @@ public class AdjustTool : EditingTool { 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_value_pos(Gtk.PositionType.RIGHT); temperature_slider.set_margin_end(0); Gtk.Label shadows_label = new Gtk.Label.with_mnemonic(_("Shadows:")); @@ -2301,8 +2279,10 @@ public class AdjustTool : EditingTool { 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_end(0); + shadows_slider.set_value_pos(Gtk.PositionType.RIGHT); + // FIXME: Hack to make the slider the same length as the other. Find out why it is aligned + // Differently (probably because it only has positive values) + shadows_slider.set_margin_end(5); Gtk.Label highlights_label = new Gtk.Label.with_mnemonic(_("Highlights:")); highlights_label.halign = Gtk.Align.START; @@ -2310,7 +2290,8 @@ public class AdjustTool : EditingTool { 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); + highlights_slider.set_value_pos(Gtk.PositionType.RIGHT); + highlights_slider.set_margin_end(0); Gtk.Box button_layouter = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); button_layouter.set_homogeneous(true); @@ -2327,7 +2308,7 @@ public class AdjustTool : EditingTool { pane_layouter.add(histogram_manipulator); pane_layouter.add(slider_organizer); pane_layouter.add(button_layouter); - pane_layouter.set_child_packing(histogram_manipulator, true, true, 0, Gtk.PackType.START); + pane_layouter.set_child_packing(histogram_manipulator, false, true, 0, Gtk.PackType.START); add(pane_layouter); } @@ -2971,15 +2952,14 @@ public class AdjustTool : EditingTool { fp_pixel_cache = new float[3 * source_width * source_height]; int cache_pixel_index = 0; - float INV_255 = 1.0f / 255.0f; for (int j = 0; j < source_height; j++) { int row_start_index = j * source_rowstride; int row_end_index = row_start_index + (source_width * source_num_channels); for (int i = row_start_index; i < row_end_index; i += source_num_channels) { - fp_pixel_cache[cache_pixel_index++] = ((float) source_pixels[i]) * INV_255; - fp_pixel_cache[cache_pixel_index++] = ((float) source_pixels[i + 1]) * INV_255; - fp_pixel_cache[cache_pixel_index++] = ((float) source_pixels[i + 2]) * INV_255; + fp_pixel_cache[cache_pixel_index++] = rgb_lookup_table[source_pixels[i]]; + fp_pixel_cache[cache_pixel_index++] = rgb_lookup_table[source_pixels[i + 1]]; + fp_pixel_cache[cache_pixel_index++] = rgb_lookup_table[source_pixels[i + 2]]; } } } |