Sha256: f99b913f116cf10c975aa8ae8d39ef71668a0643747bb98ad72a44e638ba5f48

Contents?: true

Size: 1.59 KB

Versions: 20

Compression:

Stored size: 1.59 KB

Contents

require "forwardable"

require "rabbit/utils"
require "rabbit/image/base"

module Rabbit
  module ImageManipulable
    class Dia < Base

      unshift_loader(self)

      DIA_COMMANDS = %w(dia)

      extend Forwardable
      include SystemRunner

      class << self
        def match?(filename)
          File.open(filename) do |f|
            if /^<\?xml/ =~ f.gets and
                /http:\/\/www\.lysator\.liu\.se\/~alla\/dia\// =~ f.gets
              true
            else
              false
            end
          end
        rescue ArgumentError
          false
        end
      end

      def_delegators(:@eps_loader, :keep_ratio, :keep_ratio=)
      def_delegators(:@eps_loader, :pixbuf, :internal_pixbuf)
      def_delegators(:@eps_loader, :width, :height)
      def_delegators(:@eps_loader, :original_width, :original_height)
      def_delegators(:@eps_loader, :resize, :ensure_resize)
      def_delegators(:@eps_loader, :update_size)

      def initialize(filename, keep_ratio)
        init_eps_loader(filename, keep_ratio)
        super
      end

      private
      def init_eps_loader(filename, keep_ratio)
        @eps_file = Tempfile.new("rabbit-loader-dia")
        args = ["--export=#{@eps_file.path}"]
        args << "--filter=eps"
        args << filename
        if DIA_COMMANDS.any? {|dia| run(dia, *args)}
          @eps_loader = EPS.new(@eps_file.path, keep_ratio)
        else
          raise DiaCanNotHandleError.new("dia #{args.join(' ')}",
                                         DIA_COMMANDS)
        end
      end

      def load_image
        # do nothing
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rabbit-2.0.2 lib/rabbit/image/dia.rb
rabbit-2.0.1 lib/rabbit/image/dia.rb
rabbit-2.0.0 lib/rabbit/image/dia.rb
rabbit-1.0.9 lib/rabbit/image/dia.rb
rabbit-1.0.8 lib/rabbit/image/dia.rb
rabbit-1.0.7 lib/rabbit/image/dia.rb
rabbit-1.0.6 lib/rabbit/image/dia.rb
rabbit-1.0.5 lib/rabbit/image/dia.rb
rabbit-1.0.4 lib/rabbit/image/dia.rb
rabbit-1.0.3 lib/rabbit/image/dia.rb
rabbit-1.0.2 lib/rabbit/image/dia.rb
rabbit-1.0.1 lib/rabbit/image/dia.rb
rabbit-1.0.0 lib/rabbit/image/dia.rb
rabbit-0.9.3 lib/rabbit/image/dia.rb
rabbit-0.9.2 lib/rabbit/image/dia.rb
rabbit-0.9.1 lib/rabbit/image/dia.rb
rabbit-0.9.0 lib/rabbit/image/dia.rb
rabbit-0.6.4 lib/rabbit/image/dia.rb
rabbit-0.6.3 lib/rabbit/image/dia.rb
rabbit-0.6.2 lib/rabbit/image/dia.rb