Sha256: bb5ec57876c555c943eca59121abaf306ab236bf3cb7c55170e4e97c603ee1d8

Contents?: true

Size: 1.81 KB

Versions: 8

Compression:

Stored size: 1.81 KB

Contents

module Rabbit
  class Size
    attr_reader :real_width
    attr_reader :real_height
    attr_reader :logical_width
    attr_reader :logical_height
    attr_reader :logical_margin_left
    attr_reader :logical_margin_right
    attr_reader :logical_margin_top
    attr_reader :logical_margin_bottom
    attr_reader :ratio
    def initialize(width, height, ratio)
      @real_width = width
      @real_height = height
      @ratio = ratio
      compute_logical_size
    end

    def have_logical_margin_x?
      @logical_margin_left > 0 or
        @logical_margin_right > 0
    end

    def have_logical_margin_y?
      @logical_margin_top > 0 or
        @logical_margin_bottom > 0
    end

    def have_logical_margin?
      have_logical_margin_x? or have_logical_margin_y?
    end

    private
    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
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rabbit-2.2.1 lib/rabbit/size.rb
rabbit-2.2.0 lib/rabbit/size.rb
rabbit-2.1.9 lib/rabbit/size.rb
rabbit-2.1.8 lib/rabbit/size.rb
rabbit-2.1.7 lib/rabbit/size.rb
rabbit-2.1.6 lib/rabbit/size.rb
rabbit-2.1.5 lib/rabbit/size.rb
rabbit-2.1.4 lib/rabbit/size.rb