Class: Diffux::SnapshotComparisonImage::Overlayed

Inherits:
Base
  • Object
show all
Defined in:
lib/diffux_core/snapshot_comparison_image/overlayed.rb

Overview

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.

Constant Summary collapse

WHITE_OVERLAY =
ChunkyPNG::Color.fade(WHITE, 1 - BASE_ALPHA)

Constants inherited from Base

Base::BASE_ALPHA, Base::BASE_DIFF_ALPHA, Base::BASE_OPACITY, Base::GREEN, Base::MAGENTA, Base::RED

Instance Method Summary collapse

Methods inherited from Base

#diff_alpha, #pixel_diff_score, #render_pixel, #render_row

Constructor Details

#initialize(offset, canvas) ⇒ Overlayed

Returns a new instance of Overlayed.

Parameters:

  • offset (Integer)
  • canvas (ChunkyPNG::Image)

See Also:



12
13
14
15
16
# File 'lib/diffux_core/snapshot_comparison_image/overlayed.rb', line 12

def initialize(offset, canvas)
  @diff_pixels  = {}
  @faded_pixels = {}
  super
end

Instance Method Details

#render_added_row(y, row) ⇒ Object

Parameters:

  • y (Integer)
  • row (Diff::LCS:ContextChange)


37
38
39
40
41
# File 'lib/diffux_core/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) ⇒ Object

Parameters:

  • y (Integer)
  • row (Diff::LCS:ContextChange)


45
46
47
48
49
50
51
52
53
# File 'lib/diffux_core/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) ⇒ Object

Parameters:

  • y (Integer)
  • row (Diff::LCS:ContextChange)


29
30
31
32
33
# File 'lib/diffux_core/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) ⇒ Object

Parameters:

  • y (Integer)
  • row (Diff::LCS:ContextChange)


20
21
22
23
24
25
# File 'lib/diffux_core/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