Class: Phantom::SVG::Base
- Inherits:
-
Object
- Object
- Phantom::SVG::Base
- Defined in:
- lib/phantom/svg.rb
Instance Attribute Summary collapse
-
#frames ⇒ Object
Returns the value of attribute frames.
-
#height ⇒ Object
Returns the value of attribute height.
-
#loops ⇒ Object
Returns the value of attribute loops.
-
#skip_first ⇒ Object
Returns the value of attribute skip_first.
-
#width ⇒ Object
Returns the value of attribute width.
Instance Method Summary collapse
-
#add_frame(frame = nil, options = {}) ⇒ Object
Creates a blank frame when no arguments are passed Takes another Phantom::SVG object or file path.
- #add_frame_from_file(path, options = {}) ⇒ Object
-
#initialize(path = nil, options = {}) ⇒ Base
constructor
A new instance of Base.
- #load_file(file, options) ⇒ Object
- #reset ⇒ Object
- #save_apng(path) ⇒ Object
- #save_svg(path) ⇒ Object
- #save_svg_frame(path, frame, width = nil, height = nil) ⇒ Object
- #scale_h(height) ⇒ Object
- #scale_w(width) ⇒ Object
- #set_height(height) ⇒ Object
- #set_size(width = nil, height = nil) ⇒ Object
- #set_width(width) ⇒ Object
-
#total_duration ⇒ Object
Calculate and return total duration.
Constructor Details
#initialize(path = nil, options = {}) ⇒ Base
Returns a new instance of Base.
16 17 18 19 20 |
# File 'lib/phantom/svg.rb', line 16 def initialize(path = nil, = {}) reset add_frame_from_file(path, ) if path end |
Instance Attribute Details
#frames ⇒ Object
Returns the value of attribute frames.
14 15 16 |
# File 'lib/phantom/svg.rb', line 14 def frames @frames end |
#height ⇒ Object
Returns the value of attribute height.
14 15 16 |
# File 'lib/phantom/svg.rb', line 14 def height @height end |
#loops ⇒ Object
Returns the value of attribute loops.
14 15 16 |
# File 'lib/phantom/svg.rb', line 14 def loops @loops end |
#skip_first ⇒ Object
Returns the value of attribute skip_first.
14 15 16 |
# File 'lib/phantom/svg.rb', line 14 def skip_first @skip_first end |
#width ⇒ Object
Returns the value of attribute width.
14 15 16 |
# File 'lib/phantom/svg.rb', line 14 def width @width end |
Instance Method Details
#add_frame(frame = nil, options = {}) ⇒ Object
Creates a blank frame when no arguments are passed Takes another Phantom::SVG object or file path
50 51 52 53 54 55 56 |
# File 'lib/phantom/svg.rb', line 50 def add_frame(frame = nil, = {}) if frame.nil? then @frames << Phantom::SVG::Frame.new elsif frame.instance_of?(Phantom::SVG::Frame) then @frames << frame elsif frame.instance_of?(Phantom::SVG::Base) then @frames += frame.frames elsif frame.instance_of?(String) then add_frame_from_file(frame, ) end end |
#add_frame_from_file(path, options = {}) ⇒ Object
30 31 32 33 34 |
# File 'lib/phantom/svg.rb', line 30 def add_frame_from_file(path, = {}) create_file_list(path).each do |file| load_file(file, ) end end |
#load_file(file, options) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/phantom/svg.rb', line 36 def load_file(file, ) case File.extname(file).downcase when '.svg' then load_from_svg(file, ) when '.png' then load_from_png(file, ) when '.jpg' then load_from_jpeg(file, ) when '.jpeg' then load_from_jpeg(file, ) when '.gif' then load_from_gif(file, ) when '.json' then load_from_json(file, ) when '.xml' then load_from_xml(file, ) end end |
#reset ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/phantom/svg.rb', line 22 def reset @frames = [] @width = 0 @height = 0 @loops = 0 @skip_first = false end |
#save_apng(path) ⇒ Object
117 118 119 |
# File 'lib/phantom/svg.rb', line 117 def save_apng(path) Parser::PNGWriter.new.write(path, self) end |
#save_svg(path) ⇒ Object
97 98 99 100 101 |
# File 'lib/phantom/svg.rb', line 97 def save_svg(path) set_size Parser::SVGWriter.new.write(path, self) end |
#save_svg_frame(path, frame, width = nil, height = nil) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/phantom/svg.rb', line 103 def save_svg_frame(path, frame, width = nil, height = nil) old_width = frame.width old_height = frame.height frame.width = width unless width.nil? frame.height = height unless height.nil? write_size = Parser::SVGWriter.new.write(path, frame) frame.width = old_width frame.height = old_height write_size end |
#scale_h(height) ⇒ Object
92 93 94 95 |
# File 'lib/phantom/svg.rb', line 92 def scale_h(height) @width = (@width.to_i * height.to_i / @height.to_i).to_i @height = height.to_i end |
#scale_w(width) ⇒ Object
87 88 89 90 |
# File 'lib/phantom/svg.rb', line 87 def scale_w(width) @height = (@height.to_i * width.to_i / @width.to_i).to_i @width = width.to_i end |
#set_height(height) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/phantom/svg.rb', line 75 def set_height(height) if height.nil? if @height.nil? || @height == 0 frames.each do |frame| @height = frame.height.to_i if frame.height.to_i > @height end end else @height = height end end |
#set_size(width = nil, height = nil) ⇒ Object
58 59 60 61 |
# File 'lib/phantom/svg.rb', line 58 def set_size(width = nil, height = nil) set_width(width) set_height(height) end |
#set_width(width) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/phantom/svg.rb', line 63 def set_width(width) if width.nil? if @width.nil? || @width == 0 frames.each do |frame| @width = frame.width.to_i if frame.width.to_i > @width end end else @width = width end end |
#total_duration ⇒ Object
Calculate and return total duration.
122 123 124 125 126 127 128 129 |
# File 'lib/phantom/svg.rb', line 122 def total_duration result = 0.0 @frames.each_with_index do |frame, i| next if i == 0 && @skip_first result += frame.duration end result end |