free-image 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY +5 -0
- data/free-image.gemspec +1 -1
- data/lib/free-image/bitmap.rb +6 -0
- data/lib/free-image/sources/abstract_source.rb +7 -0
- data/test/images/corrupt.jpg +0 -0
- data/test/test_bitmap.rb +8 -0
- data/test/test_file.rb +20 -1
- data/test/test_io.rb +22 -0
- data/test/test_memory.rb +20 -0
- metadata +8 -7
    
        data/HISTORY
    CHANGED
    
    | @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            = Release History
         | 
| 2 2 |  | 
| 3 | 
            +
            == 0.6.2 / 2011-09-06 Charlie Savage
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Add null pointer checks when loading images
         | 
| 6 | 
            +
            * Add null pointer check when creating a new image
         | 
| 7 | 
            +
             | 
| 3 8 | 
             
            == 0.6.1 / 2011-09-06 Charlie Savage
         | 
| 4 9 |  | 
| 5 10 | 
             
            * Use release version on windows of FreeImage, not debug version.
         | 
    
        data/free-image.gemspec
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |spec|
         | 
| 4 4 | 
             
              spec.name        = 'free-image'
         | 
| 5 | 
            -
              spec.version     = '0.6. | 
| 5 | 
            +
              spec.version     = '0.6.2'
         | 
| 6 6 | 
             
              spec.summary     = 'Ruby Bindings for the Free Image Library'
         | 
| 7 7 | 
             
              spec.description = <<-EOS
         | 
| 8 8 | 
             
                FreeImage is an Open Source library project for developers who would like to support
         | 
    
        data/lib/free-image/bitmap.rb
    CHANGED
    
    | @@ -98,6 +98,12 @@ module FreeImage | |
| 98 98 | 
             
                end
         | 
| 99 99 |  | 
| 100 100 | 
             
                def self.new(ptr, source = nil)
         | 
| 101 | 
            +
                  # Ptr must be set
         | 
| 102 | 
            +
                  if ptr.null?
         | 
| 103 | 
            +
                    error = Error.new(:unknown, "Cannot create a bitmap from a null pointer")
         | 
| 104 | 
            +
                    raise(error)
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
             | 
| 101 107 | 
             
                  bitmap = super(ptr, source)
         | 
| 102 108 |  | 
| 103 109 | 
             
                  if block_given?
         | 
| @@ -166,6 +166,13 @@ module FreeImage | |
| 166 166 | 
             
                  end
         | 
| 167 167 |  | 
| 168 168 | 
             
                  ptr = load(format, flags)
         | 
| 169 | 
            +
             | 
| 170 | 
            +
                  # Make sure we didn't get a null pointer.  This can
         | 
| 171 | 
            +
                  # happen - see test_file for example#test_corrupt_wrong_format
         | 
| 172 | 
            +
                  if ptr.null?
         | 
| 173 | 
            +
                    error = Error.new(:unknown, "Could not load the image")
         | 
| 174 | 
            +
                    raise(error)
         | 
| 175 | 
            +
                  end
         | 
| 169 176 | 
             
                  Bitmap.new(ptr, self)
         | 
| 170 177 | 
             
                end
         | 
| 171 178 | 
             
              end
         | 
| Binary file | 
    
        data/test/test_bitmap.rb
    CHANGED
    
    | @@ -34,6 +34,14 @@ class BitmapTest < Test::Unit::TestCase | |
| 34 34 | 
             
                end
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 | 
            +
              def test_new_from_nil
         | 
| 38 | 
            +
                ptr = FFI::Pointer::NULL
         | 
| 39 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 40 | 
            +
                  FreeImage::Bitmap.new(ptr)
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
                assert_equal("Cannot create a bitmap from a null pointer", error.message)
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 37 45 | 
             
              def test_clone
         | 
| 38 46 | 
             
                image = lena_image
         | 
| 39 47 | 
             
                clone = image.clone
         | 
    
        data/test/test_file.rb
    CHANGED
    
    | @@ -8,7 +8,7 @@ class FIFileTest < Test::Unit::TestCase | |
| 8 8 | 
             
                path = image_path(image)
         | 
| 9 9 | 
             
                FreeImage::File.new(path)
         | 
| 10 10 | 
             
              end
         | 
| 11 | 
            -
             | 
| 11 | 
            +
             | 
| 12 12 | 
             
              def test_format
         | 
| 13 13 | 
             
                assert_equal(:png, file.format)
         | 
| 14 14 | 
             
              end
         | 
| @@ -48,4 +48,23 @@ class FIFileTest < Test::Unit::TestCase | |
| 48 48 | 
             
                tmp_file.close
         | 
| 49 49 | 
             
                tmp_file.unlink
         | 
| 50 50 | 
             
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              def test_corrupt
         | 
| 53 | 
            +
                path = image_path('corrupt.jpg')
         | 
| 54 | 
            +
                file = FreeImage::File.new(path)
         | 
| 55 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 56 | 
            +
                  file.open
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
                assert_equal("Not a JPEG file: starts with 0xaa 0xc0", error.message)
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def test_corrupt_wrong_format
         | 
| 62 | 
            +
                path = image_path('corrupt.jpg')
         | 
| 63 | 
            +
                file = FreeImage::File.new(path)
         | 
| 64 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 65 | 
            +
                  # Be sneaky - say png!
         | 
| 66 | 
            +
                  file.open(:png)
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
                assert_equal("Could not load the image", error.message)
         | 
| 69 | 
            +
              end
         | 
| 51 70 | 
             
            end
         | 
    
        data/test/test_io.rb
    CHANGED
    
    | @@ -50,4 +50,26 @@ class IoTest < Test::Unit::TestCase | |
| 50 50 | 
             
                tmp_file.close
         | 
| 51 51 | 
             
                tmp_file.unlink
         | 
| 52 52 | 
             
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              def test_corrupt
         | 
| 55 | 
            +
                path = image_path('corrupt.jpg')
         | 
| 56 | 
            +
                file = File.open(path)
         | 
| 57 | 
            +
                io = FreeImage::IO.new(file)
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 60 | 
            +
                  io.open
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
                assert_equal("Cannot load :unknown image format", error.message)
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              def test_corrupt_wrong_format
         | 
| 66 | 
            +
                path = image_path('corrupt.jpg')
         | 
| 67 | 
            +
                file = File.open(path)
         | 
| 68 | 
            +
                io = FreeImage::IO.new(file)
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 71 | 
            +
                  io.open(:png)
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
                assert_equal("Could not load the image", error.message)
         | 
| 74 | 
            +
              end
         | 
| 53 75 | 
             
            end
         | 
    
        data/test/test_memory.rb
    CHANGED
    
    | @@ -62,4 +62,24 @@ class MemoryTest < Test::Unit::TestCase | |
| 62 62 | 
             
                  assert_equal(dst.memory.bytes.encoding, Encoding::BINARY)
         | 
| 63 63 | 
             
                end
         | 
| 64 64 | 
             
              end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
              def test_corrupt
         | 
| 67 | 
            +
                data = image_data('corrupt.jpg')
         | 
| 68 | 
            +
                memory = FreeImage::Memory.new(data)
         | 
| 69 | 
            +
                
         | 
| 70 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 71 | 
            +
                  memory.open
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
                assert_equal("Cannot load :unknown image format", error.message)
         | 
| 74 | 
            +
              end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              def test_corrupt_wrong_format
         | 
| 77 | 
            +
                data = image_data('corrupt.jpg')
         | 
| 78 | 
            +
                memory = FreeImage::Memory.new(data)
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                error = assert_raise(FreeImage::Error) do
         | 
| 81 | 
            +
                  memory.open(:png)
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
                assert_equal("Could not load the image", error.message)
         | 
| 84 | 
            +
              end
         | 
| 65 85 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: free-image
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -13,7 +13,7 @@ date: 2011-09-06 00:00:00.000000000 Z | |
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: ffi
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &23576770 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: 1.0.10
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *23576770
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: hanna-nouveau
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &23576430 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :development
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *23576430
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: open4
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &23575760 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ! '>='
         | 
| @@ -43,7 +43,7 @@ dependencies: | |
| 43 43 | 
             
                    version: '0'
         | 
| 44 44 | 
             
              type: :development
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *23575760
         | 
| 47 47 | 
             
            description: ! "    FreeImage is an Open Source library project for developers who
         | 
| 48 48 | 
             
              would like to support\n    popular graphics image formats like PNG, BMP, JPEG, TIFF
         | 
| 49 49 | 
             
              and others as needed by\n    today's multimedia applications. FreeImage is easy
         | 
| @@ -91,6 +91,7 @@ files: | |
| 91 91 | 
             
            - lib/free-image/types/rgb_triple.rb
         | 
| 92 92 | 
             
            - lib/free-image.rb
         | 
| 93 93 | 
             
            - test/cookbook.rb
         | 
| 94 | 
            +
            - test/images/corrupt.jpg
         | 
| 94 95 | 
             
            - test/images/gradient.png
         | 
| 95 96 | 
             
            - test/images/lena.png
         | 
| 96 97 | 
             
            - test/images/lena.tiff
         |