v2.0.0~20131003~dfsg/ 0000755 0000000 0000000 00000000000 12223265410 012446 5 ustar root root v2.0.0~20131003~dfsg/img.srcset.js 0000644 0000000 0000000 00000012143 12223265410 015063 0 ustar root root /* imgsrcset - Img srcset polyfill for resolution responsive images. Authors & copyright (c) 2012: WebLinc, David Knight. */
// Imgsrcset
(function(win) {
'use strict';
var _viewport = win.document.documentElement,
_srcsetID = 0,
_srcsets = [],
_eventPrefix = '',
_addEvent = win.addEventListener || (_eventPrefix = 'on') && win.attachEvent,
_removeEvent = win.removeEventListener || win.detachEvent,
_srcExpr = /[^\s]+/g,
_digitExpr = /[0-9\.]+/g,
_timer = 0,
/*
_matches
*/
_matches = function(srcset) {
var srcList = (srcset.indexOf(',') !== -1 && srcset.split(',')) || [srcset],
srcIndex = srcList.length - 1,
srcLength = srcIndex,
list = null,
listIndex = 0,
src = '',
media = '';
if (srcIndex < 0) {
return;
}
do {
var list = srcList[srcLength - srcIndex].match(_srcExpr) || [],
listIndex = list.length;
while (listIndex--) {
var item = list[listIndex],
feature = 0,
digits = 0;
if (listIndex > 0) {
feature = (item.indexOf('w') !== -1 && (win.innerWidth || _viewport.clientWidth)) ||
(item.indexOf('h') !== -1 && (win.innerHeight || _viewport.clientHeight)) ||
(item.indexOf('x') !== -1 && (win.devicePixelRatio || 1));
digits = Number(item.match(_digitExpr));
if (feature && digits && digits > feature) {
break;
}
} else {
src = item;
media = srcList[srcIndex];
}
}
} while (srcIndex--);
return (src && media && {src: src, media: media}) || false;
},
/*
watch
*/
_watch = function(evt) {
clearTimeout(_timer);
_timer = setTimeout(function() {
var srcset = null,
srcsetIndex = _srcsetID - 1,
srcsetLength = srcsetIndex,
match = false;
do {
srcset = _srcsets[srcsetLength - srcsetIndex];
// If img element does not have a parent, remove array index to prevent caching
if (!srcset.element.parentNode) {
_srcsetID--;
srcset.splice(srcsetIndex, 1);
continue;
}
match = _matches(srcset.media);
if (match && (srcset.matches !== match.media)) {
srcset.matches = match.media;
srcset.element.src = match.src;
} else if (!match) {
srcset.matches = false;
srcset.src && (srcset.element.src = srcset.src);
}
} while(srcsetIndex--);
}, 10);
},
/*
init
*/
_init = function() {
_removeEvent(_eventPrefix + 'load', _init);
win.Imgsrcset.parse();
_watch();
// Processes '_srcsets' array and determines which source to use
// '_watch' will clear out any images from the array that do not have parents, which should eliminate element caching
_addEvent(_eventPrefix + 'resize', _watch);
_addEvent(_eventPrefix + 'orientationchange', _watch);
};
/*
imgsrcset
*/
win.Imgsrcset = {
/*
parse
Called on '_init' and can also be called if new images are added/removed
*/
parse: function() {
_srcsets = [];
var imgs = win.document.getElementsByTagName('img') || [],
imgIndex = imgs.length - 1,
imgLength = imgIndex,
img = null,
srcset = '';
do {
img = imgs[imgLength - imgIndex];
srcset = img.getAttribute('srcset') || '';
if (!srcset) {
continue;
}
_srcsetID = _srcsets.push({
element : img,
media : srcset,
matches : false,
src : img.getAttribute('src') || ''
});
} while(imgIndex--);
}
};
// Set up listeners
_addEvent(_eventPrefix + 'load', _init);
})(window); v2.0.0~20131003~dfsg/README.md 0000644 0000000 0000000 00000001246 12223265410 013730 0 ustar root root img-srcset
==========
Responsive images based on the 'srcset' attribute proposal. See http://dev.w3.org/html5/srcset/.
Lightweight, no nonsense, all browser supporting, fast polyfill for img ```srcset```.
* **Browser support**: Tested in IE 6-9, Chrome, Firefox, Opera, Safari
* **Size**: 1.21KB minified (700 bytes gzipped)
Examples
---
Simple high density screen ('retina') query
```
```
Viewport width and pixel density query
```
```
###Dependencies
None, simple javascript for fast execution. Version 1 relied on media-match. v2.0.0~20131003~dfsg/img.srcset.min.js 0000644 0000000 0000000 00000002535 12223265410 015651 0 ustar root root /* imgsrcset - Img srcset polyfill for resolution responsive images. Authors & copyright (c) 2012: WebLinc, David Knight. */
(function(c){var s=c.document.documentElement,l=0,m=[],d="",h=c.addEventListener||(d="on")&&c.attachEvent,v=c.removeEventListener||c.detachEvent,w=/[^\s]+/g,x=/[0-9\.]+/g,t=0,g=function(){clearTimeout(t);t=setTimeout(function(){var b=null,e=l-1,d=e,a=!1;do if(b=m[d-e],b.element.parentNode){var a=b.media,a=-1!==a.indexOf(",")&&a.split(",")||[a],f=a.length-1,h=f,g=null,k=0,n="",p="";if(0>f)a=void 0;else{do{g=a[h-f].match(w)||[];for(k=g.length;k--;){var j=g[k],q=0,r=0;if(0q)break}else n=j,p=a[f]}}while(f--);a=n&&p&&{src:n,media:p}||!1}a&&b.matches!==a.media?(b.matches=a.media,b.element.src=a.src):a||(b.matches=!1,b.src&&(b.element.src=b.src))}else l--,b.splice(e,1);while(e--)},10)},u=function(){v(d+"load",u);c.Imgsrcset.parse();g();h(d+"resize",g);h(d+"orientationchange",g)};c.Imgsrcset={parse:function(){m=[];
var b=c.document.getElementsByTagName("img")||[],e=b.length-1,d=e,a=null,f="";do a=b[d-e],(f=a.getAttribute("srcset")||"")&&(l=m.push({element:a,media:f,matches:!1,src:a.getAttribute("src")||""}));while(e--)}};h(d+"load",u)})(window); v2.0.0~20131003~dfsg/.gitignore 0000644 0000000 0000000 00000000157 12223265410 014441 0 ustar root root # Build and Release Folders
bin/
bin-debug/
bin-release/
# Other files and folders
.settings/
.DS_Store v2.0.0~20131003~dfsg/test/ 0000755 0000000 0000000 00000000000 12234210714 013424 5 ustar root root v2.0.0~20131003~dfsg/test/test.html 0000644 0000000 0000000 00000000716 12223265410 015276 0 ustar root root
v2.0.0~20131003~dfsg/LICENSE.txt 0000644 0000000 0000000 00000002060 12223265410 014267 0 ustar root root Copyright (c) 2012 WebLinc LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.