prawn-gmagick 0.0.1
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.
- checksums.yaml +7 -0
- data/README.markdown +34 -0
- data/Rakefile +36 -0
- data/ext/gmagick/extconf.rb +4 -0
- data/ext/gmagick/gmagick.c +150 -0
- data/lib/prawn-gmagick.rb +52 -0
- data/lib/prawn-gmagick/gmagick/gmagick.bundle +0 -0
- data/test/fixtures/ascii.txt +12 -0
- data/test/fixtures/cmyk.jpg +0 -0
- data/test/fixtures/random.bin +0 -0
- data/test/fixtures/rgb.bmp +0 -0
- data/test/fixtures/rgb.gif +0 -0
- data/test/fixtures/rgb.jpg +0 -0
- data/test/fixtures/rgb.pdf +0 -0
- data/test/fixtures/rgb.png +0 -0
- data/test/fixtures/rgb.tiff +0 -0
- data/test/fixtures/rgb_alpha.gif +0 -0
- data/test/fixtures/rgb_alpha.pdf +0 -0
- data/test/fixtures/rgb_alpha.png +0 -0
- data/test/gmagick/image_test.rb +111 -0
- data/test/test_helper.rb +6 -0
- metadata +106 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 71345ece376bc00b760d62440468697d2505208f
         | 
| 4 | 
            +
              data.tar.gz: a5dd71dd5675e504cb17775428d0e3a57d10d230
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 5d1c789b398543732e3ba20412f54a50615b21c75c56d623602e7de76eb2cedd606adb24840a00905e5392eb5fd4bd12929de7832720aab1b0965d9d9555d060
         | 
| 7 | 
            +
              data.tar.gz: fe6abf387dd53d29af71aee61e8d82243345ebc40639c88b74015c28f9111d07ec3e43b17a7d3bda4581233daef721a33b74d382ad873b1bfd8bf8ed7d009caf
         | 
    
        data/README.markdown
    ADDED
    
    | @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            # prawn-gmagick
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            A [graphicsmagick](http:////www.graphicsmagick.org/) binding to add support for
         | 
| 4 | 
            +
            additional image formats to [prawn](https://github.com/prawnpdf/prawn).
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            ## Usage
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            **Gemfile**
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ```ruby
         | 
| 11 | 
            +
            gem "prawn-gmagick"
         | 
| 12 | 
            +
            ```
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            **Your code**
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ```ruby
         | 
| 17 | 
            +
            require "prawn-gmagick"
         | 
| 18 | 
            +
            ```
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            ## Found a bug?
         | 
| 21 | 
            +
            Open a [github issue](https://github.com/packetmonkey/prawn-gmagick/issues)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## Contributing & Development
         | 
| 24 | 
            +
            1. Fork the project.
         | 
| 25 | 
            +
            2. Make your feature addition or bug fix. All specs should pass.
         | 
| 26 | 
            +
            3. Add specs for your changes.
         | 
| 27 | 
            +
            4. Commit
         | 
| 28 | 
            +
            5. Send a pull request. Bonus points for topic branches.
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ## Licence
         | 
| 31 | 
            +
            prawn-gmagick is released under the [MIT Licence](http://choosealicense.com/licenses/mit/)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ## Authors
         | 
| 34 | 
            +
            prawn-gmagick is written and maintained by Evan Sharp.
         | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            $LOAD_PATH.unshift  File.join(__dir__, "lib")
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "rake/testtask"
         | 
| 4 | 
            +
            require "rake/extensiontask"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            task "default" => :test
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Rake::ExtensionTask.new "gmagick" do |ext|
         | 
| 9 | 
            +
              ext.lib_dir = "lib/prawn-gmagick/gmagick"
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            Rake::TestTask.new do |t|
         | 
| 13 | 
            +
                t.pattern = "test/**/*_test.rb"
         | 
| 14 | 
            +
            end
         | 
| 15 | 
            +
            task "test" => :compile
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            desc "Generate an example PDF using the images in test/fixtures"
         | 
| 18 | 
            +
            task "example" do
         | 
| 19 | 
            +
            $LOAD_PATH.unshift "./lib"
         | 
| 20 | 
            +
              require "prawn-gmagick"
         | 
| 21 | 
            +
              doc = Prawn::Document.new margin: 0
         | 
| 22 | 
            +
              files = %w(rgb.gif rgb_alpha.gif rgb.jpg cmyk.jpg rgb.pdf rgb_alpha.pdf rgb.png rgb_alpha.png rgb.tiff rgb.bmp)
         | 
| 23 | 
            +
              files.each do |filename|
         | 
| 24 | 
            +
                start_time = Time.now
         | 
| 25 | 
            +
                doc.start_new_page unless filename == files.first
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                doc.fill_color "00FF11"
         | 
| 28 | 
            +
                doc.fill_rectangle [0, 11 * 72], 400, 400
         | 
| 29 | 
            +
                doc.fill_color "000000"
         | 
| 30 | 
            +
                file_path = File.join __dir__, "test", "fixtures", filename
         | 
| 31 | 
            +
                doc.text file_path
         | 
| 32 | 
            +
                doc.image file_path, height: 200
         | 
| 33 | 
            +
                puts "Added #{file_path} in #{Time.now-start_time} seconds"
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
              doc.render_file "example.pdf"
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,150 @@ | |
| 1 | 
            +
            #include <ruby.h>
         | 
| 2 | 
            +
            #include <string.h>
         | 
| 3 | 
            +
            #include <wand/magick_wand.h>
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            VALUE format(VALUE self, VALUE rb_image_blob)
         | 
| 6 | 
            +
            {
         | 
| 7 | 
            +
              const char *format = NULL;
         | 
| 8 | 
            +
              long double image_blob_length = RSTRING_LEN(rb_image_blob);
         | 
| 9 | 
            +
              char *image_blob = RSTRING_PTR(rb_image_blob);
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              InitializeMagick(".");
         | 
| 12 | 
            +
              MagickWand *magick_wand = NewMagickWand();
         | 
| 13 | 
            +
              MagickReadImageBlob(magick_wand, (const unsigned char *)image_blob, image_blob_length);
         | 
| 14 | 
            +
              format = MagickGetImageFormat(magick_wand);
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              if (format) {
         | 
| 17 | 
            +
                return rb_str_new2(format);
         | 
| 18 | 
            +
              } else {
         | 
| 19 | 
            +
                return Qnil;
         | 
| 20 | 
            +
              }
         | 
| 21 | 
            +
            }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            VALUE image_initialize(VALUE self, VALUE rb_image_blob)
         | 
| 24 | 
            +
            {
         | 
| 25 | 
            +
              MagickWand *magick_wand;
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              InitializeMagick(".");
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              magick_wand = NewMagickWand();
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              long double image_blob_length = RSTRING_LEN(rb_image_blob);
         | 
| 32 | 
            +
              char *image_blob = RSTRING_PTR(rb_image_blob);
         | 
| 33 | 
            +
              MagickReadImageBlob(magick_wand, (const unsigned char *)image_blob, image_blob_length);
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              VALUE rb_wand = Data_Wrap_Struct(rb_cObject, NULL, NULL, magick_wand);
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              rb_funcall(self, rb_intern("wand="), 1, rb_wand);
         | 
| 38 | 
            +
              rb_funcall(self, rb_intern("blob="), 1, rb_image_blob);
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              return Qtrue;
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            VALUE image_depth(VALUE self)
         | 
| 44 | 
            +
            {
         | 
| 45 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 46 | 
            +
              MagickWand *magick_wand;
         | 
| 47 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              unsigned long depth = MagickGetImageChannelDepth(magick_wand, RedChannel);
         | 
| 50 | 
            +
              return INT2NUM(depth);
         | 
| 51 | 
            +
            }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            VALUE image_width(VALUE self)
         | 
| 54 | 
            +
            {
         | 
| 55 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 56 | 
            +
              MagickWand *magick_wand;
         | 
| 57 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 58 | 
            +
              unsigned long width = MagickGetImageWidth(magick_wand);
         | 
| 59 | 
            +
              return INT2NUM(width);
         | 
| 60 | 
            +
            }
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            VALUE image_height(VALUE self)
         | 
| 63 | 
            +
            {
         | 
| 64 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 65 | 
            +
              MagickWand *magick_wand;
         | 
| 66 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 67 | 
            +
              unsigned long height = MagickGetImageHeight(magick_wand);
         | 
| 68 | 
            +
              return INT2NUM(height);
         | 
| 69 | 
            +
            }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            VALUE image_colorspace(VALUE self)
         | 
| 72 | 
            +
            {
         | 
| 73 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 74 | 
            +
              MagickWand *magick_wand;
         | 
| 75 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 76 | 
            +
              ColorspaceType color_space = MagickGetImageColorspace(magick_wand);
         | 
| 77 | 
            +
              if (color_space == RGBColorspace) {
         | 
| 78 | 
            +
                return ID2SYM(rb_intern("DeviceRGB"));
         | 
| 79 | 
            +
              } else if (color_space == CMYKColorspace) {
         | 
| 80 | 
            +
                return ID2SYM(rb_intern("DeviceCMYK"));
         | 
| 81 | 
            +
              } else {
         | 
| 82 | 
            +
                rb_raise(rb_eTypeError, "Unknown colorspace");
         | 
| 83 | 
            +
              }
         | 
| 84 | 
            +
            }
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            VALUE image_unpack(VALUE self)
         | 
| 87 | 
            +
            {
         | 
| 88 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 89 | 
            +
              MagickWand *magick_wand;
         | 
| 90 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 91 | 
            +
              ColorspaceType color_space = MagickGetImageColorspace(magick_wand);
         | 
| 92 | 
            +
             | 
| 93 | 
            +
              int height = NUM2INT( rb_funcall(self, rb_intern("height"), 0) );
         | 
| 94 | 
            +
              int width = NUM2INT( rb_funcall(self, rb_intern("width"), 0) );
         | 
| 95 | 
            +
              int pixel_count = height * width;
         | 
| 96 | 
            +
              int buffer_size;
         | 
| 97 | 
            +
              char color_format[8];
         | 
| 98 | 
            +
              unsigned char *pixels;
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              if (color_space == RGBColorspace) {
         | 
| 101 | 
            +
                 buffer_size = 3 * pixel_count;
         | 
| 102 | 
            +
                 strcpy(color_format, "RGB");
         | 
| 103 | 
            +
              } else if (color_space == CMYKColorspace) {
         | 
| 104 | 
            +
                 buffer_size = 4 * pixel_count;
         | 
| 105 | 
            +
                 strcpy(color_format, "CMYK");
         | 
| 106 | 
            +
              } else {
         | 
| 107 | 
            +
                rb_raise(rb_eTypeError, "Unknown colorspace");
         | 
| 108 | 
            +
              }
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              pixels = (unsigned char *)malloc(buffer_size * sizeof(char));
         | 
| 111 | 
            +
              MagickGetImagePixels(magick_wand, 0, 0, width, height, color_format, CharPixel, pixels);
         | 
| 112 | 
            +
             | 
| 113 | 
            +
              return rb_str_new((const char *)pixels, buffer_size);
         | 
| 114 | 
            +
            }
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            VALUE image_alpha_unpack(VALUE self)
         | 
| 117 | 
            +
            {
         | 
| 118 | 
            +
              VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
         | 
| 119 | 
            +
              MagickWand *magick_wand;
         | 
| 120 | 
            +
              Data_Get_Struct(rb_wand, MagickWand, magick_wand);
         | 
| 121 | 
            +
              int height = NUM2INT( rb_funcall(self, rb_intern("height"), 0) );
         | 
| 122 | 
            +
              int width = NUM2INT( rb_funcall(self, rb_intern("width"), 0) );
         | 
| 123 | 
            +
              int pixel_count = height * width;
         | 
| 124 | 
            +
              unsigned char *pixels;
         | 
| 125 | 
            +
             | 
| 126 | 
            +
              pixels = (unsigned char *)malloc(pixel_count * sizeof(char));
         | 
| 127 | 
            +
              MagickGetImagePixels(magick_wand, 0, 0, width, height, "A", CharPixel, pixels);
         | 
| 128 | 
            +
              return rb_str_new((const char *)pixels, pixel_count);
         | 
| 129 | 
            +
            }
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            void Init_gmagick(void)
         | 
| 132 | 
            +
            {
         | 
| 133 | 
            +
              // Deine our name spaces and classes
         | 
| 134 | 
            +
              VALUE m_gmagick = rb_define_module("GMagick");
         | 
| 135 | 
            +
              VALUE c_image = rb_define_class_under(m_gmagick, "Image", rb_cObject);
         | 
| 136 | 
            +
             | 
| 137 | 
            +
              // Define our class methods
         | 
| 138 | 
            +
              rb_define_singleton_method(c_image, "format", format, 1);
         | 
| 139 | 
            +
             | 
| 140 | 
            +
              // Define our instance methods
         | 
| 141 | 
            +
              rb_define_attr(c_image, "blob", 1, 1);
         | 
| 142 | 
            +
              rb_define_attr(c_image, "wand", 1, 1);
         | 
| 143 | 
            +
              rb_define_method(c_image, "initialize", image_initialize, 1);
         | 
| 144 | 
            +
              rb_define_method(c_image, "depth", image_depth, 0);
         | 
| 145 | 
            +
              rb_define_method(c_image, "width", image_width, 0);
         | 
| 146 | 
            +
              rb_define_method(c_image, "height", image_height, 0);
         | 
| 147 | 
            +
              rb_define_method(c_image, "colorspace", image_colorspace, 0);
         | 
| 148 | 
            +
              rb_define_method(c_image, "unpack", image_unpack, 0);
         | 
| 149 | 
            +
              rb_define_method(c_image, "alpha_unpack", image_alpha_unpack, 0);
         | 
| 150 | 
            +
            }
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            require "prawn-gmagick/gmagick/gmagick"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "prawn"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class Gmagick < Prawn::Images::Image
         | 
| 6 | 
            +
              attr_reader :width, :height, :bits, :channels
         | 
| 7 | 
            +
              attr_accessor :scaled_width, :scaled_height
         | 
| 8 | 
            +
              attr_accessor :gimage
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def self.can_render? image_blob
         | 
| 11 | 
            +
                GMagick::Image.format(image_blob) ? true : false
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def initialize image_blob
         | 
| 15 | 
            +
                self.gimage = GMagick::Image.new image_blob
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                @bits = self.gimage.depth
         | 
| 18 | 
            +
                @width = self.gimage.width
         | 
| 19 | 
            +
                @height = self.gimage.height
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              def build_pdf_object(document)
         | 
| 23 | 
            +
                obj = document.ref!(
         | 
| 24 | 
            +
                  Type: :XObject,
         | 
| 25 | 
            +
                  Subtype: :Image,
         | 
| 26 | 
            +
                  ColorSpace: gimage.colorspace,
         | 
| 27 | 
            +
                  Height: @height,
         | 
| 28 | 
            +
                  Width: @width,
         | 
| 29 | 
            +
                  BitsPerComponent: @bits
         | 
| 30 | 
            +
                )
         | 
| 31 | 
            +
                obj << gimage.unpack
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                alpha_mask = self.gimage.alpha_unpack
         | 
| 34 | 
            +
                if alpha_mask.unpack("C*").uniq.length > 1
         | 
| 35 | 
            +
                  smask_obj = document.ref!(
         | 
| 36 | 
            +
                          :Type             => :XObject,
         | 
| 37 | 
            +
                          :Subtype          => :Image,
         | 
| 38 | 
            +
                          :Height           => gimage.height,
         | 
| 39 | 
            +
                          :Width            => gimage.width,
         | 
| 40 | 
            +
                          :BitsPerComponent => gimage.depth,
         | 
| 41 | 
            +
                          :ColorSpace       => :DeviceGray,
         | 
| 42 | 
            +
                          :Decode           => [0, 1]
         | 
| 43 | 
            +
                  )
         | 
| 44 | 
            +
                  smask_obj.stream << alpha_mask
         | 
| 45 | 
            +
                  obj.data[:SMask] = smask_obj
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                obj
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            Prawn.image_handler.register! Gmagick
         | 
| Binary file | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
                            ___,,___
         | 
| 2 | 
            +
                       _,-='=- =-  -`"--.__,,.._
         | 
| 3 | 
            +
                    ,-;// /  - -       -   -= - "=.
         | 
| 4 | 
            +
                  ,'///    -     -   -   =  - ==-=\`.
         | 
| 5 | 
            +
                 |/// /  =    `. - =   == - =.=_,,._ `=/|
         | 
| 6 | 
            +
                ///    -   -    \  - - = ,ndDMHHMM/\b  \\
         | 
| 7 | 
            +
              ,' - / /        / /\ =  - /MM(,,._`YQMML  `|
         | 
| 8 | 
            +
             <_,=^Kkm / / / / ///H|wnWWdMKKK#""-;. `"0\  |
         | 
| 9 | 
            +
                    `""QkmmmmmnWMMM\""WHMKKMM\   `--. \> \
         | 
| 10 | 
            +
             hjm          `""'  `->>>    ``WHMb,.    `-_<@)
         | 
| 11 | 
            +
                                            `"QMM`.
         | 
| 12 | 
            +
                                               `>>>
         | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| @@ -0,0 +1,111 @@ | |
| 1 | 
            +
            require_relative "../test_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "GMagick::Image::format" do
         | 
| 4 | 
            +
              describe "with a JPEG image" do
         | 
| 5 | 
            +
                before do
         | 
| 6 | 
            +
                  fixture_path = File.join __dir__, "..", "fixtures", "rgb.jpg"
         | 
| 7 | 
            +
                  @fixture_blob = File.open(fixture_path).read
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                it "returns a string containing 'JPEG'" do
         | 
| 11 | 
            +
                  GMagick::Image.format(@fixture_blob).must_equal "JPEG"
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              describe "with an unknown image" do
         | 
| 16 | 
            +
                before do
         | 
| 17 | 
            +
                  fixture_path = File.join __dir__, "..", "fixtures", "random.bin"
         | 
| 18 | 
            +
                  @fixture_blob = File.open(fixture_path).read
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                it "returns nil" do
         | 
| 22 | 
            +
                  GMagick::Image.format(@fixture_blob).must_equal nil
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            describe GMagick::Image do
         | 
| 28 | 
            +
              before do
         | 
| 29 | 
            +
                fixture_path = File.join __dir__, "..", "fixtures", "rgb.jpg"
         | 
| 30 | 
            +
                fixture_blob = File.open(fixture_path).read
         | 
| 31 | 
            +
                @image = GMagick::Image.new fixture_blob
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              describe "#depth" do
         | 
| 35 | 
            +
                it "returns the image bit depth as an integer" do
         | 
| 36 | 
            +
                  @image.depth.must_equal 8
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              describe "#width" do
         | 
| 41 | 
            +
                it "returns the image width in pixels as an integer" do
         | 
| 42 | 
            +
                  @image.width.must_equal 13
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              describe "#height" do
         | 
| 47 | 
            +
                it "returns the image height in pixels as an integer" do
         | 
| 48 | 
            +
                  @image.height.must_equal 17
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              describe "#colorspace" do
         | 
| 53 | 
            +
                describe "with an RGB image" do
         | 
| 54 | 
            +
                  it "returns the symbol :DeviceRGB" do
         | 
| 55 | 
            +
                    @image.colorspace.must_equal :DeviceRGB
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                describe "with a CMYK image" do
         | 
| 60 | 
            +
                  before do
         | 
| 61 | 
            +
                    fixture_path = File.join __dir__, "..", "fixtures", "cmyk.jpg"
         | 
| 62 | 
            +
                    fixture_blob = File.open(fixture_path).read
         | 
| 63 | 
            +
                    @image = GMagick::Image.new fixture_blob
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  it "returns the symbol :DeviceCMYK" do
         | 
| 67 | 
            +
                    @image.colorspace.must_equal :DeviceCMYK
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              describe "#unpack" do
         | 
| 73 | 
            +
                describe "with an RGB image" do
         | 
| 74 | 
            +
                  it "returns a string containing the pixel color information" do
         | 
| 75 | 
            +
                    @image.unpack.unpack("CCC").must_equal [255, 38, 0]
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                describe "with a CMYK image" do
         | 
| 80 | 
            +
                  before do
         | 
| 81 | 
            +
                    fixture_path = File.join __dir__, "..", "fixtures", "cmyk.jpg"
         | 
| 82 | 
            +
                    fixture_blob = File.open(fixture_path).read
         | 
| 83 | 
            +
                    @image = GMagick::Image.new fixture_blob
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  it "returns a string containing the pixel color information" do
         | 
| 87 | 
            +
                    @image.unpack.unpack("CCCC").must_equal [55, 27, 0, 0]
         | 
| 88 | 
            +
                  end
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              describe "#unpack_alpha" do
         | 
| 93 | 
            +
                describe "with an opaque JPEG" do
         | 
| 94 | 
            +
                  it "returns a string containing the pixel alpha information" do
         | 
| 95 | 
            +
                    @image.alpha_unpack.unpack("CCCC").must_equal [255, 255, 255, 255]
         | 
| 96 | 
            +
                  end
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                describe "with an transparent GIF" do
         | 
| 100 | 
            +
                  before do
         | 
| 101 | 
            +
                    fixture_path = File.join __dir__, "..", "fixtures", "rgb_alpha.gif"
         | 
| 102 | 
            +
                    fixture_blob = File.open(fixture_path).read
         | 
| 103 | 
            +
                    @image = GMagick::Image.new fixture_blob
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                  it "returns a string containing the pixel alpha information" do
         | 
| 107 | 
            +
                     @image.alpha_unpack.unpack("C*").slice(11, 3).must_equal [255, 255, 0]
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
            end
         | 
    
        data/test/test_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | @@ -0,0 +1,106 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: prawn-gmagick
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Evan Sharp
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2013-12-29 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: prawn
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - '='
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 0.13.0
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - '='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 0.13.0
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: rake-compiler
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - '>='
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: minitest
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - '>='
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '0'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
            description: 
         | 
| 56 | 
            +
            email: 
         | 
| 57 | 
            +
            executables: []
         | 
| 58 | 
            +
            extensions:
         | 
| 59 | 
            +
            - ext/gmagick/extconf.rb
         | 
| 60 | 
            +
            extra_rdoc_files: []
         | 
| 61 | 
            +
            files:
         | 
| 62 | 
            +
            - ext/gmagick/extconf.rb
         | 
| 63 | 
            +
            - ext/gmagick/gmagick.c
         | 
| 64 | 
            +
            - lib/prawn-gmagick/gmagick/gmagick.bundle
         | 
| 65 | 
            +
            - lib/prawn-gmagick.rb
         | 
| 66 | 
            +
            - test/fixtures/ascii.txt
         | 
| 67 | 
            +
            - test/fixtures/cmyk.jpg
         | 
| 68 | 
            +
            - test/fixtures/random.bin
         | 
| 69 | 
            +
            - test/fixtures/rgb.bmp
         | 
| 70 | 
            +
            - test/fixtures/rgb.gif
         | 
| 71 | 
            +
            - test/fixtures/rgb.jpg
         | 
| 72 | 
            +
            - test/fixtures/rgb.pdf
         | 
| 73 | 
            +
            - test/fixtures/rgb.png
         | 
| 74 | 
            +
            - test/fixtures/rgb.tiff
         | 
| 75 | 
            +
            - test/fixtures/rgb_alpha.gif
         | 
| 76 | 
            +
            - test/fixtures/rgb_alpha.pdf
         | 
| 77 | 
            +
            - test/fixtures/rgb_alpha.png
         | 
| 78 | 
            +
            - test/gmagick/image_test.rb
         | 
| 79 | 
            +
            - test/test_helper.rb
         | 
| 80 | 
            +
            - README.markdown
         | 
| 81 | 
            +
            - Rakefile
         | 
| 82 | 
            +
            homepage: 
         | 
| 83 | 
            +
            licenses:
         | 
| 84 | 
            +
            - MIT
         | 
| 85 | 
            +
            metadata: {}
         | 
| 86 | 
            +
            post_install_message: 
         | 
| 87 | 
            +
            rdoc_options: []
         | 
| 88 | 
            +
            require_paths:
         | 
| 89 | 
            +
            - lib
         | 
| 90 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 91 | 
            +
              requirements:
         | 
| 92 | 
            +
              - - '>='
         | 
| 93 | 
            +
                - !ruby/object:Gem::Version
         | 
| 94 | 
            +
                  version: '0'
         | 
| 95 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 96 | 
            +
              requirements:
         | 
| 97 | 
            +
              - - '>='
         | 
| 98 | 
            +
                - !ruby/object:Gem::Version
         | 
| 99 | 
            +
                  version: '0'
         | 
| 100 | 
            +
            requirements: []
         | 
| 101 | 
            +
            rubyforge_project: 
         | 
| 102 | 
            +
            rubygems_version: 2.0.3
         | 
| 103 | 
            +
            signing_key: 
         | 
| 104 | 
            +
            specification_version: 4
         | 
| 105 | 
            +
            summary: Use GraphicsMagick to load images in a Prawn docuemnt
         | 
| 106 | 
            +
            test_files: []
         |