class Diffux::SnapshotComparisonImage::Overlayed

This subclass of `SnapshotComparisonImage` knows how to overlay the after-image on top of the before-image, and render the difference in a scaled magenta color.

Constants

WHITE_OVERLAY

Public Class Methods

new(offset, canvas) click to toggle source

@param offset [Integer] @param canvas [ChunkyPNG::Image] @see SnapshotComparisonImage::Base

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 12
def initialize(offset, canvas)
  @diff_pixels  = {}
  @faded_pixels = {}
  super
end

Public Instance Methods

render_added_row(y, row) click to toggle source

@param y [Integer] @param row [Diff::LCS:ContextChange]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 37
def render_added_row(y, row)
  row.new_element.each_with_index do |pixel_after, x|
    render_faded_magenta_pixel(pixel_after, TRANSPARENT, x, y)
  end
end
render_changed_row(y, row) click to toggle source

@param y [Integer] @param row [Diff::LCS:ContextChange]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 45
def render_changed_row(y, row)
  row.old_element.zip(row.new_element).each_with_index do |pixels, x|
    pixel_before, pixel_after = pixels
    render_faded_magenta_pixel(
      pixel_after  || TRANSPARENT,
      pixel_before || TRANSPARENT,
      x, y)
  end
end
render_deleted_row(y, row) click to toggle source

@param y [Integer] @param row [Diff::LCS:ContextChange]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 29
def render_deleted_row(y, row)
  row.old_element.each_with_index do |pixel_before, x|
    render_faded_magenta_pixel(TRANSPARENT, pixel_before, x, y)
  end
end
render_unchanged_row(y, row) click to toggle source

@param y [Integer] @param row [Diff::LCS:ContextChange]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 20
def render_unchanged_row(y, row)
  # Render translucent original pixels
  row.new_element.each_with_index do |pixel, x|
    render_faded_pixel(x, y, pixel)
  end
end

Private Instance Methods

render_diff_pixel(x, y, score) click to toggle source

@param x [Integer] @param y [Integer] @param score [Float]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 73
def render_diff_pixel(x, y, score)
  @diff_pixels[score] ||= compose_quick(fade(MAGENTA, diff_alpha(score)),
                                        WHITE)
  render_pixel(x, y, @diff_pixels[score])
end
render_faded_magenta_pixel(pixel_after, pixel_before, x, y) click to toggle source

@param pixel_after [Integer] @param pixel_before [Integer] @param x [Integer] @param y [Integer]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 61
def render_faded_magenta_pixel(pixel_after, pixel_before, x, y)
  score = pixel_diff_score(pixel_after, pixel_before)
  if score > 0
    render_diff_pixel(x, y, score)
  else
    render_faded_pixel(x, y, pixel_after)
  end
end
render_faded_pixel(x, y, pixel) click to toggle source

@param x [Integer] @param y [Integer] @param pixel [Integer]

# File lib/diffux_ci/snapshot_comparison_image/overlayed.rb, line 82
def render_faded_pixel(x, y, pixel)
  @faded_pixels[pixel] ||= compose_quick(WHITE_OVERLAY, pixel)
  render_pixel(x, y, @faded_pixels[pixel])
end