class Rabbit::Size

Attributes

logical_height[R]
logical_margin_bottom[R]
logical_margin_left[R]
logical_margin_right[R]
logical_margin_top[R]
logical_width[R]
ratio[R]
real_height[R]
real_width[R]

Public Class Methods

new(width, height, ratio) click to toggle source
# File lib/rabbit/size.rb, line 12
def initialize(width, height, ratio)
  @real_width = width
  @real_height = height
  @ratio = ratio
  compute_logical_size
end

Public Instance Methods

have_logical_margin?() click to toggle source
# File lib/rabbit/size.rb, line 29
def have_logical_margin?
  have_logical_margin_x? or have_logical_margin_y?
end
have_logical_margin_x?() click to toggle source
# File lib/rabbit/size.rb, line 19
def have_logical_margin_x?
  @logical_margin_left > 0 or
    @logical_margin_right > 0
end
have_logical_margin_y?() click to toggle source
# File lib/rabbit/size.rb, line 24
def have_logical_margin_y?
  @logical_margin_top > 0 or
    @logical_margin_bottom > 0
end

Private Instance Methods

compute_logical_size() click to toggle source
# File lib/rabbit/size.rb, line 34
def compute_logical_size
  real_ratio = @real_width.to_f / @real_height.to_f
  if real_ratio == @ratio
    @logical_width = @real_width
    @logical_height = @real_height
    @logical_margin_left = 0
    @logical_margin_right = 0
    @logical_margin_top = 0
    @logical_margin_bottom = 0
    return
  end

  if real_ratio > @ratio
    @logical_width = @real_width * (@ratio / real_ratio)
    @logical_height = @real_height
    width_margin = @real_width - @logical_width
    @logical_margin_left = width_margin / 2
    @logical_margin_right = width_margin / 2
    @logical_margin_top = 0
    @logical_margin_bottom = 0
  else
    @logical_width = @real_width
    @logical_height = @real_height * (real_ratio / @ratio)
    height_margin = @real_height - @logical_height
    @logical_margin_left = 0
    @logical_margin_right = 0
    @logical_margin_top = height_margin / 2
    @logical_margin_bottom = height_margin / 2
  end
end