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]];              }          }      } | 
