module SVGPlot::Transform

Provide methods for SVG transformations

Public Instance Methods

matrix(*args) click to toggle source
# File lib/svgplot/transform.rb, line 31
def matrix(*args)
  fail('matrix takes 6 args') unless args.size == 6
  add_transform(:matrix, args.join(', '))
  self
end
rotate(angle, cx = nil, cy = nil) click to toggle source
# File lib/svgplot/transform.rb, line 15
def rotate(angle, cx = nil, cy = nil)
  string = [cx, cy].any?(&:nil?) ? "#{angle}" : "#{angle}, #{cx}, #{cy}"
  add_transform(:rotate, string)
  self
end
scale(sx, sy = 1) click to toggle source
# File lib/svgplot/transform.rb, line 10
def scale(sx, sy = 1)
  add_transform(:scale, "#{sx}, #{sy}")
  self
end
skew_x(angle) click to toggle source
# File lib/svgplot/transform.rb, line 21
def skew_x(angle)
  add_transform(:skewX, "#{angle}")
  self
end
skew_y(angle) click to toggle source
# File lib/svgplot/transform.rb, line 26
def skew_y(angle)
  add_transform(:skewY, "#{angle}")
  self
end
translate(tx, ty = 0) click to toggle source
# File lib/svgplot/transform.rb, line 5
def translate(tx, ty = 0)
  add_transform(:translate, "#{tx}, #{ty}")
  self
end

Private Instance Methods

add_transform(type, params) click to toggle source
# File lib/svgplot/transform.rb, line 39
def add_transform(type, params)
  validate_attribute(:transform)
  @attributes[:transform] ||= ''
  @attributes[:transform] << ' ' if @attributes[:transform].size > 0
  @attributes[:transform] << "#{type}(#{params})"
end