#==============================================================================# # svg/element.rb # $Id: element.rb,v 1.14 2003/02/06 14:59:43 yuya Exp $ #==============================================================================# #==============================================================================# # SVG Module module SVG #============================================================================# # ElementBase Class class ElementBase def initialize(&block) @id = nil @style = nil @class = nil @transform = nil @attr = nil if block_given? instance_eval(&block) end end attr_accessor :id, :style, :class, :transform, :attr def to_s text = '' text << %| id="#{@id}"| if @id text << %| style="#{@style}"| if @style text << %| class="#{@class}"| if @class text << %| transform="#{@transform}"| if @transform text << %| #{@attr}| if @attr return text end end # ElementBase #============================================================================# # Group Class class Group < ElementBase include ArrayMixin def initialize super() @elements = [] end attr_reader :elements def array return @elements end private :array def to_s text = %|\n| text << @elements.collect { |element| element.to_s + "\n" }.join text << %|\n| end end # Group #============================================================================# # Anchor Class class Anchor < ElementBase include ArrayMixin def initialize(uri) super() @uri = uri @elements = [] end attr_accessor :uri attr_reader :elements def array return @elements end private :array def to_s text = %|\n| text << @elements.collect { |element| element.to_s + "\n" }.join text << %|\n| end end # Anchor #============================================================================# # Use Class class Use < ElementBase def initialize(uri) super() @uri = uri end attr_accessor :uri def to_s text = %|\n| end end # Use #============================================================================# # Rect Class class Rect < ElementBase def initialize(x, y, width, height, rx = nil, ry = nil) super() @x = x @y = y @width = width @height = height @rx = rx @ry = ry end attr_accessor :width, :height, :x, :y, :rx, :ry def to_s text = %|| return text end end # Rect #============================================================================# # Circle Class class Circle < ElementBase def initialize(cx, cy, r) super() @cx = cx @cy = cy @r = r end attr_accessor :cx, :cy, :r def to_s text = %|| return text end end # Circle #============================================================================# # Ellipse Class class Ellipse < ElementBase def initialize(cx, cy, rx, ry) super() @cx = cx @cy = cy @rx = rx @ry = ry end attr_accessor :cx, :cy, :rx, :ry def to_s text = %|| return text end end # Ellipse #============================================================================# # Line Class class Line < ElementBase def initialize(x1, y1, x2, y2) super() @x1 = x1 @y1 = y1 @x2 = x2 @y2 = y2 end attr_accessor :x1, :y1, :x2, :y2 def to_s text = %|| return text end end # Line #============================================================================# # Polyline Class class Polyline < ElementBase def initialize(points) super() @points = points end attr_accessor :points def to_s text = %|| return text end end # Polyline #============================================================================# # Polygon Class class Polygon < ElementBase def initialize(points) super() @points = points end attr_accessor :points def to_s text = %|| return text end end # Polygon #============================================================================# # Image Class class Image < ElementBase def initialize(x, y, width, height, href) super() @x = x @y = y @width = width @height = height @href = href end attr_accessor :x, :y, :width, :height, :href def to_s text = %|| return text end end # Image #============================================================================# # Path Class class Path < ElementBase def initialize(path, length = nil) super() @path = path @length = length end attr_accessor :path, :length def to_s text = %|| return text end end # Path #============================================================================# # Text Class class Text < ElementBase def initialize(x, y, text) super() @x = x @y = y @text = text @length = nil @length_adjust = nil end attr_accessor :x, :y, :text, :length, :length_adjust def to_s svg = %|| svg << text svg << %|| return svg end end # Text #============================================================================# # Verbatim Class class Verbatim def initialize(xml) @xml = xml end attr_accessor :xml def to_s return @xml end end # Verbatim end # SVG #==============================================================================# #==============================================================================#