lib/rabbit/image/svg.rb in rabbit-2.2.0 vs lib/rabbit/image/svg.rb in rabbit-2.2.1
- old
+ new
@@ -1,12 +1,31 @@
+# Copyright (C) 2004-2017 Kouhei Sutou <kou@cozmixng.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
require "rsvg2"
require "rabbit/image/base"
+unless Object.const_defined?(:Rsvg)
+ Rsvg = RSVG
+end
+
module Rabbit
module ImageManipulable
-
class SVG < Base
unshift_loader(self)
class << self
@@ -32,27 +51,20 @@
super
end
end
def pixbuf
- @pixbuf ||= to_pixbuf(width, height)
+ @handle.pixbuf
end
private
def update_size
- @handle = nil
rsvg_environment do |name|
- if RSVG::Handle.respond_to?(:new_from_file)
- @handle = RSVG::Handle.new_from_file(name)
- dim = @handle.dimensions
- @width = dim.width
- @height = dim.height
- else
- @pixbuf = RSVG.pixbuf_from_file(name)
- @width = @pixbuf.width
- @height = @pixbuf.height
- end
+ @handle = Rsvg::Handle.new(:path => name)
+ dim = @handle.dimensions
+ @width = dim.width
+ @height = dim.height
end
end
def filename
File.expand_path(@filename)
@@ -61,19 +73,9 @@
def rsvg_environment
dir = File.dirname(filename)
name = File.basename(filename)
Dir.chdir(dir) do
yield(name)
- end
- end
-
- def to_pixbuf(w=nil, h=nil)
- rsvg_environment do |name|
- if w or h
- RSVG.pixbuf_from_file_at_size(name, w || width, h || height)
- else
- RSVG.pixbuf_from_file(name)
- end
end
end
end
end
end