class Applitools::Selenium::ContextBasedScaleProvider

@!visibility private

Constants

ALLOWED_DCES_DEVIATION
ALLOWED_VS_DEVIATION
UNKNOWN_SCALE_RATIO

Attributes

device_pixel_ratio[R]
scale_ratio[R]
top_level_context_entire_size[R]
viewport_size[R]

Public Class Methods

new(top_level_context_entire_size, viewport_size, device_pixel_ratio) click to toggle source

Initialize a class instance.

@param [Applitools::RectangleSize] top_level_context_entire_size The entire size of the context. @param [Hash] viewport_size The required browser’s viewport size. @param [Fixnum] device_pixel_ratio The device’s pixel ratio.

# File lib/applitools/selenium/context_based_scale_provider.rb, line 18
def initialize(top_level_context_entire_size, viewport_size, device_pixel_ratio)
  @top_level_context_entire_size = top_level_context_entire_size
  @viewport_size = viewport_size
  @device_pixel_ratio = device_pixel_ratio
  @scale_ratio = UNKNOWN_SCALE_RATIO
end

Public Instance Methods

scale_image(image) click to toggle source

Scales the image.

@param [Screenshot::Datastream] image The image to scale.

# File lib/applitools/selenium/context_based_scale_provider.rb, line 28
def scale_image(image)
  if @scale_ratio == UNKNOWN_SCALE_RATIO
    @scale_ratio = if ((image.width >= viewport_size.width - ALLOWED_VS_DEVIATION) &&
        (image.width <= viewport_size.width + ALLOWED_VS_DEVIATION)) ||
        ((image.width >= top_level_context_entire_size.width - ALLOWED_DCES_DEVIATION) &&
        (image.width <= top_level_context_entire_size.width + ALLOWED_DCES_DEVIATION))
                     1
                   else
                     1.to_f / device_pixel_ratio
                   end
  end
  Applitools::Utils::ImageUtils.scale!(image, scale_ratio)
end