Index: bower_components/gif.js/site/contents/scripts/main.coffee |
diff --git a/bower_components/gif.js/site/contents/scripts/main.coffee b/bower_components/gif.js/site/contents/scripts/main.coffee |
deleted file mode 100644 |
index 88b22098ea77b0880a0b464daf1c0895ecda3b56..0000000000000000000000000000000000000000 |
--- a/bower_components/gif.js/site/contents/scripts/main.coffee |
+++ /dev/null |
@@ -1,103 +0,0 @@ |
-require 'browsernizr/test/css/rgba' |
-require 'browsernizr/test/css/transforms3d' |
-Modernizr = require 'browsernizr' |
- |
-require './vendor/mootools.js' |
- |
-async = require 'async' |
-ready = require './vendor/ready.js' |
- |
-now = window.performance?.now?.bind(window.performance) or Date.now |
- |
-# fallback for browsers not supporting createObjectURL |
-blobURLSupport = window.URL?.createObjectURL? |
-buildDataURL = do -> |
- charMap = {} |
- charMap[i] = String.fromCharCode(i) for i in [0...256] |
- return (data) -> |
- str = '' |
- for i in [0...data.length] |
- str += charMap[data[i]] |
- return 'data:image/gif;base64,' + btoa(str) |
- |
-loadImage = (src, callback) -> |
- img = new Image() |
- img.onload = -> |
- callback null, img |
- img.onerror = -> |
- callback new Error "Could load #{ src }" |
- img.src = src |
- |
-setupDemo = (element) -> |
- element.getElements('.hover-buttons li').addEvents |
- mouseenter: -> element.addClass @className |
- mouseleave: -> element.removeClass @className |
- |
- qslider = element.getElement '.quality input' |
- qvalue = element.getElement '.quality span' |
- renderimg = element.getElement 'img.render' |
- logel = element.getElement 'pre' |
- |
- gif = new GIF |
- quality: 10 |
- workers: 2 |
- |
- startTime = null |
- gif.on 'start', -> |
- startTime = now() |
- |
- gif.on 'finished', (blob, data) -> |
- if blobURLSupport |
- renderimg.src = URL.createObjectURL(blob) |
- else |
- renderimg.src = buildDataURL(data) |
- delta = now() - startTime |
- logel.set 'text', "Rendered #{ images.length } frame(s) at q#{ gif.options.quality } in #{ delta.toFixed(2) }ms" |
- |
- gif.on 'progress', (p) -> |
- logel.set 'text', "Rendering #{ images.length } frame(s) at q#{ gif.options.quality }... #{ Math.round(p * 100) }%" |
- |
- images = element.getElements('img.original').map (img) -> img.src |
- async.map images, loadImage, (error, images) -> |
- throw error if error? |
- gif.addFrame image, {delay: 500, copy: true} for image in images |
- gif.render() |
- |
- qslider.addEvent 'change', -> |
- val = 31 - parseInt qslider.value |
- qvalue.set 'text', val |
- gif.setOption 'quality', val |
- gif.abort() |
- gif.render() |
- |
- delay = element.getElement '.delay' |
- if delay? |
- delay.getElement('input').addEvent 'change', -> |
- value = parseInt this.value |
- delay.getElement('.value').set 'text', value + 'ms' |
- for frame in gif.frames |
- frame.delay = value |
- gif.abort() |
- gif.render() |
- |
- repeat = element.getElement '.repeat' |
- if repeat? |
- repeat.getElement('input').addEvent 'change', -> |
- value = parseInt this.value |
- value = -1 if value is 0 |
- value = 0 if value is 21 |
- switch value |
- when 0 |
- txt = 'forever' |
- when -1 |
- txt = 'none' |
- else |
- txt = value |
- repeat.getElement('.value').set 'text', txt |
- gif.setOption 'repeat', value |
- gif.abort() |
- gif.render() |
- |
-ready -> |
- for demo in document.body.querySelectorAll '.demo' |
- setupDemo demo |