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
Calls superclass method
Diffux::SnapshotComparisonImage::Base::new
# File lib/diffux_core/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_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)
click to toggle source
@param y [Integer] @param row [Diff::LCS:ContextChange]
# 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)
click to toggle source
@param y [Integer] @param row [Diff::LCS:ContextChange]
# 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)
click to toggle source
@param y [Integer] @param row [Diff::LCS:ContextChange]
# 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
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_core/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_core/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_core/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