lib/morandi/profiled_pixbuf.rb in morandi-0.11.3 vs lib/morandi/profiled_pixbuf.rb in morandi-0.12.0

- old
+ new

@@ -1,21 +1,21 @@ require 'gdk_pixbuf2' -class Morandi::ProfiledPixbuf < Gdk::Pixbuf +class Morandi::ProfiledPixbuf < GdkPixbuf::Pixbuf def valid_jpeg?(filename) return false unless File.exist?(filename) return false unless File.size(filename) > 0 - type, _, _ = Gdk::Pixbuf.get_file_info(filename) + type, _, _ = GdkPixbuf::Pixbuf.get_file_info(filename) type && type.name.eql?('jpeg') rescue false end def self.from_string(string, loader: nil, chunk_size: 4096) - loader ||= Gdk::PixbufLoader.new + loader ||= GdkPixbuf::PixbufLoader.new ((string.bytesize + chunk_size - 1) / chunk_size).times do |i| loader.write(string.byteslice(i * chunk_size, chunk_size)) end loader.close loader.pixbuf @@ -36,28 +36,43 @@ args[0] = icc_file if valid_jpeg?(icc_file) || system("jpgicc", "-q97", @file, icc_file) end end - super(*args) - rescue Gdk::PixbufError::CorruptImage => e + # TODO: This is to fix some deprecation warnings. This needs refactoring. + # All can be implemented without having to hack on the PixBuff gem. + case args.size + when 1 + super(file: args.first) + when 3 + super(path: args[0], width: args[1], height: args[2]) + else + super(*args) + end + rescue GdkPixbuf::PixbufError::CorruptImage => e if args[0].is_a?(String) && defined? Tempfile temp = Tempfile.new pixbuf = self.class.from_string(File.read(args[0])) pixbuf.save(temp.path, 'jpeg') args[0] = temp.path - super(*args) + + if args.size == 1 + super file: args.first + else + super(*args) + end + temp.close temp.unlink else throw e end end protected def suitable_for_jpegicc? - type, _, _ = Gdk::Pixbuf.get_file_info(@file) + type, _, _ = GdkPixbuf::Pixbuf.get_file_info(@file) type && type.name.eql?('jpeg') end def icc_cache_path