composite-modes.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.srcOver = srcOver;
  6. exports.dstOver = dstOver;
  7. exports.multiply = multiply;
  8. exports.screen = screen;
  9. exports.overlay = overlay;
  10. exports.darken = darken;
  11. exports.lighten = lighten;
  12. exports.hardLight = hardLight;
  13. exports.difference = difference;
  14. exports.exclusion = exclusion;
  15. function srcOver(src, dst) {
  16. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  17. src.a *= ops;
  18. var a = dst.a + src.a - dst.a * src.a;
  19. var r = (src.r * src.a + dst.r * dst.a * (1 - src.a)) / a;
  20. var g = (src.g * src.a + dst.g * dst.a * (1 - src.a)) / a;
  21. var b = (src.b * src.a + dst.b * dst.a * (1 - src.a)) / a;
  22. return {
  23. r: r,
  24. g: g,
  25. b: b,
  26. a: a
  27. };
  28. }
  29. function dstOver(src, dst) {
  30. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  31. src.a *= ops;
  32. var a = dst.a + src.a - dst.a * src.a;
  33. var r = (dst.r * dst.a + src.r * src.a * (1 - dst.a)) / a;
  34. var g = (dst.g * dst.a + src.g * src.a * (1 - dst.a)) / a;
  35. var b = (dst.b * dst.a + src.b * src.a * (1 - dst.a)) / a;
  36. return {
  37. r: r,
  38. g: g,
  39. b: b,
  40. a: a
  41. };
  42. }
  43. function multiply(src, dst) {
  44. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  45. src.a *= ops;
  46. var a = dst.a + src.a - dst.a * src.a;
  47. var sra = src.r * src.a;
  48. var sga = src.g * src.a;
  49. var sba = src.b * src.a;
  50. var dra = dst.r * dst.a;
  51. var dga = dst.g * dst.a;
  52. var dba = dst.b * dst.a;
  53. var r = (sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a;
  54. var g = (sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a;
  55. var b = (sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a;
  56. return {
  57. r: r,
  58. g: g,
  59. b: b,
  60. a: a
  61. };
  62. }
  63. function screen(src, dst) {
  64. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  65. src.a *= ops;
  66. var a = dst.a + src.a - dst.a * src.a;
  67. var sra = src.r * src.a;
  68. var sga = src.g * src.a;
  69. var sba = src.b * src.a;
  70. var dra = dst.r * dst.a;
  71. var dga = dst.g * dst.a;
  72. var dba = dst.b * dst.a;
  73. var r = (sra * dst.a + dra * src.a - sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a;
  74. var g = (sga * dst.a + dga * src.a - sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a;
  75. var b = (sba * dst.a + dba * src.a - sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a;
  76. return {
  77. r: r,
  78. g: g,
  79. b: b,
  80. a: a
  81. };
  82. }
  83. function overlay(src, dst) {
  84. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  85. src.a *= ops;
  86. var a = dst.a + src.a - dst.a * src.a;
  87. var sra = src.r * src.a;
  88. var sga = src.g * src.a;
  89. var sba = src.b * src.a;
  90. var dra = dst.r * dst.a;
  91. var dga = dst.g * dst.a;
  92. var dba = dst.b * dst.a;
  93. var r = (2 * dra <= dst.a ? 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a) : sra * (1 + dst.a) + dra * (1 + src.a) - 2 * dra * sra - dst.a * src.a) / a;
  94. var g = (2 * dga <= dst.a ? 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a) : sga * (1 + dst.a) + dga * (1 + src.a) - 2 * dga * sga - dst.a * src.a) / a;
  95. var b = (2 * dba <= dst.a ? 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a) : sba * (1 + dst.a) + dba * (1 + src.a) - 2 * dba * sba - dst.a * src.a) / a;
  96. return {
  97. r: r,
  98. g: g,
  99. b: b,
  100. a: a
  101. };
  102. }
  103. function darken(src, dst) {
  104. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  105. src.a *= ops;
  106. var a = dst.a + src.a - dst.a * src.a;
  107. var sra = src.r * src.a;
  108. var sga = src.g * src.a;
  109. var sba = src.b * src.a;
  110. var dra = dst.r * dst.a;
  111. var dga = dst.g * dst.a;
  112. var dba = dst.b * dst.a;
  113. var r = (Math.min(sra * dst.a, dra * src.a) + sra * (1 - dst.a) + dra * (1 - src.a)) / a;
  114. var g = (Math.min(sga * dst.a, dga * src.a) + sga * (1 - dst.a) + dga * (1 - src.a)) / a;
  115. var b = (Math.min(sba * dst.a, dba * src.a) + sba * (1 - dst.a) + dba * (1 - src.a)) / a;
  116. return {
  117. r: r,
  118. g: g,
  119. b: b,
  120. a: a
  121. };
  122. }
  123. function lighten(src, dst) {
  124. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  125. src.a *= ops;
  126. var a = dst.a + src.a - dst.a * src.a;
  127. var sra = src.r * src.a;
  128. var sga = src.g * src.a;
  129. var sba = src.b * src.a;
  130. var dra = dst.r * dst.a;
  131. var dga = dst.g * dst.a;
  132. var dba = dst.b * dst.a;
  133. var r = (Math.max(sra * dst.a, dra * src.a) + sra * (1 - dst.a) + dra * (1 - src.a)) / a;
  134. var g = (Math.max(sga * dst.a, dga * src.a) + sga * (1 - dst.a) + dga * (1 - src.a)) / a;
  135. var b = (Math.max(sba * dst.a, dba * src.a) + sba * (1 - dst.a) + dba * (1 - src.a)) / a;
  136. return {
  137. r: r,
  138. g: g,
  139. b: b,
  140. a: a
  141. };
  142. }
  143. function hardLight(src, dst) {
  144. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  145. src.a *= ops;
  146. var a = dst.a + src.a - dst.a * src.a;
  147. var sra = src.r * src.a;
  148. var sga = src.g * src.a;
  149. var sba = src.b * src.a;
  150. var dra = dst.r * dst.a;
  151. var dga = dst.g * dst.a;
  152. var dba = dst.b * dst.a;
  153. var r = (2 * sra <= src.a ? 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a) : sra * (1 + dst.a) + dra * (1 + src.a) - 2 * dra * sra - dst.a * src.a) / a;
  154. var g = (2 * sga <= src.a ? 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a) : sga * (1 + dst.a) + dga * (1 + src.a) - 2 * dga * sga - dst.a * src.a) / a;
  155. var b = (2 * sba <= src.a ? 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a) : sba * (1 + dst.a) + dba * (1 + src.a) - 2 * dba * sba - dst.a * src.a) / a;
  156. return {
  157. r: r,
  158. g: g,
  159. b: b,
  160. a: a
  161. };
  162. }
  163. function difference(src, dst) {
  164. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  165. src.a *= ops;
  166. var a = dst.a + src.a - dst.a * src.a;
  167. var sra = src.r * src.a;
  168. var sga = src.g * src.a;
  169. var sba = src.b * src.a;
  170. var dra = dst.r * dst.a;
  171. var dga = dst.g * dst.a;
  172. var dba = dst.b * dst.a;
  173. var r = (sra + dra - 2 * Math.min(sra * dst.a, dra * src.a)) / a;
  174. var g = (sga + dga - 2 * Math.min(sga * dst.a, dga * src.a)) / a;
  175. var b = (sba + dba - 2 * Math.min(sba * dst.a, dba * src.a)) / a;
  176. return {
  177. r: r,
  178. g: g,
  179. b: b,
  180. a: a
  181. };
  182. }
  183. function exclusion(src, dst) {
  184. var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  185. src.a *= ops;
  186. var a = dst.a + src.a - dst.a * src.a;
  187. var sra = src.r * src.a;
  188. var sga = src.g * src.a;
  189. var sba = src.b * src.a;
  190. var dra = dst.r * dst.a;
  191. var dga = dst.g * dst.a;
  192. var dba = dst.b * dst.a;
  193. var r = (sra * dst.a + dra * src.a - 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a;
  194. var g = (sga * dst.a + dga * src.a - 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a;
  195. var b = (sba * dst.a + dba * src.a - 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a;
  196. return {
  197. r: r,
  198. g: g,
  199. b: b,
  200. a: a
  201. };
  202. }
  203. //# sourceMappingURL=composite-modes.js.map