Improved imagedir support.
authorTilman Sauerbeck <tilman@code-monkey.de>
Wed, 8 Jun 2005 20:05:19 +0000 (20:05 +0000)
committerTilman Sauerbeck <tilman@code-monkey.de>
Wed, 8 Jun 2005 20:05:19 +0000 (20:05 +0000)
ChangeLog
lib/redact/part.rb
lib/redact/redact.rb

index bbf3bf2a428303529a494cdeef42ed67ab7b0387..966f22acde85538fb5cf9e6f26b5ccc2c245fa88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,5 @@
 --
-$Id: ChangeLog 46 2005-06-08 18:03:34Z tilman $
+$Id: ChangeLog 47 2005-06-08 20:05:19Z tilman $
 ++
 
 2005-06-08 Tilman Sauerbeck (tilman at code-monkey de)
@@ -11,6 +11,7 @@ $Id: ChangeLog 46 2005-06-08 18:03:34Z tilman $
         * lib/redact/{redact,app}.rb: Fixed fontdir handling
         * lib/redact/part.rb: Also set TextDescription::font if a
           matching FontDirectoryEntry was found
+        * lib/redact/{redact,app}.rb: Improved imagedir support
 
 2005-05-29 Tilman Sauerbeck (tilman at code-monkey de)
         * Rakefile: Use FileUtils.mkdir_p to create the destination
index b282d04b04faf315109bf1809d8576007664547c..313a29578feba103c968124d827db0d3238ec7e8 100644 (file)
@@ -1,5 +1,5 @@
 #--
-# $Id: part.rb 46 2005-06-08 18:03:34Z tilman $
+# $Id: part.rb 47 2005-06-08 20:05:19Z tilman $
 #
 # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
 #
@@ -400,14 +400,28 @@ module Redact
 
        class Tweens < Array
                def <<(im)
-                       image = EDJE.image_dir.find { |e| e.filename == im }
+                       im2 = find_image(im.to_str.strip)
+                       raise(RedactError, "cannot find image - #{im}") if im2.nil?
+
+                       image = EDJE.image_dir.find { |e| e.filename == im2 }
                        if image.nil?
-                               image = ImageDirectoryEntry.new(im)
+                               image = ImageDirectoryEntry.new(im2)
                                EDJE.image_dir << image
                        end
 
                        super(Tween.new(image))
                end
+
+               private
+               def find_image(file)
+                       [".", OPTIONS.image_dir].each do |d|
+                               f2 = File.join(d, file)
+                               return Pathname.new(f2).cleanpath.to_s if File.file?(f2)
+                       end
+
+                       nil
+               end
+
        end
 
        class ImageDescription < Description
@@ -429,11 +443,14 @@ module Redact
                end
 
                def image=(im)
-                       return if !@image.nil? && im == @image.filename
+                       im2 = find_image(im.to_str.strip)
+                       raise(RedactError, "cannot find image - #{im}") if im2.nil?
 
-                       @image = EDJE.image_dir.find { |e| e.filename == im }
+                       return if !@image.nil? && im2 == @image.filename
+
+                       @image = EDJE.image_dir.find { |e| e.filename == im2 }
                        if @image.nil?
-                               @image = ImageDirectoryEntry.new(im)
+                               @image = ImageDirectoryEntry.new(im2)
                                EDJE.image_dir << @image
                        end
 
@@ -476,6 +493,16 @@ module Redact
                         "fill.rel_y" => [1.0, :double],
                         "fill.abs_y" => [0]})
                end
+
+               private
+               def find_image(file)
+                       [".", OPTIONS.image_dir].each do |d|
+                               f2 = File.join(d, file)
+                               return Pathname.new(f2).cleanpath.to_s if File.file?(f2)
+                       end
+
+                       nil
+               end
        end
 
        class TextDescription < Description
index 6b505f28cee7daf61c92aa53a9362b2a10bb38e4..26b7c5fd133bfa45868ea1eb80bdc852a2d85c4a 100644 (file)
@@ -1,5 +1,5 @@
 #--
-# $Id: redact.rb 45 2005-06-08 18:02:12Z tilman $
+# $Id: redact.rb 47 2005-06-08 20:05:19Z tilman $
 #
 # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
 #
@@ -179,7 +179,7 @@ module Redact
                attr_reader :filename, :image, :id
 
                def initialize(filename)
-                       @filename = find_image(filename.to_str).freeze
+                       @filename = filename.to_str.dup.freeze
                        @image = Imlib2::Image.load(@filename)
                        @id = -1
                        @source_type = 1 # COMP
@@ -207,16 +207,6 @@ module Redact
                         "source_param" => [@source_param],
                         "id" => [@id]}
                end
-
-               private
-               def find_image(file)
-                       [".", OPTIONS.image_dir].each do |d|
-                               f2 = File.join(d, file)
-                               return f2 if File.file?(f2)
-                       end
-
-                       nil
-               end
        end
 
        class CollectionDirectory < Array # :nodoc: