shutterbug 0.4.3 → 0.5.0
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 +8 -8
 - data/README.md +4 -86
 - data/lib/shutterbug.rb +1 -1
 - data/lib/shutterbug/handlers.rb +0 -1
 - data/lib/shutterbug/handlers/convert_handler.rb +11 -24
 - data/lib/shutterbug/phantom_job.rb +25 -7
 - data/lib/shutterbug/rackapp.rb +0 -1
 - data/spec/shutterbug/rackapp_spec.rb +0 -8
 - metadata +2 -23
 - data/bower.json +0 -26
 - data/demo/The_Scream.jpg +0 -0
 - data/demo/canvas_example.html +0 -36
 - data/demo/iframe.html +0 -30
 - data/demo/iframe2.html +0 -30
 - data/demo/iframe3.html +0 -29
 - data/demo/iframe4.html +0 -29
 - data/demo/iframe_example.html +0 -38
 - data/demo/iframe_no_shutterbug.html +0 -20
 - data/demo/index.html +0 -20
 - data/demo/main.css +0 -9
 - data/demo/nested_iframe_example.html +0 -41
 - data/demo/oil-and-water/heatbath.svg +0 -20
 - data/demo/oil-and-water/ke-gradient.svg +0 -27
 - data/demo/oil-and-water/oil-and-water.svg +0 -487
 - data/demo/simple_example.html +0 -35
 - data/demo/svg_example.html +0 -571
 - data/lib/shutterbug/handlers/js_file_handler.rb +0 -30
 - data/lib/shutterbug/handlers/shutterbug.js +0 -388
 - data/spec/shutterbug/js_file_handler_spec.rb +0 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                ZDhhMGNiMWQ4MGY0Yzc3N2FkNWEyYWY4OWMyYjhmOTgzYWE3YjBlYg==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                ZjM4NDMyODcyYWIxNWJjN2FkN2MzZjRjMjA2NDExODBjNGZmODFlOQ==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                YTk4ZTlhOGYxOTBiMGY2OTE0ZDc2YThlMjE4MDI2NzNhZmY1ZmMwYTVhYjE2
         
     | 
| 
      
 10 
     | 
    
         
            +
                ZjhjNTUzMzY4MTMzYWQyMWQ4YmM0ZDM2Yzk2NDhlNjk2MjIyNTM3MDRjOWIx
         
     | 
| 
      
 11 
     | 
    
         
            +
                ODU2ZWFhMzU5OGVkNDZiMzdhZDA5MDhjNjBmZGVmZDg5ZjA0OWQ=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                NTkwNDc5OTFkNWRiNjMxNzEyMTg2NjRiMTY2MjRiODEwMjcwMmU5NWRlMWJk
         
     | 
| 
      
 14 
     | 
    
         
            +
                Zjk0MDE2YTdjN2IyM2Q3M2VhNmIwZTA3YmJmOGYxMjM0ZDUxNmY2ZTM3ODNl
         
     | 
| 
      
 15 
     | 
    
         
            +
                ODIyNDAwNjcwNDU3NjdkZWQ4ZTA3MzU2YmU4ZjcyZDJjNDA1NTM=
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -6,19 +6,7 @@ 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## Overview ##
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            Shutterbug has two parts: a browser javascript library for taking html snapshots, and a server side utility for turning those html snapshots into images.
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            ### Browser Javascript library
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            By itself `shutterbug.js` is useful for authors of iframe'able content. With `shutterbug.js` on the iframe'd page, the parent window can request an html snapshot even if the iframe'd page is on a different domain. To enable this functionality you need to add the following lines to your iframe'able page:
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
         
     | 
| 
       16 
     | 
    
         
            -
                <script src="shutterbug.js"></script>
         
     | 
| 
       17 
     | 
    
         
            -
                <script>new Shutterbug('body');</script>
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            The `shutterbug.js` file is located in this repository: `lib/shutterbug/handlers/shutterbug.js`
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            `shutterbug.js` also includes the API to talk to the server side utility to generate a image of the html snapshot. See the [Usage section](#usage) below for information.
         
     | 
| 
      
 9 
     | 
    
         
            +
            Shutterbug has two parts: a browser javascript library for taking html snapshots, and a server side utility for turning those html snapshots into images. This repository consists of JavaScript library.
         
     | 
| 
       22 
10 
     | 
    
         | 
| 
       23 
11 
     | 
    
         
             
            ### Server Side Utility
         
     | 
| 
       24 
12 
     | 
    
         | 
| 
         @@ -40,7 +28,6 @@ Shutterbug is distributed as a Ruby Gem. The rack service delivers a javascript 
     | 
|
| 
       40 
28 
     | 
    
         | 
| 
       41 
29 
     | 
    
         
             
            ## Requirements & Dependencies
         
     | 
| 
       42 
30 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
              * shutterbug.js requires [JQuery](http://jquery.com/), and expects JQuery to be found via window.$ . Note that shutterbug will allow you to pass in JQuery through its constructor too, in the event that its not at window.$
         
     | 
| 
       44 
31 
     | 
    
         
             
              * Ruby 1.9x or greater is required to run the Rack application.
         
     | 
| 
       45 
32 
     | 
    
         
             
              * [PhantomJS](http://phantomjs.org/) is requird to run the Rack application.
         
     | 
| 
       46 
33 
     | 
    
         | 
| 
         @@ -66,78 +53,6 @@ Or install it yourself as: 
     | 
|
| 
       66 
53 
     | 
    
         | 
| 
       67 
54 
     | 
    
         
             
            See [LICENSE.md](LICENSE.md) for more information.
         
     | 
| 
       68 
55 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
            ## Usage
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            After adding `use Shutterbug::Rackapp` to your config.ru file, you can convert pieces of your web-page into png images.  Just follow these steps:
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
            Include the following javascript in your pages:
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                 <script src='http://<yourhost:port>/shutterbug/shutterbug.js' type='text/javascript'></script>
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            Elsewhere in your javascript, something like this:
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                  var shutterbug = new Shutterbug('#sourceselector', '#outselector',optCallbackFn, optIdentifier);
         
     | 
| 
       80 
     | 
    
         
            -
                  $('#button').click(function() {
         
     | 
| 
       81 
     | 
    
         
            -
                    shutterbug.getDomSnapshot();
         
     | 
| 
       82 
     | 
    
         
            -
                  });
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
            This will replace the contents of `$("#outselector")` with an `<img src="http://<yourhost:port>/gete_png/sha1hash>` tag which will magically spring into existance.  `optCallbackFn` is an optional callback function which will be invoked with the `<img src=..>` tag. `optIdentifier` is useful when there are multiple snapshot buttons targetting multiple iframes, and you need to verify the destination for various snapshot window message events.
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
            ## Advanced usage
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
            You can specify a failure callback on your shutterbug object. This callback will be invoked when the server response was not 200:
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                  var shutterbug = new Shutterbug('#sourceselector', '#outselector',optCallbackFn, optIdentifier);
         
     | 
| 
       91 
     | 
    
         
            -
                  shutterbug.setFailureCallback(function(jqXHR, textStatus, errorThrown) {
         
     | 
| 
       92 
     | 
    
         
            -
                    alert("Something went wrong: " + textStatus);
         
     | 
| 
       93 
     | 
    
         
            -
                  });
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            ### IFrame support
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
            If the element being snapshot'd is an iframe then the iframe needs to handle a postMessage API.
         
     | 
| 
       98 
     | 
    
         
            -
            Shutterbug will run something like the following JS to get the html of the iframe
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                iframe.contentWindow.postMessage(JSON.stringify({
         
     | 
| 
       101 
     | 
    
         
            -
                  type: 'htmlFragRequest',
         
     | 
| 
       102 
     | 
    
         
            -
                  id: id
         
     | 
| 
       103 
     | 
    
         
            -
                }), "*");
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
            It is passing a JSON message that specifies the 'type' of message and passes an id so the caller can match up the response.
         
     | 
| 
       106 
     | 
    
         
            -
            Currently the id will be the optIdentifier passed to the Shutterbug constructor in the parent window.
         
     | 
| 
       107 
     | 
    
         
            -
            The iframe should respond by posting back to the source window a message like:
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
                message.source.postMessage(JSON.stringfy({
         
     | 
| 
       110 
     | 
    
         
            -
                  type:  'htmlFragResponse',
         
     | 
| 
       111 
     | 
    
         
            -
                  value: {
         
     | 
| 
       112 
     | 
    
         
            -
                    content: 'htmlContent'
         
     | 
| 
       113 
     | 
    
         
            -
                    css: '<div><link rel='stylesheet'..><style>...</style></div>',
         
     | 
| 
       114 
     | 
    
         
            -
                    width: width,
         
     | 
| 
       115 
     | 
    
         
            -
                    height: height,
         
     | 
| 
       116 
     | 
    
         
            -
                    base_url: 'url that resource urls in content and css are relative to'
         
     | 
| 
       117 
     | 
    
         
            -
                    },
         
     | 
| 
       118 
     | 
    
         
            -
                  id:    id  // id sent in in the 'htmlFragRequest'
         
     | 
| 
       119 
     | 
    
         
            -
                }), message.origin);
         
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
            The `shutterbug.js` script actually adds a handler for this postMessage API when the Shutterbug constructor is called.
         
     | 
| 
       122 
     | 
    
         
            -
            So if shutterbug is included in the iframe html as described in the Usage section above, then a parent page can snapshot
         
     | 
| 
       123 
     | 
    
         
            -
            the iframe. The iframe's html doesn't need the button with a click hander because the parent window will trigger things.
         
     | 
| 
       124 
     | 
    
         
            -
            Additionally the `#outselector` in the iframe is not used.
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
            You could also reimplement this API in the html of the iframe if you'd like. However the shutterbug implementation includes
         
     | 
| 
       127 
     | 
    
         
            -
            some useful things like finding and including all the css on the page, and 'serializing' canvas elements into images.
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            ### Shutterbug JQuery custom events ###
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
            Shutterbug emits a jQuery custom event called `shutterbug-saycheese` just prior to copying styles, elements, and canvas contents to the document fragment. This allows applications to do any preparation required before they are ready to be snapshotted.
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
            In your application, you can register your event-handler like this:
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
                  $(window).on('shutterbug-saycheese', function() {
         
     | 
| 
       136 
     | 
    
         
            -
                    api.renderCanvas();
         
     | 
| 
       137 
     | 
    
         
            -
                  });
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
            After all elements are copied, emits a `shutterbug-asyouwere` event.
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
56 
     | 
    
         
             
            ### Deploying on Heroku ###
         
     | 
| 
       142 
57 
     | 
    
         | 
| 
       143 
58 
     | 
    
         
             
            To deploy on heroku, you are going to want to modify your stack following [these instructions](http://nerdery.crowdmob.com/post/33143120111/heroku-ruby-on-rails-and-phantomjs).
         
     | 
| 
         @@ -179,6 +94,9 @@ And a Procfile which looks like this: 
     | 
|
| 
       179 
94 
     | 
    
         | 
| 
       180 
95 
     | 
    
         
             
            ## Changes ##
         
     | 
| 
       181 
96 
     | 
    
         | 
| 
      
 97 
     | 
    
         
            +
            *  December 11, 2014 – v 0.5.0
         
     | 
| 
      
 98 
     | 
    
         
            +
                *  JS lib, JS handler and demos removed (as they are part of the new [shutterbug.js](https://github.com/concord-consortium/shutterbug.js) repo now).
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
       182 
100 
     | 
    
         
             
            *  December 4, 2014 – v 0.4.3
         
     | 
| 
       183 
101 
     | 
    
         
             
                *  Added support of various image formats and quality settings.
         
     | 
| 
       184 
102 
     | 
    
         | 
    
        data/lib/shutterbug.rb
    CHANGED
    
    
    
        data/lib/shutterbug/handlers.rb
    CHANGED
    
    | 
         @@ -2,7 +2,6 @@ module Shutterbug 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module Handlers
         
     | 
| 
       3 
3 
     | 
    
         
             
                autoload :ConvertHandler, "shutterbug/handlers/convert_handler"
         
     | 
| 
       4 
4 
     | 
    
         
             
                autoload :DirectUploadHandler, "shutterbug/handlers/direct_upload_handler"
         
     | 
| 
       5 
     | 
    
         
            -
                autoload :JsFileHandler, "shutterbug/handlers/js_file_handler"
         
     | 
| 
       6 
5 
     | 
    
         
             
                autoload :FileHandler, "shutterbug/handlers/file_handler"
         
     | 
| 
       7 
6 
     | 
    
         
             
              end
         
     | 
| 
       8 
7 
     | 
    
         
             
            end
         
     | 
| 
         @@ -17,33 +17,20 @@ module Shutterbug 
     | 
|
| 
       17 
17 
     | 
    
         
             
                    helper.response(response_text, 'text/plain')
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                  def  
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
       23 
     | 
    
         
            -
                     
     | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
       25 
     | 
    
         
            -
                     
     | 
| 
       26 
     | 
    
         
            -
                     
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                     
     | 
| 
       29 
     | 
    
         
            -
                      val *= 100
         
     | 
| 
       30 
     | 
    
         
            -
                    else
         
     | 
| 
       31 
     | 
    
         
            -
                      val *= 100
         
     | 
| 
       32 
     | 
    
         
            -
                    end
         
     | 
| 
       33 
     | 
    
         
            -
                    # PhantomJS expects integer.
         
     | 
| 
       34 
     | 
    
         
            -
                    val.to_i
         
     | 
| 
      
 20 
     | 
    
         
            +
                  def get_options(req)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    opts = {}
         
     | 
| 
      
 22 
     | 
    
         
            +
                    opts[:html]    = req.POST()['content']
         
     | 
| 
      
 23 
     | 
    
         
            +
                    opts[:width]   = req.POST()['width']
         
     | 
| 
      
 24 
     | 
    
         
            +
                    opts[:height]  = req.POST()['height']
         
     | 
| 
      
 25 
     | 
    
         
            +
                    opts[:css]     = req.POST()['css']
         
     | 
| 
      
 26 
     | 
    
         
            +
                    opts[:format]  = req.POST()['format']
         
     | 
| 
      
 27 
     | 
    
         
            +
                    opts[:quality] = req.POST()['quality']
         
     | 
| 
      
 28 
     | 
    
         
            +
                    return opts
         
     | 
| 
       35 
29 
     | 
    
         
             
                  end
         
     | 
| 
       36 
30 
     | 
    
         | 
| 
       37 
31 
     | 
    
         
             
                  def convert(req)
         
     | 
| 
       38 
     | 
    
         
            -
                     
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
       40 
     | 
    
         
            -
                    height   = req.POST()['height']  || 700
         
     | 
| 
       41 
     | 
    
         
            -
                    css      = req.POST()['css']     || ""
         
     | 
| 
       42 
     | 
    
         
            -
                    format   = req.POST()['format']  || "png"
         
     | 
| 
       43 
     | 
    
         
            -
                    quality  = req.POST()['quality'] || 1
         
     | 
| 
       44 
     | 
    
         
            -
                    quality  = convert_quality(quality, format)
         
     | 
| 
       45 
     | 
    
         
            -
                    config   = self.class.config
         
     | 
| 
       46 
     | 
    
         
            -
                    job = PhantomJob.new(config.base_url(req), html, css, width, height, format, quality)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    config = self.class.config
         
     | 
| 
      
 33 
     | 
    
         
            +
                    job = PhantomJob.new(config.base_url(req), get_options(req))
         
     | 
| 
       47 
34 
     | 
    
         
             
                    unless (cache_entry = config.cache_manager.find(job.cache_key))
         
     | 
| 
       48 
35 
     | 
    
         
             
                      job.rasterize
         
     | 
| 
       49 
36 
     | 
    
         
             
                      html_entry = Shutterbug::CacheManager::CacheEntry.new(job.html_file)
         
     | 
| 
         @@ -11,14 +11,32 @@ module Shutterbug 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  File.join(File.dirname(__FILE__),'rasterize.js')
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                def  
     | 
| 
      
 14 
     | 
    
         
            +
                def convert_quality(val, format)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # Client sends quality between 0 and 1 (similar to .toDataURL() second argument).
         
     | 
| 
      
 16 
     | 
    
         
            +
                  # This conversion tries to ensure that the size of the final image is similar to
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # .toDataURL() output with given quality settings.
         
     | 
| 
      
 18 
     | 
    
         
            +
                  val = val.to_f
         
     | 
| 
      
 19 
     | 
    
         
            +
                  case format
         
     | 
| 
      
 20 
     | 
    
         
            +
                  when "png"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    val *= 10
         
     | 
| 
      
 22 
     | 
    
         
            +
                  when "jpeg"
         
     | 
| 
      
 23 
     | 
    
         
            +
                    val *= 100
         
     | 
| 
      
 24 
     | 
    
         
            +
                  else
         
     | 
| 
      
 25 
     | 
    
         
            +
                    val *= 100
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  # PhantomJS expects integer.
         
     | 
| 
      
 28 
     | 
    
         
            +
                  val.to_i
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def initialize(base_url, options)
         
     | 
| 
       15 
32 
     | 
    
         
             
                  @base_url = base_url
         
     | 
| 
       16 
     | 
    
         
            -
                  @html     = html
         
     | 
| 
       17 
     | 
    
         
            -
                  @css      = css
         
     | 
| 
       18 
     | 
    
         
            -
                  @width    = width
         
     | 
| 
       19 
     | 
    
         
            -
                  @height   = height
         
     | 
| 
       20 
     | 
    
         
            -
                  @format   = format
         
     | 
| 
       21 
     | 
    
         
            -
                  @quality  = quality
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @html     = options[:html]    || ""
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @css      = options[:css]     || ""
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @width    = options[:width]   || 1000
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @height   = options[:height]  || 700
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @format   = options[:format]  || "png"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @quality  = options[:quality] || 1
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @quality  = convert_quality(@quality, @format)
         
     | 
| 
       22 
40 
     | 
    
         
             
                  @config   = Configuration.instance
         
     | 
| 
       23 
41 
     | 
    
         
             
                end
         
     | 
| 
       24 
42 
     | 
    
         | 
    
        data/lib/shutterbug/rackapp.rb
    CHANGED
    
    
| 
         @@ -68,13 +68,5 @@ describe Shutterbug::Rackapp do 
     | 
|
| 
       68 
68 
     | 
    
         
             
                    last_response.headers['Content-Type'].should match 'image/png'
         
     | 
| 
       69 
69 
     | 
    
         
             
                  end
         
     | 
| 
       70 
70 
     | 
    
         
             
                end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                describe "get shutterbug.js javascipt route" do
         
     | 
| 
       73 
     | 
    
         
            -
                  it "should return js file" do
         
     | 
| 
       74 
     | 
    
         
            -
                    get "/shutterbug/shutterbug.js"
         
     | 
| 
       75 
     | 
    
         
            -
                    last_response.should be_ok
         
     | 
| 
       76 
     | 
    
         
            -
                    last_response.headers['Content-Type'].should match 'application/javascript'
         
     | 
| 
       77 
     | 
    
         
            -
                  end
         
     | 
| 
       78 
     | 
    
         
            -
                end
         
     | 
| 
       79 
71 
     | 
    
         
             
              end
         
     | 
| 
       80 
72 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: shutterbug
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Noah Paessel
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014-12- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-12-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -156,24 +156,7 @@ files: 
     | 
|
| 
       156 
156 
     | 
    
         
             
            - LICENSE.md
         
     | 
| 
       157 
157 
     | 
    
         
             
            - README.md
         
     | 
| 
       158 
158 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       159 
     | 
    
         
            -
            - bower.json
         
     | 
| 
       160 
159 
     | 
    
         
             
            - config.ru
         
     | 
| 
       161 
     | 
    
         
            -
            - demo/The_Scream.jpg
         
     | 
| 
       162 
     | 
    
         
            -
            - demo/canvas_example.html
         
     | 
| 
       163 
     | 
    
         
            -
            - demo/iframe.html
         
     | 
| 
       164 
     | 
    
         
            -
            - demo/iframe2.html
         
     | 
| 
       165 
     | 
    
         
            -
            - demo/iframe3.html
         
     | 
| 
       166 
     | 
    
         
            -
            - demo/iframe4.html
         
     | 
| 
       167 
     | 
    
         
            -
            - demo/iframe_example.html
         
     | 
| 
       168 
     | 
    
         
            -
            - demo/iframe_no_shutterbug.html
         
     | 
| 
       169 
     | 
    
         
            -
            - demo/index.html
         
     | 
| 
       170 
     | 
    
         
            -
            - demo/main.css
         
     | 
| 
       171 
     | 
    
         
            -
            - demo/nested_iframe_example.html
         
     | 
| 
       172 
     | 
    
         
            -
            - demo/oil-and-water/heatbath.svg
         
     | 
| 
       173 
     | 
    
         
            -
            - demo/oil-and-water/ke-gradient.svg
         
     | 
| 
       174 
     | 
    
         
            -
            - demo/oil-and-water/oil-and-water.svg
         
     | 
| 
       175 
     | 
    
         
            -
            - demo/simple_example.html
         
     | 
| 
       176 
     | 
    
         
            -
            - demo/svg_example.html
         
     | 
| 
       177 
160 
     | 
    
         
             
            - images/shutterbug.jpg
         
     | 
| 
       178 
161 
     | 
    
         
             
            - lib/shutterbug.rb
         
     | 
| 
       179 
162 
     | 
    
         
             
            - lib/shutterbug/cache_manager.rb
         
     | 
| 
         @@ -184,8 +167,6 @@ files: 
     | 
|
| 
       184 
167 
     | 
    
         
             
            - lib/shutterbug/handlers/convert_handler.rb
         
     | 
| 
       185 
168 
     | 
    
         
             
            - lib/shutterbug/handlers/direct_upload_handler.rb
         
     | 
| 
       186 
169 
     | 
    
         
             
            - lib/shutterbug/handlers/file_handler.rb
         
     | 
| 
       187 
     | 
    
         
            -
            - lib/shutterbug/handlers/js_file_handler.rb
         
     | 
| 
       188 
     | 
    
         
            -
            - lib/shutterbug/handlers/shutterbug.js
         
     | 
| 
       189 
170 
     | 
    
         
             
            - lib/shutterbug/phantom_job.rb
         
     | 
| 
       190 
171 
     | 
    
         
             
            - lib/shutterbug/rackapp.rb
         
     | 
| 
       191 
172 
     | 
    
         
             
            - lib/shutterbug/rasterize.js
         
     | 
| 
         @@ -200,7 +181,6 @@ files: 
     | 
|
| 
       200 
181 
     | 
    
         
             
            - spec/shutterbug/direct_upload_handler_spec.rb
         
     | 
| 
       201 
182 
     | 
    
         
             
            - spec/shutterbug/file_handler_spec.rb
         
     | 
| 
       202 
183 
     | 
    
         
             
            - spec/shutterbug/file_storage_spec.rb
         
     | 
| 
       203 
     | 
    
         
            -
            - spec/shutterbug/js_file_handler_spec.rb
         
     | 
| 
       204 
184 
     | 
    
         
             
            - spec/shutterbug/rackapp_spec.rb
         
     | 
| 
       205 
185 
     | 
    
         
             
            - spec/shutterbug/s3_storage_spec.rb
         
     | 
| 
       206 
186 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
         @@ -236,7 +216,6 @@ test_files: 
     | 
|
| 
       236 
216 
     | 
    
         
             
            - spec/shutterbug/direct_upload_handler_spec.rb
         
     | 
| 
       237 
217 
     | 
    
         
             
            - spec/shutterbug/file_handler_spec.rb
         
     | 
| 
       238 
218 
     | 
    
         
             
            - spec/shutterbug/file_storage_spec.rb
         
     | 
| 
       239 
     | 
    
         
            -
            - spec/shutterbug/js_file_handler_spec.rb
         
     | 
| 
       240 
219 
     | 
    
         
             
            - spec/shutterbug/rackapp_spec.rb
         
     | 
| 
       241 
220 
     | 
    
         
             
            - spec/shutterbug/s3_storage_spec.rb
         
     | 
| 
       242 
221 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
    
        data/bower.json
    DELETED
    
    | 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {
         
     | 
| 
       2 
     | 
    
         
            -
              "name": "shutterbug",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "0.4.3",
         
     | 
| 
       4 
     | 
    
         
            -
              "homepage": "https://github.com/concord-consortium/shutterbug",
         
     | 
| 
       5 
     | 
    
         
            -
              "authors": [
         
     | 
| 
       6 
     | 
    
         
            -
                "Noah Paessel <npaessel@concord.org>"
         
     | 
| 
       7 
     | 
    
         
            -
              ],
         
     | 
| 
       8 
     | 
    
         
            -
              "description": "Javascript library for facilitating rendering DOM components in rasterized form.",
         
     | 
| 
       9 
     | 
    
         
            -
              "main": "./lib/shutterbug/handlers/shutterbug.js",
         
     | 
| 
       10 
     | 
    
         
            -
              "dependencies": {
         
     | 
| 
       11 
     | 
    
         
            -
                "jquery": "1.11.0"
         
     | 
| 
       12 
     | 
    
         
            -
              },
         
     | 
| 
       13 
     | 
    
         
            -
              "keywords": [
         
     | 
| 
       14 
     | 
    
         
            -
                "shutterbug"
         
     | 
| 
       15 
     | 
    
         
            -
              ],
         
     | 
| 
       16 
     | 
    
         
            -
              "license": "MIT",
         
     | 
| 
       17 
     | 
    
         
            -
              "private": true,
         
     | 
| 
       18 
     | 
    
         
            -
              "ignore": [
         
     | 
| 
       19 
     | 
    
         
            -
                "**/.*",
         
     | 
| 
       20 
     | 
    
         
            -
                "node_modules",
         
     | 
| 
       21 
     | 
    
         
            -
                "bower_components",
         
     | 
| 
       22 
     | 
    
         
            -
                "spec",
         
     | 
| 
       23 
     | 
    
         
            -
                "demo",
         
     | 
| 
       24 
     | 
    
         
            -
                "images"
         
     | 
| 
       25 
     | 
    
         
            -
              ]
         
     | 
| 
       26 
     | 
    
         
            -
            }
         
     | 
    
        data/demo/The_Scream.jpg
    DELETED
    
    | 
         Binary file 
     | 
    
        data/demo/canvas_example.html
    DELETED
    
    | 
         @@ -1,36 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <!doctype html>
         
     | 
| 
       2 
     | 
    
         
            -
            <html>
         
     | 
| 
       3 
     | 
    
         
            -
              <head>
         
     | 
| 
       4 
     | 
    
         
            -
                  <title>demo</title>
         
     | 
| 
       5 
     | 
    
         
            -
                  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
         
     | 
| 
       6 
     | 
    
         
            -
                  <script type="text/javascript" src="/shutterbug/shutterbug.js"></script>
         
     | 
| 
       7 
     | 
    
         
            -
                  <link rel="stylesheet" type="text/css" href="main.css">
         
     | 
| 
       8 
     | 
    
         
            -
              </head>
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              <body>
         
     | 
| 
       11 
     | 
    
         
            -
                <div>
         
     | 
| 
       12 
     | 
    
         
            -
                  <canvas id="src" width="350" height="350"></canvas>
         
     | 
| 
       13 
     | 
    
         
            -
                </div>
         
     | 
| 
       14 
     | 
    
         
            -
                <button class="shutterbug" data-dst="#dst">Snapshot</button>
         
     | 
| 
       15 
     | 
    
         
            -
                <div id="dst"></div>
         
     | 
| 
       16 
     | 
    
         
            -
              </body>
         
     | 
| 
       17 
     | 
    
         
            -
              <script type="text/javascript">
         
     | 
| 
       18 
     | 
    
         
            -
                $(document).ready(function(e) {
         
     | 
| 
       19 
     | 
    
         
            -
                  var img = new Image();
         
     | 
| 
       20 
     | 
    
         
            -
                  img.onload = function () {
         
     | 
| 
       21 
     | 
    
         
            -
                    var ctx = $("canvas")[0].getContext("2d");
         
     | 
| 
       22 
     | 
    
         
            -
                    ctx.fillStyle = "green";
         
     | 
| 
       23 
     | 
    
         
            -
                    ctx.fillRect(0, 0, 350, 350);
         
     | 
| 
       24 
     | 
    
         
            -
                    ctx.fillStyle = "orange";
         
     | 
| 
       25 
     | 
    
         
            -
                    ctx.fillRect(10, 10, 330, 330);
         
     | 
| 
       26 
     | 
    
         
            -
                    ctx.drawImage(img, 20, 20, 310, 310);
         
     | 
| 
       27 
     | 
    
         
            -
                  };
         
     | 
| 
       28 
     | 
    
         
            -
                  img.src = "The_Scream.jpg";
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  var bug = new Shutterbug("#src", "#dst", null, null, null, {format: "jpeg", quality: 0.75});
         
     | 
| 
       31 
     | 
    
         
            -
                  $("button.shutterbug").click(function(e) {
         
     | 
| 
       32 
     | 
    
         
            -
                    bug.getDomSnapshot();
         
     | 
| 
       33 
     | 
    
         
            -
                  });
         
     | 
| 
       34 
     | 
    
         
            -
                });
         
     | 
| 
       35 
     | 
    
         
            -
              </script>
         
     | 
| 
       36 
     | 
    
         
            -
            </html>
         
     | 
    
        data/demo/iframe.html
    DELETED
    
    | 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <!doctype html>
         
     | 
| 
       2 
     | 
    
         
            -
            <html>
         
     | 
| 
       3 
     | 
    
         
            -
              <head>
         
     | 
| 
       4 
     | 
    
         
            -
                  <title>demo</title>
         
     | 
| 
       5 
     | 
    
         
            -
                  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
         
     | 
| 
       6 
     | 
    
         
            -
                  <script type="text/javascript" src="/shutterbug/shutterbug.js"></script>
         
     | 
| 
       7 
     | 
    
         
            -
                  <link rel="stylesheet" type="text/css" href="main.css"></link>
         
     | 
| 
       8 
     | 
    
         
            -
                  <style type="text/css">
         
     | 
| 
       9 
     | 
    
         
            -
                    #src {
         
     | 
| 
       10 
     | 
    
         
            -
                      color: blue;
         
     | 
| 
       11 
     | 
    
         
            -
                      width: 100px;
         
     | 
| 
       12 
     | 
    
         
            -
                      height: 100px;
         
     | 
| 
       13 
     | 
    
         
            -
                    }
         
     | 
| 
       14 
     | 
    
         
            -
                  </style>
         
     | 
| 
       15 
     | 
    
         
            -
              </head>
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              <body>
         
     | 
| 
       18 
     | 
    
         
            -
                <div id="src">
         
     | 
| 
       19 
     | 
    
         
            -
                  (iframe)
         
     | 
| 
       20 
     | 
    
         
            -
                </div>
         
     | 
| 
       21 
     | 
    
         
            -
              </div>
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              </body>
         
     | 
| 
       24 
     | 
    
         
            -
              <script type="text/javascript">
         
     | 
| 
       25 
     | 
    
         
            -
                var dd = null;
         
     | 
| 
       26 
     | 
    
         
            -
                $(document).ready(function(e) {
         
     | 
| 
       27 
     | 
    
         
            -
                  dd    = new Shutterbug('#src');
         
     | 
| 
       28 
     | 
    
         
            -
                });
         
     | 
| 
       29 
     | 
    
         
            -
              </script>
         
     | 
| 
       30 
     | 
    
         
            -
            </html>
         
     | 
    
        data/demo/iframe2.html
    DELETED
    
    | 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <!doctype html>
         
     | 
| 
       2 
     | 
    
         
            -
            <html>
         
     | 
| 
       3 
     | 
    
         
            -
              <head>
         
     | 
| 
       4 
     | 
    
         
            -
                  <title>demo</title>
         
     | 
| 
       5 
     | 
    
         
            -
                  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
         
     | 
| 
       6 
     | 
    
         
            -
                  <script type="text/javascript" src="/shutterbug/shutterbug.js"></script>
         
     | 
| 
       7 
     | 
    
         
            -
                  <link rel="stylesheet" type="text/css" href="main.css"></link>
         
     | 
| 
       8 
     | 
    
         
            -
                  <style type="text/css">
         
     | 
| 
       9 
     | 
    
         
            -
                    #src {
         
     | 
| 
       10 
     | 
    
         
            -
                      color: green;
         
     | 
| 
       11 
     | 
    
         
            -
                      width: 100px;
         
     | 
| 
       12 
     | 
    
         
            -
                      height: 100px;
         
     | 
| 
       13 
     | 
    
         
            -
                    }
         
     | 
| 
       14 
     | 
    
         
            -
                  </style>
         
     | 
| 
       15 
     | 
    
         
            -
              </head>
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              <body>
         
     | 
| 
       18 
     | 
    
         
            -
                <div id="src">
         
     | 
| 
       19 
     | 
    
         
            -
                  (iframe)
         
     | 
| 
       20 
     | 
    
         
            -
                </div>
         
     | 
| 
       21 
     | 
    
         
            -
              </div>
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              </body>
         
     | 
| 
       24 
     | 
    
         
            -
              <script type="text/javascript">
         
     | 
| 
       25 
     | 
    
         
            -
                var dd = null;
         
     | 
| 
       26 
     | 
    
         
            -
                $(document).ready(function(e) {
         
     | 
| 
       27 
     | 
    
         
            -
                  dd    = new Shutterbug('#src');
         
     | 
| 
       28 
     | 
    
         
            -
                });
         
     | 
| 
       29 
     | 
    
         
            -
              </script>
         
     | 
| 
       30 
     | 
    
         
            -
            </html>
         
     |