Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| /*! | |
| { | |
| "name": "Webp", | |
| "async": true, | |
| "property": "webp", | |
| "caniuse": "webp", | |
| "tags": ["image"], | |
| "builderAliases": ["img_webp"], | |
| "authors": ["Krister Kari", "@amandeep", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"], | |
| "notes": [{ | |
| "name": "Webp Info", | |
| "href": "https://developers.google.com/speed/webp/" | |
| }, { | |
| "name": "Chromium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input", | |
| "href": "https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html" | |
| }, { | |
| "name": "Webp Lossless Spec", | |
| "href": "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification" | |
| }, { | |
| "name": "Article about WebP support", | |
| "href": "https://optimus.keycdn.com/support/webp-support/" | |
| }, { | |
| "name": "Chromium WebP announcement", | |
| "href": "https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1" | |
| }] | |
| } | |
| !*/ | |
| /* DOC | |
| Tests for lossy, non-alpha webp support. | |
| Tests for all forms of webp support (lossless, lossy, alpha, and animated).. | |
| Modernizr.webp // Basic support (lossy) | |
| Modernizr.webp.lossless // Lossless | |
| Modernizr.webp.alpha // Alpha (both lossy and lossless) | |
| Modernizr.webp.animation // Animated WebP | |
| */ | |
| define(['Modernizr', 'addTest'], function(Modernizr, addTest) { | |
| Modernizr.addAsyncTest(function() { | |
| var webpTests = [{ | |
| 'uri': 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=', | |
| 'name': 'webp' | |
| }, { | |
| 'uri': 'data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==', | |
| 'name': 'webp.alpha' | |
| }, { | |
| 'uri': 'data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA', | |
| 'name': 'webp.animation' | |
| }, { | |
| 'uri': 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=', | |
| 'name': 'webp.lossless' | |
| }]; | |
| var webp = webpTests.shift(); | |
| function test(name, uri, cb) { | |
| var image = new Image(); | |
| function addResult(event) { | |
| // if the event is from 'onload', check the see if the image's width is | |
| // 1 pixel (which indicates support). otherwise, it fails | |
| var result = event && event.type === 'load' ? image.width === 1 : false; | |
| var baseTest = name === 'webp'; | |
| // if it is the base test, and the result is false, just set a literal false | |
| // rather than use the Boolean constructor | |
| addTest(name, (baseTest && result) ? new Boolean(result) : result); | |
| if (cb) { | |
| cb(event); | |
| } | |
| } | |
| image.onerror = addResult; | |
| image.onload = addResult; | |
| image.src = uri; | |
| } | |
| // test for webp support in general | |
| test(webp.name, webp.uri, function(e) { | |
| // if the webp test loaded, test everything else. | |
| if (e && e.type === 'load') { | |
| for (var i = 0; i < webpTests.length; i++) { | |
| test(webpTests[i].name, webpTests[i].uri); | |
| } | |
| } | |
| }); | |
| }); | |
| }); |