Class: Chamomile::Layout::Horizontal
- Defined in:
- lib/chamomile/layout/horizontal.rb
Instance Method Summary collapse
- #add(child) ⇒ Object
-
#initialize(align: :top) ⇒ Horizontal
constructor
A new instance of Horizontal.
- #render(width:, height:) ⇒ Object
Constructor Details
#initialize(align: :top) ⇒ Horizontal
Returns a new instance of Horizontal.
6 7 8 9 |
# File 'lib/chamomile/layout/horizontal.rb', line 6 def initialize(align: :top) @align = align @children = [] end |
Instance Method Details
#add(child) ⇒ Object
11 12 13 14 |
# File 'lib/chamomile/layout/horizontal.rb', line 11 def add(child) @children << child self end |
#render(width:, height:) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/chamomile/layout/horizontal.rb', line 16 def render(width:, height:) return "" if @children.empty? explicit = @children.select { |c| c.respond_to?(:explicit_width?) && c.explicit_width? } flexible = @children - explicit used = explicit.sum { |c| c.resolved_width(width) } flex_width = flexible.empty? ? 0 : (width - used) / flexible.size parts = @children.map do |child| w = explicit.include?(child) ? child.resolved_width(width) : flex_width child.render(width: w, height: height) end Chamomile.horizontal(parts, align: @align) end |