color-blend
Version:
Blends RGBA colors with different blend modes
3 lines (2 loc) • 3.57 kB
JavaScript
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n||self).colorBlend={})}(this,function(n){function t(n,t,u){return{r:255*u(n.r/255,t.r/255),g:255*u(n.g/255,t.g/255),b:255*u(n.b/255,t.b/255)}}function u(n,t){return t}function r(n,t){return n*t}function i(n,t){return n+t-n*t}function o(n,t){return p(t,n)}function e(n,t){return Math.min(n,t)}function f(n,t){return Math.min(Math.max(n,t),1)}function c(n,t){return 0===n?0:1===t?1:Math.min(1,n/(1-t))}function a(n,t){return 1===n?1:0===t?0:1-Math.min(1,(1-n)/t)}function p(n,t){return t<=.5?r(n,2*t):i(n,2*t-1)}function g(n,t){return t<=.5?n-(1-2*t)*n*(1-n):n+(2*t-1)*((n<=.25?((16*n-12)*n+4)*n:Math.sqrt(n))-n)}function b(n,t){return Math.abs(n-t)}function h(n,t){return n+t-2*n*t}function d(n,t,u){return Math.min(Math.max(n||0,t),u)}function O(n){return{r:d(n.r,0,255),g:d(n.g,0,255),b:d(n.b,0,255),a:d(n.a,0,1)}}function l(n){return{r:255*n.r,g:255*n.g,b:255*n.b,a:n.a}}function I(n){return{r:n.r/255,g:n.g/255,b:n.b/255,a:n.a}}function M(n,t){void 0===t&&(t=0);var u=Math.pow(10,t);return{r:Math.round(n.r*u)/u,g:Math.round(n.g*u)/u,b:Math.round(n.b*u)/u,a:n.a}}function m(n,t,u,r,i,o){return(1-t/u)*r+t/u*Math.round((1-n)*i+n*o)}function s(n,t,u,r,i){void 0===i&&(i={unitInput:!1,unitOutput:!1,roundOutput:!0}),i.unitInput&&(n=l(n),t=l(t)),n=O(n);var o=(t=O(t)).a+n.a-t.a*n.a,e=u(n,t,r),f=O({r:m(n.a,t.a,o,n.r,t.r,e.r),g:m(n.a,t.a,o,n.g,t.g,e.g),b:m(n.a,t.a,o,n.b,t.b,e.b),a:o});return i.unitOutput?I(f):i.roundOutput?M(f):M(f,9)}function v(n,t,u){return l(u(I(n),I(t)))}function x(n){return.3*n.r+.59*n.g+.11*n.b}function y(n,t){var u=t-x(n);return function(n){var t=x(n),u=n.r,r=n.g,i=n.b,o=Math.min(u,r,i),e=Math.max(u,r,i);function f(n){return t+(n-t)*t/(t-o)}function c(n){return t+(n-t)*(1-t)/(e-t)}return o<0&&(u=f(u),r=f(r),i=f(i)),e>1&&(u=c(u),r=c(r),i=c(i)),{r:u,g:r,b:i}}({r:n.r+u,g:n.g+u,b:n.b+u})}function B(n){return Math.max(n.r,n.g,n.b)-Math.min(n.r,n.g,n.b)}function L(n,t){var u=["r","g","b"].sort(function(t,u){return n[t]-n[u]}),r=u[0],i=u[1],o=u[2],e={r:n.r,g:n.g,b:n.b};return e[o]>e[r]?(e[i]=(e[i]-e[r])*t/(e[o]-e[r]),e[o]=t):e[i]=e[o]=0,e[r]=0,e}function T(n,t){return y(L(t,B(n)),x(n))}function j(n,t){return y(L(n,B(t)),x(n))}function k(n,t){return y(t,x(n))}function q(n,t){return y(n,x(t))}n.color=function(n,t){return s(n,t,v,k,{unitInput:!0,unitOutput:!0})},n.colorBurn=function(n,u){return s(n,u,t,a,{unitInput:!0,unitOutput:!0})},n.colorDodge=function(n,u){return s(n,u,t,c,{unitInput:!0,unitOutput:!0})},n.darken=function(n,u){return s(n,u,t,e,{unitInput:!0,unitOutput:!0})},n.difference=function(n,u){return s(n,u,t,b,{unitInput:!0,unitOutput:!0})},n.exclusion=function(n,u){return s(n,u,t,h,{unitInput:!0,unitOutput:!0})},n.hardLight=function(n,u){return s(n,u,t,p,{unitInput:!0,unitOutput:!0})},n.hue=function(n,t){return s(n,t,v,T,{unitInput:!0,unitOutput:!0})},n.lighten=function(n,u){return s(n,u,t,f,{unitInput:!0,unitOutput:!0})},n.luminosity=function(n,t){return s(n,t,v,q,{unitInput:!0,unitOutput:!0})},n.multiply=function(n,u){return s(n,u,t,r,{unitInput:!0,unitOutput:!0})},n.normal=function(n,r){return s(n,r,t,u,{unitInput:!0,unitOutput:!0})},n.overlay=function(n,u){return s(n,u,t,o,{unitInput:!0,unitOutput:!0})},n.saturation=function(n,t){return s(n,t,v,j,{unitInput:!0,unitOutput:!0})},n.screen=function(n,u){return s(n,u,t,i,{unitInput:!0,unitOutput:!0})},n.softLight=function(n,u){return s(n,u,t,g,{unitInput:!0,unitOutput:!0})}});
//# sourceMappingURL=index.umd.js.map