@visactor/vrender-core 0.21.0-vstory.2 → 0.21.0-vstory.3

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 (160) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +2 -1
  2. package/cjs/animate/Ticker/default-ticker.js +6 -3
  3. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  4. package/cjs/animate/custom-animate.d.ts +2 -0
  5. package/cjs/animate/custom-animate.js +11 -2
  6. package/cjs/animate/custom-animate.js.map +1 -1
  7. package/cjs/animate/easing.d.ts +1 -0
  8. package/cjs/animate/easing.js +3 -0
  9. package/cjs/animate/easing.js.map +1 -1
  10. package/cjs/animate/index.d.ts +1 -0
  11. package/cjs/animate/index.js +1 -1
  12. package/cjs/animate/index.js.map +1 -1
  13. package/cjs/canvas/util.js +1 -2
  14. package/cjs/color-string/store.js +2 -1
  15. package/cjs/common/color-utils.js +2 -2
  16. package/cjs/common/color-utils.js.map +1 -1
  17. package/cjs/common/utils.d.ts +1 -0
  18. package/cjs/common/utils.js +9 -2
  19. package/cjs/common/utils.js.map +1 -1
  20. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +56 -4
  21. package/cjs/core/contributions/textMeasure/AtextMeasure.js +119 -18
  22. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  23. package/cjs/core/contributions/textMeasure/layout.d.ts +8 -3
  24. package/cjs/core/contributions/textMeasure/layout.js +55 -44
  25. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  26. package/cjs/core/stage.d.ts +5 -0
  27. package/cjs/core/stage.js +20 -7
  28. package/cjs/core/stage.js.map +1 -1
  29. package/cjs/event/event-manager.d.ts +1 -0
  30. package/cjs/event/event-manager.js +1 -1
  31. package/cjs/event/event-manager.js.map +1 -1
  32. package/cjs/event/event-system.js +2 -1
  33. package/cjs/event/event-system.js.map +1 -1
  34. package/cjs/graphic/config.d.ts +1 -1
  35. package/cjs/graphic/config.js +7 -3
  36. package/cjs/graphic/config.js.map +1 -1
  37. package/cjs/graphic/node-tree.js +3 -3
  38. package/cjs/graphic/node-tree.js.map +1 -1
  39. package/cjs/graphic/richtext/line.js +9 -2
  40. package/cjs/graphic/richtext/line.js.map +1 -1
  41. package/cjs/graphic/richtext/paragraph.js +4 -3
  42. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  43. package/cjs/graphic/richtext/utils.d.ts +2 -1
  44. package/cjs/graphic/richtext/utils.js +5 -3
  45. package/cjs/graphic/richtext/utils.js.map +1 -1
  46. package/cjs/graphic/text.d.ts +11 -11
  47. package/cjs/graphic/text.js +102 -168
  48. package/cjs/graphic/text.js.map +1 -1
  49. package/cjs/graphic/wrap-text.js +16 -4
  50. package/cjs/graphic/wrap-text.js.map +1 -1
  51. package/cjs/interface/animate.d.ts +1 -38
  52. package/cjs/interface/animate.js.map +1 -1
  53. package/cjs/interface/context.d.ts +1 -0
  54. package/cjs/interface/context.js.map +1 -1
  55. package/cjs/interface/graphic/text.d.ts +11 -3
  56. package/cjs/interface/graphic/text.js +6 -1
  57. package/cjs/interface/graphic/text.js.map +1 -1
  58. package/cjs/interface/graphic.d.ts +1 -0
  59. package/cjs/interface/graphic.js.map +1 -1
  60. package/cjs/interface/stage.d.ts +2 -0
  61. package/cjs/interface/stage.js.map +1 -1
  62. package/cjs/interface/text.d.ts +9 -1
  63. package/cjs/interface/text.js.map +1 -1
  64. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.d.ts +16 -0
  65. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js +48 -0
  66. package/cjs/plugins/builtin-plugin/auto-refresh-plugin.js.map +1 -0
  67. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  68. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  69. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  70. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  71. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  72. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  73. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  74. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  75. package/cjs/render/contributions/render/draw-interceptor.js +3 -2
  76. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  77. package/cjs/render/contributions/render/text-render.d.ts +1 -1
  78. package/cjs/render/contributions/render/text-render.js +24 -46
  79. package/cjs/render/contributions/render/text-render.js.map +1 -1
  80. package/dist/index.es.js +8876 -8751
  81. package/es/animate/Ticker/default-ticker.d.ts +2 -1
  82. package/es/animate/Ticker/default-ticker.js +6 -3
  83. package/es/animate/Ticker/default-ticker.js.map +1 -1
  84. package/es/animate/custom-animate.d.ts +2 -0
  85. package/es/animate/custom-animate.js +11 -2
  86. package/es/animate/custom-animate.js.map +1 -1
  87. package/es/animate/easing.d.ts +1 -0
  88. package/es/animate/easing.js +3 -0
  89. package/es/animate/easing.js.map +1 -1
  90. package/es/animate/index.d.ts +1 -0
  91. package/es/animate/index.js +2 -0
  92. package/es/animate/index.js.map +1 -1
  93. package/es/canvas/util.js +1 -2
  94. package/es/color-string/store.js +2 -1
  95. package/es/common/color-utils.js +2 -2
  96. package/es/common/color-utils.js.map +1 -1
  97. package/es/common/utils.d.ts +1 -0
  98. package/es/common/utils.js +6 -1
  99. package/es/common/utils.js.map +1 -1
  100. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +56 -4
  101. package/es/core/contributions/textMeasure/AtextMeasure.js +122 -17
  102. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  103. package/es/core/contributions/textMeasure/layout.d.ts +8 -3
  104. package/es/core/contributions/textMeasure/layout.js +55 -44
  105. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  106. package/es/core/stage.d.ts +5 -0
  107. package/es/core/stage.js +21 -6
  108. package/es/core/stage.js.map +1 -1
  109. package/es/event/event-manager.d.ts +1 -0
  110. package/es/event/event-manager.js +1 -1
  111. package/es/event/event-manager.js.map +1 -1
  112. package/es/event/event-system.js +2 -1
  113. package/es/event/event-system.js.map +1 -1
  114. package/es/graphic/config.d.ts +1 -1
  115. package/es/graphic/config.js +8 -2
  116. package/es/graphic/config.js.map +1 -1
  117. package/es/graphic/node-tree.js +3 -3
  118. package/es/graphic/node-tree.js.map +1 -1
  119. package/es/graphic/richtext/line.js +10 -3
  120. package/es/graphic/richtext/line.js.map +1 -1
  121. package/es/graphic/richtext/paragraph.js +4 -3
  122. package/es/graphic/richtext/paragraph.js.map +1 -1
  123. package/es/graphic/richtext/utils.d.ts +2 -1
  124. package/es/graphic/richtext/utils.js +6 -2
  125. package/es/graphic/richtext/utils.js.map +1 -1
  126. package/es/graphic/text.d.ts +11 -11
  127. package/es/graphic/text.js +101 -163
  128. package/es/graphic/text.js.map +1 -1
  129. package/es/graphic/wrap-text.js +16 -4
  130. package/es/graphic/wrap-text.js.map +1 -1
  131. package/es/interface/animate.d.ts +1 -38
  132. package/es/interface/animate.js.map +1 -1
  133. package/es/interface/context.d.ts +1 -0
  134. package/es/interface/context.js.map +1 -1
  135. package/es/interface/graphic/text.d.ts +11 -3
  136. package/es/interface/graphic/text.js +6 -1
  137. package/es/interface/graphic/text.js.map +1 -1
  138. package/es/interface/graphic.d.ts +1 -0
  139. package/es/interface/graphic.js.map +1 -1
  140. package/es/interface/stage.d.ts +2 -0
  141. package/es/interface/stage.js.map +1 -1
  142. package/es/interface/text.d.ts +9 -1
  143. package/es/interface/text.js.map +1 -1
  144. package/es/plugins/builtin-plugin/auto-refresh-plugin.d.ts +16 -0
  145. package/es/plugins/builtin-plugin/auto-refresh-plugin.js +41 -0
  146. package/es/plugins/builtin-plugin/auto-refresh-plugin.js.map +1 -0
  147. package/es/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  148. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  149. package/es/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  150. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  151. package/es/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  152. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  153. package/es/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  154. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  155. package/es/render/contributions/render/draw-interceptor.js +3 -2
  156. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  157. package/es/render/contributions/render/text-render.d.ts +1 -1
  158. package/es/render/contributions/render/text-render.js +23 -45
  159. package/es/render/contributions/render/text-render.js.map +1 -1
  160. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animate/easing.ts"],"names":[],"mappings":"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","file":"easing.js","sourcesContent":["/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 gskinner.com, inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\n// 参考TweenJS\n// https://github.com/CreateJS/TweenJS/tree/master/src/tweenjs\nimport { pi2 } from '@visactor/vutils';\n\n/**\n * 代码迁移自createjs\n * 部分缓动函数参考https://easings.net/\n */\nexport class Easing {\n private constructor() {\n // do nothing\n }\n\n static linear(t: number): number {\n return t;\n }\n\n static none() {\n return this.linear;\n }\n\n /**\n * 获取缓动函数,amount指示这个缓动函数的插值方式\n * @param amount\n * @returns\n */\n static get(amount: number) {\n if (amount < -1) {\n amount = -1;\n } else if (amount > 1) {\n amount = 1;\n }\n\n return function (t: number) {\n if (amount === 0) {\n return t;\n }\n if (amount < 0) {\n return t * (t * -amount + 1 + amount);\n }\n return t * ((2 - t) * amount + (1 - amount));\n };\n }\n\n /* 语法糖 */\n static getPowIn(pow: number) {\n return function (t: number) {\n return Math.pow(t, pow);\n };\n }\n\n static getPowOut(pow: number) {\n return function (t: number) {\n return 1 - Math.pow(1 - t, pow);\n };\n }\n\n static getPowInOut(pow: number) {\n return function (t: number) {\n if ((t *= 2) < 1) {\n return 0.5 * Math.pow(t, pow);\n }\n return 1 - 0.5 * Math.abs(Math.pow(2 - t, pow));\n };\n }\n\n // 插值函数\n static quadIn = Easing.getPowIn(2);\n static quadOut = Easing.getPowOut(2);\n\n static quadInOut = Easing.getPowInOut(2);\n static cubicIn = Easing.getPowIn(3);\n static cubicOut = Easing.getPowOut(3);\n static cubicInOut = Easing.getPowInOut(3);\n static quartIn = Easing.getPowIn(4);\n static quartOut = Easing.getPowOut(4);\n static quartInOut = Easing.getPowInOut(4);\n static quintIn = Easing.getPowIn(5);\n static quintOut = Easing.getPowOut(5);\n static quintInOut = Easing.getPowInOut(5);\n\n /* 语法糖 */\n static getBackIn(amount: number) {\n return function (t: number) {\n return t * t * ((amount + 1) * t - amount);\n };\n }\n static getBackOut(amount: number) {\n return function (t: number) {\n return --t * t * ((amount + 1) * t + amount) + 1;\n };\n }\n static getBackInOut(amount: number) {\n amount *= 1.525;\n return function (t: number) {\n if ((t *= 2) < 1) {\n return 0.5 * (t * t * ((amount + 1) * t - amount));\n }\n return 0.5 * ((t -= 2) * t * ((amount + 1) * t + amount) + 2);\n };\n }\n\n // 插值函数\n static backIn = Easing.getBackIn(1.7);\n static backOut = Easing.getBackOut(1.7);\n static backInOut = Easing.getBackInOut(1.7);\n\n static sineIn(t: number): number {\n return 1 - Math.cos((t * Math.PI) / 2);\n }\n\n static sineOut(t: number): number {\n return Math.sin((t * Math.PI) / 2);\n }\n\n static sineInOut(t: number): number {\n return -(Math.cos(Math.PI * t) - 1) / 2;\n }\n\n static expoIn(t: number): number {\n return t === 0 ? 0 : Math.pow(2, 10 * t - 10);\n }\n\n static expoOut(t: number): number {\n return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);\n }\n\n static expoInOut(t: number): number {\n return t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2;\n }\n\n // 插值函数\n static circIn(t: number) {\n return -(Math.sqrt(1 - t * t) - 1);\n }\n\n static circOut(t: number) {\n return Math.sqrt(1 - --t * t);\n }\n\n static circInOut(t: number) {\n if ((t *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n }\n static bounceOut(t: number) {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n } else if (t < 2 / 2.75) {\n return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n } else if (t < 2.5 / 2.75) {\n return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n }\n return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n }\n static bounceIn(t: number) {\n return 1 - Easing.bounceOut(1 - t);\n }\n\n static bounceInOut(t: number) {\n if (t < 0.5) {\n return Easing.bounceIn(t * 2) * 0.5;\n }\n return Easing.bounceOut(t * 2 - 1) * 0.5 + 0.5;\n }\n\n /* 语法糖 */\n static getElasticIn(amplitude: number, period: number) {\n return function (t: number) {\n if (t === 0 || t === 1) {\n return t;\n }\n const s = (period / pi2) * Math.asin(1 / amplitude);\n return -(amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period));\n };\n }\n static getElasticOut(amplitude: number, period: number) {\n return function (t: number) {\n if (t === 0 || t === 1) {\n return t;\n }\n const s = (period / pi2) * Math.asin(1 / amplitude);\n return amplitude * Math.pow(2, -10 * t) * Math.sin(((t - s) * pi2) / period) + 1;\n };\n }\n static getElasticInOut(amplitude: number, period: number) {\n return function (t: number) {\n const s = (period / pi2) * Math.asin(1 / amplitude);\n if ((t *= 2) < 1) {\n return -0.5 * (amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period));\n }\n return amplitude * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period) * 0.5 + 1;\n };\n }\n\n // 插值函数\n static elasticIn = Easing.getElasticIn(1, 0.3);\n static elasticOut = Easing.getElasticOut(1, 0.3);\n static elasticInOut = Easing.getElasticInOut(1, 0.3 * 1.5);\n\n static easeInOutQuad = (t: number) => {\n if ((t /= 0.5) < 1) {\n return 0.5 * Math.pow(t, 2);\n }\n return -0.5 * ((t -= 2) * t - 2);\n };\n\n static easeOutElastic = (x: number) => {\n const c4 = (2 * Math.PI) / 3;\n\n return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n };\n\n static easeInOutElastic = (x: number) => {\n const c5 = (2 * Math.PI) / 4.5;\n\n return x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2\n : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/animate/easing.ts"],"names":[],"mappings":"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","file":"easing.js","sourcesContent":["/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 gskinner.com, inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\n// 参考TweenJS\n// https://github.com/CreateJS/TweenJS/tree/master/src/tweenjs\nimport { pi2 } from '@visactor/vutils';\n\n/**\n * 代码迁移自createjs\n * 部分缓动函数参考https://easings.net/\n */\nexport class Easing {\n private constructor() {\n // do nothing\n }\n\n static linear(t: number): number {\n return t;\n }\n\n static none() {\n return this.linear;\n }\n\n /**\n * 获取缓动函数,amount指示这个缓动函数的插值方式\n * @param amount\n * @returns\n */\n static get(amount: number) {\n if (amount < -1) {\n amount = -1;\n } else if (amount > 1) {\n amount = 1;\n }\n\n return function (t: number) {\n if (amount === 0) {\n return t;\n }\n if (amount < 0) {\n return t * (t * -amount + 1 + amount);\n }\n return t * ((2 - t) * amount + (1 - amount));\n };\n }\n\n /* 语法糖 */\n static getPowIn(pow: number) {\n return function (t: number) {\n return Math.pow(t, pow);\n };\n }\n\n static getPowOut(pow: number) {\n return function (t: number) {\n return 1 - Math.pow(1 - t, pow);\n };\n }\n\n static getPowInOut(pow: number) {\n return function (t: number) {\n if ((t *= 2) < 1) {\n return 0.5 * Math.pow(t, pow);\n }\n return 1 - 0.5 * Math.abs(Math.pow(2 - t, pow));\n };\n }\n\n // 插值函数\n static quadIn = Easing.getPowIn(2);\n static quadOut = Easing.getPowOut(2);\n\n static quadInOut = Easing.getPowInOut(2);\n static cubicIn = Easing.getPowIn(3);\n static cubicOut = Easing.getPowOut(3);\n static cubicInOut = Easing.getPowInOut(3);\n static quartIn = Easing.getPowIn(4);\n static quartOut = Easing.getPowOut(4);\n static quartInOut = Easing.getPowInOut(4);\n static quintIn = Easing.getPowIn(5);\n static quintOut = Easing.getPowOut(5);\n static quintInOut = Easing.getPowInOut(5);\n\n /* 语法糖 */\n static getBackIn(amount: number) {\n return function (t: number) {\n return t * t * ((amount + 1) * t - amount);\n };\n }\n static getBackOut(amount: number) {\n return function (t: number) {\n return --t * t * ((amount + 1) * t + amount) + 1;\n };\n }\n static getBackInOut(amount: number) {\n amount *= 1.525;\n return function (t: number) {\n if ((t *= 2) < 1) {\n return 0.5 * (t * t * ((amount + 1) * t - amount));\n }\n return 0.5 * ((t -= 2) * t * ((amount + 1) * t + amount) + 2);\n };\n }\n\n // 插值函数\n static backIn = Easing.getBackIn(1.7);\n static backOut = Easing.getBackOut(1.7);\n static backInOut = Easing.getBackInOut(1.7);\n\n static sineIn(t: number): number {\n return 1 - Math.cos((t * Math.PI) / 2);\n }\n\n static sineOut(t: number): number {\n return Math.sin((t * Math.PI) / 2);\n }\n\n static sineInOut(t: number): number {\n return -(Math.cos(Math.PI * t) - 1) / 2;\n }\n\n static expoIn(t: number): number {\n return t === 0 ? 0 : Math.pow(2, 10 * t - 10);\n }\n\n static expoOut(t: number): number {\n return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);\n }\n\n static expoInOut(t: number): number {\n return t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2;\n }\n\n // 插值函数\n static circIn(t: number) {\n return -(Math.sqrt(1 - t * t) - 1);\n }\n\n static circOut(t: number) {\n return Math.sqrt(1 - --t * t);\n }\n\n static circInOut(t: number) {\n if ((t *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n }\n static bounceOut(t: number) {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n } else if (t < 2 / 2.75) {\n return 7.5625 * (t -= 1.5 / 2.75) * t + 0.75;\n } else if (t < 2.5 / 2.75) {\n return 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375;\n }\n return 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n }\n static bounceIn(t: number) {\n return 1 - Easing.bounceOut(1 - t);\n }\n\n static bounceInOut(t: number) {\n if (t < 0.5) {\n return Easing.bounceIn(t * 2) * 0.5;\n }\n return Easing.bounceOut(t * 2 - 1) * 0.5 + 0.5;\n }\n\n /* 语法糖 */\n static getElasticIn(amplitude: number, period: number) {\n return function (t: number) {\n if (t === 0 || t === 1) {\n return t;\n }\n const s = (period / pi2) * Math.asin(1 / amplitude);\n return -(amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period));\n };\n }\n static getElasticOut(amplitude: number, period: number) {\n return function (t: number) {\n if (t === 0 || t === 1) {\n return t;\n }\n const s = (period / pi2) * Math.asin(1 / amplitude);\n return amplitude * Math.pow(2, -10 * t) * Math.sin(((t - s) * pi2) / period) + 1;\n };\n }\n static getElasticInOut(amplitude: number, period: number) {\n return function (t: number) {\n const s = (period / pi2) * Math.asin(1 / amplitude);\n if ((t *= 2) < 1) {\n return -0.5 * (amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period));\n }\n return amplitude * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t - s) * pi2) / period) * 0.5 + 1;\n };\n }\n\n // 插值函数\n static elasticIn = Easing.getElasticIn(1, 0.3);\n static elasticOut = Easing.getElasticOut(1, 0.3);\n static elasticInOut = Easing.getElasticInOut(1, 0.3 * 1.5);\n\n static easeInOutQuad = (t: number) => {\n if ((t /= 0.5) < 1) {\n return 0.5 * Math.pow(t, 2);\n }\n return -0.5 * ((t -= 2) * t - 2);\n };\n\n static easeOutElastic = (x: number) => {\n const c4 = (2 * Math.PI) / 3;\n\n return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n };\n\n static easeInOutElastic = (x: number) => {\n const c5 = (2 * Math.PI) / 4.5;\n\n return x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2\n : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n };\n static registerFunc(name: string, func: (t: number) => number) {\n (Easing as any)[name] = func;\n }\n}\n"]}
@@ -5,3 +5,4 @@ export * from './custom-animate';
5
5
  export * from './morphing';
6
6
  export * from './timeline';
7
7
  export * from './group-fade';
8
+ export * from './easing';
@@ -20,5 +20,5 @@ Object.defineProperty(exports, "__esModule", {
20
20
  }), __exportStar(require("./Ticker"), exports), __exportStar(require("./animate"), exports),
21
21
  __exportStar(require("./config"), exports), __exportStar(require("./custom-animate"), exports),
22
22
  __exportStar(require("./morphing"), exports), __exportStar(require("./timeline"), exports),
23
- __exportStar(require("./group-fade"), exports);
23
+ __exportStar(require("./group-fade"), exports), __exportStar(require("./easing"), exports);
24
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animate/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B","file":"index.js","sourcesContent":["export * from './Ticker';\nexport * from './animate';\nexport * from './config';\nexport * from './custom-animate';\nexport * from './morphing';\nexport * from './timeline';\nexport * from './group-fade';\n"]}
1
+ {"version":3,"sources":["../src/animate/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,mDAAiC;AACjC,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B;AAC7B,2CAAyB","file":"index.js","sourcesContent":["export * from './Ticker';\nexport * from './animate';\nexport * from './config';\nexport * from './custom-animate';\nexport * from './morphing';\nexport * from './timeline';\nexport * from './group-fade';\nexport * from './easing';\n"]}
@@ -385,5 +385,4 @@ function containStroke(commands, lineWidth, x, y) {
385
385
  return containPath(commands, lineWidth, !0, x, y);
386
386
  }
387
387
 
388
- exports.contain = contain, exports.containStroke = containStroke;
389
- //# sourceMappingURL=util.js.map
388
+ exports.contain = contain, exports.containStroke = containStroke;
@@ -50,4 +50,5 @@ class ColorStore {
50
50
  }
51
51
  }
52
52
 
53
- exports.ColorStore = ColorStore, ColorStore.store255 = {}, ColorStore.store1 = {};
53
+ exports.ColorStore = ColorStore, ColorStore.store255 = {}, ColorStore.store1 = {};
54
+ //# sourceMappingURL=store.js.map
@@ -207,9 +207,9 @@ class GradientParser {
207
207
  const {orientation: orientation, colorStops: colorStops = []} = datum, halfPi = vutils_1.pi / 2;
208
208
  let angle = "angular" === orientation.type ? parseFloat(orientation.value) / 180 * vutils_1.pi : 0;
209
209
  for (;angle < 0; ) angle += vutils_1.pi2;
210
- for (;angle > vutils_1.pi2; ) angle -= vutils_1.pi2;
210
+ for (;angle >= vutils_1.pi2; ) angle -= vutils_1.pi2;
211
211
  let x0 = 0, y0 = 0, x1 = 0, y1 = 0;
212
- return angle < halfPi ? (x0 = 0, y0 = 1, x1 = Math.sin(angle), y1 = Math.cos(angle)) : angle < vutils_1.pi ? (x0 = 0,
212
+ return angle < halfPi ? (x0 = 0, y0 = 1, x1 = Math.sin(angle), y1 = y0 - Math.cos(angle)) : angle < vutils_1.pi ? (x0 = 0,
213
213
  y0 = 0, x1 = Math.cos(angle - halfPi), y1 = Math.sin(angle - halfPi)) : angle < vutils_1.pi + halfPi ? (x0 = 1,
214
214
  y0 = 0, x1 = x0 - Math.sin(angle - vutils_1.pi), y1 = Math.cos(angle - vutils_1.pi)) : (x0 = 1,
215
215
  x1 = x0 - Math.cos(angle - halfPi - vutils_1.pi), y1 -= Math.sin(angle - halfPi - vutils_1.pi)),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/color-utils.ts"],"names":[],"mappings":"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","file":"color-utils.js","sourcesContent":["// 解析字符串gradient-color\n/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 Rafael Carício\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n// Copyright (c) 2014 Rafael Caricio. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { pi, pi2 } from '@visactor/vutils';\nimport type { IColor, IConicalGradient, ILinearGradient, IRadialGradient } from '../interface';\n\n// @ts-ignore\n\nconst parse = (function () {\n const tokens = {\n linearGradient: /^(linear\\-gradient)/i,\n radialGradient: /^(radial\\-gradient)/i,\n conicGradient: /^(conic\\-gradient)/i,\n sideOrCorner:\n /^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,\n extentKeywords: /^(closest\\-side|closest\\-corner|farthest\\-side|farthest\\-corner|contain|cover)/,\n positionKeywords: /^(left|center|right|top|bottom)/i,\n pixelValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))px/,\n percentageValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))\\%/,\n emValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))em/,\n angleValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n fromAngleValue: /^from\\s*(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n startCall: /^\\(/,\n endCall: /^\\)/,\n comma: /^,/,\n hexColor: /(^\\#[0-9a-fA-F]+)/,\n literalColor: /^([a-zA-Z]+)/,\n rgbColor: /^(rgb\\(\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}\\))/i,\n rgbaColor: /^(rgba\\(\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3},\\s*((\\d\\.\\d+)|\\d{1,3})\\))/i,\n number: /^(([0-9]*\\.[0-9]+)|([0-9]+\\.?))/\n };\n\n let input = '';\n\n function error(msg: any) {\n const err: any = new Error(input + ': ' + msg);\n err.source = input;\n throw err;\n }\n\n function getAST() {\n const ast = matchListDefinitions();\n\n if (input.length > 0) {\n error('Invalid input not EOF');\n }\n\n return ast;\n }\n\n function matchListDefinitions() {\n return matchListing(matchDefinition);\n }\n\n function matchDefinition() {\n return (\n matchGradient('linear', tokens.linearGradient, matchLinearOrientation) ||\n matchGradient('radial', tokens.radialGradient, matchListRadialOrientations) ||\n matchGradient('conic', tokens.conicGradient, matchConicalOrientation)\n );\n }\n\n function matchGradient(gradientType: string, pattern: RegExp, orientationMatcher: any) {\n return matchCall(pattern, function (captures: any) {\n const orientation = orientationMatcher();\n if (orientation) {\n if (!scan(tokens.comma)) {\n error('Missing comma before color stops');\n }\n }\n\n return {\n type: gradientType,\n orientation: orientation,\n colorStops: matchListing(matchColorStop)\n };\n });\n }\n\n function matchCall(pattern: RegExp, callback: any) {\n const captures = scan(pattern);\n\n if (captures) {\n if (!scan(tokens.startCall)) {\n error('Missing (');\n }\n\n const result = callback(captures);\n\n if (!scan(tokens.endCall)) {\n error('Missing )');\n }\n\n return result;\n }\n }\n\n function matchLinearOrientation() {\n return matchSideOrCorner() || matchAngle();\n }\n function matchConicalOrientation() {\n return matchFromAngle();\n }\n\n function matchSideOrCorner() {\n return match('directional', tokens.sideOrCorner, 1);\n }\n\n function matchAngle() {\n return match('angular', tokens.angleValue, 1);\n }\n function matchFromAngle() {\n return match('angular', tokens.fromAngleValue, 1);\n }\n\n function matchListRadialOrientations() {\n let radialOrientations;\n let radialOrientation = matchRadialOrientation();\n let lookaheadCache;\n\n if (radialOrientation) {\n radialOrientations = [];\n radialOrientations.push(radialOrientation);\n\n lookaheadCache = input;\n if (scan(tokens.comma)) {\n radialOrientation = matchRadialOrientation();\n if (radialOrientation) {\n radialOrientations.push(radialOrientation);\n } else {\n input = lookaheadCache;\n }\n }\n }\n\n return radialOrientations;\n }\n\n function matchRadialOrientation() {\n let radialType: any = matchCircle() || matchEllipse();\n\n if (radialType) {\n radialType.at = matchAtPosition();\n } else {\n const extent = matchExtentKeyword();\n if (extent) {\n radialType = extent;\n const positionAt = matchAtPosition();\n if (positionAt) {\n radialType.at = positionAt;\n }\n } else {\n const defaultPosition = matchPositioning();\n if (defaultPosition) {\n radialType = {\n type: 'default-radial',\n at: defaultPosition\n };\n }\n }\n }\n\n return radialType;\n }\n\n function matchCircle() {\n const circle: any = match('shape', /^(circle)/i, 0);\n\n if (circle) {\n circle.style = matchLength() || matchExtentKeyword();\n }\n\n return circle;\n }\n\n function matchEllipse() {\n const ellipse: any = match('shape', /^(ellipse)/i, 0);\n\n if (ellipse) {\n ellipse.style = matchDistance() || matchExtentKeyword();\n }\n\n return ellipse;\n }\n\n function matchExtentKeyword() {\n return match('extent-keyword', tokens.extentKeywords, 1);\n }\n\n function matchAtPosition() {\n if (match('position', /^at/, 0)) {\n const positioning = matchPositioning();\n\n if (!positioning) {\n error('Missing positioning value');\n }\n\n return positioning;\n }\n }\n\n function matchPositioning() {\n const location = matchCoordinates();\n\n if (location.x || location.y) {\n return {\n type: 'position',\n value: location\n };\n }\n }\n\n function matchCoordinates() {\n return {\n x: matchDistance(),\n y: matchDistance()\n };\n }\n\n function matchListing(matcher: any) {\n let captures = matcher();\n const result = [];\n\n if (captures) {\n result.push(captures);\n while (scan(tokens.comma)) {\n captures = matcher();\n if (captures) {\n result.push(captures);\n } else {\n error('One extra comma');\n }\n }\n }\n\n return result;\n }\n\n function matchColorStop() {\n const color: any = matchColor();\n\n if (!color) {\n error('Expected color definition');\n }\n\n color.length = matchDistance();\n return color;\n }\n\n function matchColor() {\n return matchHexColor() || matchRGBAColor() || matchRGBColor() || matchLiteralColor();\n }\n\n function matchLiteralColor() {\n return match('literal', tokens.literalColor, 0);\n }\n\n function matchHexColor() {\n return match('hex', tokens.hexColor, 1);\n }\n\n function matchRGBColor() {\n return match('rgb', tokens.rgbColor, 1);\n }\n\n function matchRGBAColor() {\n return match('rgba', tokens.rgbaColor, 1);\n }\n\n function matchNumber() {\n return scan(tokens.number)[1];\n }\n\n function matchDistance() {\n return match('%', tokens.percentageValue, 1) || matchPositionKeyword() || matchLength();\n }\n\n function matchPositionKeyword() {\n return match('position-keyword', tokens.positionKeywords, 1);\n }\n\n function matchLength() {\n return match('px', tokens.pixelValue, 1) || match('em', tokens.emValue, 1);\n }\n\n function match(type: string, pattern: RegExp, captureIndex: number) {\n const captures = scan(pattern);\n if (captures) {\n return {\n type: type,\n value: captures[captureIndex]\n };\n }\n }\n\n function scan(regexp: RegExp) {\n const blankCaptures = /^[\\n\\r\\t\\s]+/.exec(input);\n if (blankCaptures) {\n consume(blankCaptures[0].length);\n }\n\n const captures = regexp.exec(input);\n if (captures) {\n consume(captures[0].length);\n }\n\n return captures;\n }\n\n function consume(size: number) {\n input = input.substr(size);\n }\n\n return function (code: string) {\n input = code.toString();\n return getAST();\n };\n})();\n\nexport class GradientParser {\n static IsGradient(c: IColor) {\n return !(typeof c === 'string' && !c.includes('gradient'));\n }\n\n static IsGradientStr(c: IColor) {\n return typeof c === 'string' && c.includes('gradient');\n }\n\n static Parse(c: IColor): IColor {\n if (GradientParser.IsGradientStr(c)) {\n try {\n const data = parse(c as string);\n const datum = data[0];\n if (datum) {\n if (datum.type === 'linear') {\n return GradientParser.ParseLinear(datum);\n } else if (datum.type === 'radial') {\n return GradientParser.ParseRadial(datum);\n } else if (datum.type === 'conic') {\n return GradientParser.ParseConic(datum);\n }\n }\n } catch (err) {\n return c;\n }\n }\n return c;\n }\n private static ParseConic(datum: any): IConicalGradient {\n const { orientation, colorStops = [] } = datum;\n const halfPi = pi / 2;\n const sa = (parseFloat(orientation.value) / 180) * pi - halfPi;\n return {\n gradient: 'conical',\n x: 0.5,\n y: 0.5,\n startAngle: sa,\n endAngle: sa + pi2,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n private static ParseRadial(datum: any): IRadialGradient {\n const { colorStops = [] } = datum;\n return {\n gradient: 'radial',\n x0: 0.5,\n y0: 0.5,\n x1: 0.5,\n y1: 0.5,\n r0: 0,\n r1: 1,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n private static ParseLinear(datum: any): ILinearGradient {\n const { orientation, colorStops = [] } = datum;\n const halfPi = pi / 2;\n let angle = orientation.type === 'angular' ? (parseFloat(orientation.value) / 180) * pi : 0;\n while (angle < 0) {\n angle += pi2;\n }\n while (angle > pi2) {\n angle -= pi2;\n }\n let x0 = 0;\n let y0 = 0;\n let x1 = 0;\n let y1 = 0;\n if (angle < halfPi) {\n x0 = 0;\n y0 = 1;\n x1 = Math.sin(angle);\n y1 = Math.cos(angle);\n } else if (angle < pi) {\n x0 = 0;\n y0 = 0;\n x1 = Math.cos(angle - halfPi);\n y1 = Math.sin(angle - halfPi);\n } else if (angle < pi + halfPi) {\n x0 = 1;\n y0 = 0;\n x1 = x0 - Math.sin(angle - pi);\n y1 = Math.cos(angle - pi);\n } else {\n x0 = 1;\n y0 - 1;\n x1 = x0 - Math.cos(angle - halfPi - pi);\n y1 = y1 - Math.sin(angle - halfPi - pi);\n }\n return {\n gradient: 'linear',\n x0,\n y0,\n x1,\n y1,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/color-utils.ts"],"names":[],"mappings":"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","file":"color-utils.js","sourcesContent":["// 解析字符串gradient-color\n/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 Rafael Carício\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n// Copyright (c) 2014 Rafael Caricio. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { pi, pi2 } from '@visactor/vutils';\nimport type { IColor, IConicalGradient, ILinearGradient, IRadialGradient } from '../interface';\n\n// @ts-ignore\n\nconst parse = (function () {\n const tokens = {\n linearGradient: /^(linear\\-gradient)/i,\n radialGradient: /^(radial\\-gradient)/i,\n conicGradient: /^(conic\\-gradient)/i,\n sideOrCorner:\n /^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,\n extentKeywords: /^(closest\\-side|closest\\-corner|farthest\\-side|farthest\\-corner|contain|cover)/,\n positionKeywords: /^(left|center|right|top|bottom)/i,\n pixelValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))px/,\n percentageValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))\\%/,\n emValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))em/,\n angleValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n fromAngleValue: /^from\\s*(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n startCall: /^\\(/,\n endCall: /^\\)/,\n comma: /^,/,\n hexColor: /(^\\#[0-9a-fA-F]+)/,\n literalColor: /^([a-zA-Z]+)/,\n rgbColor: /^(rgb\\(\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}\\))/i,\n rgbaColor: /^(rgba\\(\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3},\\s*((\\d\\.\\d+)|\\d{1,3})\\))/i,\n number: /^(([0-9]*\\.[0-9]+)|([0-9]+\\.?))/\n };\n\n let input = '';\n\n function error(msg: any) {\n const err: any = new Error(input + ': ' + msg);\n err.source = input;\n throw err;\n }\n\n function getAST() {\n const ast = matchListDefinitions();\n\n if (input.length > 0) {\n error('Invalid input not EOF');\n }\n\n return ast;\n }\n\n function matchListDefinitions() {\n return matchListing(matchDefinition);\n }\n\n function matchDefinition() {\n return (\n matchGradient('linear', tokens.linearGradient, matchLinearOrientation) ||\n matchGradient('radial', tokens.radialGradient, matchListRadialOrientations) ||\n matchGradient('conic', tokens.conicGradient, matchConicalOrientation)\n );\n }\n\n function matchGradient(gradientType: string, pattern: RegExp, orientationMatcher: any) {\n return matchCall(pattern, function (captures: any) {\n const orientation = orientationMatcher();\n if (orientation) {\n if (!scan(tokens.comma)) {\n error('Missing comma before color stops');\n }\n }\n\n return {\n type: gradientType,\n orientation: orientation,\n colorStops: matchListing(matchColorStop)\n };\n });\n }\n\n function matchCall(pattern: RegExp, callback: any) {\n const captures = scan(pattern);\n\n if (captures) {\n if (!scan(tokens.startCall)) {\n error('Missing (');\n }\n\n const result = callback(captures);\n\n if (!scan(tokens.endCall)) {\n error('Missing )');\n }\n\n return result;\n }\n }\n\n function matchLinearOrientation() {\n return matchSideOrCorner() || matchAngle();\n }\n function matchConicalOrientation() {\n return matchFromAngle();\n }\n\n function matchSideOrCorner() {\n return match('directional', tokens.sideOrCorner, 1);\n }\n\n function matchAngle() {\n return match('angular', tokens.angleValue, 1);\n }\n function matchFromAngle() {\n return match('angular', tokens.fromAngleValue, 1);\n }\n\n function matchListRadialOrientations() {\n let radialOrientations;\n let radialOrientation = matchRadialOrientation();\n let lookaheadCache;\n\n if (radialOrientation) {\n radialOrientations = [];\n radialOrientations.push(radialOrientation);\n\n lookaheadCache = input;\n if (scan(tokens.comma)) {\n radialOrientation = matchRadialOrientation();\n if (radialOrientation) {\n radialOrientations.push(radialOrientation);\n } else {\n input = lookaheadCache;\n }\n }\n }\n\n return radialOrientations;\n }\n\n function matchRadialOrientation() {\n let radialType: any = matchCircle() || matchEllipse();\n\n if (radialType) {\n radialType.at = matchAtPosition();\n } else {\n const extent = matchExtentKeyword();\n if (extent) {\n radialType = extent;\n const positionAt = matchAtPosition();\n if (positionAt) {\n radialType.at = positionAt;\n }\n } else {\n const defaultPosition = matchPositioning();\n if (defaultPosition) {\n radialType = {\n type: 'default-radial',\n at: defaultPosition\n };\n }\n }\n }\n\n return radialType;\n }\n\n function matchCircle() {\n const circle: any = match('shape', /^(circle)/i, 0);\n\n if (circle) {\n circle.style = matchLength() || matchExtentKeyword();\n }\n\n return circle;\n }\n\n function matchEllipse() {\n const ellipse: any = match('shape', /^(ellipse)/i, 0);\n\n if (ellipse) {\n ellipse.style = matchDistance() || matchExtentKeyword();\n }\n\n return ellipse;\n }\n\n function matchExtentKeyword() {\n return match('extent-keyword', tokens.extentKeywords, 1);\n }\n\n function matchAtPosition() {\n if (match('position', /^at/, 0)) {\n const positioning = matchPositioning();\n\n if (!positioning) {\n error('Missing positioning value');\n }\n\n return positioning;\n }\n }\n\n function matchPositioning() {\n const location = matchCoordinates();\n\n if (location.x || location.y) {\n return {\n type: 'position',\n value: location\n };\n }\n }\n\n function matchCoordinates() {\n return {\n x: matchDistance(),\n y: matchDistance()\n };\n }\n\n function matchListing(matcher: any) {\n let captures = matcher();\n const result = [];\n\n if (captures) {\n result.push(captures);\n while (scan(tokens.comma)) {\n captures = matcher();\n if (captures) {\n result.push(captures);\n } else {\n error('One extra comma');\n }\n }\n }\n\n return result;\n }\n\n function matchColorStop() {\n const color: any = matchColor();\n\n if (!color) {\n error('Expected color definition');\n }\n\n color.length = matchDistance();\n return color;\n }\n\n function matchColor() {\n return matchHexColor() || matchRGBAColor() || matchRGBColor() || matchLiteralColor();\n }\n\n function matchLiteralColor() {\n return match('literal', tokens.literalColor, 0);\n }\n\n function matchHexColor() {\n return match('hex', tokens.hexColor, 1);\n }\n\n function matchRGBColor() {\n return match('rgb', tokens.rgbColor, 1);\n }\n\n function matchRGBAColor() {\n return match('rgba', tokens.rgbaColor, 1);\n }\n\n function matchNumber() {\n return scan(tokens.number)[1];\n }\n\n function matchDistance() {\n return match('%', tokens.percentageValue, 1) || matchPositionKeyword() || matchLength();\n }\n\n function matchPositionKeyword() {\n return match('position-keyword', tokens.positionKeywords, 1);\n }\n\n function matchLength() {\n return match('px', tokens.pixelValue, 1) || match('em', tokens.emValue, 1);\n }\n\n function match(type: string, pattern: RegExp, captureIndex: number) {\n const captures = scan(pattern);\n if (captures) {\n return {\n type: type,\n value: captures[captureIndex]\n };\n }\n }\n\n function scan(regexp: RegExp) {\n const blankCaptures = /^[\\n\\r\\t\\s]+/.exec(input);\n if (blankCaptures) {\n consume(blankCaptures[0].length);\n }\n\n const captures = regexp.exec(input);\n if (captures) {\n consume(captures[0].length);\n }\n\n return captures;\n }\n\n function consume(size: number) {\n input = input.substr(size);\n }\n\n return function (code: string) {\n input = code.toString();\n return getAST();\n };\n})();\n\nexport class GradientParser {\n static IsGradient(c: IColor) {\n return !(typeof c === 'string' && !c.includes('gradient'));\n }\n\n static IsGradientStr(c: IColor) {\n return typeof c === 'string' && c.includes('gradient');\n }\n\n static Parse(c: IColor): IColor {\n if (GradientParser.IsGradientStr(c)) {\n try {\n const data = parse(c as string);\n const datum = data[0];\n if (datum) {\n if (datum.type === 'linear') {\n return GradientParser.ParseLinear(datum);\n } else if (datum.type === 'radial') {\n return GradientParser.ParseRadial(datum);\n } else if (datum.type === 'conic') {\n return GradientParser.ParseConic(datum);\n }\n }\n } catch (err) {\n return c;\n }\n }\n return c;\n }\n private static ParseConic(datum: any): IConicalGradient {\n const { orientation, colorStops = [] } = datum;\n const halfPi = pi / 2;\n const sa = (parseFloat(orientation.value) / 180) * pi - halfPi;\n return {\n gradient: 'conical',\n x: 0.5,\n y: 0.5,\n startAngle: sa,\n endAngle: sa + pi2,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n private static ParseRadial(datum: any): IRadialGradient {\n const { colorStops = [] } = datum;\n return {\n gradient: 'radial',\n x0: 0.5,\n y0: 0.5,\n x1: 0.5,\n y1: 0.5,\n r0: 0,\n r1: 1,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n private static ParseLinear(datum: any): ILinearGradient {\n const { orientation, colorStops = [] } = datum;\n const halfPi = pi / 2;\n let angle = orientation.type === 'angular' ? (parseFloat(orientation.value) / 180) * pi : 0;\n while (angle < 0) {\n angle += pi2;\n }\n while (angle >= pi2) {\n angle -= pi2;\n }\n let x0 = 0;\n let y0 = 0;\n let x1 = 0;\n let y1 = 0;\n if (angle < halfPi) {\n x0 = 0;\n y0 = 1;\n x1 = Math.sin(angle);\n y1 = y0 - Math.cos(angle);\n } else if (angle < pi) {\n x0 = 0;\n y0 = 0;\n x1 = Math.cos(angle - halfPi);\n y1 = Math.sin(angle - halfPi);\n } else if (angle < pi + halfPi) {\n x0 = 1;\n y0 = 0;\n x1 = x0 - Math.sin(angle - pi);\n y1 = Math.cos(angle - pi);\n } else {\n x0 = 1;\n y0 - 1;\n x1 = x0 - Math.cos(angle - halfPi - pi);\n y1 = y1 - Math.sin(angle - halfPi - pi);\n }\n return {\n gradient: 'linear',\n x0,\n y0,\n x1,\n y1,\n stops: colorStops.map((item: any) => {\n return {\n color: item.value,\n offset: parseFloat(item.length.value) / 100\n };\n })\n };\n }\n}\n"]}
@@ -38,4 +38,5 @@ export declare class RafBasedSTO {
38
38
  appendDuration(d: number): void;
39
39
  }
40
40
  export declare const rafBasedSto: RafBasedSTO;
41
+ export declare const _calculateLineHeight: (lineHeight: string | number, fontSize: number) => number;
41
42
  export declare const calculateLineHeight: (lineHeight: string | number, fontSize: number) => number;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.calculateLineHeight = exports.rafBasedSto = exports.RafBasedSTO = exports.getAttributeFromDefaultAttrList = exports.isTransformKey = exports.transformKeys = exports.pointsInterpolation = exports.pointInterpolationHighPerformance = exports.pointInterpolation = exports.pointEqual = exports.pointsEqual = exports.circleBounds = exports.parsePadding = exports.parseStroke = exports.Edge = void 0;
5
+ }), exports.calculateLineHeight = exports._calculateLineHeight = exports.rafBasedSto = exports.RafBasedSTO = exports.getAttributeFromDefaultAttrList = exports.isTransformKey = exports.transformKeys = exports.pointsInterpolation = exports.pointInterpolationHighPerformance = exports.pointInterpolation = exports.pointEqual = exports.pointsEqual = exports.circleBounds = exports.parsePadding = exports.parseStroke = exports.Edge = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils");
8
8
 
@@ -152,12 +152,19 @@ class RafBasedSTO {
152
152
 
153
153
  exports.RafBasedSTO = RafBasedSTO, RafBasedSTO.TimeOut = 1e3 / 60, exports.rafBasedSto = new RafBasedSTO;
154
154
 
155
- const calculateLineHeight = (lineHeight, fontSize) => {
155
+ const _calculateLineHeight = (lineHeight, fontSize) => {
156
156
  if ((0, vutils_1.isString)(lineHeight) && "%" === lineHeight[lineHeight.length - 1]) {
157
157
  return fontSize * (Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100);
158
158
  }
159
159
  return lineHeight;
160
160
  };
161
161
 
162
+ exports._calculateLineHeight = _calculateLineHeight;
163
+
164
+ const calculateLineHeight = (lineHeight, fontSize) => {
165
+ const _lh = (0, exports._calculateLineHeight)(lineHeight, fontSize);
166
+ return isNaN(_lh) ? _lh : Math.max(fontSize, _lh);
167
+ };
168
+
162
169
  exports.calculateLineHeight = calculateLineHeight;
163
170
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, halfPi, pi, pi2, sin, cos, isArray, pointAt, Point, isString } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor(timeout: number = RafBasedSTO.TimeOut) {\n this.durations = [];\n this.timeout = timeout;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n\nexport const calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n if (isString(lineHeight) && lineHeight[lineHeight.length - 1] === '%') {\n const scale = Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100;\n return fontSize * scale;\n }\n return lineHeight as number;\n};\n"]}
1
+ {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, halfPi, pi, pi2, sin, cos, isArray, pointAt, Point, isString } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor(timeout: number = RafBasedSTO.TimeOut) {\n this.durations = [];\n this.timeout = timeout;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n\nexport const _calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n if (isString(lineHeight) && lineHeight[lineHeight.length - 1] === '%') {\n const scale = Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100;\n return fontSize * scale;\n }\n return lineHeight as number;\n};\n\nexport const calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n const _lh = _calculateLineHeight(lineHeight, fontSize);\n return isNaN(_lh) ? _lh : Math.max(fontSize, _lh);\n};\n"]}
@@ -1,18 +1,70 @@
1
1
  import type { IGraphicUtil } from '../../../interface/core';
2
2
  import type { ICanvas, IContext2d, EnvType } from '../../../interface';
3
+ import { MeasureModeEnum } from '../../../interface';
3
4
  import type { TextOptionsType, ITextMeasure } from '../../../interface/text';
4
5
  export declare class ATextMeasure implements ITextMeasure {
5
6
  release: (...params: any) => void;
6
7
  protected canvas?: ICanvas;
7
8
  protected context?: IContext2d | null;
8
9
  configure(service: IGraphicUtil, env: EnvType): void;
9
- measureTextWidth(text: string, options: TextOptionsType): number;
10
- estimate(text: string, { fontSize }: TextOptionsType): {
10
+ protected _measureTextWithoutAlignBaseline(text: string, options: TextOptionsType, compatible?: boolean): {
11
+ width: number;
12
+ } | TextMetrics;
13
+ protected _measureTextWithAlignBaseline(text: string, options: TextOptionsType, compatible?: boolean): {
14
+ width: number;
15
+ } | TextMetrics;
16
+ protected compatibleMetrics(metrics: TextMetrics | {
17
+ width: number;
18
+ }, options: TextOptionsType): TextMetrics | {
19
+ width: number;
20
+ };
21
+ protected estimate(text: string, { fontSize }: TextOptionsType): {
11
22
  width: number;
12
23
  height: number;
13
24
  };
14
- measureTextPixelHeight(text: string, options: TextOptionsType): number;
15
- measureTextBoundHieght(text: string, options: TextOptionsType): number;
25
+ measureTextWidth(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
26
+ width: number;
27
+ }): number;
28
+ measureTextBoundsWidth(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
29
+ width: number;
30
+ }): number;
31
+ measureTextBoundsLeftRight(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
32
+ width: number;
33
+ }): {
34
+ left: any;
35
+ right: any;
36
+ };
37
+ measureTextPixelHeight(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
38
+ width: number;
39
+ }): number;
40
+ measureTextPixelADscent(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
41
+ width: number;
42
+ }): {
43
+ ascent: any;
44
+ descent: any;
45
+ };
46
+ measureTextBoundHieght(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
47
+ width: number;
48
+ }): number;
49
+ measureTextBoundADscent(text: string, options: TextOptionsType, textMeasure?: TextMetrics | {
50
+ width: number;
51
+ }): {
52
+ ascent: any;
53
+ descent: any;
54
+ };
55
+ protected measureTextBoundADscentEstimate(options: TextOptionsType): {
56
+ ascent: number;
57
+ descent: number;
58
+ };
59
+ protected measureTextBoundLeftRightEstimate(options: TextOptionsType): {
60
+ left: number;
61
+ right: number;
62
+ };
63
+ measureTextPixelADscentAndWidth(text: string, options: TextOptionsType, mode: MeasureModeEnum): {
64
+ width: number;
65
+ ascent: number;
66
+ descent: number;
67
+ };
16
68
  measureText(text: string, options: TextOptionsType): TextMetrics | {
17
69
  width: number;
18
70
  };