forked from olcxjas-softworks/LarpixClient
big updat:
- update dependencies - add webp support and webp conversion for profile images
This commit is contained in:
parent
19c3dbb42d
commit
95aaaa69ea
244 changed files with 121382 additions and 86 deletions
109
node_modules/gif.js/site/contents/scripts/main.coffee
generated
vendored
Normal file
109
node_modules/gif.js/site/contents/scripts/main.coffee
generated
vendored
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
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
|
||||
debug: true
|
||||
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()
|
||||
|
||||
(element.getElement '.dither select')?.addEvent 'change', ->
|
||||
gif.setOption 'dither', if @value is 'None' then false else @value
|
||||
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
|
||||
4060
node_modules/gif.js/site/contents/scripts/vendor/mootools.js
generated
vendored
Normal file
4060
node_modules/gif.js/site/contents/scripts/vendor/mootools.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
54
node_modules/gif.js/site/contents/scripts/vendor/ready.js
generated
vendored
Normal file
54
node_modules/gif.js/site/contents/scripts/vendor/ready.js
generated
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/*!
|
||||
* domready (c) Dustin Diaz 2012 - License MIT
|
||||
*/
|
||||
!function (name, context, definition) {
|
||||
if (typeof module != 'undefined') module.exports = definition()
|
||||
else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)
|
||||
else context[name] = definition()
|
||||
}('domready', this, function (ready) {
|
||||
|
||||
var fns = [], fn, f = false
|
||||
, doc = document
|
||||
, testEl = doc.documentElement
|
||||
, hack = testEl.doScroll
|
||||
, domContentLoaded = 'DOMContentLoaded'
|
||||
, addEventListener = 'addEventListener'
|
||||
, onreadystatechange = 'onreadystatechange'
|
||||
, readyState = 'readyState'
|
||||
, loaded = /^loade|c/.test(doc[readyState])
|
||||
|
||||
function flush(f) {
|
||||
loaded = 1
|
||||
while (f = fns.shift()) f()
|
||||
}
|
||||
|
||||
doc[addEventListener] && doc[addEventListener](domContentLoaded, fn = function () {
|
||||
doc.removeEventListener(domContentLoaded, fn, f)
|
||||
flush()
|
||||
}, f)
|
||||
|
||||
|
||||
hack && doc.attachEvent(onreadystatechange, fn = function () {
|
||||
if (/^c/.test(doc[readyState])) {
|
||||
doc.detachEvent(onreadystatechange, fn)
|
||||
flush()
|
||||
}
|
||||
})
|
||||
|
||||
return (ready = hack ?
|
||||
function (fn) {
|
||||
self != top ?
|
||||
loaded ? fn() : fns.push(fn) :
|
||||
function () {
|
||||
try {
|
||||
testEl.doScroll('left')
|
||||
} catch (e) {
|
||||
return setTimeout(function() { ready(fn) }, 50)
|
||||
}
|
||||
fn()
|
||||
}()
|
||||
} :
|
||||
function (fn) {
|
||||
loaded ? fn() : fns.push(fn)
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue