Class: Media::InkscapeTransmogrifier

Inherits:
Transmogrifier show all
Defined in:
lib/media/transmogrifiers/inkscape.rb

Instance Attribute Summary

Attributes inherited from Transmogrifier

#command_output, #input, #input_file, #input_type, #options, #output, #output_file, #output_type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Transmogrifier

add, command_available?, converts_from?, converts_to?, find_class, inherited, #initialize, input_map, list, output_map, #run_command, run_command

Constructor Details

This class inherits a constructor from Media::Transmogrifier

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/media/transmogrifiers/inkscape.rb', line 20

def self.available?
  command_available?(INKSCAPE_COMMAND) and magick and magick.available?
end

.input_typesObject



16
17
18
# File 'lib/media/transmogrifiers/inkscape.rb', line 16

def self.input_types
  %w(image/svg+xml image/svg+xml-compressed application/illustrator image/bzeps image/eps image/gzeps)
end

.magickObject



8
9
10
# File 'lib/media/transmogrifiers/inkscape.rb', line 8

def self.magick
  Media::Transmogrifier.list["Media::GraphicsMagickTransmogrifier"]
end

.output_typesObject



12
13
14
# File 'lib/media/transmogrifiers/inkscape.rb', line 12

def self.output_types
  magick.output_types
end

Instance Method Details

#run(&block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/media/transmogrifiers/inkscape.rb', line 24

def run(&block)
  if output_type == 'image/png' and options.empty?
    arguments = [INKSCAPE_COMMAND, '--without-gui', '--export-area-drawing', '--export-area-snap', input_file, '--export-png', output_file]
    run_command(*arguments, &block)
  else
    png_output_file = Media::TempFile.new(nil, "image/png")
    arguments = [INKSCAPE_COMMAND, '--without-gui', '--export-area-drawing', '--export-area-snap', input_file, '--export-png', png_output_file]
    status = run_command(*arguments, &block)
    return status if status != :success
    magick_transmog = self.class.magick.new(
      options.merge({
        input_file: png_output_file,  input_type: "image/png",
        output_file: output_file,     output_type: output_type
      })
    )
    magick_transmog.run(&block)
  end
end