Class: Prawn::SVG::Elements::Rect

Inherits:
Base
  • Object
show all
Includes:
Calculators::ArcToBezierCurve
Defined in:
lib/prawn/svg/elements/rect.rb

Constant Summary

Constants inherited from Base

Base::COMMA_WSP_REGEXP, Base::MissingAttributesError, Base::PAINT_TYPES, Base::SVG_NAMESPACE, Base::SkipElementError, Base::SkipElementQuietly

Constants included from Attributes::Stroke

Attributes::Stroke::CAP_STYLE_TRANSLATIONS, Attributes::Stroke::JOIN_STYLE_TRANSLATIONS

Instance Attribute Summary

Attributes inherited from Base

#attributes, #base_calls, #calls, #document, #parent_calls, #properties, #source, #state

Instance Method Summary collapse

Methods inherited from Base

#initialize, #name, #parse_and_apply, #process

Methods included from TransformParser

#parse_transform_attribute

Methods included from PDFMatrix

#load_matrix, #matrix_for_pdf, #rotation_matrix, #scale_matrix, #translation_matrix

Methods included from Attributes::Space

#parse_xml_space_attribute

Methods included from Attributes::Stroke

#parse_stroke_attributes_and_call

Methods included from Attributes::Mask

#parse_mask_attribute_and_call

Methods included from Attributes::ClipPath

#parse_clip_path_attribute_and_call

Methods included from Attributes::Opacity

#parse_opacity_attributes_and_call

Methods included from Attributes::Transform

#parse_transform_attribute_and_call

Constructor Details

This class inherits a constructor from Prawn::SVG::Elements::Base

Instance Method Details

#applyObject



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/prawn/svg/elements/rect.rb', line 23

def apply
  if @rx && @ry
    if @rx == @ry
      add_call 'rounded_rectangle', [@x, @y], @width, @height, @rx
    else
      apply_elliptical_rounded_rectangle
    end
  else
    add_call 'rectangle', [@x, @y], @width, @height
  end
end

#bounding_boxObject



35
36
37
# File 'lib/prawn/svg/elements/rect.rb', line 35

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

#parseObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/prawn/svg/elements/rect.rb', line 4

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

  raw_rx = x_pixels(attributes['rx'])
  raw_ry = y_pixels(attributes['ry'])

  if raw_rx || raw_ry
    @rx = (raw_rx || raw_ry).clamp(0, @width / 2.0)
    @ry = (raw_ry || raw_rx).clamp(0, @height / 2.0)
  end
end