@nativescript-community/ui-chart 1.2.36 → 2.0.1

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 (365) hide show
  1. package/README.md +6 -0
  2. package/animation/ChartAnimator.d.ts +47 -4
  3. package/animation/ChartAnimator.js +49 -11
  4. package/animation/ChartAnimator.js.map +1 -1
  5. package/animation/Tween.d.ts +1 -1
  6. package/animation/Tween.js +4 -2
  7. package/animation/Tween.js.map +1 -1
  8. package/buffer/AbstractBuffer.d.ts +28 -3
  9. package/buffer/AbstractBuffer.js +22 -3
  10. package/buffer/AbstractBuffer.js.map +1 -1
  11. package/buffer/BarBuffer.d.ts +8 -12
  12. package/buffer/BarBuffer.js +33 -36
  13. package/buffer/BarBuffer.js.map +1 -1
  14. package/buffer/HorizontalBarBuffer.js +13 -10
  15. package/buffer/HorizontalBarBuffer.js.map +1 -1
  16. package/charts/BarChart.d.ts +70 -15
  17. package/charts/BarChart.js +92 -63
  18. package/charts/BarChart.js.map +1 -1
  19. package/charts/BarLineChartBase.d.ts +494 -73
  20. package/charts/BarLineChartBase.js +788 -407
  21. package/charts/BarLineChartBase.js.map +1 -1
  22. package/charts/BubbleChart.d.ts +11 -5
  23. package/charts/BubbleChart.js +10 -8
  24. package/charts/BubbleChart.js.map +1 -1
  25. package/charts/CandleStickChart.d.ts +8 -5
  26. package/charts/CandleStickChart.js +9 -10
  27. package/charts/CandleStickChart.js.map +1 -1
  28. package/charts/Chart.d.ts +420 -91
  29. package/charts/Chart.js +590 -290
  30. package/charts/Chart.js.map +1 -1
  31. package/charts/CombinedChart.d.ts +59 -29
  32. package/charts/CombinedChart.js +74 -67
  33. package/charts/CombinedChart.js.map +1 -1
  34. package/charts/HorizontalBarChart.d.ts +37 -7
  35. package/charts/HorizontalBarChart.js +97 -59
  36. package/charts/HorizontalBarChart.js.map +1 -1
  37. package/charts/LineChart.d.ts +3 -5
  38. package/charts/LineChart.js +6 -10
  39. package/charts/LineChart.js.map +1 -1
  40. package/charts/PieChart.d.ts +218 -64
  41. package/charts/PieChart.js +278 -168
  42. package/charts/PieChart.js.map +1 -1
  43. package/charts/PieRadarChartBase.d.ts +107 -18
  44. package/charts/PieRadarChartBase.js +156 -73
  45. package/charts/PieRadarChartBase.js.map +1 -1
  46. package/charts/RadarChart.d.ts +75 -35
  47. package/charts/RadarChart.js +114 -103
  48. package/charts/RadarChart.js.map +1 -1
  49. package/charts/ScatterChart.d.ts +10 -5
  50. package/charts/ScatterChart.js +11 -10
  51. package/charts/ScatterChart.js.map +1 -1
  52. package/components/AxisBase.d.ts +271 -101
  53. package/components/AxisBase.js +264 -254
  54. package/components/AxisBase.js.map +1 -1
  55. package/components/ComponentBase.d.ts +54 -19
  56. package/components/ComponentBase.js +60 -48
  57. package/components/ComponentBase.js.map +1 -1
  58. package/components/Description.d.ts +18 -9
  59. package/components/Description.js +12 -26
  60. package/components/Description.js.map +1 -1
  61. package/components/IMarker.d.ts +30 -1
  62. package/components/IMarker.js.map +1 -1
  63. package/components/Legend.d.ts +155 -58
  64. package/components/Legend.js +208 -172
  65. package/components/Legend.js.map +1 -1
  66. package/components/LegendEntry.d.ts +38 -0
  67. package/components/LegendEntry.js +34 -0
  68. package/components/LegendEntry.js.map +1 -1
  69. package/components/LimitLine.d.ts +40 -22
  70. package/components/LimitLine.js +44 -56
  71. package/components/LimitLine.js.map +1 -1
  72. package/components/MarkerImage.d.ts +1 -0
  73. package/components/MarkerImage.js +97 -0
  74. package/components/MarkerImage.js.map +1 -0
  75. package/components/XAxis.d.ts +41 -10
  76. package/components/XAxis.js +42 -24
  77. package/components/XAxis.js.map +1 -1
  78. package/components/YAxis.d.ts +114 -37
  79. package/components/YAxis.js +138 -106
  80. package/components/YAxis.js.map +1 -1
  81. package/data/BarData.d.ts +32 -4
  82. package/data/BarData.js +92 -24
  83. package/data/BarData.js.map +1 -1
  84. package/data/BarDataSet.d.ts +35 -18
  85. package/data/BarDataSet.js +42 -47
  86. package/data/BarDataSet.js.map +1 -1
  87. package/data/BarEntry.d.ts +3 -0
  88. package/data/BarEntry.js.map +1 -1
  89. package/data/BarLineScatterCandleBubbleData.d.ts +5 -0
  90. package/data/BarLineScatterCandleBubbleData.js +5 -0
  91. package/data/BarLineScatterCandleBubbleData.js.map +1 -1
  92. package/data/BarLineScatterCandleBubbleDataSet.d.ts +11 -3
  93. package/data/BarLineScatterCandleBubbleDataSet.js +11 -7
  94. package/data/BarLineScatterCandleBubbleDataSet.js.map +1 -1
  95. package/data/BaseDataSet.d.ts +129 -71
  96. package/data/BaseDataSet.js +146 -169
  97. package/data/BaseDataSet.js.map +1 -1
  98. package/data/BaseEntry.d.ts +3 -0
  99. package/data/BaseEntry.js.map +1 -1
  100. package/data/BubbleData.d.ts +7 -1
  101. package/data/BubbleData.js +8 -2
  102. package/data/BubbleData.js.map +1 -1
  103. package/data/BubbleDataSet.d.ts +7 -7
  104. package/data/BubbleDataSet.js +8 -15
  105. package/data/BubbleDataSet.js.map +1 -1
  106. package/data/BubbleEntry.d.ts +1 -0
  107. package/data/BubbleEntry.js.map +1 -1
  108. package/data/CandleData.js.map +1 -1
  109. package/data/CandleDataSet.d.ts +64 -30
  110. package/data/CandleDataSet.js +67 -74
  111. package/data/CandleDataSet.js.map +1 -1
  112. package/data/CandleEntry.d.ts +4 -0
  113. package/data/CandleEntry.js.map +1 -1
  114. package/data/ChartData.d.ts +275 -20
  115. package/data/ChartData.js +400 -95
  116. package/data/ChartData.js.map +1 -1
  117. package/data/CombinedData.d.ts +39 -12
  118. package/data/CombinedData.js +87 -71
  119. package/data/CombinedData.js.map +1 -1
  120. package/data/DataSet.d.ts +59 -8
  121. package/data/DataSet.js +114 -26
  122. package/data/DataSet.js.map +1 -1
  123. package/data/Entry.js.map +1 -1
  124. package/data/LineData.d.ts +5 -0
  125. package/data/LineData.js +5 -0
  126. package/data/LineData.js.map +1 -1
  127. package/data/LineDataSet.d.ts +84 -49
  128. package/data/LineDataSet.js +94 -135
  129. package/data/LineDataSet.js.map +1 -1
  130. package/data/LineRadarDataSet.d.ts +27 -17
  131. package/data/LineRadarDataSet.js +22 -35
  132. package/data/LineRadarDataSet.js.map +1 -1
  133. package/data/LineScatterCandleRadarDataSet.d.ts +30 -15
  134. package/data/LineScatterCandleRadarDataSet.js +36 -39
  135. package/data/LineScatterCandleRadarDataSet.js.map +1 -1
  136. package/data/PieData.d.ts +26 -0
  137. package/data/PieData.js +28 -2
  138. package/data/PieData.js.map +1 -1
  139. package/data/PieDataSet.d.ts +40 -36
  140. package/data/PieDataSet.js +36 -88
  141. package/data/PieDataSet.js.map +1 -1
  142. package/data/PieEntry.d.ts +3 -0
  143. package/data/PieEntry.js.map +1 -1
  144. package/data/RadarData.d.ts +10 -4
  145. package/data/RadarData.js +5 -6
  146. package/data/RadarData.js.map +1 -1
  147. package/data/RadarDataSet.d.ts +7 -21
  148. package/data/RadarDataSet.js +10 -49
  149. package/data/RadarDataSet.js.map +1 -1
  150. package/data/RadarEntry.js.map +1 -1
  151. package/data/ScatterData.d.ts +4 -1
  152. package/data/ScatterData.js +5 -2
  153. package/data/ScatterData.js.map +1 -1
  154. package/data/ScatterDataSet.d.ts +24 -14
  155. package/data/ScatterDataSet.js +26 -31
  156. package/data/ScatterDataSet.js.map +1 -1
  157. package/formatter/DefaultAxisValueFormatter.d.ts +17 -3
  158. package/formatter/DefaultAxisValueFormatter.js +12 -5
  159. package/formatter/DefaultAxisValueFormatter.js.map +1 -1
  160. package/formatter/DefaultFillFormatter.js +7 -7
  161. package/formatter/DefaultFillFormatter.js.map +1 -1
  162. package/formatter/DefaultValueFormatter.js.map +1 -1
  163. package/formatter/IAxisValueFormatter.d.ts +20 -2
  164. package/formatter/IAxisValueFormatter.js.map +1 -1
  165. package/formatter/IFillFormatter.d.ts +25 -0
  166. package/formatter/IFillFormatter.js.map +1 -1
  167. package/formatter/IValueFormatter.d.ts +21 -0
  168. package/formatter/IValueFormatter.js.map +1 -1
  169. package/formatter/ValueFormatter.d.ts +60 -0
  170. package/formatter/ValueFormatter.js +60 -0
  171. package/formatter/ValueFormatter.js.map +1 -1
  172. package/highlight/BarHighlighter.d.ts +22 -2
  173. package/highlight/BarHighlighter.js +43 -17
  174. package/highlight/BarHighlighter.js.map +1 -1
  175. package/highlight/ChartHighlighter.d.ts +87 -5
  176. package/highlight/ChartHighlighter.js +129 -25
  177. package/highlight/ChartHighlighter.js.map +1 -1
  178. package/highlight/CombinedHighlighter.d.ts +6 -0
  179. package/highlight/CombinedHighlighter.js +31 -16
  180. package/highlight/CombinedHighlighter.js.map +1 -1
  181. package/highlight/Highlight.d.ts +54 -1
  182. package/highlight/Highlight.js +5 -0
  183. package/highlight/Highlight.js.map +1 -1
  184. package/highlight/HorizontalBarHighlighter.d.ts +1 -1
  185. package/highlight/HorizontalBarHighlighter.js +14 -13
  186. package/highlight/HorizontalBarHighlighter.js.map +1 -1
  187. package/highlight/IHighlighter.d.ts +11 -1
  188. package/highlight/IHighlighter.js.map +1 -1
  189. package/highlight/PieHighlighter.js +2 -2
  190. package/highlight/PieHighlighter.js.map +1 -1
  191. package/highlight/PieRadarHighlighter.d.ts +12 -1
  192. package/highlight/PieRadarHighlighter.js +12 -4
  193. package/highlight/PieRadarHighlighter.js.map +1 -1
  194. package/highlight/RadarHighlighter.d.ts +12 -0
  195. package/highlight/RadarHighlighter.js +24 -10
  196. package/highlight/RadarHighlighter.js.map +1 -1
  197. package/index.d.ts +11 -0
  198. package/index.js +15 -0
  199. package/index.js.map +1 -0
  200. package/interfaces/dataprovider/BarDataProvider.d.ts +4 -4
  201. package/interfaces/dataprovider/BarLineScatterCandleBubbleDataProvider.d.ts +8 -3
  202. package/interfaces/dataprovider/BubbleDataProvider.d.ts +1 -1
  203. package/interfaces/dataprovider/CandleDataProvider.d.ts +1 -1
  204. package/interfaces/dataprovider/ChartInterface.d.ts +17 -22
  205. package/interfaces/dataprovider/CombinedDataProvider.d.ts +1 -1
  206. package/interfaces/dataprovider/LineDataProvider.d.ts +1 -1
  207. package/interfaces/dataprovider/ScatterDataProvider.d.ts +1 -1
  208. package/interfaces/datasets/IBarDataSet.d.ts +8 -22
  209. package/interfaces/datasets/IBarLineScatterCandleBubbleDataSet.d.ts +1 -3
  210. package/interfaces/datasets/IBubbleDataSet.d.ts +3 -9
  211. package/interfaces/datasets/ICandleDataSet.d.ts +44 -41
  212. package/interfaces/datasets/IDataSet.d.ts +35 -151
  213. package/interfaces/datasets/ILineDataSet.d.ts +15 -54
  214. package/interfaces/datasets/ILineRadarDataSet.d.ts +7 -28
  215. package/interfaces/datasets/ILineScatterCandleRadarDataSet.d.ts +5 -4
  216. package/interfaces/datasets/IPieDataSet.d.ts +22 -40
  217. package/interfaces/datasets/IRadarDataSet.d.ts +7 -13
  218. package/interfaces/datasets/IScatterDataSet.d.ts +17 -16
  219. package/jobs/AnimatedMoveViewJob.d.ts +3 -0
  220. package/jobs/AnimatedMoveViewJob.js +12 -8
  221. package/jobs/AnimatedMoveViewJob.js.map +1 -1
  222. package/jobs/AnimatedViewPortJob.d.ts +7 -8
  223. package/jobs/AnimatedViewPortJob.js +16 -23
  224. package/jobs/AnimatedViewPortJob.js.map +1 -1
  225. package/jobs/AnimatedZoomJob.d.ts +8 -5
  226. package/jobs/AnimatedZoomJob.js +30 -26
  227. package/jobs/AnimatedZoomJob.js.map +1 -1
  228. package/jobs/MoveViewJob.d.ts +3 -0
  229. package/jobs/MoveViewJob.js +10 -7
  230. package/jobs/MoveViewJob.js.map +1 -1
  231. package/jobs/ViewPortJob.d.ts +3 -5
  232. package/jobs/ViewPortJob.js +5 -11
  233. package/jobs/ViewPortJob.js.map +1 -1
  234. package/jobs/ZoomJob.js +14 -14
  235. package/jobs/ZoomJob.js.map +1 -1
  236. package/listener/BarLineChartTouchListener.d.ts +82 -1
  237. package/listener/BarLineChartTouchListener.js +169 -67
  238. package/listener/BarLineChartTouchListener.js.map +1 -1
  239. package/listener/ChartTouchListener.d.ts +39 -5
  240. package/listener/ChartTouchListener.js +38 -11
  241. package/listener/ChartTouchListener.js.map +1 -1
  242. package/listener/PieRadarChartTouchListener.d.ts +56 -1
  243. package/listener/PieRadarChartTouchListener.js +201 -17
  244. package/listener/PieRadarChartTouchListener.js.map +1 -1
  245. package/model/GradientColor.js.map +1 -1
  246. package/package.json +23 -15
  247. package/renderer/AxisRenderer.d.ts +66 -7
  248. package/renderer/AxisRenderer.js +69 -21
  249. package/renderer/AxisRenderer.js.map +1 -1
  250. package/renderer/BarChartRenderer.d.ts +11 -0
  251. package/renderer/BarChartRenderer.js +99 -71
  252. package/renderer/BarChartRenderer.js.map +1 -1
  253. package/renderer/BarLineScatterCandleBubbleRenderer.d.ts +37 -0
  254. package/renderer/BarLineScatterCandleBubbleRenderer.js +36 -8
  255. package/renderer/BarLineScatterCandleBubbleRenderer.js.map +1 -1
  256. package/renderer/BubbleChartRenderer.d.ts +6 -2
  257. package/renderer/BubbleChartRenderer.js +51 -40
  258. package/renderer/BubbleChartRenderer.js.map +1 -1
  259. package/renderer/CandleStickChartRenderer.d.ts +1 -1
  260. package/renderer/CandleStickChartRenderer.js +64 -50
  261. package/renderer/CandleStickChartRenderer.js.map +1 -1
  262. package/renderer/CombinedChartRenderer.d.ts +20 -1
  263. package/renderer/CombinedChartRenderer.js +72 -42
  264. package/renderer/CombinedChartRenderer.js.map +1 -1
  265. package/renderer/DataRenderer.d.ts +78 -4
  266. package/renderer/DataRenderer.js +65 -6
  267. package/renderer/DataRenderer.js.map +1 -1
  268. package/renderer/HorizontalBarChartRenderer.d.ts +5 -2
  269. package/renderer/HorizontalBarChartRenderer.js +87 -66
  270. package/renderer/HorizontalBarChartRenderer.js.map +1 -1
  271. package/renderer/LegendRenderer.d.ts +32 -0
  272. package/renderer/LegendRenderer.js +98 -59
  273. package/renderer/LegendRenderer.js.map +1 -1
  274. package/renderer/LineChartRenderer.d.ts +38 -1
  275. package/renderer/LineChartRenderer.js +198 -113
  276. package/renderer/LineChartRenderer.js.map +1 -1
  277. package/renderer/LineRadarRenderer.d.ts +19 -0
  278. package/renderer/LineRadarRenderer.js +25 -1
  279. package/renderer/LineRadarRenderer.js.map +1 -1
  280. package/renderer/LineScatterCandleRadarRenderer.d.ts +11 -0
  281. package/renderer/LineScatterCandleRadarRenderer.js +26 -9
  282. package/renderer/LineScatterCandleRadarRenderer.js.map +1 -1
  283. package/renderer/PieChartRenderer.d.ts +45 -1
  284. package/renderer/PieChartRenderer.js +195 -122
  285. package/renderer/PieChartRenderer.js.map +1 -1
  286. package/renderer/RadarChartRenderer.d.ts +10 -0
  287. package/renderer/RadarChartRenderer.js +119 -77
  288. package/renderer/RadarChartRenderer.js.map +1 -1
  289. package/renderer/Renderer.d.ts +8 -0
  290. package/renderer/Renderer.js +5 -0
  291. package/renderer/Renderer.js.map +1 -1
  292. package/renderer/ScatterChartRenderer.d.ts +5 -5
  293. package/renderer/ScatterChartRenderer.js +51 -37
  294. package/renderer/ScatterChartRenderer.js.map +1 -1
  295. package/renderer/XAxisRenderer.d.ts +29 -4
  296. package/renderer/XAxisRenderer.js +128 -95
  297. package/renderer/XAxisRenderer.js.map +1 -1
  298. package/renderer/XAxisRendererHorizontalBarChart.d.ts +11 -0
  299. package/renderer/XAxisRendererHorizontalBarChart.js +75 -57
  300. package/renderer/XAxisRendererHorizontalBarChart.js.map +1 -1
  301. package/renderer/XAxisRendererRadarChart.d.ts +5 -0
  302. package/renderer/XAxisRendererRadarChart.js +26 -13
  303. package/renderer/XAxisRendererRadarChart.js.map +1 -1
  304. package/renderer/YAxisRenderer.d.ts +42 -5
  305. package/renderer/YAxisRenderer.js +126 -69
  306. package/renderer/YAxisRenderer.js.map +1 -1
  307. package/renderer/YAxisRendererHorizontalBarChart.d.ts +22 -1
  308. package/renderer/YAxisRendererHorizontalBarChart.js +80 -58
  309. package/renderer/YAxisRendererHorizontalBarChart.js.map +1 -1
  310. package/renderer/YAxisRendererRadarChart.js +62 -32
  311. package/renderer/YAxisRendererRadarChart.js.map +1 -1
  312. package/renderer/scatter/ChevronDownShapeRenderer.d.ts +4 -0
  313. package/renderer/scatter/ChevronDownShapeRenderer.js +5 -1
  314. package/renderer/scatter/ChevronDownShapeRenderer.js.map +1 -1
  315. package/renderer/scatter/ChevronUpShapeRenderer.d.ts +4 -0
  316. package/renderer/scatter/ChevronUpShapeRenderer.js +5 -1
  317. package/renderer/scatter/ChevronUpShapeRenderer.js.map +1 -1
  318. package/renderer/scatter/CircleShapeRenderer.d.ts +4 -0
  319. package/renderer/scatter/CircleShapeRenderer.js +8 -5
  320. package/renderer/scatter/CircleShapeRenderer.js.map +1 -1
  321. package/renderer/scatter/CrossShapeRenderer.d.ts +4 -0
  322. package/renderer/scatter/CrossShapeRenderer.js +5 -1
  323. package/renderer/scatter/CrossShapeRenderer.js.map +1 -1
  324. package/renderer/scatter/IShapeRenderer.d.ts +14 -0
  325. package/renderer/scatter/IShapeRenderer.js.map +1 -1
  326. package/renderer/scatter/SquareShapeRenderer.d.ts +4 -0
  327. package/renderer/scatter/SquareShapeRenderer.js +8 -5
  328. package/renderer/scatter/SquareShapeRenderer.js.map +1 -1
  329. package/renderer/scatter/TriangleShapeRenderer.d.ts +4 -0
  330. package/renderer/scatter/TriangleShapeRenderer.js +9 -5
  331. package/renderer/scatter/TriangleShapeRenderer.js.map +1 -1
  332. package/renderer/scatter/XShapeRenderer.d.ts +4 -0
  333. package/renderer/scatter/XShapeRenderer.js +5 -1
  334. package/renderer/scatter/XShapeRenderer.js.map +1 -1
  335. package/utils/ColorTemplate.d.ts +21 -1
  336. package/utils/ColorTemplate.js +21 -3
  337. package/utils/ColorTemplate.js.map +1 -1
  338. package/utils/HorizontalViewPortHandler.d.ts +3 -0
  339. package/utils/HorizontalViewPortHandler.js +3 -0
  340. package/utils/HorizontalViewPortHandler.js.map +1 -1
  341. package/utils/MPSize.d.ts +7 -0
  342. package/utils/ObjectPool.d.ts +56 -0
  343. package/utils/ObjectPool.js +66 -8
  344. package/utils/ObjectPool.js.map +1 -1
  345. package/utils/Transformer.d.ts +118 -0
  346. package/utils/Transformer.js +141 -7
  347. package/utils/Transformer.js.map +1 -1
  348. package/utils/TransformerHorizontalBarChart.d.ts +10 -0
  349. package/utils/TransformerHorizontalBarChart.js +18 -2
  350. package/utils/TransformerHorizontalBarChart.js.map +1 -1
  351. package/utils/Utils.d.ts +139 -17
  352. package/utils/Utils.js +185 -60
  353. package/utils/Utils.js.map +1 -1
  354. package/utils/ViewPortHandler.d.ts +234 -19
  355. package/utils/ViewPortHandler.js +306 -63
  356. package/utils/ViewPortHandler.js.map +1 -1
  357. package/utils/colors/colorful.js.map +1 -1
  358. package/utils/colors/joyful.js.map +1 -1
  359. package/utils/colors/liberty.js.map +1 -1
  360. package/utils/colors/material.js.map +1 -1
  361. package/utils/colors/pastel.js.map +1 -1
  362. package/utils/colors/vordiplom.js.map +1 -1
  363. package/charts/index.d.ts +0 -11
  364. package/charts/index.js +0 -15
  365. package/charts/index.js.map +0 -1
package/utils/Utils.d.ts CHANGED
@@ -1,61 +1,170 @@
1
- import { Canvas, FontMetrics, Matrix, Paint, Path, RectF } from '@nativescript-community/ui-canvas';
2
1
  import { TypedArray, arrayToNativeArray as arrayToNativeArrayFn, createArrayBuffer as createArrayBufferFn, createArrayBufferOrNativeArray as createArrayBufferOrNativeArrayFn, createNativeArray as createNativeArrayFn, nativeArrayToArray as nativeArrayToArrayFn, pointsFromBuffer as pointsFromBufferFn, supportsDirectArrayBuffers as supportsDirectArrayBuffersFn } from '@nativescript-community/arraybuffers';
3
- import Shape from '@nativescript-community/ui-canvas/shapes/shape';
4
- import { ImageSource, ObservableArray } from '@nativescript/core';
5
- import { Chart } from '../charts/Chart';
2
+ import { Canvas, FontMetrics, Matrix, Paint, Path, RectF } from '@nativescript-community/ui-canvas';
3
+ import { ObservableArray } from '@nativescript/core';
6
4
  import { DefaultValueFormatter } from '../formatter/DefaultValueFormatter';
7
5
  import { ValueFormatter } from '../formatter/ValueFormatter';
6
+ import { MPPointF } from './MPPointF';
7
+ import { MPSize } from './MPSize';
8
8
  export declare const ChartTraceCategory = "NativescriptChart";
9
- declare global {
10
- const __runtimeVersion: string;
11
- }
12
9
  export declare enum CLogTypes {
13
- log,
14
- info,
15
- warning,
16
- error
10
+ log = 0,
11
+ info = 1,
12
+ warning = 2,
13
+ error = 3
17
14
  }
18
15
  export declare const CLog: (type: CLogTypes, ...args: any[]) => void;
16
+ /**
17
+ * Utilities class that has some helper methods. Needs to be initialized by
18
+ * calling Utils.init(...) before usage. Inside the Chart.init() method, this is
19
+ * done, if the Utils are used before that, Utils.init(...) needs to be called
20
+ * manually.
21
+ *
22
+
23
+ */
19
24
  export declare namespace Utils {
20
25
  const density: number;
21
26
  const DEG2RAD: number;
22
27
  const RAD2DEG: number;
23
28
  const NUMBER_EPSILON: number;
24
- function init(context: any): void;
29
+ /**
30
+ * initialize method, called inside the Chart.init() method.
31
+ *
32
+ * @param context
33
+ */
34
+ function init(): void;
35
+ /**
36
+ * This method converts dp unit to equivalent pixels, depending on device
37
+ * density. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE.
38
+ *
39
+ * @param dp A value in dp (density independent pixels) unit. Which we need
40
+ * to convert into pixels
41
+ * @return A let value to represent px equivalent to dp depending on
42
+ * device density
43
+ */
25
44
  function convertDpToPixel(dp: any): number;
45
+ /**
46
+ * This method converts device specific pixels to density independent
47
+ * pixels. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE.
48
+ *
49
+ * @param px A value in px (pixels) unit. Which we need to convert into db
50
+ * @return A let value to represent dp equivalent to px value
51
+ */
26
52
  function convertPixelsToDp(px: any): any;
53
+ /**
54
+ * calculates the approximate width of a text, depending on a demo text
55
+ * avoid repeated calls (e.g. inside drawing methods)
56
+ *
57
+ * @param paint
58
+ * @param demoText
59
+ * @return
60
+ */
27
61
  function calcTextWidth(paint: Paint, demoText: string): number;
62
+ /**
63
+ * calculates the approximate height of a text, depending on a demo text
64
+ * avoid repeated calls (e.g. inside drawing methods)
65
+ *
66
+ * @param paint
67
+ * @param demoText
68
+ * @return
69
+ */
28
70
  function calcTextHeight(paint: Paint, demoText: string): number;
29
71
  function getLineHeightFromMetrics(fontMetrics: FontMetrics): number;
30
72
  function getLineHeight(paint: Paint, fontMetrics?: FontMetrics): number;
31
73
  function getLineSpacingFromMetrics(fontMetrics: FontMetrics): number;
32
74
  function getLineSpacing(paint: Paint, fontMetrics?: FontMetrics): number;
75
+ /**
76
+ * calculates the approximate size of a text, depending on a demo text
77
+ * avoid repeated calls (e.g. inside drawing methods)
78
+ *
79
+ * @param paint
80
+ * @param demoText
81
+ * @param outputFSize An output variable, modified by the function.
82
+ */
33
83
  function calcTextSize(paint: Paint, demoText: any): {
34
84
  width: number;
35
85
  height: number;
36
86
  };
37
87
  function generateDefaultValueFormatter(): DefaultValueFormatter;
38
88
  function getDefaultValueFormatter(): ValueFormatter;
89
+ /**
90
+ * Formats the given number to the given number of decimals, and returns the
91
+ * number as a string, maximum 35 characters.
92
+ *
93
+ * @param number
94
+ * @param digitCount
95
+ * @param separateThousands set this to true to separate thousands values
96
+ * @param separateChar a caracter to be paced between the "thousands"
97
+ * @return
98
+ */
39
99
  function formatNumber(number: any, digitCount: any, separateThousands: any, separateChar?: string): string;
100
+ /**
101
+ * rounds the given number to the next significant number
102
+ *
103
+ * @param number
104
+ * @return
105
+ */
40
106
  function roundToNextSignificant(number: any): number;
107
+ /**
108
+ * Returns the appropriate number of decimals to be used for the provided
109
+ * number.
110
+ *
111
+ * @param number
112
+ * @return
113
+ */
41
114
  function getDecimals(number: any): number;
115
+ /**
116
+ * Replacement for the Math.nextUp(...) method that is only available in
117
+ * HONEYCOMB and higher. Dat's some seeeeek sheeet.
118
+ *
119
+ * @param d
120
+ * @return
121
+ */
42
122
  function nextUp(x: any): any;
43
123
  function toRadians(degrees: any): number;
124
+ /**
125
+ * Returns a recyclable MPPointF instance.
126
+ * Calculates the position around a center point, depending on the distance
127
+ * from the center, and the angle of the position around the center.
128
+ *
129
+ * @param center
130
+ * @param dist
131
+ * @param angle in degrees, converted to radians internally
132
+ * @return
133
+ */
44
134
  function getPosition(center: any, dist: any, angle: any, outputPoint?: any): any;
135
+ /**
136
+ * returns an angle between 0 < 360 (not less than zero, less than 360)
137
+ */
45
138
  function getNormalizedAngle(angle: any): number;
46
- function drawIcon(canvas: Canvas, chart: Chart<any, any, any>, icon: ImageSource | Shape, x: any, y: any): void;
47
- function drawXAxisValue(c: Canvas, text: any, x: any, y: any, paint: Paint, anchor: any, angleDegrees: any): void;
48
- function drawMultilineText(c: Canvas, textLayout: any, x: any, y: any, textpaint: Paint, anchor: any, angleDegrees: any, lineHeight: any): void;
49
- function drawMultilineTextConstrained(c: Canvas, text: any, x: any, y: any, paint: Paint, constrainedToSize: any, anchor: any, angleDegrees: any, lineHeight: any): void;
139
+ function drawXAxisValue(c: Canvas, text: string, x: number, y: number, paint: Paint, anchor: MPPointF, angleDegrees: number): void;
140
+ function drawMultilineText(c: Canvas, textLayout: any, x: number, y: number, anchor: MPPointF, angleDegrees: number, lineHeight: number): void;
141
+ function drawMultilineTextConstrained(c: Canvas, text: string, x: number, y: number, paint: Paint, constrainedToSize: MPSize, anchor: MPPointF, angleDegrees: number, lineHeight: number): void;
142
+ /**
143
+ * Returns a recyclable FSize instance.
144
+ * Represents size of a rotated rectangle by degrees.
145
+ *
146
+ * @param rectangleWidth
147
+ * @param rectangleHeight
148
+ * @param degrees
149
+ * @return A Recyclable FSize instance
150
+ */
50
151
  function getSizeOfRotatedRectangleByDegrees(rectangleWidth: any, rectangleHeight: any, degrees: any): {
51
152
  width: number;
52
153
  height: number;
53
154
  };
155
+ /**
156
+ * Returns a recyclable FSize instance.
157
+ * Represents size of a rotated rectangle by radians.
158
+ *
159
+ * @param rectangleWidth
160
+ * @param rectangleHeight
161
+ * @param radians
162
+ * @return A Recyclable FSize instance
163
+ */
54
164
  function getSizeOfRotatedRectangleByRadians(rectangleWidth: any, rectangleHeight: any, radians: any): {
55
165
  width: number;
56
166
  height: number;
57
167
  };
58
- function logMethod(target: any, key: any, descriptor: any): any;
59
168
  const supportsDirectArrayBuffers: typeof supportsDirectArrayBuffersFn;
60
169
  const createArrayBuffer: typeof createArrayBufferFn;
61
170
  const pointsFromBuffer: typeof pointsFromBufferFn;
@@ -71,7 +180,20 @@ export declare namespace Utils {
71
180
  function getTempPaint(): Paint;
72
181
  function getTemplatePaint(template: string): Paint;
73
182
  function clipPathSupported(): boolean;
183
+ /**
184
+ * Calculates the sum across all values of the given array.
185
+ *
186
+ * @param values
187
+ * @return
188
+ */
74
189
  function calcSum(values: number[]): number;
190
+ /**
191
+ * Calculates the sum of positive numbers and negative numbers separately,
192
+ * across all values of the given array.
193
+ *
194
+ * @param values
195
+ * @return
196
+ */
75
197
  function calcPosNegSum(values: number[]): {
76
198
  pos: number;
77
199
  neg: number;
package/utils/Utils.js CHANGED
@@ -1,16 +1,15 @@
1
- import { Align, FontMetrics, Matrix, Paint, Path, Rect, RectF, StaticLayout, Style } from '@nativescript-community/ui-canvas';
2
1
  import { arrayToNativeArray as arrayToNativeArrayFn, createArrayBuffer as createArrayBufferFn, createArrayBufferOrNativeArray as createArrayBufferOrNativeArrayFn, createNativeArray as createNativeArrayFn, nativeArrayToArray as nativeArrayToArrayFn, pointsFromBuffer as pointsFromBufferFn, supportsDirectArrayBuffers as supportsDirectArrayBuffersFn } from '@nativescript-community/arraybuffers';
3
- import Shape from '@nativescript-community/ui-canvas/shapes/shape';
2
+ import { Align, FontMetrics, LayoutAlignment, Matrix, Paint, Path, Rect, RectF, StaticLayout, Style } from '@nativescript-community/ui-canvas';
4
3
  import { ObservableArray, Trace } from '@nativescript/core';
5
4
  import { Screen } from '@nativescript/core/platform';
6
5
  import { DefaultValueFormatter } from '../formatter/DefaultValueFormatter';
7
6
  export const ChartTraceCategory = 'NativescriptChart';
8
7
  export var CLogTypes;
9
8
  (function (CLogTypes) {
10
- CLogTypes[CLogTypes["log"] = Trace.messageType.log] = "log";
11
- CLogTypes[CLogTypes["info"] = Trace.messageType.info] = "info";
12
- CLogTypes[CLogTypes["warning"] = Trace.messageType.warn] = "warning";
13
- CLogTypes[CLogTypes["error"] = Trace.messageType.error] = "error";
9
+ CLogTypes[CLogTypes["log"] = 0] = "log";
10
+ CLogTypes[CLogTypes["info"] = 1] = "info";
11
+ CLogTypes[CLogTypes["warning"] = 2] = "warning";
12
+ CLogTypes[CLogTypes["error"] = 3] = "error";
14
13
  })(CLogTypes || (CLogTypes = {}));
15
14
  export const CLog = (type, ...args) => {
16
15
  Trace.write(args.map((a) => (a && typeof a === 'object' ? JSON.stringify(a) : a)).join(' '), ChartTraceCategory, type);
@@ -22,9 +21,22 @@ function getSDK() {
22
21
  }
23
22
  return SDK_INT;
24
23
  }
24
+ /**
25
+ * Utilities class that has some helper methods. Needs to be initialized by
26
+ * calling Utils.init(...) before usage. Inside the Chart.init() method, this is
27
+ * done, if the Utils are used before that, Utils.init(...) needs to be called
28
+ * manually.
29
+ *
30
+
31
+ */
25
32
  export var Utils;
26
33
  (function (Utils) {
34
+ // const mainScreen = screen.mainScreen;
27
35
  Utils.density = Screen.mainScreen.scale;
36
+ // const mMetrics;
37
+ // const mMinimumFlingVelocity = 50;
38
+ // const mMaximumFlingVelocity = 8000;
39
+ // const DOUBLE_EPSILON = Number.EPSILON;
28
40
  Utils.DEG2RAD = Math.PI / 180.0;
29
41
  Utils.RAD2DEG = 180.0 / Math.PI;
30
42
  Utils.NUMBER_EPSILON = Number.EPSILON;
@@ -33,30 +45,67 @@ export var Utils;
33
45
  const mFontMetricsBuffer = new FontMetrics();
34
46
  const mCalcTextSizeRect = new Rect(0, 0, 0, 0);
35
47
  const mDefaultValueFormatter = generateDefaultValueFormatter();
48
+ /**
49
+ * Math.pow(...) is very expensive, so avoid calling it and create it
50
+ * yourself.
51
+ */
36
52
  const POW_10 = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];
37
53
  const EPSILON = Math.pow(2, -52);
38
54
  const MAX_VALUE = (2 - EPSILON) * Math.pow(2, 1023);
39
55
  const MIN_VALUE = Math.pow(2, -1022);
40
- function init(context) {
41
- if (context == null) {
42
- console.error('MPChartLib-Utils', 'Utils.init(...) PROVIDED CONTEXT OBJECT IS NULL');
43
- }
44
- else {
45
- }
46
- }
56
+ /**
57
+ * initialize method, called inside the Chart.init() method.
58
+ *
59
+ * @param context
60
+ */
61
+ function init() { }
47
62
  Utils.init = init;
63
+ /**
64
+ * This method converts dp unit to equivalent pixels, depending on device
65
+ * density. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE.
66
+ *
67
+ * @param dp A value in dp (density independent pixels) unit. Which we need
68
+ * to convert into pixels
69
+ * @return A let value to represent px equivalent to dp depending on
70
+ * device density
71
+ */
48
72
  function convertDpToPixel(dp) {
49
73
  return dp * Utils.density;
74
+ // return dp;
50
75
  }
51
76
  Utils.convertDpToPixel = convertDpToPixel;
77
+ /**
78
+ * This method converts device specific pixels to density independent
79
+ * pixels. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE.
80
+ *
81
+ * @param px A value in px (pixels) unit. Which we need to convert into db
82
+ * @return A let value to represent dp equivalent to px value
83
+ */
52
84
  function convertPixelsToDp(px) {
53
85
  return px;
86
+ // return px / density;
54
87
  }
55
88
  Utils.convertPixelsToDp = convertPixelsToDp;
89
+ /**
90
+ * calculates the approximate width of a text, depending on a demo text
91
+ * avoid repeated calls (e.g. inside drawing methods)
92
+ *
93
+ * @param paint
94
+ * @param demoText
95
+ * @return
96
+ */
56
97
  function calcTextWidth(paint, demoText) {
57
98
  return paint.measureText(demoText);
58
99
  }
59
100
  Utils.calcTextWidth = calcTextWidth;
101
+ /**
102
+ * calculates the approximate height of a text, depending on a demo text
103
+ * avoid repeated calls (e.g. inside drawing methods)
104
+ *
105
+ * @param paint
106
+ * @param demoText
107
+ * @return
108
+ */
60
109
  function calcTextHeight(paint, demoText) {
61
110
  mCalcTextHeightRect.set(0, 0, 0, 0);
62
111
  paint.getTextBounds(demoText, 0, demoText.length, mCalcTextHeightRect);
@@ -81,6 +130,14 @@ export var Utils;
81
130
  return getLineSpacingFromMetrics(fontMetrics);
82
131
  }
83
132
  Utils.getLineSpacing = getLineSpacing;
133
+ /**
134
+ * calculates the approximate size of a text, depending on a demo text
135
+ * avoid repeated calls (e.g. inside drawing methods)
136
+ *
137
+ * @param paint
138
+ * @param demoText
139
+ * @param outputFSize An output variable, modified by the function.
140
+ */
84
141
  function calcTextSize(paint, demoText) {
85
142
  const r = mCalcTextSizeRect;
86
143
  r.set(0, 0, 0, 0);
@@ -95,10 +152,21 @@ export var Utils;
95
152
  return new DefaultValueFormatter(1);
96
153
  }
97
154
  Utils.generateDefaultValueFormatter = generateDefaultValueFormatter;
155
+ /// - returns: The default value formatter used for all chart components that needs a default
98
156
  function getDefaultValueFormatter() {
99
157
  return mDefaultValueFormatter;
100
158
  }
101
159
  Utils.getDefaultValueFormatter = getDefaultValueFormatter;
160
+ /**
161
+ * Formats the given number to the given number of decimals, and returns the
162
+ * number as a string, maximum 35 characters.
163
+ *
164
+ * @param number
165
+ * @param digitCount
166
+ * @param separateThousands set this to true to separate thousands values
167
+ * @param separateChar a caracter to be paced between the "thousands"
168
+ * @return
169
+ */
102
170
  function formatNumber(number, digitCount, separateThousands, separateChar = '.') {
103
171
  const out = [];
104
172
  let neg = false;
@@ -126,10 +194,12 @@ export var Utils;
126
194
  lval = lval / 10;
127
195
  out[ind--] = digit + '0';
128
196
  charCount++;
197
+ // add decimal point
129
198
  if (charCount === digitCount) {
130
199
  out[ind--] = ',';
131
200
  charCount++;
132
201
  decimalPointAdded = true;
202
+ // add thousand separators
133
203
  }
134
204
  else if (separateThousands && lval !== 0 && charCount > digitCount) {
135
205
  if (decimalPointAdded) {
@@ -146,10 +216,12 @@ export var Utils;
146
216
  }
147
217
  }
148
218
  }
219
+ // if number around zero (between 1 and -1)
149
220
  if (zero) {
150
221
  out[ind--] = '0';
151
222
  charCount += 1;
152
223
  }
224
+ // if the number is negative
153
225
  if (neg) {
154
226
  out[ind--] = '-';
155
227
  charCount += 1;
@@ -158,6 +230,12 @@ export var Utils;
158
230
  return out.slice(out.length - start).join('');
159
231
  }
160
232
  Utils.formatNumber = formatNumber;
233
+ /**
234
+ * rounds the given number to the next significant number
235
+ *
236
+ * @param number
237
+ * @return
238
+ */
161
239
  function roundToNextSignificant(number) {
162
240
  if (!Number.isFinite(number) || isNaN(number) || number === 0.0)
163
241
  return 0;
@@ -168,6 +246,13 @@ export var Utils;
168
246
  return shifted / magnitude;
169
247
  }
170
248
  Utils.roundToNextSignificant = roundToNextSignificant;
249
+ /**
250
+ * Returns the appropriate number of decimals to be used for the provided
251
+ * number.
252
+ *
253
+ * @param number
254
+ * @return
255
+ */
171
256
  function getDecimals(number) {
172
257
  const i = roundToNextSignificant(number);
173
258
  if (!Number.isFinite(i) || i === 0)
@@ -175,6 +260,13 @@ export var Utils;
175
260
  return Math.ceil(-Math.log10(i)) + 2;
176
261
  }
177
262
  Utils.getDecimals = getDecimals;
263
+ /**
264
+ * Replacement for the Math.nextUp(...) method that is only available in
265
+ * HONEYCOMB and higher. Dat's some seeeeek sheeet.
266
+ *
267
+ * @param d
268
+ * @return
269
+ */
178
270
  function nextUp(x) {
179
271
  if (x !== x) {
180
272
  return x;
@@ -211,6 +303,16 @@ export var Utils;
211
303
  return degrees * (pi / 180);
212
304
  }
213
305
  Utils.toRadians = toRadians;
306
+ /**
307
+ * Returns a recyclable MPPointF instance.
308
+ * Calculates the position around a center point, depending on the distance
309
+ * from the center, and the angle of the position around the center.
310
+ *
311
+ * @param center
312
+ * @param dist
313
+ * @param angle in degrees, converted to radians internally
314
+ * @return
315
+ */
214
316
  function getPosition(center, dist, angle, outputPoint) {
215
317
  if (outputPoint) {
216
318
  outputPoint.x = center.x + dist * Math.cos(toRadians(angle));
@@ -223,41 +325,43 @@ export var Utils;
223
325
  };
224
326
  }
225
327
  Utils.getPosition = getPosition;
328
+ /**
329
+ * returns an angle between 0 < 360 (not less than zero, less than 360)
330
+ */
226
331
  function getNormalizedAngle(angle) {
227
332
  while (angle < 0)
228
333
  angle += 360;
229
334
  return angle % 360;
230
335
  }
231
336
  Utils.getNormalizedAngle = getNormalizedAngle;
232
- function drawIcon(canvas, chart, icon, x, y) {
233
- if (icon instanceof Shape) {
234
- const availableWidth = canvas.getWidth();
235
- const availableHeight = canvas.getHeight();
236
- const width = icon.getWidth(availableWidth, availableHeight);
237
- const height = icon.getHeight(availableWidth, availableHeight);
238
- canvas.save();
239
- canvas.translate(x - width / 2, y - height / 2);
240
- icon.drawMyShapeOnCanvas(canvas, chart, availableWidth, availableHeight);
241
- canvas.restore();
242
- }
243
- else {
244
- const drawOffsetX = x - icon.width / 2;
245
- const drawOffsetY = y - icon.height / 2;
246
- canvas.drawBitmap(__ANDROID__ ? icon.android : icon, drawOffsetX, drawOffsetY, null);
247
- }
248
- }
249
- Utils.drawIcon = drawIcon;
337
+ // const mDrawableBoundsCache = new Rect(0, 0, 0, 0);
338
+ // export function drawImage(canvas: Canvas, drawable: ImageSource, x, y, width, height) {
339
+ // const drawOffsetx = x - width / 2;
340
+ // const drawOffsety = y - height / 2;
341
+ // drawable.copyBounds(mDrawableBoundsCache);
342
+ // drawable.setBounds(this.mDrawableBoundsCache.left, this.mDrawableBoundsCache.top, this.mDrawableBoundsCache.left + width, this.mDrawableBoundsCache.top + width);
343
+ // canvas.save();
344
+ // // translate to the correct position and draw
345
+ // canvas.translate(drawOffsetx, drawOffsety);
346
+ // drawable.draw(canvas);
347
+ // canvas.restore();
348
+ // }
250
349
  function drawXAxisValue(c, text, x, y, paint, anchor, angleDegrees) {
251
350
  let drawOffsetX = 0;
252
351
  let drawOffsetY = 0;
352
+ // Android does not snap the bounds to line boundaries,
353
+ // and draws from bottom to top.
354
+ // And we want to normalize it.
253
355
  drawOffsetY += -mFontMetricsBuffer.ascent;
254
356
  if (angleDegrees !== 0) {
255
357
  const lineHeight = getLineHeightFromMetrics(mFontMetricsBuffer);
256
358
  paint.getTextBounds(text, 0, text.length, mDrawTextRectBuffer);
359
+ // Move the text drawing rect in a way that it always rotates around its center
257
360
  drawOffsetX -= mDrawTextRectBuffer.width() * 0.5;
258
361
  drawOffsetY -= lineHeight * 0.5;
259
362
  let translateX = x;
260
363
  let translateY = y;
364
+ // Move the "outer" rect relative to the anchor, assuming its centered
261
365
  if (anchor.x !== 0.5 || anchor.y !== 0.5) {
262
366
  const rotatedSize = getSizeOfRotatedRectangleByDegrees(mDrawTextRectBuffer.width(), lineHeight, angleDegrees);
263
367
  translateX -= rotatedSize.width * (anchor.x - 0.5);
@@ -278,24 +382,35 @@ export var Utils;
278
382
  drawOffsetY += y;
279
383
  c.drawText(text, drawOffsetX, drawOffsetY, paint);
280
384
  }
385
+ // paint.setTextAlign(originalTextAlign);
281
386
  }
282
387
  Utils.drawXAxisValue = drawXAxisValue;
283
- function drawMultilineText(c, textLayout, x, y, textpaint, anchor, angleDegrees, lineHeight) {
388
+ function drawMultilineText(c, textLayout, x, y, anchor, angleDegrees, lineHeight) {
284
389
  let drawOffsetX = 0;
285
390
  let drawOffsetY = 0;
286
391
  const drawWidth = textLayout.getWidth();
287
392
  const drawHeight = textLayout.getLineCount() * lineHeight;
393
+ // Android sometimes has pre-padding
288
394
  drawOffsetX -= mDrawTextRectBuffer.left;
395
+ // Android does not snap the bounds to line boundaries,
396
+ // and draws from bottom to top.
397
+ // And we want to normalize it.
289
398
  drawOffsetY += drawHeight;
399
+ // To have a consistent point of reference, we always draw left-aligned
400
+ // Paint.Align originalTextAlign = paint.getTextAlign();
401
+ // paint.setTextAlign(Paint.Align.LEFT);
290
402
  if (angleDegrees !== 0) {
403
+ // Move the text drawing rect in a way that it always rotates around its center
291
404
  drawOffsetX -= drawWidth * 0.5;
292
405
  drawOffsetY -= drawHeight * 0.5;
293
406
  let translateX = x;
294
407
  let translateY = y;
408
+ // Move the "outer" rect relative to the anchor, assuming its centered
295
409
  if (anchor.x !== 0.5 || anchor.y !== 0.5) {
296
410
  const rotatedSize = getSizeOfRotatedRectangleByDegrees(drawWidth, drawHeight, angleDegrees);
297
411
  translateX -= rotatedSize.width * (anchor.x - 0.5);
298
412
  translateY -= rotatedSize.height * (anchor.y - 0.5);
413
+ // FSize.recycleInstance(rotatedSize);
299
414
  }
300
415
  c.save();
301
416
  c.translate(translateX, translateY);
@@ -316,18 +431,37 @@ export var Utils;
316
431
  textLayout.draw(c);
317
432
  c.restore();
318
433
  }
434
+ // paint.setTextAlign(originalTextAlign);
319
435
  }
320
436
  Utils.drawMultilineText = drawMultilineText;
321
437
  function drawMultilineTextConstrained(c, text, x, y, paint, constrainedToSize, anchor, angleDegrees, lineHeight) {
322
- const textLayout = new StaticLayout(text, paint, Math.max(Math.ceil(constrainedToSize.width), 1), 0, 1, 0, false);
323
- drawMultilineText(c, textLayout, x, y, paint, anchor, angleDegrees, lineHeight);
438
+ const textLayout = new StaticLayout(text, paint, Math.max(Math.ceil(constrainedToSize.width), 1), LayoutAlignment.ALIGN_NORMAL, 1, 0, false);
439
+ drawMultilineText(c, textLayout, x, y, anchor, angleDegrees, lineHeight);
324
440
  }
325
441
  Utils.drawMultilineTextConstrained = drawMultilineTextConstrained;
442
+ /**
443
+ * Returns a recyclable FSize instance.
444
+ * Represents size of a rotated rectangle by degrees.
445
+ *
446
+ * @param rectangleWidth
447
+ * @param rectangleHeight
448
+ * @param degrees
449
+ * @return A Recyclable FSize instance
450
+ */
326
451
  function getSizeOfRotatedRectangleByDegrees(rectangleWidth, rectangleHeight, degrees) {
327
452
  const radians = degrees * Utils.DEG2RAD;
328
453
  return getSizeOfRotatedRectangleByRadians(rectangleWidth, rectangleHeight, radians);
329
454
  }
330
455
  Utils.getSizeOfRotatedRectangleByDegrees = getSizeOfRotatedRectangleByDegrees;
456
+ /**
457
+ * Returns a recyclable FSize instance.
458
+ * Represents size of a rotated rectangle by radians.
459
+ *
460
+ * @param rectangleWidth
461
+ * @param rectangleHeight
462
+ * @param radians
463
+ * @return A Recyclable FSize instance
464
+ */
331
465
  function getSizeOfRotatedRectangleByRadians(rectangleWidth, rectangleHeight, radians) {
332
466
  return {
333
467
  width: Math.abs(rectangleWidth * Math.cos(radians)) + Math.abs(rectangleHeight * Math.sin(radians)),
@@ -335,29 +469,6 @@ export var Utils;
335
469
  };
336
470
  }
337
471
  Utils.getSizeOfRotatedRectangleByRadians = getSizeOfRotatedRectangleByRadians;
338
- function logMethod(target, key, descriptor) {
339
- if (descriptor === undefined) {
340
- descriptor = Object.getOwnPropertyDescriptor(target, key);
341
- }
342
- const originalMethod = descriptor.value;
343
- descriptor.value = function () {
344
- const args = [];
345
- for (let _i = 0; _i < arguments.length; _i++) {
346
- args[_i - 0] = arguments[_i];
347
- }
348
- const a = args
349
- .map(function (a) {
350
- return JSON.stringify(a);
351
- })
352
- .join();
353
- const result = originalMethod.apply(this, args);
354
- const r = JSON.stringify(result);
355
- console.log('Call: ' + key + '(' + a + ') => ' + r);
356
- return result;
357
- };
358
- return descriptor;
359
- }
360
- Utils.logMethod = logMethod;
361
472
  Utils.supportsDirectArrayBuffers = supportsDirectArrayBuffersFn;
362
473
  Utils.createArrayBuffer = createArrayBufferFn;
363
474
  Utils.pointsFromBuffer = pointsFromBufferFn;
@@ -445,6 +556,7 @@ export var Utils;
445
556
  }
446
557
  case 'black-fill': {
447
558
  paint = new Paint();
559
+ paint.setColor('black');
448
560
  paint.setStyle(Style.FILL);
449
561
  break;
450
562
  }
@@ -479,9 +591,15 @@ export var Utils;
479
591
  return true;
480
592
  }
481
593
  Utils.clipPathSupported = clipPathSupported;
594
+ /**
595
+ * Calculates the sum across all values of the given array.
596
+ *
597
+ * @param values
598
+ * @return
599
+ */
482
600
  function calcSum(values) {
483
601
  let sum = 0;
484
- if (values == null) {
602
+ if (!values) {
485
603
  return sum;
486
604
  }
487
605
  for (const f of values) {
@@ -490,9 +608,16 @@ export var Utils;
490
608
  return sum;
491
609
  }
492
610
  Utils.calcSum = calcSum;
611
+ /**
612
+ * Calculates the sum of positive numbers and negative numbers separately,
613
+ * across all values of the given array.
614
+ *
615
+ * @param values
616
+ * @return
617
+ */
493
618
  function calcPosNegSum(values) {
494
619
  const sums = { pos: 0, neg: 0 };
495
- if (values == null) {
620
+ if (!values) {
496
621
  return sums;
497
622
  }
498
623
  const sumNeg = 0;
@@ -509,7 +634,7 @@ export var Utils;
509
634
  }
510
635
  Utils.calcPosNegSum = calcPosNegSum;
511
636
  function calcSumToIndex(index, values, desc) {
512
- if (values == null)
637
+ if (!values)
513
638
  return 0;
514
639
  let remainder = 0;
515
640
  let lastIndex = values.length - 1;