Sha256: 11659392a3762b5ed98d68c1d6809bed047814ab6dc3bb5dbc2aefc599cdeabd

Contents?: true

Size: 1007 Bytes

Versions: 16

Compression:

Stored size: 1007 Bytes

Contents

class Prawn::SVG::Elements::Rect < Prawn::SVG::Elements::Base
  def parse
    require_attributes 'width', 'height'

    @x = x(attributes['x'] || '0')
    @y = y(attributes['y'] || '0')
    @width = x_pixels(attributes['width'])
    @height = y_pixels(attributes['height'])

    require_positive_value @width, @height

    @radius = x_pixels(attributes['rx']) || y_pixels(attributes['ry'])
    if @radius
      # If you implement separate rx and ry in the future, you'll want to change this
      # so that rx is constrained to @width/2 and ry is constrained to @height/2.
      max_value = [@width, @height].min / 2.0
      @radius = clamp(@radius, 0, max_value)
    end
  end

  def apply
    if @radius
      # n.b. does not support both rx and ry being specified with different values
      add_call "rounded_rectangle", [@x, @y], @width, @height, @radius
    else
      add_call "rectangle", [@x, @y], @width, @height
    end
  end

  def bounding_box
    [@x, @y, @x + @width, @y - @height]
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
prawn-svg-0.34.2 lib/prawn/svg/elements/rect.rb
prawn-svg-0.34.1 lib/prawn/svg/elements/rect.rb
prawn-svg-0.34.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.33.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.32.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.31.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.30.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.29.1 lib/prawn/svg/elements/rect.rb
prawn-svg-0.29.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.28.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.27.1 lib/prawn/svg/elements/rect.rb
prawn-svg-0.27.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.26.0 lib/prawn/svg/elements/rect.rb
prawn-svg-0.25.2 lib/prawn/svg/elements/rect.rb
prawn-svg-0.25.1 lib/prawn/svg/elements/rect.rb
prawn-svg-0.25.0 lib/prawn/svg/elements/rect.rb