Skip to content

Commit f623fa8

Browse files
committed
fixes briangonzalez#12 - added luminance classes to parent
1 parent 0c574ae commit f623fa8

File tree

4 files changed

+47
-20
lines changed

4 files changed

+47
-20
lines changed

README.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,20 @@ __Example:__
5252
Call the `run` method, passing in any options you'd like to override.
5353

5454
```javascript
55-
var opts = {
56-
selector: '.some-selector',
57-
parent: '.some-parent-of-some-selector'
58-
}
59-
$.adaptiveBackground.run(opts)
55+
var defaults = {
56+
selector: '[data-adaptive-background="1"]',
57+
parent: null,
58+
normalizeTextColor: false,
59+
normalizedTextColors: {
60+
light: "#fff",
61+
dark: "#000"
62+
},
63+
lumaClasses: {
64+
light: "ab-light",
65+
dark: "ab-dark"
66+
}
67+
};
68+
$.adaptiveBackground.run(defaults)
6069
```
6170

6271
Events Emitted

demos/base-single.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222

2323
.img-wrap{
2424
border: 2px solid #ccc;
25-
height: 200px;
26-
width: 200px;
25+
height: 400px;
26+
width: 400px;
2727
position: absolute;
2828
top: 50%; left: 50%;
2929
text-align: center;

dist/jquery.adaptive-backgrounds.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/jquery.adaptive-backgrounds.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
normalizedTextColors: {
1717
light: "#fff",
1818
dark: "#000"
19+
},
20+
lumaClasses: {
21+
light: "ab-light",
22+
dark: "ab-dark"
1923
}
2024
};
2125

@@ -24,7 +28,10 @@
2428
!function(a){"use strict";var b=function(){return document.createElement("canvas").getContext("2d")},c=function(a,c){var d=new Image,e=a.src||a;"data:"!==e.substring(0,5)&&(d.crossOrigin="Anonymous"),d.onload=function(){var a=b();a.drawImage(d,0,0);var e=a.getImageData(0,0,d.width,d.height);c&&c(e.data)},d.src=e},d=function(a){return["rgb(",a,")"].join("")},e=function(a){return a.map(function(a){return d(a.name)})},f=5,g=10,h={};h.colors=function(a,b,h){c(a,function(a){for(var c=a.length,i={},j="",k=[],l={dominant:{name:"",count:0},palette:Array.apply(null,Array(h||g)).map(Boolean).map(function(){return{name:"0,0,0",count:0}})},m=0;c>m;){if(k[0]=a[m],k[1]=a[m+1],k[2]=a[m+2],j=k.join(","),i[j]=j in i?i[j]+1:1,"0,0,0"!==j&&"255,255,255"!==j){var n=i[j];n>l.dominant.count?(l.dominant.name=j,l.dominant.count=n):l.palette.some(function(a){return n>a.count?(a.name=j,a.count=n,!0):void 0})}m+=4*f}b&&b({dominant:d(l.dominant.name),palette:e(l.palette)})})},a.RGBaster=a.RGBaster||h}(window);
2529
/* jshint ignore:end */
2630

27-
/* Our main function declaration. */
31+
32+
/*
33+
Our main function declaration.
34+
*/
2835
$.adaptiveBackground = {
2936
run: function( options ){
3037
var opts = $.extend({}, DEFAULTS, options);
@@ -77,17 +84,28 @@
7784

7885
$parent.css({ backgroundColor: data.color });
7986

80-
if ( opts.normalizeTextColor ){
87+
// Helper function to calculate yiq - http://en.wikipedia.org/wiki/YIQ
88+
var getYIQ = function(color){
89+
var rgb = $data.color.match(/\d+/g);
90+
return ((rgb[0]*299)+(rgb[1]*587)+(rgb[2]*114))/1000;
91+
};
8192

82-
/* Helper function to calculate yiq - http://en.wikipedia.org/wiki/YIQ */
83-
var getTextColor = function (){
84-
var rgb = $data.color.match(/\d+/g);
85-
var yiq = ((rgb[0]*299)+(rgb[1]*587)+(rgb[2]*114))/1000;
86-
return yiq >= 128 ? opts.normalizedTextColors.dark : opts.normalizedTextColors.light;
87-
};
93+
var getNormalizedTextColor = function (color){
94+
return getYIQ(color) >= 128 ? opts.normalizedTextColors.dark : opts.normalizedTextColors.light;
95+
};
96+
97+
var getLumaClass = function (color){
98+
return getYIQ(color) <= 128 ? opts.lumaClasses.dark : opts.lumaClasses.light;
99+
};
100+
101+
// Normalize the text color based on luminance.
102+
if ( opts.normalizeTextColor )
103+
$parent.css({ color: getNormalizedTextColor(data.color) });
104+
105+
// Add a class based on luminance.
106+
$parent.addClass( getLumaClass(data.color) )
107+
.attr('data-ab-yaq', getYIQ(data.color));
88108

89-
$parent.css({ color: getTextColor() });
90-
}
91109
});
92110

93111
/* Handle the colors. */
@@ -97,4 +115,4 @@
97115
},
98116
};
99117

100-
})(jQuery);
118+
})(jQuery);

0 commit comments

Comments
 (0)