melonjs 14.4.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +13 -57
  3. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  7. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  8. package/dist/melonjs.mjs/_virtual/index2.js +1 -1
  9. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  10. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  11. package/dist/melonjs.mjs/application/application.js +1 -1
  12. package/dist/melonjs.mjs/application/header.js +1 -1
  13. package/dist/melonjs.mjs/application/resize.js +1 -1
  14. package/dist/melonjs.mjs/application/settings.js +1 -1
  15. package/dist/melonjs.mjs/audio/audio.js +5 -7
  16. package/dist/melonjs.mjs/camera/camera2d.js +1 -1
  17. package/dist/melonjs.mjs/const.js +1 -1
  18. package/dist/melonjs.mjs/entity/entity.js +43 -9
  19. package/dist/melonjs.mjs/geometries/ellipse.js +2 -3
  20. package/dist/melonjs.mjs/geometries/line.js +1 -1
  21. package/dist/melonjs.mjs/geometries/path2d.js +20 -44
  22. package/dist/melonjs.mjs/geometries/point.js +1 -6
  23. package/dist/melonjs.mjs/geometries/poly.js +2 -5
  24. package/dist/melonjs.mjs/geometries/rectangle.js +13 -9
  25. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  26. package/dist/melonjs.mjs/index.js +10 -6
  27. package/dist/melonjs.mjs/input/gamepad.js +10 -16
  28. package/dist/melonjs.mjs/input/input.js +1 -1
  29. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  30. package/dist/melonjs.mjs/input/pointer.js +1 -1
  31. package/dist/melonjs.mjs/input/pointerevent.js +3 -17
  32. package/dist/melonjs.mjs/lang/console.js +1 -1
  33. package/dist/melonjs.mjs/lang/deprecated.js +1 -1
  34. package/dist/melonjs.mjs/level/level.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  36. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -8
  37. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +8 -4
  40. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +5 -5
  41. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  42. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  45. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  46. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  47. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  48. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  49. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  50. package/dist/melonjs.mjs/loader/cache.js +24 -0
  51. package/dist/melonjs.mjs/loader/loader.js +331 -716
  52. package/dist/melonjs.mjs/loader/loadingscreen.js +4 -4
  53. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  54. package/dist/melonjs.mjs/loader/parser.js +281 -0
  55. package/dist/melonjs.mjs/loader/settings.js +91 -0
  56. package/dist/melonjs.mjs/math/color.js +9 -8
  57. package/dist/melonjs.mjs/math/math.js +1 -1
  58. package/dist/melonjs.mjs/math/matrix2.js +7 -9
  59. package/dist/melonjs.mjs/math/matrix3.js +18 -21
  60. package/dist/melonjs.mjs/math/observable_vector2.js +3 -3
  61. package/dist/melonjs.mjs/math/observable_vector3.js +3 -4
  62. package/dist/melonjs.mjs/math/vector2.js +3 -3
  63. package/dist/melonjs.mjs/math/vector3.js +3 -4
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  69. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  70. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  71. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  72. package/dist/melonjs.mjs/particles/emitter.js +3 -3
  73. package/dist/melonjs.mjs/particles/particle.js +1 -1
  74. package/dist/melonjs.mjs/particles/settings.js +1 -1
  75. package/dist/melonjs.mjs/physics/body.js +18 -14
  76. package/dist/melonjs.mjs/physics/bounds.js +18 -70
  77. package/dist/melonjs.mjs/physics/collision.js +1 -1
  78. package/dist/melonjs.mjs/physics/detector.js +1 -1
  79. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  80. package/dist/melonjs.mjs/physics/response.js +1 -1
  81. package/dist/melonjs.mjs/physics/sat.js +1 -1
  82. package/dist/melonjs.mjs/physics/world.js +1 -1
  83. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  84. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  85. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  86. package/dist/melonjs.mjs/renderable/container.js +25 -19
  87. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  88. package/dist/melonjs.mjs/renderable/imagelayer.js +7 -1
  89. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  90. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  91. package/dist/melonjs.mjs/renderable/renderable.js +148 -105
  92. package/dist/melonjs.mjs/renderable/sprite.js +33 -54
  93. package/dist/melonjs.mjs/renderable/trigger.js +1 -1
  94. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  95. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  96. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -3
  97. package/dist/melonjs.mjs/state/stage.js +1 -1
  98. package/dist/melonjs.mjs/state/state.js +2 -2
  99. package/dist/melonjs.mjs/system/device.js +2 -2
  100. package/dist/melonjs.mjs/system/dom.js +1 -1
  101. package/dist/melonjs.mjs/system/event.js +1 -1
  102. package/dist/melonjs.mjs/system/platform.js +1 -1
  103. package/dist/melonjs.mjs/system/pooling.js +8 -18
  104. package/dist/melonjs.mjs/system/save.js +1 -1
  105. package/dist/melonjs.mjs/system/timer.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptext.js +66 -8
  107. package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
  108. package/dist/melonjs.mjs/text/glyph.js +1 -1
  109. package/dist/melonjs.mjs/text/text.js +56 -86
  110. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  111. package/dist/melonjs.mjs/text/textstyle.js +4 -6
  112. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  113. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  114. package/dist/melonjs.mjs/tweens/tween.js +1 -1
  115. package/dist/melonjs.mjs/utils/agent.js +1 -1
  116. package/dist/melonjs.mjs/utils/array.js +1 -1
  117. package/dist/melonjs.mjs/utils/file.js +1 -1
  118. package/dist/melonjs.mjs/utils/function.js +1 -1
  119. package/dist/melonjs.mjs/utils/string.js +2 -2
  120. package/dist/melonjs.mjs/utils/utils.js +2 -4
  121. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +7 -11
  122. package/dist/melonjs.mjs/video/renderer.js +2 -13
  123. package/dist/melonjs.mjs/video/texture/atlas.js +12 -17
  124. package/dist/melonjs.mjs/video/texture/cache.js +3 -3
  125. package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
  126. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  127. package/dist/melonjs.mjs/video/video.js +2 -2
  128. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +21 -17
  129. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +235 -0
  130. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
  131. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +249 -0
  132. package/dist/melonjs.mjs/video/webgl/{webgl_compositor.js → compositors/webgl_compositor.js} +20 -205
  133. package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
  138. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  143. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +139 -149
  144. package/dist/melonjs.module.js +26320 -26376
  145. package/dist/types/entity/entity.d.ts +3 -3
  146. package/dist/types/geometries/path2d.d.ts +5 -31
  147. package/dist/types/geometries/point.d.ts +2 -7
  148. package/dist/types/geometries/poly.d.ts +0 -1
  149. package/dist/types/index.d.ts +5 -3
  150. package/dist/types/loader/cache.d.ts +7 -0
  151. package/dist/types/loader/loader.d.ts +166 -181
  152. package/dist/types/loader/parser.d.ts +41 -0
  153. package/dist/types/loader/settings.d.ts +57 -0
  154. package/dist/types/particles/emitter.d.ts +4 -4
  155. package/dist/types/physics/bounds.d.ts +29 -84
  156. package/dist/types/renderable/container.d.ts +0 -11
  157. package/dist/types/renderable/renderable.d.ts +43 -31
  158. package/dist/types/renderable/sprite.d.ts +3 -3
  159. package/dist/types/renderable/ui/uitextbutton.d.ts +0 -1
  160. package/dist/types/state/state.d.ts +1 -1
  161. package/dist/types/system/pooling.d.ts +2 -2
  162. package/dist/types/text/text.d.ts +6 -20
  163. package/dist/types/text/textstyle.d.ts +1 -1
  164. package/dist/types/video/canvas/canvas_renderer.d.ts +0 -5
  165. package/dist/types/video/renderer.d.ts +1 -5
  166. package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
  167. package/dist/types/video/webgl/compositors/compositor.d.ts +107 -0
  168. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
  169. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
  170. package/dist/types/video/webgl/compositors/webgl_compositor.d.ts +86 -0
  171. package/dist/types/video/webgl/webgl_compositor.d.ts +2 -3
  172. package/dist/types/video/webgl/webgl_renderer.d.ts +34 -28
  173. package/package.json +18 -18
  174. package/src/audio/audio.js +4 -6
  175. package/src/entity/entity.js +42 -8
  176. package/src/geometries/ellipse.js +1 -2
  177. package/src/geometries/path2d.js +19 -43
  178. package/src/geometries/point.js +0 -5
  179. package/src/geometries/poly.js +1 -4
  180. package/src/geometries/rectangle.js +12 -8
  181. package/src/index.js +7 -3
  182. package/src/input/gamepad.js +9 -15
  183. package/src/input/pointerevent.js +1 -15
  184. package/src/level/level.js +2 -2
  185. package/src/level/tiled/TMXLayer.js +0 -7
  186. package/src/level/tiled/TMXTileMap.js +7 -3
  187. package/src/level/tiled/TMXTileset.js +4 -4
  188. package/src/loader/cache.js +16 -0
  189. package/src/loader/loader.js +339 -711
  190. package/src/loader/loadingscreen.js +3 -3
  191. package/src/loader/parser.js +279 -0
  192. package/src/loader/settings.js +85 -0
  193. package/src/math/color.js +8 -7
  194. package/src/math/matrix2.js +6 -8
  195. package/src/math/matrix3.js +17 -20
  196. package/src/math/observable_vector2.js +2 -2
  197. package/src/math/observable_vector3.js +2 -3
  198. package/src/math/vector2.js +2 -2
  199. package/src/math/vector3.js +2 -3
  200. package/src/particles/emitter.js +2 -2
  201. package/src/physics/body.js +17 -13
  202. package/src/physics/bounds.js +17 -69
  203. package/src/polyfill/index.js +0 -2
  204. package/src/renderable/container.js +24 -18
  205. package/src/renderable/imagelayer.js +6 -0
  206. package/src/renderable/renderable.js +147 -104
  207. package/src/renderable/sprite.js +32 -53
  208. package/src/renderable/ui/uitextbutton.js +0 -2
  209. package/src/state/state.js +1 -1
  210. package/src/system/device.js +1 -1
  211. package/src/system/pooling.js +7 -17
  212. package/src/text/bitmaptext.js +65 -7
  213. package/src/text/text.js +55 -85
  214. package/src/text/textstyle.js +3 -5
  215. package/src/utils/string.js +1 -1
  216. package/src/utils/utils.js +1 -3
  217. package/src/video/canvas/canvas_renderer.js +5 -9
  218. package/src/video/renderer.js +0 -11
  219. package/src/video/texture/atlas.js +11 -16
  220. package/src/video/texture/cache.js +2 -2
  221. package/src/video/video.js +1 -1
  222. package/src/video/webgl/buffer/vertex.js +20 -16
  223. package/src/video/webgl/compositors/compositor.js +226 -0
  224. package/src/video/webgl/compositors/primitive_compositor.js +68 -0
  225. package/src/video/webgl/compositors/quad_compositor.js +240 -0
  226. package/src/video/webgl/shaders/primitive.vert +2 -5
  227. package/src/video/webgl/shaders/quad.vert +3 -1
  228. package/src/video/webgl/webgl_renderer.js +137 -147
  229. package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
  230. package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
  231. package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
  232. package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
  233. package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
  234. package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
  235. package/dist/melonjs.mjs/_virtual/shared.js +0 -10
  236. package/dist/melonjs.mjs/game.js +0 -29
  237. package/dist/melonjs.mjs/polyfill/console.js +0 -18
  238. package/dist/melonjs.mjs/polyfill/performance.js +0 -27
  239. package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
  240. package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
  241. package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
  242. package/dist/melonjs.mjs/video/utils/resize.js +0 -116
  243. package/src/polyfill/performance.js +0 -20
  244. package/src/polyfill/requestAnimationFrame.js +0 -39
  245. package/src/video/webgl/webgl_compositor.js +0 -486
@@ -1,46 +0,0 @@
1
- /*!
2
- * melonJS Game Engine - v14.1.3
3
- * http://www.melonjs.org
4
- * melonjs is licensed under the MIT License.
5
- * http://www.opensource.org/licenses/mit-license
6
- * @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
7
- */
8
- import timer from '../system/timer.js';
9
-
10
- var lastTime = 0;
11
- var vendors = ["ms", "moz", "webkit", "o"];
12
- var x;
13
-
14
- // standardized functions
15
- // https://developer.mozilla.org/fr/docs/Web/API/Window/requestAnimationFrame
16
- var requestAnimationFrame = globalThis.requestAnimationFrame;
17
- var cancelAnimationFrame = globalThis.cancelAnimationFrame;
18
-
19
- // get prefixed rAF and cAF is standard one not supported
20
- for (x = 0; x < vendors.length && !requestAnimationFrame; ++x) {
21
- requestAnimationFrame = globalThis[vendors[x] + "RequestAnimationFrame"];
22
- }
23
- for (x = 0; x < vendors.length && !cancelAnimationFrame; ++x) {
24
- cancelAnimationFrame = globalThis[vendors[x] + "CancelAnimationFrame"] ||
25
- globalThis[vendors[x] + "CancelRequestAnimationFrame"];
26
- }
27
-
28
- if (!requestAnimationFrame || !cancelAnimationFrame) {
29
- requestAnimationFrame = function (callback) {
30
- var currTime = globalThis.performance.now();
31
- var timeToCall = Math.max(0, (1000 / timer.maxfps) - (currTime - lastTime));
32
- var id = globalThis.setTimeout(() => {
33
- callback(currTime + timeToCall);
34
- }, timeToCall);
35
- lastTime = currTime + timeToCall;
36
- return id;
37
- };
38
-
39
- cancelAnimationFrame = function (id) {
40
- globalThis.clearTimeout(id);
41
- };
42
-
43
- // put back in global namespace
44
- globalThis.requestAnimationFrame = requestAnimationFrame;
45
- globalThis.cancelAnimationFrame = cancelAnimationFrame;
46
- }
@@ -1,242 +0,0 @@
1
- /*!
2
- * melonJS Game Engine - v14.1.3
3
- * http://www.melonjs.org
4
- * melonjs is licensed under the MIT License.
5
- * http://www.opensource.org/licenses/mit-license
6
- * @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
7
- */
8
- /*
9
- * based on https://www.npmjs.com/package/canvas-roundrect-polyfill
10
- * @version 0.0.1
11
- */
12
- (() => {
13
-
14
- /** @ignore */
15
- function roundRect(x, y, w, h, radii) {
16
-
17
- if (!([x, y, w, h].every((input) => Number.isFinite(input)))) {
18
-
19
- return;
20
-
21
- }
22
-
23
- radii = parseRadiiArgument(radii);
24
-
25
- let upperLeft, upperRight, lowerRight, lowerLeft;
26
-
27
- if (radii.length === 4) {
28
-
29
- upperLeft = toCornerPoint(radii[0]);
30
- upperRight = toCornerPoint(radii[1]);
31
- lowerRight = toCornerPoint(radii[2]);
32
- lowerLeft = toCornerPoint(radii[3]);
33
-
34
- } else if (radii.length === 3) {
35
-
36
- upperLeft = toCornerPoint(radii[0]);
37
- upperRight = toCornerPoint(radii[1]);
38
- lowerLeft = toCornerPoint(radii[1]);
39
- lowerRight = toCornerPoint(radii[2]);
40
-
41
- } else if (radii.length === 2) {
42
-
43
- upperLeft = toCornerPoint(radii[0]);
44
- lowerRight = toCornerPoint(radii[0]);
45
- upperRight = toCornerPoint(radii[1]);
46
- lowerLeft = toCornerPoint(radii[1]);
47
-
48
- } else if (radii.length === 1) {
49
-
50
- upperLeft = toCornerPoint(radii[0]);
51
- upperRight = toCornerPoint(radii[0]);
52
- lowerRight = toCornerPoint(radii[0]);
53
- lowerLeft = toCornerPoint(radii[0]);
54
-
55
- } else {
56
-
57
- throw new Error(radii.length + " is not a valid size for radii sequence.");
58
-
59
- }
60
-
61
- const corners = [upperLeft, upperRight, lowerRight, lowerLeft];
62
- const negativeCorner = corners.find(({x, y}) => x < 0 || y < 0);
63
- //const negativeValue = negativeCorner?.x < 0 ? negativeCorner.x : negativeCorner?.y
64
-
65
- if (corners.some(({x, y}) => !Number.isFinite(x) || !Number.isFinite(y))) {
66
-
67
- return;
68
-
69
- }
70
-
71
- if (negativeCorner) {
72
-
73
- throw new Error("Radius value " + negativeCorner + " is negative.");
74
-
75
- }
76
-
77
- fixOverlappingCorners(corners);
78
-
79
- if (w < 0 && h < 0) {
80
-
81
- this.moveTo(x - upperLeft.x, y);
82
- this.ellipse(x + w + upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI * 1.5, -Math.PI);
83
- this.ellipse(x + w + lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI / 2);
84
- this.ellipse(x - lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, 0);
85
- this.ellipse(x - upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2);
86
-
87
- } else if (w < 0) {
88
-
89
- this.moveTo(x - upperLeft.x, y);
90
- this.ellipse(x + w + upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, -Math.PI, 1);
91
- this.ellipse(x + w + lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI * 1.5, 1);
92
- this.ellipse(x - lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, 0, 1);
93
- this.ellipse(x - upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2, 1);
94
-
95
- } else if (h < 0) {
96
-
97
- this.moveTo(x + upperLeft.x, y);
98
- this.ellipse(x + w - upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, Math.PI / 2, 0, 1);
99
- this.ellipse(x + w - lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, -Math.PI / 2, 1);
100
- this.ellipse(x + lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, -Math.PI, 1);
101
- this.ellipse(x + upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, -Math.PI, -Math.PI * 1.5, 1);
102
-
103
- } else {
104
-
105
- this.moveTo(x + upperLeft.x, y);
106
- this.ellipse(x + w - upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, 0);
107
- this.ellipse(x + w - lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, Math.PI / 2);
108
- this.ellipse(x + lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, Math.PI);
109
- this.ellipse(x + upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, Math.PI, Math.PI * 1.5);
110
-
111
- }
112
-
113
- this.closePath();
114
- this.moveTo(x, y);
115
-
116
- /** @ignore */
117
- function toDOMPointInit(value) {
118
-
119
- const {x, y, z, w} = value;
120
- return {x, y, z, w};
121
-
122
- }
123
-
124
- /** @ignore */
125
- function parseRadiiArgument(value) {
126
-
127
- // https://webidl.spec.whatwg.org/#es-union
128
- // with 'optional (unrestricted double or DOMPointInit
129
- // or sequence<(unrestricted double or DOMPointInit)>) radii = 0'
130
- const type = typeof value;
131
-
132
- if (type === "undefined" || value === null) {
133
-
134
- return [0];
135
-
136
- }
137
- if (type === "function") {
138
-
139
- return [NaN];
140
-
141
- }
142
- if (type === "object") {
143
-
144
- if (typeof value[Symbol.iterator] === "function") {
145
-
146
- return [...value].map((elem) => {
147
- // https://webidl.spec.whatwg.org/#es-union
148
- // with '(unrestricted double or DOMPointInit)'
149
- const elemType = typeof elem;
150
- if (elemType === "undefined" || elem === null) {
151
- return 0;
152
- }
153
- if (elemType === "function") {
154
- return NaN;
155
- }
156
- if (elemType === "object") {
157
- return toDOMPointInit(elem);
158
- }
159
- return toUnrestrictedNumber(elem);
160
- });
161
-
162
- }
163
-
164
- return [toDOMPointInit(value)];
165
-
166
- }
167
-
168
- return [toUnrestrictedNumber(value)];
169
-
170
- }
171
-
172
- /** @ignore */
173
- function toUnrestrictedNumber(value) {
174
-
175
- return +value;
176
-
177
- }
178
-
179
- /** @ignore */
180
- function toCornerPoint(value) {
181
-
182
- const asNumber = toUnrestrictedNumber(value);
183
- if (Number.isFinite(asNumber)) {
184
-
185
- return {
186
- x: asNumber,
187
- y: asNumber
188
- };
189
-
190
- }
191
- if (Object(value) === value) {
192
-
193
- return {
194
- x: toUnrestrictedNumber(value.x || 0),
195
- y: toUnrestrictedNumber(value.y || 0)
196
- };
197
-
198
- }
199
-
200
- return {
201
- x: NaN,
202
- y: NaN
203
- };
204
-
205
- }
206
-
207
- /** @ignore */
208
- function fixOverlappingCorners(corners) {
209
- const [upperLeft, upperRight, lowerRight, lowerLeft] = corners;
210
- const factors = [
211
- Math.abs(w) / (upperLeft.x + upperRight.x),
212
- Math.abs(h) / (upperRight.y + lowerRight.y),
213
- Math.abs(w) / (lowerRight.x + lowerLeft.x),
214
- Math.abs(h) / (upperLeft.y + lowerLeft.y)
215
- ];
216
- const minFactor = Math.min(...factors);
217
- if (minFactor <= 1) {
218
- corners.forEach((radii) => {
219
- radii.x *= minFactor;
220
- radii.y *= minFactor;
221
- });
222
- }
223
- }
224
- }
225
-
226
- if (globalThis.CanvasRenderingContext2D) {
227
- if (typeof globalThis.Path2D.prototype.roundRect === "undefined") {
228
- globalThis.Path2D.prototype.roundRect = roundRect;
229
- }
230
- }
231
- if (globalThis.CanvasRenderingContext2D) {
232
- if (typeof globalThis.CanvasRenderingContext2D.prototype.roundRect === "undefined") {
233
- globalThis.CanvasRenderingContext2D.prototype.roundRect = roundRect;
234
- }
235
- }
236
- if (globalThis.OffscreenCanvasRenderingContext2D) {
237
- if (typeof globalThis.OffscreenCanvasRenderingContext2D.prototype.roundRect === "undefined") {
238
- globalThis.OffscreenCanvasRenderingContext2D.prototype.roundRect = roundRect;
239
- }
240
- }
241
-
242
- })();