@nativescript-community/ui-chart 2.0.7 → 2.0.11

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 (404) hide show
  1. package/animation/ChartAnimator.d.ts +61 -0
  2. package/animation/ChartAnimator.js +95 -0
  3. package/animation/ChartAnimator.js.map +1 -0
  4. package/animation/Tween.d.ts +4 -0
  5. package/animation/Tween.js +25 -0
  6. package/animation/Tween.js.map +1 -0
  7. package/buffer/AbstractBuffer.d.ts +40 -0
  8. package/buffer/AbstractBuffer.js +49 -0
  9. package/buffer/AbstractBuffer.js.map +1 -0
  10. package/buffer/BarBuffer.d.ts +15 -0
  11. package/buffer/BarBuffer.js +109 -0
  12. package/buffer/BarBuffer.js.map +1 -0
  13. package/buffer/HorizontalBarBuffer.d.ts +6 -0
  14. package/buffer/HorizontalBarBuffer.js +81 -0
  15. package/buffer/HorizontalBarBuffer.js.map +1 -0
  16. package/charts/BarChart.d.ts +96 -0
  17. package/charts/BarChart.js +143 -0
  18. package/charts/BarChart.js.map +1 -0
  19. package/charts/BarLineChartBase.d.ts +583 -0
  20. package/charts/BarLineChartBase.js +1231 -0
  21. package/charts/BarLineChartBase.js.map +1 -0
  22. package/charts/BubbleChart.d.ts +27 -0
  23. package/charts/BubbleChart.js +20 -0
  24. package/charts/BubbleChart.js.map +1 -0
  25. package/charts/CandleStickChart.d.ts +29 -0
  26. package/charts/CandleStickChart.js +19 -0
  27. package/charts/CandleStickChart.js.map +1 -0
  28. package/charts/Chart.d.ts +498 -0
  29. package/charts/Chart.js +799 -0
  30. package/charts/Chart.js.map +1 -0
  31. package/charts/CombinedChart.d.ts +78 -0
  32. package/charts/CombinedChart.js +119 -0
  33. package/charts/CombinedChart.js.map +1 -0
  34. package/charts/HorizontalBarChart.d.ts +54 -0
  35. package/charts/HorizontalBarChart.js +180 -0
  36. package/charts/HorizontalBarChart.js.map +1 -0
  37. package/charts/LineChart.d.ts +20 -0
  38. package/charts/LineChart.js +19 -0
  39. package/charts/LineChart.js.map +1 -0
  40. package/charts/PieChart.d.ts +247 -0
  41. package/charts/PieChart.js +453 -0
  42. package/charts/PieChart.js.map +1 -0
  43. package/charts/PieRadarChartBase.d.ts +130 -0
  44. package/charts/PieRadarChartBase.js +360 -0
  45. package/charts/PieRadarChartBase.js.map +1 -0
  46. package/charts/RadarChart.d.ts +101 -0
  47. package/charts/RadarChart.js +172 -0
  48. package/charts/RadarChart.js.map +1 -0
  49. package/charts/ScatterChart.d.ts +36 -0
  50. package/charts/ScatterChart.js +31 -0
  51. package/charts/ScatterChart.js.map +1 -0
  52. package/charts/index.d.ts +9 -0
  53. package/charts/index.js +10 -0
  54. package/charts/index.js.map +1 -0
  55. package/components/AxisBase.d.ts +299 -0
  56. package/components/AxisBase.js +352 -0
  57. package/components/AxisBase.js.map +1 -0
  58. package/components/ComponentBase.d.ts +60 -0
  59. package/components/ComponentBase.js +77 -0
  60. package/components/ComponentBase.js.map +1 -0
  61. package/components/Description.d.ts +22 -0
  62. package/components/Description.js +21 -0
  63. package/components/Description.js.map +1 -0
  64. package/components/IMarker.d.ts +39 -0
  65. package/components/IMarker.js +2 -0
  66. package/components/IMarker.js.map +1 -0
  67. package/components/Legend.d.ts +198 -0
  68. package/components/Legend.js +386 -0
  69. package/components/Legend.js.map +1 -0
  70. package/components/LegendEntry.d.ts +50 -0
  71. package/components/LegendEntry.js +51 -0
  72. package/components/LegendEntry.js.map +1 -0
  73. package/components/LimitLine.d.ts +55 -0
  74. package/components/LimitLine.js +62 -0
  75. package/components/LimitLine.js.map +1 -0
  76. package/components/MarkerImage.d.ts +1 -0
  77. package/components/MarkerImage.js +97 -0
  78. package/components/MarkerImage.js.map +1 -0
  79. package/components/XAxis.d.ts +55 -0
  80. package/components/XAxis.js +59 -0
  81. package/components/XAxis.js.map +1 -0
  82. package/components/YAxis.d.ts +135 -0
  83. package/components/YAxis.js +205 -0
  84. package/components/YAxis.js.map +1 -0
  85. package/data/BarData.d.ts +39 -0
  86. package/data/BarData.js +126 -0
  87. package/data/BarData.js.map +1 -0
  88. package/data/BarDataSet.d.ts +47 -0
  89. package/data/BarDataSet.js +109 -0
  90. package/data/BarDataSet.js.map +1 -0
  91. package/data/BarEntry.d.ts +11 -0
  92. package/data/BarEntry.js +2 -0
  93. package/data/BarEntry.js.map +1 -0
  94. package/data/BarLineScatterCandleBubbleData.d.ts +10 -0
  95. package/data/BarLineScatterCandleBubbleData.js +9 -0
  96. package/data/BarLineScatterCandleBubbleData.js.map +1 -0
  97. package/data/BarLineScatterCandleBubbleDataSet.d.ts +17 -0
  98. package/data/BarLineScatterCandleBubbleDataSet.js +18 -0
  99. package/data/BarLineScatterCandleBubbleDataSet.js.map +1 -0
  100. package/data/BaseDataSet.d.ts +180 -0
  101. package/data/BaseDataSet.js +220 -0
  102. package/data/BaseDataSet.js.map +1 -0
  103. package/data/BaseEntry.d.ts +10 -0
  104. package/data/BaseEntry.js +2 -0
  105. package/data/BaseEntry.js.map +1 -0
  106. package/data/BubbleData.d.ts +12 -0
  107. package/data/BubbleData.js +15 -0
  108. package/data/BubbleData.js.map +1 -0
  109. package/data/BubbleDataSet.d.ts +18 -0
  110. package/data/BubbleDataSet.js +36 -0
  111. package/data/BubbleDataSet.js.map +1 -0
  112. package/data/BubbleEntry.d.ts +5 -0
  113. package/data/BubbleEntry.js +2 -0
  114. package/data/BubbleEntry.js.map +1 -0
  115. package/data/CandleData.d.ts +5 -0
  116. package/data/CandleData.js +4 -0
  117. package/data/CandleData.js.map +1 -0
  118. package/data/CandleDataSet.d.ts +76 -0
  119. package/data/CandleDataSet.js +116 -0
  120. package/data/CandleDataSet.js.map +1 -0
  121. package/data/CandleEntry.d.ts +11 -0
  122. package/data/CandleEntry.js +2 -0
  123. package/data/CandleEntry.js.map +1 -0
  124. package/data/ChartData.d.ts +320 -0
  125. package/data/ChartData.js +702 -0
  126. package/data/ChartData.js.map +1 -0
  127. package/data/CombinedData.d.ts +61 -0
  128. package/data/CombinedData.js +153 -0
  129. package/data/CombinedData.js.map +1 -0
  130. package/data/DataSet.d.ts +98 -0
  131. package/data/DataSet.js +424 -0
  132. package/data/DataSet.js.map +1 -0
  133. package/data/Entry.d.ts +3 -0
  134. package/data/Entry.js +2 -0
  135. package/data/Entry.js.map +1 -0
  136. package/data/LineData.d.ts +10 -0
  137. package/data/LineData.js +9 -0
  138. package/data/LineData.js.map +1 -0
  139. package/data/LineDataSet.d.ts +106 -0
  140. package/data/LineDataSet.js +148 -0
  141. package/data/LineDataSet.js.map +1 -0
  142. package/data/LineRadarDataSet.d.ts +32 -0
  143. package/data/LineRadarDataSet.js +29 -0
  144. package/data/LineRadarDataSet.js.map +1 -0
  145. package/data/LineScatterCandleRadarDataSet.d.ts +36 -0
  146. package/data/LineScatterCandleRadarDataSet.js +44 -0
  147. package/data/LineScatterCandleRadarDataSet.js.map +1 -0
  148. package/data/PieData.d.ts +39 -0
  149. package/data/PieData.js +55 -0
  150. package/data/PieData.js.map +1 -0
  151. package/data/PieDataSet.d.ts +52 -0
  152. package/data/PieDataSet.js +54 -0
  153. package/data/PieDataSet.js.map +1 -0
  154. package/data/PieEntry.d.ts +7 -0
  155. package/data/PieEntry.js +2 -0
  156. package/data/PieEntry.js.map +1 -0
  157. package/data/RadarData.d.ts +17 -0
  158. package/data/RadarData.js +15 -0
  159. package/data/RadarData.js.map +1 -0
  160. package/data/RadarDataSet.d.ts +14 -0
  161. package/data/RadarDataSet.js +20 -0
  162. package/data/RadarDataSet.js.map +1 -0
  163. package/data/RadarEntry.d.ts +3 -0
  164. package/data/RadarEntry.js +2 -0
  165. package/data/RadarEntry.js.map +1 -0
  166. package/data/ScatterData.d.ts +9 -0
  167. package/data/ScatterData.js +17 -0
  168. package/data/ScatterData.js.map +1 -0
  169. package/data/ScatterDataSet.d.ts +40 -0
  170. package/data/ScatterDataSet.js +61 -0
  171. package/data/ScatterDataSet.js.map +1 -0
  172. package/formatter/DefaultAxisValueFormatter.d.ts +23 -0
  173. package/formatter/DefaultAxisValueFormatter.js +30 -0
  174. package/formatter/DefaultAxisValueFormatter.js.map +1 -0
  175. package/formatter/DefaultFillFormatter.d.ts +6 -0
  176. package/formatter/DefaultFillFormatter.js +29 -0
  177. package/formatter/DefaultFillFormatter.js.map +1 -0
  178. package/formatter/DefaultValueFormatter.d.ts +3 -0
  179. package/formatter/DefaultValueFormatter.js +4 -0
  180. package/formatter/DefaultValueFormatter.js.map +1 -0
  181. package/formatter/IAxisValueFormatter.d.ts +23 -0
  182. package/formatter/IAxisValueFormatter.js +2 -0
  183. package/formatter/IAxisValueFormatter.js.map +1 -0
  184. package/formatter/IFillFormatter.d.ts +30 -0
  185. package/formatter/IFillFormatter.js +2 -0
  186. package/formatter/IFillFormatter.js.map +1 -0
  187. package/formatter/IValueFormatter.d.ts +25 -0
  188. package/formatter/IValueFormatter.js +2 -0
  189. package/formatter/IValueFormatter.js.map +1 -0
  190. package/formatter/ValueFormatter.d.ts +81 -0
  191. package/formatter/ValueFormatter.js +90 -0
  192. package/formatter/ValueFormatter.js.map +1 -0
  193. package/highlight/BarHighlighter.d.ts +33 -0
  194. package/highlight/BarHighlighter.js +89 -0
  195. package/highlight/BarHighlighter.js.map +1 -0
  196. package/highlight/ChartHighlighter.d.ts +102 -0
  197. package/highlight/ChartHighlighter.js +220 -0
  198. package/highlight/ChartHighlighter.js.map +1 -0
  199. package/highlight/CombinedHighlighter.d.ts +17 -0
  200. package/highlight/CombinedHighlighter.js +59 -0
  201. package/highlight/CombinedHighlighter.js.map +1 -0
  202. package/highlight/Highlight.d.ts +69 -0
  203. package/highlight/Highlight.js +8 -0
  204. package/highlight/Highlight.js.map +1 -0
  205. package/highlight/HorizontalBarHighlighter.d.ts +10 -0
  206. package/highlight/HorizontalBarHighlighter.js +54 -0
  207. package/highlight/HorizontalBarHighlighter.js.map +1 -0
  208. package/highlight/IHighlighter.d.ts +15 -0
  209. package/highlight/IHighlighter.js +2 -0
  210. package/highlight/IHighlighter.js.map +1 -0
  211. package/highlight/PieHighlighter.d.ts +9 -0
  212. package/highlight/PieHighlighter.js +21 -0
  213. package/highlight/PieHighlighter.js.map +1 -0
  214. package/highlight/PieRadarHighlighter.d.ts +25 -0
  215. package/highlight/PieRadarHighlighter.js +33 -0
  216. package/highlight/PieRadarHighlighter.js.map +1 -0
  217. package/highlight/RadarHighlighter.d.ts +20 -0
  218. package/highlight/RadarHighlighter.js +59 -0
  219. package/highlight/RadarHighlighter.js.map +1 -0
  220. package/index.d.ts +11 -0
  221. package/index.js +15 -0
  222. package/index.js.map +1 -0
  223. package/interfaces/dataprovider/BarDataProvider.d.ts +9 -0
  224. package/interfaces/dataprovider/BarLineScatterCandleBubbleDataProvider.d.ts +19 -0
  225. package/interfaces/dataprovider/BubbleDataProvider.d.ts +6 -0
  226. package/interfaces/dataprovider/CandleDataProvider.d.ts +6 -0
  227. package/interfaces/dataprovider/ChartInterface.d.ts +60 -0
  228. package/interfaces/dataprovider/CombinedDataProvider.d.ts +13 -0
  229. package/interfaces/dataprovider/LineDataProvider.d.ts +9 -0
  230. package/interfaces/dataprovider/ScatterDataProvider.d.ts +6 -0
  231. package/interfaces/datasets/IBarDataSet.d.ts +47 -0
  232. package/interfaces/datasets/IBarLineScatterCandleBubbleDataSet.d.ts +12 -0
  233. package/interfaces/datasets/IBubbleDataSet.d.ts +19 -0
  234. package/interfaces/datasets/ICandleDataSet.d.ts +81 -0
  235. package/interfaces/datasets/IDataSet.d.ts +385 -0
  236. package/interfaces/datasets/ILineDataSet.d.ts +67 -0
  237. package/interfaces/datasets/ILineRadarDataSet.d.ts +35 -0
  238. package/interfaces/datasets/ILineScatterCandleRadarDataSet.d.ts +32 -0
  239. package/interfaces/datasets/IPieDataSet.d.ts +49 -0
  240. package/interfaces/datasets/IRadarDataSet.d.ts +21 -0
  241. package/interfaces/datasets/IScatterDataSet.d.ts +37 -0
  242. package/jobs/AnimatedMoveViewJob.d.ts +15 -0
  243. package/jobs/AnimatedMoveViewJob.js +42 -0
  244. package/jobs/AnimatedMoveViewJob.js.map +1 -0
  245. package/jobs/AnimatedViewPortJob.d.ts +31 -0
  246. package/jobs/AnimatedViewPortJob.js +52 -0
  247. package/jobs/AnimatedViewPortJob.js.map +1 -0
  248. package/jobs/AnimatedZoomJob.d.ts +23 -0
  249. package/jobs/AnimatedZoomJob.js +63 -0
  250. package/jobs/AnimatedZoomJob.js.map +1 -0
  251. package/jobs/MoveViewJob.d.ts +14 -0
  252. package/jobs/MoveViewJob.js +36 -0
  253. package/jobs/MoveViewJob.js.map +1 -0
  254. package/jobs/ViewPortJob.d.ts +13 -0
  255. package/jobs/ViewPortJob.js +14 -0
  256. package/jobs/ViewPortJob.js.map +1 -0
  257. package/jobs/ZoomJob.d.ts +15 -0
  258. package/jobs/ZoomJob.js +48 -0
  259. package/jobs/ZoomJob.js.map +1 -0
  260. package/listener/BarLineChartTouchListener.d.ts +187 -0
  261. package/listener/BarLineChartTouchListener.js +544 -0
  262. package/listener/BarLineChartTouchListener.js.map +1 -0
  263. package/listener/ChartTouchListener.d.ts +69 -0
  264. package/listener/ChartTouchListener.js +81 -0
  265. package/listener/ChartTouchListener.js.map +1 -0
  266. package/listener/PieRadarChartTouchListener.d.ts +100 -0
  267. package/listener/PieRadarChartTouchListener.js +282 -0
  268. package/listener/PieRadarChartTouchListener.js.map +1 -0
  269. package/model/GradientColor.d.ts +9 -0
  270. package/model/GradientColor.js +19 -0
  271. package/model/GradientColor.js.map +1 -0
  272. package/package.json +9 -2
  273. package/renderer/AxisRenderer.d.ts +103 -0
  274. package/renderer/AxisRenderer.js +215 -0
  275. package/renderer/AxisRenderer.js.map +1 -0
  276. package/renderer/BarChartRenderer.d.ts +40 -0
  277. package/renderer/BarChartRenderer.js +362 -0
  278. package/renderer/BarChartRenderer.js.map +1 -0
  279. package/renderer/BarLineScatterCandleBubbleRenderer.d.ts +57 -0
  280. package/renderer/BarLineScatterCandleBubbleRenderer.js +63 -0
  281. package/renderer/BarLineScatterCandleBubbleRenderer.js.map +1 -0
  282. package/renderer/BubbleChartRenderer.d.ts +22 -0
  283. package/renderer/BubbleChartRenderer.js +204 -0
  284. package/renderer/BubbleChartRenderer.js.map +1 -0
  285. package/renderer/CandleStickChartRenderer.d.ts +18 -0
  286. package/renderer/CandleStickChartRenderer.js +268 -0
  287. package/renderer/CandleStickChartRenderer.js.map +1 -0
  288. package/renderer/CombinedChartRenderer.d.ts +40 -0
  289. package/renderer/CombinedChartRenderer.js +133 -0
  290. package/renderer/CombinedChartRenderer.js.map +1 -0
  291. package/renderer/DataRenderer.d.ts +103 -0
  292. package/renderer/DataRenderer.js +110 -0
  293. package/renderer/DataRenderer.js.map +1 -0
  294. package/renderer/HorizontalBarChartRenderer.d.ts +20 -0
  295. package/renderer/HorizontalBarChartRenderer.js +303 -0
  296. package/renderer/HorizontalBarChartRenderer.js.map +1 -0
  297. package/renderer/LegendRenderer.d.ts +54 -0
  298. package/renderer/LegendRenderer.js +336 -0
  299. package/renderer/LegendRenderer.js.map +1 -0
  300. package/renderer/LineChartRenderer.d.ts +100 -0
  301. package/renderer/LineChartRenderer.js +745 -0
  302. package/renderer/LineChartRenderer.js.map +1 -0
  303. package/renderer/LineRadarRenderer.d.ts +30 -0
  304. package/renderer/LineRadarRenderer.js +76 -0
  305. package/renderer/LineRadarRenderer.js.map +1 -0
  306. package/renderer/LineScatterCandleRadarRenderer.d.ts +20 -0
  307. package/renderer/LineScatterCandleRadarRenderer.js +45 -0
  308. package/renderer/LineScatterCandleRadarRenderer.js.map +1 -0
  309. package/renderer/PieChartRenderer.d.ts +86 -0
  310. package/renderer/PieChartRenderer.js +714 -0
  311. package/renderer/PieChartRenderer.js.map +1 -0
  312. package/renderer/RadarChartRenderer.d.ts +33 -0
  313. package/renderer/RadarChartRenderer.js +290 -0
  314. package/renderer/RadarChartRenderer.js.map +1 -0
  315. package/renderer/Renderer.d.ts +13 -0
  316. package/renderer/Renderer.js +11 -0
  317. package/renderer/Renderer.js.map +1 -0
  318. package/renderer/ScatterChartRenderer.d.ts +16 -0
  319. package/renderer/ScatterChartRenderer.js +147 -0
  320. package/renderer/ScatterChartRenderer.js.map +1 -0
  321. package/renderer/XAxisRenderer.d.ts +58 -0
  322. package/renderer/XAxisRenderer.js +458 -0
  323. package/renderer/XAxisRenderer.js.map +1 -0
  324. package/renderer/XAxisRendererHorizontalBarChart.d.ts +31 -0
  325. package/renderer/XAxisRendererHorizontalBarChart.js +264 -0
  326. package/renderer/XAxisRendererHorizontalBarChart.js.map +1 -0
  327. package/renderer/XAxisRendererRadarChart.d.ts +17 -0
  328. package/renderer/XAxisRendererRadarChart.js +51 -0
  329. package/renderer/XAxisRendererRadarChart.js.map +1 -0
  330. package/renderer/YAxisRenderer.d.ts +60 -0
  331. package/renderer/YAxisRenderer.js +379 -0
  332. package/renderer/YAxisRenderer.js.map +1 -0
  333. package/renderer/YAxisRendererHorizontalBarChart.d.ts +33 -0
  334. package/renderer/YAxisRendererHorizontalBarChart.js +258 -0
  335. package/renderer/YAxisRendererHorizontalBarChart.js.map +1 -0
  336. package/renderer/YAxisRendererRadarChart.d.ts +14 -0
  337. package/renderer/YAxisRendererRadarChart.js +180 -0
  338. package/renderer/YAxisRendererRadarChart.js.map +1 -0
  339. package/renderer/scatter/ChevronDownShapeRenderer.d.ts +11 -0
  340. package/renderer/scatter/ChevronDownShapeRenderer.js +15 -0
  341. package/renderer/scatter/ChevronDownShapeRenderer.js.map +1 -0
  342. package/renderer/scatter/ChevronUpShapeRenderer.d.ts +11 -0
  343. package/renderer/scatter/ChevronUpShapeRenderer.js +15 -0
  344. package/renderer/scatter/ChevronUpShapeRenderer.js.map +1 -0
  345. package/renderer/scatter/CircleShapeRenderer.d.ts +11 -0
  346. package/renderer/scatter/CircleShapeRenderer.js +31 -0
  347. package/renderer/scatter/CircleShapeRenderer.js.map +1 -0
  348. package/renderer/scatter/CrossShapeRenderer.d.ts +11 -0
  349. package/renderer/scatter/CrossShapeRenderer.js +15 -0
  350. package/renderer/scatter/CrossShapeRenderer.js.map +1 -0
  351. package/renderer/scatter/IShapeRenderer.d.ts +20 -0
  352. package/renderer/scatter/IShapeRenderer.js +2 -0
  353. package/renderer/scatter/IShapeRenderer.js.map +1 -0
  354. package/renderer/scatter/SquareShapeRenderer.d.ts +11 -0
  355. package/renderer/scatter/SquareShapeRenderer.js +31 -0
  356. package/renderer/scatter/SquareShapeRenderer.js.map +1 -0
  357. package/renderer/scatter/TriangleShapeRenderer.d.ts +12 -0
  358. package/renderer/scatter/TriangleShapeRenderer.js +43 -0
  359. package/renderer/scatter/TriangleShapeRenderer.js.map +1 -0
  360. package/renderer/scatter/XShapeRenderer.d.ts +11 -0
  361. package/renderer/scatter/XShapeRenderer.js +15 -0
  362. package/renderer/scatter/XShapeRenderer.js.map +1 -0
  363. package/utils/ColorTemplate.d.ts +34 -0
  364. package/utils/ColorTemplate.js +51 -0
  365. package/utils/ColorTemplate.js.map +1 -0
  366. package/utils/HorizontalViewPortHandler.d.ts +6 -0
  367. package/utils/HorizontalViewPortHandler.js +7 -0
  368. package/utils/HorizontalViewPortHandler.js.map +1 -0
  369. package/utils/MPPointD.d.ts +5 -0
  370. package/utils/MPPointF.d.ts +7 -0
  371. package/utils/MPSize.d.ts +7 -0
  372. package/utils/ObjectPool.d.ts +81 -0
  373. package/utils/ObjectPool.js +183 -0
  374. package/utils/ObjectPool.js.map +1 -0
  375. package/utils/Transformer.d.ts +175 -0
  376. package/utils/Transformer.js +356 -0
  377. package/utils/Transformer.js.map +1 -0
  378. package/utils/TransformerHorizontalBarChart.d.ts +14 -0
  379. package/utils/TransformerHorizontalBarChart.js +30 -0
  380. package/utils/TransformerHorizontalBarChart.js.map +1 -0
  381. package/utils/Utils.d.ts +203 -0
  382. package/utils/Utils.js +653 -0
  383. package/utils/Utils.js.map +1 -0
  384. package/utils/ViewPortHandler.d.ts +299 -0
  385. package/utils/ViewPortHandler.js +585 -0
  386. package/utils/ViewPortHandler.js.map +1 -0
  387. package/utils/colors/colorful.d.ts +1 -0
  388. package/utils/colors/colorful.js +2 -0
  389. package/utils/colors/colorful.js.map +1 -0
  390. package/utils/colors/joyful.d.ts +1 -0
  391. package/utils/colors/joyful.js +2 -0
  392. package/utils/colors/joyful.js.map +1 -0
  393. package/utils/colors/liberty.d.ts +1 -0
  394. package/utils/colors/liberty.js +2 -0
  395. package/utils/colors/liberty.js.map +1 -0
  396. package/utils/colors/material.d.ts +1 -0
  397. package/utils/colors/material.js +2 -0
  398. package/utils/colors/material.js.map +1 -0
  399. package/utils/colors/pastel.d.ts +1 -0
  400. package/utils/colors/pastel.js +2 -0
  401. package/utils/colors/pastel.js.map +1 -0
  402. package/utils/colors/vordiplom.d.ts +1 -0
  403. package/utils/colors/vordiplom.js +2 -0
  404. package/utils/colors/vordiplom.js.map +1 -0
@@ -0,0 +1,745 @@
1
+ import { Canvas, Direction, FillType, LinearGradient, Path, Style, TileMode, releaseImage } from '@nativescript-community/ui-canvas';
2
+ import { Screen } from '@nativescript/core';
3
+ import { Rounding } from '../data/DataSet';
4
+ import { Mode } from '../data/LineDataSet';
5
+ import { ColorTemplate } from '../utils/ColorTemplate';
6
+ import { Utils } from '../utils/Utils';
7
+ import { LineRadarRenderer } from './LineRadarRenderer';
8
+ function distanceBetweenPoints(pt1, pt2) {
9
+ return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));
10
+ }
11
+ function almostEquals(x, y, epsilon) {
12
+ return Math.abs(x - y) < epsilon;
13
+ }
14
+ function _isPointInArea(point, area, margin = 0.5) {
15
+ // margin - default is to match rounded decimals
16
+ return point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;
17
+ }
18
+ export function splineCurve(firstPoint, middlePoint, afterPoint, tension) {
19
+ // Props to Rob Spencer at scaled innovation for his post on splining between points
20
+ // http://scaledinnovation.com/analytics/splines/aboutSplines.html
21
+ // This function must also respect "skipped" points
22
+ const previous = firstPoint;
23
+ const current = middlePoint;
24
+ const next = afterPoint;
25
+ const d01 = distanceBetweenPoints(current, previous);
26
+ const d12 = distanceBetweenPoints(next, current);
27
+ let s01 = d01 / (d01 + d12);
28
+ let s12 = d12 / (d01 + d12);
29
+ // If all points are the same, s01 & s02 will be inf
30
+ s01 = isNaN(s01) ? 0 : s01;
31
+ s12 = isNaN(s12) ? 0 : s12;
32
+ const fa = tension * s01; // scaling factor for triangle Ta
33
+ const fb = tension * s12;
34
+ return {
35
+ previous: {
36
+ x: current.x - fa * (next.x - previous.x),
37
+ y: current.y - fa * (next.y - previous.y)
38
+ },
39
+ next: {
40
+ x: current.x + fb * (next.x - previous.x),
41
+ y: current.y + fb * (next.y - previous.y)
42
+ }
43
+ };
44
+ }
45
+ function getXYValue(dataSet, index) {
46
+ const yKey = dataSet.yProperty;
47
+ const entry = dataSet.getEntryForIndex(index);
48
+ const yVal = entry[yKey];
49
+ if (yVal === undefined || yVal === null) {
50
+ return null;
51
+ }
52
+ return { x: dataSet.getEntryXValue(entry, index), y: entry[yKey] };
53
+ }
54
+ // fix drawing "too" thin paths on iOS
55
+ export class DataSetImageCache {
56
+ /**
57
+ * Sets up the cache, returns true if a change of cache was required.
58
+ *
59
+ * @param set
60
+ * @return
61
+ */
62
+ init(set) {
63
+ const size = set.circleColors.length || 1;
64
+ let changeRequired = false;
65
+ if (!this.circleBitmaps) {
66
+ this.circleBitmaps = [];
67
+ changeRequired = true;
68
+ }
69
+ else if (this.circleBitmaps.length !== size) {
70
+ this.circleBitmaps = [];
71
+ changeRequired = true;
72
+ }
73
+ return changeRequired;
74
+ }
75
+ /**
76
+ * Fills the cache with bitmaps for the given dataset.
77
+ *
78
+ * @param set
79
+ * @param drawCircleHole
80
+ * @param drawTransparentCircleHole
81
+ */
82
+ fill(set, renderPaint, circlePaintInner, drawCircleHole, drawTransparentCircleHole) {
83
+ const colorCount = set.circleColors.length || 1;
84
+ const circleRadius = set.circleRadius;
85
+ const circleHoleRadius = set.circleHoleRadius;
86
+ const scale = set.circleHighRes ? Screen.mainScreen.scale : 1;
87
+ for (let i = 0; i < colorCount; i++) {
88
+ const canvas = new Canvas(Math.round(circleRadius * 2 * scale), Math.round(circleRadius * 2 * scale));
89
+ canvas.scale(scale, scale);
90
+ renderPaint.setColor(set.circleColors[i] || set.color);
91
+ if (drawTransparentCircleHole) {
92
+ const circlePathBuffer = Utils.getTempPath();
93
+ // Begin path for circle with hole
94
+ circlePathBuffer.reset();
95
+ // const oldType = circlePathBuffer.getFillType();
96
+ circlePathBuffer.setFillType(FillType.EVEN_ODD);
97
+ circlePathBuffer.addCircle(circleRadius, circleRadius, circleRadius, Direction.CW);
98
+ // Cut hole in path
99
+ circlePathBuffer.addCircle(circleRadius, circleRadius, circleHoleRadius, Direction.CCW);
100
+ // Fill in-between
101
+ canvas.drawPath(circlePathBuffer, renderPaint);
102
+ // circlePathBuffer.setFillType(oldType);
103
+ }
104
+ else {
105
+ canvas.drawCircle(circleRadius, circleRadius, circleRadius, renderPaint);
106
+ if (drawCircleHole) {
107
+ canvas.drawCircle(circleRadius, circleRadius, circleHoleRadius, circlePaintInner);
108
+ }
109
+ }
110
+ this.circleBitmaps[i] = canvas.getImage();
111
+ }
112
+ }
113
+ /**
114
+ * Returns the cached Bitmap at the given index.
115
+ *
116
+ * @param index
117
+ * @return
118
+ */
119
+ getBitmap(index) {
120
+ return this.circleBitmaps[index % this.circleBitmaps.length];
121
+ }
122
+ }
123
+ export class LineChartRenderer extends LineRadarRenderer {
124
+ get fillPath() {
125
+ if (!LineChartRenderer.mFillPath) {
126
+ LineChartRenderer.mFillPath = new Path();
127
+ }
128
+ return LineChartRenderer.mFillPath;
129
+ }
130
+ constructor(chart, animator, viewPortHandler) {
131
+ super(animator, viewPortHandler);
132
+ /**
133
+ * cache for the circle bitmaps of all datasets
134
+ */
135
+ this.mImageCaches = new Map();
136
+ this.mChart = chart;
137
+ // if (__ANDROID__) {
138
+ // this.mBitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
139
+ // }
140
+ }
141
+ get circlePaintInner() {
142
+ if (!this.mCirclePaintInner) {
143
+ this.mCirclePaintInner = Utils.getTemplatePaint('white-fill');
144
+ }
145
+ return this.mCirclePaintInner;
146
+ }
147
+ drawData(c) {
148
+ const width = this.mViewPortHandler.chartWidth;
149
+ const height = this.mViewPortHandler.chartHeight;
150
+ let drawBitmap = this.mDrawBitmap?.get();
151
+ if (!drawBitmap || drawBitmap.width !== width || drawBitmap.height !== height) {
152
+ if (width > 0 && height > 0) {
153
+ this.mBitmapCanvas = new Canvas(width, height);
154
+ drawBitmap = this.mBitmapCanvas.getImage();
155
+ this.mDrawBitmap = new WeakRef(drawBitmap);
156
+ }
157
+ else
158
+ return;
159
+ }
160
+ else {
161
+ this.mBitmapCanvas.clear();
162
+ }
163
+ const lineData = this.mChart.lineData;
164
+ let needsBitmapDrawing = false;
165
+ for (const set of lineData.visibleDataSets) {
166
+ needsBitmapDrawing = this.drawDataSet(c, set) || needsBitmapDrawing;
167
+ }
168
+ if (needsBitmapDrawing) {
169
+ const renderPaint = this.renderPaint;
170
+ c.drawBitmap(drawBitmap, 0, 0, renderPaint);
171
+ }
172
+ }
173
+ drawDataSet(c, dataSet) {
174
+ if (dataSet.entryCount < 1)
175
+ return false;
176
+ const renderPaint = this.renderPaint;
177
+ renderPaint.setStrokeWidth(dataSet.lineWidth);
178
+ if (dataSet.dashPathEffect) {
179
+ renderPaint.setPathEffect(dataSet.dashPathEffect);
180
+ }
181
+ if (dataSet.shader) {
182
+ renderPaint.setShader(dataSet.shader);
183
+ }
184
+ renderPaint.setColor(dataSet.getColor());
185
+ renderPaint.setStyle(Style.STROKE);
186
+ const scaleX = this.mViewPortHandler.getScaleX();
187
+ dataSet.applyFiltering(scaleX);
188
+ const result = this.draw(c, dataSet);
189
+ if (dataSet.dashPathEffect) {
190
+ renderPaint.setPathEffect(null);
191
+ }
192
+ if (dataSet.shader) {
193
+ renderPaint.setShader(null);
194
+ }
195
+ return result;
196
+ }
197
+ generateHorizontalBezierPath(dataSet, outputPath) {
198
+ if (this.mXBounds.range >= 1) {
199
+ const pointsPerEntryPair = 6;
200
+ const entryCount = dataSet.entryCount;
201
+ if (!this.mLineBuffer || this.mLineBuffer.length < Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2) {
202
+ this.mLineBuffer = Utils.createArrayBuffer(Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2);
203
+ }
204
+ const phaseY = this.animator.phaseY;
205
+ const yKey = dataSet.yProperty;
206
+ let firstIndex = Math.max(0, this.mXBounds.min);
207
+ // let firstIndex = this.mXBounds.min + 1;
208
+ const lastIndex = this.mXBounds.min + this.mXBounds.range;
209
+ let prev = dataSet.getEntryForIndex(firstIndex);
210
+ let yVal = prev[yKey];
211
+ while (firstIndex < lastIndex && (yVal === undefined || yVal === null)) {
212
+ firstIndex++;
213
+ prev = dataSet.getEntryForIndex(firstIndex);
214
+ yVal = prev[yKey];
215
+ }
216
+ let prevXVal = dataSet.getEntryXValue(prev, firstIndex);
217
+ let cur = prev;
218
+ let curXVal = prevXVal;
219
+ const float32arr = this.mLineBuffer;
220
+ let index = 0;
221
+ float32arr[index++] = prevXVal;
222
+ float32arr[index++] = cur[yKey] * phaseY;
223
+ // let the spline start
224
+ for (let j = firstIndex + 1; j <= lastIndex; j++) {
225
+ const newEntry = dataSet.getEntryForIndex(j);
226
+ const yVal = newEntry[yKey];
227
+ if (yVal === undefined || yVal === null) {
228
+ continue;
229
+ }
230
+ prev = cur;
231
+ prevXVal = curXVal;
232
+ cur = newEntry;
233
+ curXVal = dataSet.getEntryXValue(cur, j);
234
+ const cpx = prevXVal + (curXVal - prevXVal) / 2.0;
235
+ float32arr[index++] = cpx;
236
+ float32arr[index++] = prev[yKey] * phaseY;
237
+ float32arr[index++] = cpx;
238
+ float32arr[index++] = cur[yKey] * phaseY;
239
+ float32arr[index++] = curXVal;
240
+ float32arr[index++] = cur[yKey] * phaseY;
241
+ }
242
+ const points = Utils.pointsFromBuffer(float32arr);
243
+ if (__ANDROID__ && Utils.supportsDirectArrayBuffers()) {
244
+ outputPath['setCubicLinesBuffer'](points, 0, index);
245
+ }
246
+ else {
247
+ outputPath.setCubicLines(points, 0, index);
248
+ }
249
+ return [points, index];
250
+ }
251
+ else {
252
+ outputPath.reset();
253
+ return [];
254
+ }
255
+ }
256
+ generateCubicPath(dataSet, outputPath) {
257
+ if (this.mXBounds.range >= 1) {
258
+ const pointsPerEntryPair = 6;
259
+ const entryCount = dataSet.entryCount;
260
+ if (!this.mLineBuffer || this.mLineBuffer.length < Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2) {
261
+ this.mLineBuffer = Utils.createArrayBuffer(Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2);
262
+ }
263
+ const phaseY = this.animator.phaseY;
264
+ const xKey = dataSet.xProperty;
265
+ const yKey = dataSet.yProperty;
266
+ const intensity = dataSet.cubicIntensity;
267
+ // Take an extra polet from the left, and an extra from the right.
268
+ // That's because we need 4 points for a cubic bezier (cubic=4), otherwise we get lines moving and doing weird stuff on the edges of the chart.
269
+ // So in the starting `prev` and `cur`, go -2, -1
270
+ // And in the `lastIndex`, add +1
271
+ const firstIndex = Math.max(0, this.mXBounds.min);
272
+ // let firstIndex = this.mXBounds.min + 1;
273
+ const lastIndex = this.mXBounds.min + this.mXBounds.range;
274
+ const float32arr = this.mLineBuffer;
275
+ let index = 0;
276
+ let nextIndex = -1;
277
+ let next;
278
+ let controlPoints;
279
+ let point;
280
+ let prev;
281
+ let prevControlPoints;
282
+ for (let j = firstIndex; j <= lastIndex; j++) {
283
+ point = getXYValue(dataSet, j);
284
+ if (!point) {
285
+ // if (j === 0) {
286
+ // return [];
287
+ // }
288
+ continue;
289
+ }
290
+ if (!prev) {
291
+ prev = point;
292
+ }
293
+ nextIndex = j + 1 < dataSet.entryCount ? j + 1 : j;
294
+ next = getXYValue(dataSet, nextIndex);
295
+ if (!next) {
296
+ continue;
297
+ }
298
+ controlPoints = splineCurve(prev, point, next, intensity);
299
+ if (j === firstIndex) {
300
+ float32arr[index++] = point.x;
301
+ float32arr[index++] = point.y * phaseY;
302
+ }
303
+ else {
304
+ float32arr[index++] = prevControlPoints.next.x;
305
+ float32arr[index++] = prevControlPoints.next.y * phaseY;
306
+ float32arr[index++] = controlPoints.previous.x;
307
+ float32arr[index++] = controlPoints.previous.y * phaseY;
308
+ float32arr[index++] = point.x;
309
+ float32arr[index++] = point.y * phaseY;
310
+ }
311
+ prevControlPoints = controlPoints;
312
+ prev = point;
313
+ }
314
+ const points = Utils.pointsFromBuffer(float32arr);
315
+ if (__ANDROID__ && Utils.supportsDirectArrayBuffers()) {
316
+ outputPath['setCubicLinesBuffer'](points, 0, index);
317
+ }
318
+ else {
319
+ outputPath.setCubicLines(points, 0, index);
320
+ }
321
+ return [points, index];
322
+ }
323
+ else {
324
+ outputPath.reset();
325
+ return [];
326
+ }
327
+ }
328
+ generateLinearPath(dataSet, outputPath) {
329
+ if (this.mXBounds.range >= 1) {
330
+ const isDrawSteppedEnabled = dataSet.mode === Mode.STEPPED;
331
+ const entryCount = dataSet.entryCount;
332
+ const pointsPerEntryPair = isDrawSteppedEnabled ? 4 : 2;
333
+ if (!this.mLineBuffer || this.mLineBuffer.length < Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2) {
334
+ this.mLineBuffer = Utils.createArrayBuffer(Math.max(entryCount * pointsPerEntryPair, pointsPerEntryPair) * 2);
335
+ }
336
+ const phaseX = this.animator.phaseX;
337
+ const phaseY = this.animator.phaseY;
338
+ const yKey = dataSet.yProperty;
339
+ // const filled = outputPath;
340
+ // outputPath.reset();
341
+ let firstIndex = Math.max(0, this.mXBounds.min);
342
+ const lastIndex = this.mXBounds.min + this.mXBounds.range;
343
+ let firstEntry = dataSet.getEntryForIndex(firstIndex);
344
+ let entryXVal = dataSet.getEntryXValue(firstEntry, firstIndex);
345
+ let yVal = firstEntry[yKey];
346
+ while (firstIndex < lastIndex && (yVal === undefined || yVal === null)) {
347
+ firstIndex++;
348
+ firstEntry = dataSet.getEntryForIndex(firstIndex);
349
+ entryXVal = dataSet.getEntryXValue(firstEntry, firstIndex);
350
+ yVal = firstEntry[yKey];
351
+ }
352
+ const float32arr = this.mLineBuffer;
353
+ float32arr[0] = entryXVal;
354
+ float32arr[1] = firstEntry[yKey] * phaseY;
355
+ let index = 2;
356
+ // create a new path
357
+ let currentEntry = null;
358
+ let currentEntryXVal;
359
+ let currentEntryYVal;
360
+ let previousEntryYVal;
361
+ // doing the if test outside is much much faster on big data
362
+ if (isDrawSteppedEnabled) {
363
+ for (let x = firstIndex + 1; x <= lastIndex; x++) {
364
+ currentEntry = dataSet.getEntryForIndex(x);
365
+ currentEntryXVal = dataSet.getEntryXValue(currentEntry, x);
366
+ currentEntryYVal = currentEntry[yKey];
367
+ if (currentEntryYVal === undefined || currentEntryYVal === null) {
368
+ continue;
369
+ }
370
+ float32arr[index++] = currentEntryXVal;
371
+ float32arr[index++] = previousEntryYVal * phaseY;
372
+ float32arr[index++] = currentEntryXVal;
373
+ float32arr[index++] = currentEntryYVal * phaseY;
374
+ previousEntryYVal = currentEntryYVal;
375
+ }
376
+ }
377
+ else {
378
+ for (let x = firstIndex + 1; x <= lastIndex; x++) {
379
+ currentEntry = dataSet.getEntryForIndex(x);
380
+ currentEntryXVal = dataSet.getEntryXValue(currentEntry, x);
381
+ currentEntryYVal = currentEntry[yKey];
382
+ if (currentEntryYVal === undefined || currentEntryYVal === null) {
383
+ continue;
384
+ }
385
+ float32arr[index++] = currentEntryXVal;
386
+ float32arr[index++] = currentEntryYVal * phaseY;
387
+ previousEntryYVal = currentEntryYVal;
388
+ }
389
+ }
390
+ const points = Utils.pointsFromBuffer(float32arr);
391
+ if (__ANDROID__ && Utils.supportsDirectArrayBuffers()) {
392
+ outputPath['setLinesBuffer'](points, 0, index);
393
+ }
394
+ else {
395
+ outputPath.setLines(points, 0, index);
396
+ }
397
+ return [points, index];
398
+ }
399
+ else {
400
+ outputPath.reset();
401
+ return [];
402
+ }
403
+ }
404
+ getMultiColorsShader(colors, points, trans, dataSet) {
405
+ const nbColors = colors.length;
406
+ const xKey = dataSet.xProperty;
407
+ if (nbColors > 0) {
408
+ trans.pointValuesToPixel(points);
409
+ const shaderColors = [];
410
+ const positions = [];
411
+ const firstIndex = Math.max(0, this.mXBounds.min);
412
+ const range = this.mXBounds.range;
413
+ const lastIndex = firstIndex + range;
414
+ const width = this.mViewPortHandler.chartWidth;
415
+ const chartRect = this.mViewPortHandler.chartRect;
416
+ let lastColor;
417
+ const gradientDelta = 0;
418
+ const posDelta = gradientDelta / width;
419
+ for (let index = 0; index < nbColors; index++) {
420
+ const color = colors[index];
421
+ let colorIndex = color[xKey || 'index'];
422
+ // if filtered we need to get the real index
423
+ if (dataSet.isFiltered()) {
424
+ dataSet.ignoreFiltered = true;
425
+ const entry = dataSet.getEntryForIndex(colorIndex);
426
+ dataSet.ignoreFiltered = false;
427
+ if (entry) {
428
+ colorIndex = dataSet.getEntryIndexForXValue(dataSet.getEntryXValue(entry, colorIndex), NaN, Rounding.CLOSEST);
429
+ }
430
+ }
431
+ if (colorIndex < firstIndex) {
432
+ lastColor = color.color;
433
+ continue;
434
+ }
435
+ if (colorIndex > lastIndex) {
436
+ if (shaderColors.length === 0) {
437
+ shaderColors.push(lastColor);
438
+ positions.push(0);
439
+ shaderColors.push(lastColor);
440
+ positions.push(1);
441
+ }
442
+ break;
443
+ }
444
+ const posX = Math.floor(points[(colorIndex - firstIndex) * 2]);
445
+ const pos = (posX - chartRect.left) / width;
446
+ if (lastColor) {
447
+ if (shaderColors.length === 0) {
448
+ shaderColors.push(lastColor);
449
+ positions.push(0);
450
+ }
451
+ shaderColors.push(lastColor);
452
+ positions.push(pos - posDelta);
453
+ }
454
+ shaderColors.push(color.color);
455
+ positions.push(pos + posDelta);
456
+ lastColor = color.color;
457
+ }
458
+ if (shaderColors.length === 0) {
459
+ shaderColors.push(colors[0].color);
460
+ positions.push(0);
461
+ }
462
+ if (shaderColors.length === 1) {
463
+ shaderColors.push(colors[0].color);
464
+ positions.push(1);
465
+ }
466
+ return new LinearGradient(0, 0, width, 0, shaderColors, positions, TileMode.CLAMP);
467
+ }
468
+ return null;
469
+ }
470
+ draw(c, dataSet) {
471
+ const result = false;
472
+ const drawFilled = dataSet.drawFilledEnabled;
473
+ const drawLine = dataSet.lineWidth > 0;
474
+ if (!drawFilled && !drawLine) {
475
+ return result;
476
+ }
477
+ const trans = this.mChart.getTransformer(dataSet.axisDependency);
478
+ const linePath = Utils.getTempPath();
479
+ this.mXBounds.set(this.mChart, dataSet, this.animator);
480
+ let points;
481
+ switch (dataSet.mode) {
482
+ default:
483
+ case Mode.LINEAR:
484
+ case Mode.STEPPED:
485
+ points = this.generateLinearPath(dataSet, linePath)[0];
486
+ break;
487
+ case Mode.CUBIC_BEZIER:
488
+ points = this.generateCubicPath(dataSet, linePath)[0];
489
+ break;
490
+ case Mode.HORIZONTAL_BEZIER:
491
+ points = this.generateHorizontalBezierPath(dataSet, linePath)[0];
492
+ break;
493
+ }
494
+ if (!points) {
495
+ return result;
496
+ }
497
+ const colors = dataSet.colors || [dataSet.color];
498
+ const nbColors = colors.length;
499
+ const renderPaint = this.renderPaint;
500
+ let paintColorsShader;
501
+ if (nbColors > 1) {
502
+ // TODO: we transforms points in there. Could be dangerous if used after
503
+ paintColorsShader = this.getMultiColorsShader(colors, points, trans, dataSet);
504
+ }
505
+ let oldShader;
506
+ if (drawFilled) {
507
+ const useColorsForFill = dataSet.useColorsForFill;
508
+ if (paintColorsShader && useColorsForFill) {
509
+ oldShader = renderPaint.getShader();
510
+ renderPaint.setShader(paintColorsShader);
511
+ }
512
+ const fillPath = this.fillPath;
513
+ fillPath.reset();
514
+ fillPath.addPath(linePath);
515
+ const minEntryValue = dataSet.getEntryXValue(dataSet.getEntryForIndex(this.mXBounds.min), this.mXBounds.min);
516
+ const maxEntryValue = dataSet.getEntryXValue(dataSet.getEntryForIndex(this.mXBounds.min + this.mXBounds.range), this.mXBounds.min + this.mXBounds.range);
517
+ this.drawFill(c, dataSet, fillPath, trans, minEntryValue, maxEntryValue);
518
+ this.lastLinePath = linePath;
519
+ if (paintColorsShader && useColorsForFill) {
520
+ renderPaint.setShader(oldShader);
521
+ oldShader = null;
522
+ }
523
+ }
524
+ const customRender = this.mChart.customRenderer;
525
+ if (drawLine) {
526
+ const useColorsForLine = dataSet.useColorsForLine;
527
+ if (paintColorsShader && useColorsForLine) {
528
+ oldShader = renderPaint.getShader();
529
+ renderPaint.setShader(paintColorsShader);
530
+ }
531
+ trans.pathValueToPixel(linePath);
532
+ if (customRender?.drawLine) {
533
+ customRender.drawLine(c, linePath, renderPaint);
534
+ }
535
+ else {
536
+ this.drawPath(c, linePath, renderPaint);
537
+ }
538
+ if (paintColorsShader && useColorsForLine) {
539
+ renderPaint.setShader(oldShader);
540
+ oldShader = null;
541
+ }
542
+ }
543
+ return result;
544
+ }
545
+ drawLines(canvas, points, offest, length, paint, matrix) {
546
+ if (matrix) {
547
+ canvas.drawLines(points, offest, length, paint, matrix);
548
+ }
549
+ else {
550
+ canvas.drawLines(points, offest, length, paint);
551
+ }
552
+ }
553
+ drawFill(c, dataSet, spline, trans, min, max, color, fillMin) {
554
+ const fillFormatter = dataSet.fillFormatter;
555
+ if (fillFormatter.getFillLinePath) {
556
+ fillFormatter.getFillLinePath(dataSet, this.mChart, spline, this.lastLinePath);
557
+ }
558
+ else if (fillMin === undefined) {
559
+ fillMin = fillFormatter.getFillLinePosition(dataSet, this.mChart);
560
+ spline.lineTo(max, fillMin);
561
+ spline.lineTo(min, fillMin);
562
+ spline.close();
563
+ }
564
+ trans && trans.pathValueToPixel(spline);
565
+ const drawable = dataSet.fillDrawable;
566
+ if (drawable) {
567
+ this.drawFilledPathBitmap(c, spline, drawable, dataSet.fillShader);
568
+ }
569
+ else {
570
+ this.drawFilledPath(c, spline, color || dataSet.fillColor, dataSet.fillAlpha, dataSet.fillShader);
571
+ }
572
+ }
573
+ drawValuesForDataset(c, dataSet, dataSetIndex) {
574
+ const yKey = dataSet.yProperty;
575
+ // apply the text-styling defined by the DataSet
576
+ this.applyValueTextStyle(dataSet);
577
+ const chart = this.mChart;
578
+ const trans = chart.getTransformer(dataSet.axisDependency);
579
+ // make sure the values do not interfear with the circles
580
+ let valOffset = dataSet.circleRadius * 1.75;
581
+ if (!dataSet.drawCirclesEnabled)
582
+ valOffset = valOffset / 2;
583
+ this.mXBounds.set(chart, dataSet, this.animator);
584
+ const { points, count } = trans.generateTransformedValues(dataSet, this.animator.phaseX, this.animator.phaseY, this.mXBounds.min, this.mXBounds.max);
585
+ const formatter = dataSet.valueFormatter;
586
+ const iconsOffset = dataSet.iconsOffset;
587
+ const valuesOffset = dataSet.valuesOffset;
588
+ const drawIcons = dataSet.drawIconsEnabled;
589
+ const drawValues = dataSet.drawValuesEnabled;
590
+ const length = count;
591
+ const paint = this.valuePaint;
592
+ const customRender = chart.customRenderer;
593
+ for (let j = 0; j < length; j += 2) {
594
+ const x = points[j];
595
+ const y = points[j + 1];
596
+ if (!this.mViewPortHandler.isInBoundsRight(x))
597
+ break;
598
+ if (!this.mViewPortHandler.isInBoundsLeft(x) || !this.mViewPortHandler.isInBoundsY(y))
599
+ continue;
600
+ const index = j / 2 + this.mXBounds.min;
601
+ const entry = dataSet.getEntryForIndex(index);
602
+ if (!entry)
603
+ continue;
604
+ const yVal = entry[yKey];
605
+ if (yVal === undefined || yVal === null) {
606
+ continue;
607
+ }
608
+ if (drawValues) {
609
+ this.drawValue(c, chart, dataSet, dataSetIndex, entry, index, formatter.getFormattedValue(yVal, entry), valuesOffset.x + x, valuesOffset.y + y - valOffset, dataSet.getValueTextColor(j / 2), paint, customRender);
610
+ }
611
+ if (drawIcons) {
612
+ this.drawIcon(c, chart, dataSet, dataSetIndex, entry, index, dataSet.getEntryIcon(entry), x + iconsOffset.x, y + iconsOffset.y, customRender);
613
+ }
614
+ }
615
+ }
616
+ drawValues(c) {
617
+ const data = this.mChart.lineData;
618
+ const dataSets = data.dataSets;
619
+ if (!this.isDrawingValuesAllowed(this.mChart) || dataSets.some((d) => d.drawValuesEnabled || d.drawIconsEnabled) === false) {
620
+ return;
621
+ }
622
+ for (let i = 0; i < dataSets.length; i++) {
623
+ const dataSet = dataSets[i];
624
+ if (!this.shouldDrawValues(dataSet) || dataSet.entryCount < 1)
625
+ continue;
626
+ this.drawValuesForDataset(c, dataSet, i);
627
+ }
628
+ }
629
+ drawExtras(c) {
630
+ this.drawCircles(c);
631
+ }
632
+ drawCirclesForDataset(c, dataSet) {
633
+ const paint = this.circlePaintInner;
634
+ paint.setColor(dataSet.circleHoleColor);
635
+ const phaseY = this.animator.phaseY;
636
+ const yKey = dataSet.yProperty;
637
+ const trans = this.mChart.getTransformer(dataSet.axisDependency);
638
+ this.mXBounds.set(this.mChart, dataSet, this.animator);
639
+ const circleRadius = dataSet.circleRadius;
640
+ const circleHoleRadius = dataSet.circleHoleRadius;
641
+ const drawCircleHole = dataSet.drawCircleHoleEnabled && circleHoleRadius < circleRadius && circleHoleRadius > 0;
642
+ const drawTransparentCircleHole = drawCircleHole && dataSet.circleHoleColor === ColorTemplate.COLOR_NONE;
643
+ let imageCache;
644
+ if (this.mImageCaches.get(dataSet)) {
645
+ imageCache = this.mImageCaches.get(dataSet);
646
+ }
647
+ else {
648
+ imageCache = new DataSetImageCache();
649
+ this.mImageCaches.set(dataSet, imageCache);
650
+ }
651
+ const changeRequired = imageCache.init(dataSet);
652
+ // only fill the cache with new bitmaps if a change is required
653
+ if (changeRequired) {
654
+ const renderPaint = this.renderPaint;
655
+ imageCache.fill(dataSet, renderPaint, paint, drawCircleHole, drawTransparentCircleHole);
656
+ }
657
+ const boundsRangeCount = this.mXBounds.range + this.mXBounds.min;
658
+ const circleBuffer = Utils.getTempArray(2);
659
+ const destRect = Utils.getTempRectF();
660
+ for (let j = this.mXBounds.min; j <= boundsRangeCount; j++) {
661
+ const e = dataSet.getEntryForIndex(j);
662
+ if (!e)
663
+ continue;
664
+ const yVal = e[yKey];
665
+ if (yVal === null || yVal === undefined)
666
+ continue;
667
+ circleBuffer[0] = dataSet.getEntryXValue(e, j);
668
+ circleBuffer[1] = yVal * phaseY;
669
+ trans.pointValuesToPixel(circleBuffer);
670
+ // native buffer access is slow
671
+ const cx = circleBuffer[0];
672
+ const cy = circleBuffer[1];
673
+ if (!this.mViewPortHandler.isInBoundsRight(cx))
674
+ break;
675
+ if (!this.mViewPortHandler.isInBoundsLeft(cx) || !this.mViewPortHandler.isInBoundsY(cy))
676
+ continue;
677
+ const circleBitmap = imageCache.getBitmap(j);
678
+ if (circleBitmap) {
679
+ destRect.set(cx - circleRadius, cy - circleRadius, cx - circleRadius + 2 * circleRadius, cy - circleRadius + 2 * circleRadius);
680
+ c.drawBitmap(circleBitmap, null, destRect, null);
681
+ }
682
+ }
683
+ }
684
+ drawCircles(c) {
685
+ const dataSets = this.mChart.lineData.visibleDataSets;
686
+ if (dataSets.some((d) => d.drawCirclesEnabled) === false) {
687
+ return;
688
+ }
689
+ const renderPaint = this.renderPaint;
690
+ renderPaint.setStyle(Style.FILL);
691
+ const circleBuffer = Utils.getTempArray(2);
692
+ circleBuffer[0] = 0;
693
+ circleBuffer[1] = 0;
694
+ for (let i = 0; i < dataSets.length; i++) {
695
+ const dataSet = dataSets[i];
696
+ if (!dataSet.drawCirclesEnabled || dataSet.entryCount === 0)
697
+ continue;
698
+ this.drawCirclesForDataset(c, dataSet);
699
+ }
700
+ }
701
+ drawHighlighted(c, indices, actualDraw = true) {
702
+ const lineData = this.mChart.lineData;
703
+ const customRender = this.mChart.customRenderer;
704
+ const paint = this.highlightPaint;
705
+ for (const high of indices) {
706
+ const set = lineData.getDataSetByIndex(high.dataSetIndex);
707
+ if (!set || !set.highlightEnabled)
708
+ continue;
709
+ const { entry, index } = lineData.getEntryAndIndexForHighlight(high);
710
+ // let e = set.getEntryForXValue(high.x high.y);
711
+ if (!this.isInBoundsX(entry, set))
712
+ continue;
713
+ const yKey = set.yProperty;
714
+ const pix = this.mChart.getTransformer(set.axisDependency).getPixelForValues(set.getEntryXValue(entry, index), entry[yKey] * this.animator.phaseY);
715
+ high.drawX = pix.x;
716
+ high.drawY = pix.y;
717
+ if (!actualDraw) {
718
+ continue;
719
+ }
720
+ if (customRender && customRender.drawHighlight) {
721
+ customRender.drawHighlight(c, high, set, paint);
722
+ }
723
+ else {
724
+ this.drawHighlightLines(c, high.drawX, high.drawY, set);
725
+ }
726
+ }
727
+ }
728
+ /**
729
+ * Releases the drawing bitmap. This should be called when {@link LineChart#onDetachedFromWindow()}.
730
+ */
731
+ releaseBitmap() {
732
+ if (this.mBitmapCanvas) {
733
+ this.mBitmapCanvas.setBitmap(null);
734
+ this.mBitmapCanvas = null;
735
+ }
736
+ if (this.mDrawBitmap) {
737
+ const drawBitmap = this.mDrawBitmap.get();
738
+ if (drawBitmap) {
739
+ releaseImage(drawBitmap);
740
+ }
741
+ this.mDrawBitmap = null;
742
+ }
743
+ }
744
+ }
745
+ //# sourceMappingURL=LineChartRenderer.js.map