#==============================================================================#
# svg/core.rb
# $Id: core.rb,v 1.11 2003/02/06 14:59:43 yuya Exp $
#==============================================================================#
#==============================================================================#
# SVG Module
module SVG
def self.new(*args)
return Picture.new(*args)
end
#============================================================================#
# Picture Class
class Picture
include ArrayMixin
def initialize(width, height, view_box = nil)
@width = width
@height = height
@x = nil
@y = nil
@view_box = view_box
@title = nil
@desc = nil
@elements = []
@styles = []
@scripts = []
end
attr_reader :elements, :styles, :scripts
attr_accessor :width, :height, :x, :y, :view_box, :title, :desc
def array
return @elements
end
private :array
def define_style(class_name, style)
@styles << DefineStyle.new(class_name, style)
end
def to_s
text = %|\n|
text << %|\n|
text << %|\n|
return text
end
def svg
return self.to_s
end
def svgz
require 'zlib'
return Deflate.deflate(self.to_s, Deflate::BEST_COMPRESSION)
end
def mime_type
return 'image/svg+xml'
end
end # Picture
#============================================================================#
# DefineStyle Class
class DefineStyle
def initialize(class_name, style)
@class_name = class_name
@style = style
end
attr_accessor :class_name, :style
def to_s
return "#{@class_name} { #{@style} }"
end
end # DefineStyle
#============================================================================#
# ECMAScript Class
class ECMAScript
def initialize(script)
@script = script
end
attr_accessor :script
def to_s
text = %|\n|
return text
end
end # ECMAScript
#============================================================================#
# ECMAScriptURI Class
class ECMAScriptURI
def initialize(uri)
@uri = uri
end
attr_accessor :uri
def to_s
return %|\n|
end
end # ECMAScriptURI
end # SVG
#==============================================================================#
#==============================================================================#