three-stdlib 2.8.8 → 2.8.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. package/Nodes-607e9ed8.js +471 -0
  2. package/Nodes-627a8bdf.js +1 -0
  3. package/index.cjs.js +1 -1
  4. package/index.d.ts +0 -75
  5. package/index.js +70 -76
  6. package/loaders/NodeMaterialLoader.cjs.js +1 -1
  7. package/loaders/NodeMaterialLoader.js +2 -136
  8. package/loaders/RGBELoader.cjs.js +1 -1
  9. package/loaders/RGBELoader.js +3 -3
  10. package/loaders/RGBMLoader.cjs.js +1 -1
  11. package/loaders/RGBMLoader.js +190 -268
  12. package/nodes/Nodes.cjs.js +1 -1
  13. package/nodes/Nodes.js +203 -76
  14. package/nodes/ShaderNode.cjs.js +1 -0
  15. package/nodes/ShaderNode.js +308 -0
  16. package/nodes/accessors/BufferNode.cjs.js +1 -0
  17. package/nodes/accessors/BufferNode.js +18 -0
  18. package/nodes/accessors/CameraNode.cjs.js +1 -1
  19. package/nodes/accessors/CameraNode.js +32 -138
  20. package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
  21. package/nodes/accessors/CubeTextureNode.js +53 -0
  22. package/nodes/accessors/MaterialNode.cjs.js +1 -0
  23. package/nodes/accessors/MaterialNode.js +80 -0
  24. package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
  25. package/nodes/accessors/MaterialReferenceNode.js +16 -0
  26. package/nodes/accessors/ModelNode.cjs.js +1 -0
  27. package/nodes/accessors/ModelNode.js +10 -0
  28. package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
  29. package/nodes/accessors/ModelViewProjectionNode.js +22 -0
  30. package/nodes/accessors/NormalNode.cjs.js +1 -1
  31. package/nodes/accessors/NormalNode.js +48 -78
  32. package/nodes/accessors/Object3DNode.cjs.js +1 -0
  33. package/nodes/accessors/Object3DNode.js +85 -0
  34. package/nodes/accessors/PointUVNode.cjs.js +1 -0
  35. package/nodes/accessors/PointUVNode.js +16 -0
  36. package/nodes/accessors/PositionNode.cjs.js +1 -1
  37. package/nodes/accessors/PositionNode.js +49 -87
  38. package/nodes/accessors/ReferenceNode.cjs.js +1 -0
  39. package/nodes/accessors/ReferenceNode.js +43 -0
  40. package/nodes/accessors/ReflectNode.cjs.js +1 -1
  41. package/nodes/accessors/ReflectNode.js +35 -98
  42. package/nodes/accessors/SkinningNode.cjs.js +1 -0
  43. package/nodes/accessors/SkinningNode.js +59 -0
  44. package/nodes/accessors/TextureNode.cjs.js +1 -0
  45. package/nodes/accessors/TextureNode.js +68 -0
  46. package/nodes/accessors/UVNode.cjs.js +1 -1
  47. package/nodes/accessors/UVNode.js +20 -38
  48. package/nodes/core/ArrayUniformNode.cjs.js +1 -0
  49. package/nodes/core/ArrayUniformNode.js +17 -0
  50. package/nodes/core/AttributeNode.cjs.js +1 -1
  51. package/nodes/core/AttributeNode.js +31 -40
  52. package/nodes/core/BypassNode.cjs.js +1 -0
  53. package/nodes/core/BypassNode.js +28 -0
  54. package/nodes/core/CodeNode.cjs.js +1 -0
  55. package/nodes/core/CodeNode.js +35 -0
  56. package/nodes/core/ConstNode.cjs.js +1 -1
  57. package/nodes/core/ConstNode.js +10 -78
  58. package/nodes/core/ContextNode.cjs.js +1 -0
  59. package/nodes/core/ContextNode.js +26 -0
  60. package/nodes/core/ExpressionNode.cjs.js +1 -1
  61. package/nodes/core/ExpressionNode.js +19 -8
  62. package/nodes/core/FunctionCallNode.cjs.js +1 -1
  63. package/nodes/core/FunctionCallNode.js +31 -60
  64. package/nodes/core/FunctionNode.cjs.js +1 -1
  65. package/nodes/core/FunctionNode.js +45 -166
  66. package/nodes/core/InputNode.cjs.js +1 -1
  67. package/nodes/core/InputNode.js +43 -57
  68. package/nodes/core/Node.cjs.js +1 -1
  69. package/nodes/core/Node.js +155 -113
  70. package/nodes/core/NodeAttribute.cjs.js +1 -0
  71. package/nodes/core/NodeAttribute.js +11 -0
  72. package/nodes/core/NodeBuilder.cjs.js +1 -1
  73. package/nodes/core/NodeBuilder.js +422 -548
  74. package/nodes/core/NodeCode.cjs.js +1 -0
  75. package/nodes/core/NodeCode.js +13 -0
  76. package/nodes/core/NodeFrame.cjs.js +1 -1
  77. package/nodes/core/NodeFrame.js +34 -27
  78. package/nodes/core/NodeFunction.cjs.js +1 -0
  79. package/nodes/core/NodeFunction.js +17 -0
  80. package/nodes/core/NodeFunctionInput.cjs.js +1 -0
  81. package/nodes/core/NodeFunctionInput.js +14 -0
  82. package/nodes/core/NodeKeywords.cjs.js +1 -0
  83. package/nodes/core/NodeKeywords.js +54 -0
  84. package/nodes/core/NodeParser.cjs.js +1 -0
  85. package/nodes/core/NodeParser.js +8 -0
  86. package/nodes/core/NodeUniform.cjs.js +1 -1
  87. package/nodes/core/NodeUniform.js +18 -17
  88. package/nodes/core/NodeUtils.cjs.js +1 -1
  89. package/nodes/core/NodeUtils.js +55 -35
  90. package/nodes/core/NodeVar.cjs.js +1 -0
  91. package/nodes/core/NodeVar.js +11 -0
  92. package/nodes/core/NodeVary.cjs.js +1 -0
  93. package/nodes/core/NodeVary.js +11 -0
  94. package/nodes/core/PropertyNode.cjs.js +1 -0
  95. package/nodes/core/PropertyNode.js +26 -0
  96. package/nodes/core/TempNode.cjs.js +1 -1
  97. package/nodes/core/TempNode.js +21 -88
  98. package/nodes/core/UniformNode.cjs.js +1 -0
  99. package/nodes/core/UniformNode.js +28 -0
  100. package/nodes/core/VarNode.cjs.js +1 -1
  101. package/nodes/core/VarNode.js +28 -35
  102. package/nodes/core/VaryNode.cjs.js +1 -0
  103. package/nodes/core/VaryNode.js +38 -0
  104. package/nodes/core/constants.cjs.js +1 -0
  105. package/nodes/core/constants.js +11 -0
  106. package/nodes/display/ColorSpaceNode.cjs.js +1 -0
  107. package/nodes/display/ColorSpaceNode.js +67 -0
  108. package/nodes/display/NormalMapNode.cjs.js +1 -0
  109. package/nodes/display/NormalMapNode.js +71 -0
  110. package/nodes/fog/FogNode.cjs.js +1 -0
  111. package/nodes/fog/FogNode.js +18 -0
  112. package/nodes/fog/FogRangeNode.cjs.js +1 -0
  113. package/nodes/fog/FogRangeNode.js +20 -0
  114. package/nodes/functions/BSDFs.cjs.js +1 -0
  115. package/nodes/functions/BSDFs.js +121 -0
  116. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
  117. package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
  118. package/nodes/lights/LightContextNode.cjs.js +1 -0
  119. package/nodes/lights/LightContextNode.js +43 -0
  120. package/nodes/lights/LightNode.cjs.js +1 -0
  121. package/nodes/lights/LightNode.js +61 -0
  122. package/nodes/lights/LightsNode.cjs.js +1 -0
  123. package/nodes/lights/LightsNode.js +77 -0
  124. package/nodes/loaders/NodeLoader.cjs.js +1 -0
  125. package/nodes/loaders/NodeLoader.js +80 -0
  126. package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
  127. package/nodes/loaders/NodeMaterialLoader.js +29 -0
  128. package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
  129. package/nodes/loaders/NodeObjectLoader.js +49 -0
  130. package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
  131. package/nodes/materials/LineBasicNodeMaterial.js +31 -0
  132. package/nodes/materials/Materials.cjs.js +1 -0
  133. package/nodes/materials/Materials.js +27 -0
  134. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
  135. package/nodes/materials/MeshBasicNodeMaterial.js +32 -0
  136. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -1
  137. package/nodes/materials/MeshStandardNodeMaterial.js +41 -13
  138. package/nodes/materials/NodeMaterial.cjs.js +1 -1
  139. package/nodes/materials/NodeMaterial.js +67 -140
  140. package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
  141. package/nodes/materials/PointsNodeMaterial.js +34 -0
  142. package/nodes/math/CondNode.cjs.js +1 -1
  143. package/nodes/math/CondNode.js +33 -74
  144. package/nodes/math/MathNode.cjs.js +1 -1
  145. package/nodes/math/MathNode.js +193 -193
  146. package/nodes/math/OperatorNode.cjs.js +1 -1
  147. package/nodes/math/OperatorNode.js +116 -52
  148. package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
  149. package/nodes/parsers/GLSLNodeFunction.js +101 -0
  150. package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
  151. package/nodes/parsers/GLSLNodeParser.js +13 -0
  152. package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
  153. package/nodes/parsers/WGSLNodeFunction.js +71 -0
  154. package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
  155. package/nodes/parsers/WGSLNodeParser.js +13 -0
  156. package/nodes/procedural/CheckerNode.cjs.js +1 -1
  157. package/nodes/procedural/CheckerNode.js +22 -40
  158. package/nodes/utils/ArrayElementNode.cjs.js +1 -0
  159. package/nodes/utils/ArrayElementNode.js +22 -0
  160. package/nodes/utils/ConvertNode.cjs.js +1 -0
  161. package/nodes/utils/ConvertNode.js +29 -0
  162. package/nodes/utils/JoinNode.cjs.js +1 -1
  163. package/nodes/utils/JoinNode.js +19 -69
  164. package/nodes/utils/MatcapUVNode.cjs.js +1 -0
  165. package/nodes/utils/MatcapUVNode.js +18 -0
  166. package/nodes/utils/OscNode.cjs.js +1 -0
  167. package/nodes/utils/OscNode.js +55 -0
  168. package/nodes/utils/SplitNode.cjs.js +1 -0
  169. package/nodes/utils/SplitNode.js +58 -0
  170. package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
  171. package/nodes/utils/SpriteSheetUVNode.js +39 -0
  172. package/nodes/utils/TimerNode.cjs.js +1 -1
  173. package/nodes/utils/TimerNode.js +38 -56
  174. package/package.json +2 -2
  175. package/Nodes-894ac9dc.js +0 -1
  176. package/Nodes-af575af7.js +0 -157
  177. package/nodes/accessors/ColorsNode.cjs.js +0 -1
  178. package/nodes/accessors/ColorsNode.d.ts +0 -10
  179. package/nodes/accessors/ColorsNode.js +0 -40
  180. package/nodes/accessors/LightNode.cjs.js +0 -1
  181. package/nodes/accessors/LightNode.d.ts +0 -12
  182. package/nodes/accessors/LightNode.js +0 -41
  183. package/nodes/accessors/ResolutionNode.cjs.js +0 -1
  184. package/nodes/accessors/ResolutionNode.d.ts +0 -14
  185. package/nodes/accessors/ResolutionNode.js +0 -41
  186. package/nodes/accessors/ScreenUVNode.cjs.js +0 -1
  187. package/nodes/accessors/ScreenUVNode.d.ts +0 -11
  188. package/nodes/accessors/ScreenUVNode.js +0 -43
  189. package/nodes/core/NodeLib.cjs.js +0 -1
  190. package/nodes/core/NodeLib.d.ts +0 -22
  191. package/nodes/core/NodeLib.js +0 -37
  192. package/nodes/core/StructNode.cjs.js +0 -1
  193. package/nodes/core/StructNode.d.ts +0 -19
  194. package/nodes/core/StructNode.js +0 -72
  195. package/nodes/effects/BlurNode.cjs.js +0 -1
  196. package/nodes/effects/BlurNode.d.ts +0 -31
  197. package/nodes/effects/BlurNode.js +0 -100
  198. package/nodes/effects/ColorAdjustmentNode.cjs.js +0 -1
  199. package/nodes/effects/ColorAdjustmentNode.d.ts +0 -27
  200. package/nodes/effects/ColorAdjustmentNode.js +0 -73
  201. package/nodes/effects/LuminanceNode.cjs.js +0 -1
  202. package/nodes/effects/LuminanceNode.d.ts +0 -18
  203. package/nodes/effects/LuminanceNode.js +0 -46
  204. package/nodes/inputs/BoolNode.cjs.js +0 -1
  205. package/nodes/inputs/BoolNode.d.ts +0 -19
  206. package/nodes/inputs/BoolNode.js +0 -36
  207. package/nodes/inputs/ColorNode.cjs.js +0 -1
  208. package/nodes/inputs/ColorNode.d.ts +0 -21
  209. package/nodes/inputs/ColorNode.js +0 -41
  210. package/nodes/inputs/CubeTextureNode.cjs.js +0 -1
  211. package/nodes/inputs/CubeTextureNode.d.ts +0 -17
  212. package/nodes/inputs/CubeTextureNode.js +0 -79
  213. package/nodes/inputs/FloatNode.cjs.js +0 -1
  214. package/nodes/inputs/FloatNode.d.ts +0 -19
  215. package/nodes/inputs/FloatNode.js +0 -36
  216. package/nodes/inputs/IntNode.cjs.js +0 -1
  217. package/nodes/inputs/IntNode.d.ts +0 -19
  218. package/nodes/inputs/IntNode.js +0 -36
  219. package/nodes/inputs/Matrix3Node.cjs.js +0 -1
  220. package/nodes/inputs/Matrix3Node.d.ts +0 -22
  221. package/nodes/inputs/Matrix3Node.js +0 -46
  222. package/nodes/inputs/Matrix4Node.cjs.js +0 -1
  223. package/nodes/inputs/Matrix4Node.d.ts +0 -22
  224. package/nodes/inputs/Matrix4Node.js +0 -46
  225. package/nodes/inputs/PropertyNode.cjs.js +0 -1
  226. package/nodes/inputs/PropertyNode.d.ts +0 -10
  227. package/nodes/inputs/PropertyNode.js +0 -35
  228. package/nodes/inputs/RTTNode.cjs.js +0 -1
  229. package/nodes/inputs/RTTNode.d.ts +0 -27
  230. package/nodes/inputs/RTTNode.js +0 -103
  231. package/nodes/inputs/ReflectorNode.cjs.js +0 -1
  232. package/nodes/inputs/ReflectorNode.d.ts +0 -21
  233. package/nodes/inputs/ReflectorNode.js +0 -60
  234. package/nodes/inputs/ScreenNode.cjs.js +0 -1
  235. package/nodes/inputs/ScreenNode.d.ts +0 -11
  236. package/nodes/inputs/ScreenNode.js +0 -20
  237. package/nodes/inputs/TextureNode.cjs.js +0 -1
  238. package/nodes/inputs/TextureNode.d.ts +0 -20
  239. package/nodes/inputs/TextureNode.js +0 -83
  240. package/nodes/inputs/Vector2Node.cjs.js +0 -1
  241. package/nodes/inputs/Vector2Node.d.ts +0 -21
  242. package/nodes/inputs/Vector2Node.js +0 -40
  243. package/nodes/inputs/Vector3Node.cjs.js +0 -1
  244. package/nodes/inputs/Vector3Node.d.ts +0 -21
  245. package/nodes/inputs/Vector3Node.js +0 -41
  246. package/nodes/inputs/Vector4Node.cjs.js +0 -1
  247. package/nodes/inputs/Vector4Node.d.ts +0 -21
  248. package/nodes/inputs/Vector4Node.js +0 -42
  249. package/nodes/materials/BasicNodeMaterial.cjs.js +0 -1
  250. package/nodes/materials/BasicNodeMaterial.d.ts +0 -11
  251. package/nodes/materials/BasicNodeMaterial.js +0 -15
  252. package/nodes/materials/PhongNodeMaterial.cjs.js +0 -1
  253. package/nodes/materials/PhongNodeMaterial.d.ts +0 -21
  254. package/nodes/materials/PhongNodeMaterial.js +0 -15
  255. package/nodes/materials/SpriteNodeMaterial.cjs.js +0 -1
  256. package/nodes/materials/SpriteNodeMaterial.d.ts +0 -12
  257. package/nodes/materials/SpriteNodeMaterial.js +0 -15
  258. package/nodes/materials/StandardNodeMaterial.cjs.js +0 -1
  259. package/nodes/materials/StandardNodeMaterial.d.ts +0 -25
  260. package/nodes/materials/StandardNodeMaterial.js +0 -15
  261. package/nodes/materials/nodes/BasicNode.cjs.js +0 -1
  262. package/nodes/materials/nodes/BasicNode.d.ts +0 -15
  263. package/nodes/materials/nodes/BasicNode.js +0 -91
  264. package/nodes/materials/nodes/MeshStandardNode.cjs.js +0 -1
  265. package/nodes/materials/nodes/MeshStandardNode.d.ts +0 -25
  266. package/nodes/materials/nodes/MeshStandardNode.js +0 -81
  267. package/nodes/materials/nodes/PhongNode.cjs.js +0 -1
  268. package/nodes/materials/nodes/PhongNode.d.ts +0 -14
  269. package/nodes/materials/nodes/PhongNode.js +0 -212
  270. package/nodes/materials/nodes/RawNode.cjs.js +0 -1
  271. package/nodes/materials/nodes/RawNode.d.ts +0 -10
  272. package/nodes/materials/nodes/RawNode.js +0 -42
  273. package/nodes/materials/nodes/SpriteNode.cjs.js +0 -1
  274. package/nodes/materials/nodes/SpriteNode.d.ts +0 -13
  275. package/nodes/materials/nodes/SpriteNode.js +0 -113
  276. package/nodes/materials/nodes/StandardNode.cjs.js +0 -1
  277. package/nodes/materials/nodes/StandardNode.d.ts +0 -15
  278. package/nodes/materials/nodes/StandardNode.js +0 -336
  279. package/nodes/misc/BumpMapNode.cjs.js +0 -1
  280. package/nodes/misc/BumpMapNode.d.ts +0 -21
  281. package/nodes/misc/BumpMapNode.js +0 -80
  282. package/nodes/misc/NormalMapNode.cjs.js +0 -1
  283. package/nodes/misc/NormalMapNode.d.ts +0 -19
  284. package/nodes/misc/NormalMapNode.js +0 -102
  285. package/nodes/misc/TextureCubeNode.cjs.js +0 -1
  286. package/nodes/misc/TextureCubeNode.d.ts +0 -21
  287. package/nodes/misc/TextureCubeNode.js +0 -52
  288. package/nodes/misc/TextureCubeUVNode.cjs.js +0 -1
  289. package/nodes/misc/TextureCubeUVNode.d.ts +0 -18
  290. package/nodes/misc/TextureCubeUVNode.js +0 -229
  291. package/nodes/postprocessing/NodePass.cjs.js +0 -1
  292. package/nodes/postprocessing/NodePass.d.ts +0 -15
  293. package/nodes/postprocessing/NodePass.js +0 -61
  294. package/nodes/postprocessing/NodePostProcessing.cjs.js +0 -1
  295. package/nodes/postprocessing/NodePostProcessing.d.ts +0 -26
  296. package/nodes/postprocessing/NodePostProcessing.js +0 -91
  297. package/nodes/procedural/NoiseNode.cjs.js +0 -1
  298. package/nodes/procedural/NoiseNode.d.ts +0 -17
  299. package/nodes/procedural/NoiseNode.js +0 -43
  300. package/nodes/utils/BypassNode.cjs.js +0 -1
  301. package/nodes/utils/BypassNode.d.ts +0 -11
  302. package/nodes/utils/BypassNode.js +0 -55
  303. package/nodes/utils/ColorSpaceNode.cjs.js +0 -1
  304. package/nodes/utils/ColorSpaceNode.d.ts +0 -55
  305. package/nodes/utils/ColorSpaceNode.js +0 -106
  306. package/nodes/utils/MaxMIPLevelNode.cjs.js +0 -1
  307. package/nodes/utils/MaxMIPLevelNode.d.ts +0 -11
  308. package/nodes/utils/MaxMIPLevelNode.js +0 -38
  309. package/nodes/utils/SpecularMIPLevelNode.cjs.js +0 -1
  310. package/nodes/utils/SpecularMIPLevelNode.d.ts +0 -17
  311. package/nodes/utils/SpecularMIPLevelNode.js +0 -61
  312. package/nodes/utils/SubSlotNode.cjs.js +0 -1
  313. package/nodes/utils/SubSlotNode.js +0 -53
  314. package/nodes/utils/SwitchNode.cjs.js +0 -1
  315. package/nodes/utils/SwitchNode.d.ts +0 -11
  316. package/nodes/utils/SwitchNode.js +0 -69
  317. package/nodes/utils/UVTransformNode.cjs.js +0 -1
  318. package/nodes/utils/UVTransformNode.d.ts +0 -15
  319. package/nodes/utils/UVTransformNode.js +0 -46
  320. package/nodes/utils/VelocityNode.cjs.js +0 -1
  321. package/nodes/utils/VelocityNode.d.ts +0 -28
  322. package/nodes/utils/VelocityNode.js +0 -115
@@ -107,12 +107,7 @@ UPNG.toRGBA8 = function (out) {
107
107
  if (i != 0) for (var j = 0; j < len; j++) prev[j] = img[j];
108
108
  if (frm.blend == 0) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 0);else if (frm.blend == 1) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 1);
109
109
  frms.push(img.buffer.slice(0));
110
-
111
- if (frm.dispose == 0) ; else if (frm.dispose == 1) {
112
- UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);
113
- } else if (frm.dispose == 2) {
114
- for (var j = 0; j < len; j++) img[j] = prev[j];
115
- }
110
+ if (frm.dispose == 1) UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);else if (frm.dispose == 2) for (var j = 0; j < len; j++) img[j] = prev[j];
116
111
  }
117
112
 
118
113
  return frms;
@@ -133,60 +128,43 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
133
128
  if (ctype == 6) {
134
129
  // RGB + alpha
135
130
  var qarea = area << 2;
136
-
137
- if (depth == 8) {
138
- for (var i = 0; i < qarea; i += 4) {
139
- bf[i] = data[i];
140
- bf[i + 1] = data[i + 1];
141
- bf[i + 2] = data[i + 2];
142
- bf[i + 3] = data[i + 3];
143
- }
131
+ if (depth == 8) for (var i = 0; i < qarea; i += 4) {
132
+ bf[i] = data[i];
133
+ bf[i + 1] = data[i + 1];
134
+ bf[i + 2] = data[i + 2];
135
+ bf[i + 3] = data[i + 3];
144
136
  }
145
-
146
- if (depth == 16) {
147
- for (var i = 0; i < qarea; i++) {
148
- bf[i] = data[i << 1];
149
- }
137
+ if (depth == 16) for (var i = 0; i < qarea; i++) {
138
+ bf[i] = data[i << 1];
150
139
  }
151
140
  } else if (ctype == 2) {
152
141
  // RGB
153
142
  var ts = out.tabs['tRNS'];
154
143
 
155
144
  if (ts == null) {
156
- if (depth == 8) {
157
- for (var i = 0; i < area; i++) {
158
- var ti = i * 3;
159
- bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
160
- }
145
+ if (depth == 8) for (var i = 0; i < area; i++) {
146
+ var ti = i * 3;
147
+ bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
161
148
  }
162
-
163
- if (depth == 16) {
164
- for (var i = 0; i < area; i++) {
165
- var ti = i * 6;
166
- bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
167
- }
149
+ if (depth == 16) for (var i = 0; i < area; i++) {
150
+ var ti = i * 6;
151
+ bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
168
152
  }
169
153
  } else {
170
154
  var tr = ts[0],
171
155
  tg = ts[1],
172
156
  tb = ts[2];
173
-
174
- if (depth == 8) {
175
- for (var i = 0; i < area; i++) {
176
- var qi = i << 2,
177
- ti = i * 3;
178
- bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
179
- if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
180
- }
157
+ if (depth == 8) for (var i = 0; i < area; i++) {
158
+ var qi = i << 2,
159
+ ti = i * 3;
160
+ bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
161
+ if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
181
162
  }
182
-
183
- if (depth == 16) {
184
- for (var i = 0; i < area; i++) {
185
- var qi = i << 2,
186
- ti = i * 6;
187
- bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
188
- if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
189
- }
163
+ if (depth == 16) for (var i = 0; i < area; i++) {
164
+ var qi = i << 2,
165
+ ti = i * 6;
166
+ bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
167
+ if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
190
168
  }
191
169
  }
192
170
  } else if (ctype == 3) {
@@ -195,61 +173,41 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
195
173
  ap = out.tabs['tRNS'],
196
174
  tl = ap ? ap.length : 0; //console.log(p, ap);
197
175
 
198
- if (depth == 1) {
199
- for (var y = 0; y < h; y++) {
200
- var s0 = y * bpl,
201
- t0 = y * w;
202
-
203
- for (var i = 0; i < w; i++) {
204
- var qi = t0 + i << 2,
205
- j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
206
- cj = 3 * j;
207
- bf[qi] = p[cj];
208
- bf[qi + 1] = p[cj + 1];
209
- bf[qi + 2] = p[cj + 2];
210
- bf[qi + 3] = j < tl ? ap[j] : 255;
211
- }
212
- }
213
- }
176
+ if (depth == 1) for (var y = 0; y < h; y++) {
177
+ var s0 = y * bpl,
178
+ t0 = y * w;
214
179
 
215
- if (depth == 2) {
216
- for (var y = 0; y < h; y++) {
217
- var s0 = y * bpl,
218
- t0 = y * w;
219
-
220
- for (var i = 0; i < w; i++) {
221
- var qi = t0 + i << 2,
222
- j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
223
- cj = 3 * j;
224
- bf[qi] = p[cj];
225
- bf[qi + 1] = p[cj + 1];
226
- bf[qi + 2] = p[cj + 2];
227
- bf[qi + 3] = j < tl ? ap[j] : 255;
228
- }
180
+ for (var i = 0; i < w; i++) {
181
+ var qi = t0 + i << 2,
182
+ j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
183
+ cj = 3 * j;
184
+ bf[qi] = p[cj];
185
+ bf[qi + 1] = p[cj + 1];
186
+ bf[qi + 2] = p[cj + 2];
187
+ bf[qi + 3] = j < tl ? ap[j] : 255;
229
188
  }
230
189
  }
190
+ if (depth == 2) for (var y = 0; y < h; y++) {
191
+ var s0 = y * bpl,
192
+ t0 = y * w;
231
193
 
232
- if (depth == 4) {
233
- for (var y = 0; y < h; y++) {
234
- var s0 = y * bpl,
235
- t0 = y * w;
236
-
237
- for (var i = 0; i < w; i++) {
238
- var qi = t0 + i << 2,
239
- j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
240
- cj = 3 * j;
241
- bf[qi] = p[cj];
242
- bf[qi + 1] = p[cj + 1];
243
- bf[qi + 2] = p[cj + 2];
244
- bf[qi + 3] = j < tl ? ap[j] : 255;
245
- }
194
+ for (var i = 0; i < w; i++) {
195
+ var qi = t0 + i << 2,
196
+ j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
197
+ cj = 3 * j;
198
+ bf[qi] = p[cj];
199
+ bf[qi + 1] = p[cj + 1];
200
+ bf[qi + 2] = p[cj + 2];
201
+ bf[qi + 3] = j < tl ? ap[j] : 255;
246
202
  }
247
203
  }
204
+ if (depth == 4) for (var y = 0; y < h; y++) {
205
+ var s0 = y * bpl,
206
+ t0 = y * w;
248
207
 
249
- if (depth == 8) {
250
- for (var i = 0; i < area; i++) {
251
- var qi = i << 2,
252
- j = data[i],
208
+ for (var i = 0; i < w; i++) {
209
+ var qi = t0 + i << 2,
210
+ j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
253
211
  cj = 3 * j;
254
212
  bf[qi] = p[cj];
255
213
  bf[qi + 1] = p[cj + 1];
@@ -257,30 +215,34 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
257
215
  bf[qi + 3] = j < tl ? ap[j] : 255;
258
216
  }
259
217
  }
218
+ if (depth == 8) for (var i = 0; i < area; i++) {
219
+ var qi = i << 2,
220
+ j = data[i],
221
+ cj = 3 * j;
222
+ bf[qi] = p[cj];
223
+ bf[qi + 1] = p[cj + 1];
224
+ bf[qi + 2] = p[cj + 2];
225
+ bf[qi + 3] = j < tl ? ap[j] : 255;
226
+ }
260
227
  } else if (ctype == 4) {
261
228
  // gray + alpha
262
- if (depth == 8) {
263
- for (var i = 0; i < area; i++) {
264
- var qi = i << 2,
265
- di = i << 1,
266
- gr = data[di];
267
- bf[qi] = gr;
268
- bf[qi + 1] = gr;
269
- bf[qi + 2] = gr;
270
- bf[qi + 3] = data[di + 1];
271
- }
229
+ if (depth == 8) for (var i = 0; i < area; i++) {
230
+ var qi = i << 2,
231
+ di = i << 1,
232
+ gr = data[di];
233
+ bf[qi] = gr;
234
+ bf[qi + 1] = gr;
235
+ bf[qi + 2] = gr;
236
+ bf[qi + 3] = data[di + 1];
272
237
  }
273
-
274
- if (depth == 16) {
275
- for (var i = 0; i < area; i++) {
276
- var qi = i << 2,
277
- di = i << 2,
278
- gr = data[di];
279
- bf[qi] = gr;
280
- bf[qi + 1] = gr;
281
- bf[qi + 2] = gr;
282
- bf[qi + 3] = data[di + 2];
283
- }
238
+ if (depth == 16) for (var i = 0; i < area; i++) {
239
+ var qi = i << 2,
240
+ di = i << 2,
241
+ gr = data[di];
242
+ bf[qi] = gr;
243
+ bf[qi + 1] = gr;
244
+ bf[qi + 2] = gr;
245
+ bf[qi + 3] = data[di + 2];
284
246
  }
285
247
  } else if (ctype == 0) {
286
248
  // gray
@@ -289,37 +251,26 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
289
251
  for (var y = 0; y < h; y++) {
290
252
  var off = y * bpl,
291
253
  to = y * w;
292
-
293
- if (depth == 1) {
294
- for (var x = 0; x < w; x++) {
295
- var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
296
- al = gr == tr * 255 ? 0 : 255;
297
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
298
- }
299
- } else if (depth == 2) {
300
- for (var x = 0; x < w; x++) {
301
- var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
302
- al = gr == tr * 85 ? 0 : 255;
303
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
304
- }
305
- } else if (depth == 4) {
306
- for (var x = 0; x < w; x++) {
307
- var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
308
- al = gr == tr * 17 ? 0 : 255;
309
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
310
- }
311
- } else if (depth == 8) {
312
- for (var x = 0; x < w; x++) {
313
- var gr = data[off + x],
314
- al = gr == tr ? 0 : 255;
315
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
316
- }
317
- } else if (depth == 16) {
318
- for (var x = 0; x < w; x++) {
319
- var gr = data[off + (x << 1)],
320
- al = rs(data, off + (x << 1)) == tr ? 0 : 255;
321
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
322
- }
254
+ if (depth == 1) for (var x = 0; x < w; x++) {
255
+ var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
256
+ al = gr == tr * 255 ? 0 : 255;
257
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
258
+ } else if (depth == 2) for (var x = 0; x < w; x++) {
259
+ var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
260
+ al = gr == tr * 85 ? 0 : 255;
261
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
262
+ } else if (depth == 4) for (var x = 0; x < w; x++) {
263
+ var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
264
+ al = gr == tr * 17 ? 0 : 255;
265
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
266
+ } else if (depth == 8) for (var x = 0; x < w; x++) {
267
+ var gr = data[off + x],
268
+ al = gr == tr ? 0 : 255;
269
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
270
+ } else if (depth == 16) for (var x = 0; x < w; x++) {
271
+ var gr = data[off + (x << 1)],
272
+ al = rs(data, off + (x << 1)) == tr ? 0 : 255;
273
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
323
274
  }
324
275
  }
325
276
  } //console.log(Date.now()-time);
@@ -344,9 +295,10 @@ UPNG.decode = function (buff) {
344
295
  var fd,
345
296
  foff = 0; // frames
346
297
 
298
+ var text, keyw, bfr;
347
299
  var mgck = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
348
300
 
349
- for (var i = 0; i < 8; i++) if (data[i] != mgck[i]) throw 'The input is not a PNG file!';
301
+ for (var i = 0; i < 8; i++) if (data[i] != mgck[i]) throw new Error('The input is not a PNG file!');
350
302
 
351
303
  while (offset < data.length) {
352
304
  var len = bin.readUint(data, offset);
@@ -404,25 +356,19 @@ UPNG.decode = function (buff) {
404
356
  } else if (type == 'tEXt' || type == 'zTXt') {
405
357
  if (out.tabs[type] == null) out.tabs[type] = {};
406
358
  var nz = bin.nextZero(data, offset);
407
- var keyw = bin.readASCII(data, offset, nz - offset);
408
- var text,
409
- tl = offset + len - nz - 1;
410
-
411
- if (type == 'tEXt') {
412
- text = bin.readASCII(data, nz + 1, tl);
413
- } else {
414
- var bfr = UPNG.decode._inflate(data.slice(nz + 2, nz + 2 + tl));
415
-
359
+ keyw = bin.readASCII(data, offset, nz - offset);
360
+ var tl = offset + len - nz - 1;
361
+ if (type == 'tEXt') text = bin.readASCII(data, nz + 1, tl);else {
362
+ bfr = UPNG.decode._inflate(data.slice(nz + 2, nz + 2 + tl));
416
363
  text = bin.readUTF8(bfr, 0, bfr.length);
417
364
  }
418
-
419
365
  out.tabs[type][keyw] = text;
420
366
  } else if (type == 'iTXt') {
421
367
  if (out.tabs[type] == null) out.tabs[type] = {};
422
368
  var nz = 0,
423
369
  off = offset;
424
370
  nz = bin.nextZero(data, off);
425
- var keyw = bin.readASCII(data, off, nz - off);
371
+ keyw = bin.readASCII(data, off, nz - off);
426
372
  off = nz + 1;
427
373
  var cflag = data[off];
428
374
  off += 2;
@@ -432,17 +378,11 @@ UPNG.decode = function (buff) {
432
378
  nz = bin.nextZero(data, off);
433
379
  bin.readUTF8(data, off, nz - off);
434
380
  off = nz + 1;
435
- var text,
436
- tl = len - (off - offset);
437
-
438
- if (cflag == 0) {
439
- text = bin.readUTF8(data, off, tl);
440
- } else {
441
- var bfr = UPNG.decode._inflate(data.slice(off, off + tl));
442
-
381
+ var tl = len - (off - offset);
382
+ if (cflag == 0) text = bin.readUTF8(data, off, tl);else {
383
+ bfr = UPNG.decode._inflate(data.slice(off, off + tl));
443
384
  text = bin.readUTF8(bfr, 0, bfr.length);
444
385
  }
445
-
446
386
  out.tabs[type][keyw] = text;
447
387
  } else if (type == 'PLTE') {
448
388
  out.tabs[type] = bin.readBytes(data, offset, len);
@@ -453,18 +393,8 @@ UPNG.decode = function (buff) {
453
393
  for (var i = 0; i < pl; i++) out.tabs[type].push(rUs(data, offset + i * 2));
454
394
  } else if (type == 'tRNS') {
455
395
  if (out.ctype == 3) out.tabs[type] = bin.readBytes(data, offset, len);else if (out.ctype == 0) out.tabs[type] = rUs(data, offset);else if (out.ctype == 2) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)]; //else console.log("tRNS for unsupported color type",out.ctype, len);
456
- } else if (type == 'gAMA') {
457
- out.tabs[type] = bin.readUint(data, offset) / 100000;
458
- } else if (type == 'sRGB') {
459
- out.tabs[type] = data[offset];
460
- } else if (type == 'bKGD') {
461
- if (out.ctype == 0 || out.ctype == 4) {
462
- out.tabs[type] = [rUs(data, offset)];
463
- } else if (out.ctype == 2 || out.ctype == 6) {
464
- out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];
465
- } else if (out.ctype == 3) {
466
- out.tabs[type] = data[offset];
467
- }
396
+ } else if (type == 'gAMA') out.tabs[type] = bin.readUint(data, offset) / 100000;else if (type == 'sRGB') out.tabs[type] = data[offset];else if (type == 'bKGD') {
397
+ if (out.ctype == 0 || out.ctype == 4) out.tabs[type] = [rUs(data, offset)];else if (out.ctype == 2 || out.ctype == 6) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];else if (out.ctype == 3) out.tabs[type] = data[offset];
468
398
  } else if (type == 'IEND') {
469
399
  break;
470
400
  } //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
@@ -739,20 +669,18 @@ UPNG.inflateRaw = function () {
739
669
  n = H.H.m,
740
670
  A = n.r;
741
671
 
742
- for (var l = 0; l < V; l += 2) {
743
- if (N[l + 1] != 0) {
744
- var M = l >> 1,
745
- I = N[l + 1],
746
- e = M << 4 | I,
747
- b = W - I,
748
- Z = N[l] << b,
749
- m = Z + (1 << b);
750
-
751
- while (Z != m) {
752
- var J = A[Z] >>> 15 - W;
753
- R[J] = e;
754
- Z++;
755
- }
672
+ for (var l = 0; l < V; l += 2) if (N[l + 1] != 0) {
673
+ var M = l >> 1,
674
+ I = N[l + 1],
675
+ e = M << 4 | I,
676
+ b = W - I,
677
+ Z = N[l] << b,
678
+ m = Z + (1 << b);
679
+
680
+ while (Z != m) {
681
+ var J = A[Z] >>> 15 - W;
682
+ R[J] = e;
683
+ Z++;
756
684
  }
757
685
  }
758
686
  };
@@ -915,6 +843,7 @@ UPNG.decode._readInterlace = function (data, out) {
915
843
 
916
844
  var y = 0,
917
845
  row = starting_row[pass];
846
+ var val;
918
847
 
919
848
  while (row < h) {
920
849
  var col = starting_col[pass];
@@ -922,19 +851,19 @@ UPNG.decode._readInterlace = function (data, out) {
922
851
 
923
852
  while (col < w) {
924
853
  if (bpp == 1) {
925
- var val = data[cdi >> 3];
854
+ val = data[cdi >> 3];
926
855
  val = val >> 7 - (cdi & 7) & 1;
927
856
  img[row * bpl + (col >> 3)] |= val << 7 - ((col & 7) << 0);
928
857
  }
929
858
 
930
859
  if (bpp == 2) {
931
- var val = data[cdi >> 3];
860
+ val = data[cdi >> 3];
932
861
  val = val >> 6 - (cdi & 7) & 3;
933
862
  img[row * bpl + (col >> 2)] |= val << 6 - ((col & 3) << 1);
934
863
  }
935
864
 
936
865
  if (bpp == 4) {
937
- var val = data[cdi >> 3];
866
+ val = data[cdi >> 3];
938
867
  val = val >> 4 - (cdi & 7) & 15;
939
868
  img[row * bpl + (col >> 1)] |= val << 4 - ((col & 1) << 2);
940
869
  }
@@ -983,10 +912,7 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
983
912
  di = i + y + 1;
984
913
  type = data[di - 1];
985
914
  x = 0;
986
-
987
- if (type == 0) {
988
- for (; x < bpl; x++) data[i + x] = data[di + x];
989
- } else if (type == 1) {
915
+ if (type == 0) for (; x < bpl; x++) data[i + x] = data[di + x];else if (type == 1) {
990
916
  for (; x < bpp; x++) data[i + x] = data[di + x];
991
917
 
992
918
  for (; x < bpl; x++) data[i + x] = data[di + x] + data[i + x - bpp];
@@ -999,9 +925,7 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
999
925
  } else {
1000
926
  for (; x < bpp; x++) data[i + x] = data[di + x] + paeth(0, data[i + x - bpl], 0);
1001
927
 
1002
- for (; x < bpl; x++) {
1003
- data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
1004
- }
928
+ for (; x < bpl; x++) data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
1005
929
  }
1006
930
  }
1007
931
 
@@ -1099,73 +1023,71 @@ UPNG._copyTile = function (sb, sw, sh, tb, tw, th, xoff, yoff, mode) {
1099
1023
  var si = 0,
1100
1024
  ti = 0;
1101
1025
 
1102
- for (var y = 0; y < h; y++) {
1103
- for (var x = 0; x < w; x++) {
1104
- if (xoff >= 0 && yoff >= 0) {
1105
- si = y * sw + x << 2;
1106
- ti = (yoff + y) * tw + xoff + x << 2;
1107
- } else {
1108
- si = (-yoff + y) * sw - xoff + x << 2;
1109
- ti = y * tw + x << 2;
1110
- }
1026
+ for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) {
1027
+ if (xoff >= 0 && yoff >= 0) {
1028
+ si = y * sw + x << 2;
1029
+ ti = (yoff + y) * tw + xoff + x << 2;
1030
+ } else {
1031
+ si = (-yoff + y) * sw - xoff + x << 2;
1032
+ ti = y * tw + x << 2;
1033
+ }
1111
1034
 
1112
- if (mode == 0) {
1113
- tb[ti] = sb[si];
1114
- tb[ti + 1] = sb[si + 1];
1115
- tb[ti + 2] = sb[si + 2];
1116
- tb[ti + 3] = sb[si + 3];
1117
- } else if (mode == 1) {
1118
- var fa = sb[si + 3] * (1 / 255),
1119
- fr = sb[si] * fa,
1120
- fg = sb[si + 1] * fa,
1121
- fb = sb[si + 2] * fa;
1122
- var ba = tb[ti + 3] * (1 / 255),
1123
- br = tb[ti] * ba,
1124
- bg = tb[ti + 1] * ba,
1125
- bb = tb[ti + 2] * ba;
1126
- var ifa = 1 - fa,
1127
- oa = fa + ba * ifa,
1128
- ioa = oa == 0 ? 0 : 1 / oa;
1129
- tb[ti + 3] = 255 * oa;
1130
- tb[ti + 0] = (fr + br * ifa) * ioa;
1131
- tb[ti + 1] = (fg + bg * ifa) * ioa;
1132
- tb[ti + 2] = (fb + bb * ifa) * ioa;
1133
- } else if (mode == 2) {
1134
- // copy only differences, otherwise zero
1135
- var fa = sb[si + 3],
1136
- fr = sb[si],
1137
- fg = sb[si + 1],
1138
- fb = sb[si + 2];
1139
- var ba = tb[ti + 3],
1140
- br = tb[ti],
1141
- bg = tb[ti + 1],
1142
- bb = tb[ti + 2];
1143
-
1144
- if (fa == ba && fr == br && fg == bg && fb == bb) {
1145
- tb[ti] = 0;
1146
- tb[ti + 1] = 0;
1147
- tb[ti + 2] = 0;
1148
- tb[ti + 3] = 0;
1149
- } else {
1150
- tb[ti] = fr;
1151
- tb[ti + 1] = fg;
1152
- tb[ti + 2] = fb;
1153
- tb[ti + 3] = fa;
1154
- }
1155
- } else if (mode == 3) {
1156
- // check if can be blended
1157
- var fa = sb[si + 3],
1158
- fr = sb[si],
1159
- fg = sb[si + 1],
1160
- fb = sb[si + 2];
1161
- var ba = tb[ti + 3],
1162
- br = tb[ti],
1163
- bg = tb[ti + 1],
1164
- bb = tb[ti + 2];
1165
- if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
1166
-
1167
- if (fa < 220 && ba > 20) return false;
1035
+ if (mode == 0) {
1036
+ tb[ti] = sb[si];
1037
+ tb[ti + 1] = sb[si + 1];
1038
+ tb[ti + 2] = sb[si + 2];
1039
+ tb[ti + 3] = sb[si + 3];
1040
+ } else if (mode == 1) {
1041
+ var fa = sb[si + 3] * (1 / 255),
1042
+ fr = sb[si] * fa,
1043
+ fg = sb[si + 1] * fa,
1044
+ fb = sb[si + 2] * fa;
1045
+ var ba = tb[ti + 3] * (1 / 255),
1046
+ br = tb[ti] * ba,
1047
+ bg = tb[ti + 1] * ba,
1048
+ bb = tb[ti + 2] * ba;
1049
+ var ifa = 1 - fa,
1050
+ oa = fa + ba * ifa,
1051
+ ioa = oa == 0 ? 0 : 1 / oa;
1052
+ tb[ti + 3] = 255 * oa;
1053
+ tb[ti + 0] = (fr + br * ifa) * ioa;
1054
+ tb[ti + 1] = (fg + bg * ifa) * ioa;
1055
+ tb[ti + 2] = (fb + bb * ifa) * ioa;
1056
+ } else if (mode == 2) {
1057
+ // copy only differences, otherwise zero
1058
+ var fa = sb[si + 3],
1059
+ fr = sb[si],
1060
+ fg = sb[si + 1],
1061
+ fb = sb[si + 2];
1062
+ var ba = tb[ti + 3],
1063
+ br = tb[ti],
1064
+ bg = tb[ti + 1],
1065
+ bb = tb[ti + 2];
1066
+
1067
+ if (fa == ba && fr == br && fg == bg && fb == bb) {
1068
+ tb[ti] = 0;
1069
+ tb[ti + 1] = 0;
1070
+ tb[ti + 2] = 0;
1071
+ tb[ti + 3] = 0;
1072
+ } else {
1073
+ tb[ti] = fr;
1074
+ tb[ti + 1] = fg;
1075
+ tb[ti + 2] = fb;
1076
+ tb[ti + 3] = fa;
1168
1077
  }
1078
+ } else if (mode == 3) {
1079
+ // check if can be blended
1080
+ var fa = sb[si + 3],
1081
+ fr = sb[si],
1082
+ fg = sb[si + 1],
1083
+ fb = sb[si + 2];
1084
+ var ba = tb[ti + 3],
1085
+ br = tb[ti],
1086
+ bg = tb[ti + 1],
1087
+ bb = tb[ti + 2];
1088
+ if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
1089
+
1090
+ if (fa < 220 && ba > 20) return false;
1169
1091
  }
1170
1092
  }
1171
1093