Skip to content

Commit c483816

Browse files
committed
fixes briangonzalez#2 - refactored rgbaster dependency to work with remote images
1 parent 3d4d499 commit c483816

File tree

2 files changed

+8
-20
lines changed

2 files changed

+8
-20
lines changed

dist/jquery.adaptive-background.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/jquery.adaptive-background.js

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,9 @@
1313
parent: null,
1414
};
1515

16-
/* Helper function for detecting remote images. */
17-
var isRemoteImageURL = function(url){
18-
var parser = document.createElement('a');
19-
parser.href = url;
20-
return !(parser.hostname === location.hostname && parser.protocol === location.protocol && parser.port === location.port);
21-
};
22-
2316
// Include RGBaster - https://github.com/briangonzalez/rgbaster.js
2417
/* jshint ignore:start */
25-
(function(n,t){var a=function(){return document.createElement("canvas").getContext("2d")};var e=function(n){var t=new Image;t.src=n.src;var e=a();e.drawImage(n,0,0);var r=e.getImageData(0,0,n.width,n.height);return r.data};var r=function(n){return["rgb(",n,")"].join("")};var o=function(n){return n.map(function(n){return r(n.name)})};var i=5;var u=10;var c={};c.colors=function(n){var t=e(n),a=t.length,c=0,m=-(i-1);var l={},v="",f=[],d={dominant:{name:"",count:0},palette:Array.apply(null,Array(u)).map(Boolean).map(function(n){return{name:"0,0,0",count:0}})};while((m+=i*4)<a){++c;f[0]=t[m];f[1]=t[m+1];f[2]=t[m+2];v=f.join(",");if(v in l){l[v]=l[v]+1}else{l[v]=1}if(v!=="0,0,0"){var p=l[v];if(p>d.dominant.count){d.dominant.name=v;d.dominant.count=p}else{d.palette.some(function(n){if(p>n.count){n.name=v;n.count=p;return true}})}}}return{dominant:r(d.dominant.name),palette:o(d.palette)}};n.RGBaster=n.RGBaster||c})(window);
18+
(function(n,t){var a=function(){return document.createElement("canvas").getContext("2d")};var e=function(n,t){var e=new Image;e.crossOrigin="Anonymous";e.src=n.src;e.onload=function(){var r=a();r.drawImage(e,0,0);var o=r.getImageData(0,0,n.width,n.height);t&&t(o.data)}};var r=function(n){return["rgb(",n,")"].join("")};var o=function(n){return n.map(function(n){return r(n.name)})};var i=5;var u=10;var c={};c.colors=function(n,t,a){e(n,function(n){var e=n.length,c={},m="",f=[],l={dominant:{name:"",count:0},palette:Array.apply(null,Array(a||u)).map(Boolean).map(function(n){return{name:"0,0,0",count:0}})};var v=0;while(v<e){f[0]=n[v];f[1]=n[v+1];f[2]=n[v+2];m=f.join(",");if(m in c){c[m]=c[m]+1}else{c[m]=1}if(m!=="0,0,0"&&m!=="255,255,255"){var d=c[m];if(d>l.dominant.count){l.dominant.name=m;l.dominant.count=d}else{l.palette.some(function(n){if(d>n.count){n.name=m;n.count=d;return true}})}}v+=i*4}t&&t({dominant:r(l.dominant.name),palette:o(l.palette)})})};n.RGBaster=n.RGBaster||c})(window);
2619
/* jshint ignore:end */
2720

2821
/* Our main function declaration. */
@@ -37,17 +30,12 @@
3730
$( opts.selector ).each(function(index, el){
3831
var $this = $(this);
3932

40-
if ( isRemoteImageURL( $this.attr('src') ) ){
41-
console.log('Not processing remote image: ' + $this.attr('src'));
42-
return;
43-
}
44-
4533
/* Small helper function which applies colors, attrs, and triggers events. */
4634
var handleColors = function(){
47-
var colors = RGBaster.colors($this[0]);
48-
49-
$this.attr(DATA_COLOR, colors.dominant);
50-
$this.trigger(EVENT_CF, { color: colors.dominant, palette: colors.palette });
35+
RGBaster.colors($this[0], function(colors){
36+
$this.attr(DATA_COLOR, colors.dominant);
37+
$this.trigger(EVENT_CF, { color: colors.dominant, palette: colors.palette });
38+
}, 20);
5139
};
5240

5341
/* Subscribe to our color-found event. */
@@ -66,8 +54,8 @@
6654
$parent.css({ backgroundColor: data.color });
6755
});
6856

69-
/* Either wait for image to load, or handle the colors now if image is loaded. */
70-
$this[0].complete ? handleColors() : $this.load( handleColors );
57+
/* Handle the colors. */
58+
handleColors();
7159

7260
});
7361
},

0 commit comments

Comments
 (0)