@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.
- package/README.md +6 -0
- package/animation/ChartAnimator.d.ts +47 -4
- package/animation/ChartAnimator.js +49 -11
- package/animation/ChartAnimator.js.map +1 -1
- package/animation/Tween.d.ts +1 -1
- package/animation/Tween.js +4 -2
- package/animation/Tween.js.map +1 -1
- package/buffer/AbstractBuffer.d.ts +28 -3
- package/buffer/AbstractBuffer.js +22 -3
- package/buffer/AbstractBuffer.js.map +1 -1
- package/buffer/BarBuffer.d.ts +8 -12
- package/buffer/BarBuffer.js +33 -36
- package/buffer/BarBuffer.js.map +1 -1
- package/buffer/HorizontalBarBuffer.js +13 -10
- package/buffer/HorizontalBarBuffer.js.map +1 -1
- package/charts/BarChart.d.ts +70 -15
- package/charts/BarChart.js +92 -63
- package/charts/BarChart.js.map +1 -1
- package/charts/BarLineChartBase.d.ts +494 -73
- package/charts/BarLineChartBase.js +788 -407
- package/charts/BarLineChartBase.js.map +1 -1
- package/charts/BubbleChart.d.ts +11 -5
- package/charts/BubbleChart.js +10 -8
- package/charts/BubbleChart.js.map +1 -1
- package/charts/CandleStickChart.d.ts +8 -5
- package/charts/CandleStickChart.js +9 -10
- package/charts/CandleStickChart.js.map +1 -1
- package/charts/Chart.d.ts +420 -91
- package/charts/Chart.js +590 -290
- package/charts/Chart.js.map +1 -1
- package/charts/CombinedChart.d.ts +59 -29
- package/charts/CombinedChart.js +74 -67
- package/charts/CombinedChart.js.map +1 -1
- package/charts/HorizontalBarChart.d.ts +37 -7
- package/charts/HorizontalBarChart.js +97 -59
- package/charts/HorizontalBarChart.js.map +1 -1
- package/charts/LineChart.d.ts +3 -5
- package/charts/LineChart.js +6 -10
- package/charts/LineChart.js.map +1 -1
- package/charts/PieChart.d.ts +218 -64
- package/charts/PieChart.js +278 -168
- package/charts/PieChart.js.map +1 -1
- package/charts/PieRadarChartBase.d.ts +107 -18
- package/charts/PieRadarChartBase.js +156 -73
- package/charts/PieRadarChartBase.js.map +1 -1
- package/charts/RadarChart.d.ts +75 -35
- package/charts/RadarChart.js +114 -103
- package/charts/RadarChart.js.map +1 -1
- package/charts/ScatterChart.d.ts +10 -5
- package/charts/ScatterChart.js +11 -10
- package/charts/ScatterChart.js.map +1 -1
- package/components/AxisBase.d.ts +271 -101
- package/components/AxisBase.js +264 -254
- package/components/AxisBase.js.map +1 -1
- package/components/ComponentBase.d.ts +54 -19
- package/components/ComponentBase.js +60 -48
- package/components/ComponentBase.js.map +1 -1
- package/components/Description.d.ts +18 -9
- package/components/Description.js +12 -26
- package/components/Description.js.map +1 -1
- package/components/IMarker.d.ts +30 -1
- package/components/IMarker.js.map +1 -1
- package/components/Legend.d.ts +155 -58
- package/components/Legend.js +208 -172
- package/components/Legend.js.map +1 -1
- package/components/LegendEntry.d.ts +38 -0
- package/components/LegendEntry.js +34 -0
- package/components/LegendEntry.js.map +1 -1
- package/components/LimitLine.d.ts +40 -22
- package/components/LimitLine.js +44 -56
- package/components/LimitLine.js.map +1 -1
- package/components/MarkerImage.d.ts +1 -0
- package/components/MarkerImage.js +97 -0
- package/components/MarkerImage.js.map +1 -0
- package/components/XAxis.d.ts +41 -10
- package/components/XAxis.js +42 -24
- package/components/XAxis.js.map +1 -1
- package/components/YAxis.d.ts +114 -37
- package/components/YAxis.js +138 -106
- package/components/YAxis.js.map +1 -1
- package/data/BarData.d.ts +32 -4
- package/data/BarData.js +92 -24
- package/data/BarData.js.map +1 -1
- package/data/BarDataSet.d.ts +35 -18
- package/data/BarDataSet.js +42 -47
- package/data/BarDataSet.js.map +1 -1
- package/data/BarEntry.d.ts +3 -0
- package/data/BarEntry.js.map +1 -1
- package/data/BarLineScatterCandleBubbleData.d.ts +5 -0
- package/data/BarLineScatterCandleBubbleData.js +5 -0
- package/data/BarLineScatterCandleBubbleData.js.map +1 -1
- package/data/BarLineScatterCandleBubbleDataSet.d.ts +11 -3
- package/data/BarLineScatterCandleBubbleDataSet.js +11 -7
- package/data/BarLineScatterCandleBubbleDataSet.js.map +1 -1
- package/data/BaseDataSet.d.ts +129 -71
- package/data/BaseDataSet.js +146 -169
- package/data/BaseDataSet.js.map +1 -1
- package/data/BaseEntry.d.ts +3 -0
- package/data/BaseEntry.js.map +1 -1
- package/data/BubbleData.d.ts +7 -1
- package/data/BubbleData.js +8 -2
- package/data/BubbleData.js.map +1 -1
- package/data/BubbleDataSet.d.ts +7 -7
- package/data/BubbleDataSet.js +8 -15
- package/data/BubbleDataSet.js.map +1 -1
- package/data/BubbleEntry.d.ts +1 -0
- package/data/BubbleEntry.js.map +1 -1
- package/data/CandleData.js.map +1 -1
- package/data/CandleDataSet.d.ts +64 -30
- package/data/CandleDataSet.js +67 -74
- package/data/CandleDataSet.js.map +1 -1
- package/data/CandleEntry.d.ts +4 -0
- package/data/CandleEntry.js.map +1 -1
- package/data/ChartData.d.ts +275 -20
- package/data/ChartData.js +400 -95
- package/data/ChartData.js.map +1 -1
- package/data/CombinedData.d.ts +39 -12
- package/data/CombinedData.js +87 -71
- package/data/CombinedData.js.map +1 -1
- package/data/DataSet.d.ts +59 -8
- package/data/DataSet.js +114 -26
- package/data/DataSet.js.map +1 -1
- package/data/Entry.js.map +1 -1
- package/data/LineData.d.ts +5 -0
- package/data/LineData.js +5 -0
- package/data/LineData.js.map +1 -1
- package/data/LineDataSet.d.ts +84 -49
- package/data/LineDataSet.js +94 -135
- package/data/LineDataSet.js.map +1 -1
- package/data/LineRadarDataSet.d.ts +27 -17
- package/data/LineRadarDataSet.js +22 -35
- package/data/LineRadarDataSet.js.map +1 -1
- package/data/LineScatterCandleRadarDataSet.d.ts +30 -15
- package/data/LineScatterCandleRadarDataSet.js +36 -39
- package/data/LineScatterCandleRadarDataSet.js.map +1 -1
- package/data/PieData.d.ts +26 -0
- package/data/PieData.js +28 -2
- package/data/PieData.js.map +1 -1
- package/data/PieDataSet.d.ts +40 -36
- package/data/PieDataSet.js +36 -88
- package/data/PieDataSet.js.map +1 -1
- package/data/PieEntry.d.ts +3 -0
- package/data/PieEntry.js.map +1 -1
- package/data/RadarData.d.ts +10 -4
- package/data/RadarData.js +5 -6
- package/data/RadarData.js.map +1 -1
- package/data/RadarDataSet.d.ts +7 -21
- package/data/RadarDataSet.js +10 -49
- package/data/RadarDataSet.js.map +1 -1
- package/data/RadarEntry.js.map +1 -1
- package/data/ScatterData.d.ts +4 -1
- package/data/ScatterData.js +5 -2
- package/data/ScatterData.js.map +1 -1
- package/data/ScatterDataSet.d.ts +24 -14
- package/data/ScatterDataSet.js +26 -31
- package/data/ScatterDataSet.js.map +1 -1
- package/formatter/DefaultAxisValueFormatter.d.ts +17 -3
- package/formatter/DefaultAxisValueFormatter.js +12 -5
- package/formatter/DefaultAxisValueFormatter.js.map +1 -1
- package/formatter/DefaultFillFormatter.js +7 -7
- package/formatter/DefaultFillFormatter.js.map +1 -1
- package/formatter/DefaultValueFormatter.js.map +1 -1
- package/formatter/IAxisValueFormatter.d.ts +20 -2
- package/formatter/IAxisValueFormatter.js.map +1 -1
- package/formatter/IFillFormatter.d.ts +25 -0
- package/formatter/IFillFormatter.js.map +1 -1
- package/formatter/IValueFormatter.d.ts +21 -0
- package/formatter/IValueFormatter.js.map +1 -1
- package/formatter/ValueFormatter.d.ts +60 -0
- package/formatter/ValueFormatter.js +60 -0
- package/formatter/ValueFormatter.js.map +1 -1
- package/highlight/BarHighlighter.d.ts +22 -2
- package/highlight/BarHighlighter.js +43 -17
- package/highlight/BarHighlighter.js.map +1 -1
- package/highlight/ChartHighlighter.d.ts +87 -5
- package/highlight/ChartHighlighter.js +129 -25
- package/highlight/ChartHighlighter.js.map +1 -1
- package/highlight/CombinedHighlighter.d.ts +6 -0
- package/highlight/CombinedHighlighter.js +31 -16
- package/highlight/CombinedHighlighter.js.map +1 -1
- package/highlight/Highlight.d.ts +54 -1
- package/highlight/Highlight.js +5 -0
- package/highlight/Highlight.js.map +1 -1
- package/highlight/HorizontalBarHighlighter.d.ts +1 -1
- package/highlight/HorizontalBarHighlighter.js +14 -13
- package/highlight/HorizontalBarHighlighter.js.map +1 -1
- package/highlight/IHighlighter.d.ts +11 -1
- package/highlight/IHighlighter.js.map +1 -1
- package/highlight/PieHighlighter.js +2 -2
- package/highlight/PieHighlighter.js.map +1 -1
- package/highlight/PieRadarHighlighter.d.ts +12 -1
- package/highlight/PieRadarHighlighter.js +12 -4
- package/highlight/PieRadarHighlighter.js.map +1 -1
- package/highlight/RadarHighlighter.d.ts +12 -0
- package/highlight/RadarHighlighter.js +24 -10
- package/highlight/RadarHighlighter.js.map +1 -1
- package/index.d.ts +11 -0
- package/index.js +15 -0
- package/index.js.map +1 -0
- package/interfaces/dataprovider/BarDataProvider.d.ts +4 -4
- package/interfaces/dataprovider/BarLineScatterCandleBubbleDataProvider.d.ts +8 -3
- package/interfaces/dataprovider/BubbleDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/CandleDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/ChartInterface.d.ts +17 -22
- package/interfaces/dataprovider/CombinedDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/LineDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/ScatterDataProvider.d.ts +1 -1
- package/interfaces/datasets/IBarDataSet.d.ts +8 -22
- package/interfaces/datasets/IBarLineScatterCandleBubbleDataSet.d.ts +1 -3
- package/interfaces/datasets/IBubbleDataSet.d.ts +3 -9
- package/interfaces/datasets/ICandleDataSet.d.ts +44 -41
- package/interfaces/datasets/IDataSet.d.ts +35 -151
- package/interfaces/datasets/ILineDataSet.d.ts +15 -54
- package/interfaces/datasets/ILineRadarDataSet.d.ts +7 -28
- package/interfaces/datasets/ILineScatterCandleRadarDataSet.d.ts +5 -4
- package/interfaces/datasets/IPieDataSet.d.ts +22 -40
- package/interfaces/datasets/IRadarDataSet.d.ts +7 -13
- package/interfaces/datasets/IScatterDataSet.d.ts +17 -16
- package/jobs/AnimatedMoveViewJob.d.ts +3 -0
- package/jobs/AnimatedMoveViewJob.js +12 -8
- package/jobs/AnimatedMoveViewJob.js.map +1 -1
- package/jobs/AnimatedViewPortJob.d.ts +7 -8
- package/jobs/AnimatedViewPortJob.js +16 -23
- package/jobs/AnimatedViewPortJob.js.map +1 -1
- package/jobs/AnimatedZoomJob.d.ts +8 -5
- package/jobs/AnimatedZoomJob.js +30 -26
- package/jobs/AnimatedZoomJob.js.map +1 -1
- package/jobs/MoveViewJob.d.ts +3 -0
- package/jobs/MoveViewJob.js +10 -7
- package/jobs/MoveViewJob.js.map +1 -1
- package/jobs/ViewPortJob.d.ts +3 -5
- package/jobs/ViewPortJob.js +5 -11
- package/jobs/ViewPortJob.js.map +1 -1
- package/jobs/ZoomJob.js +14 -14
- package/jobs/ZoomJob.js.map +1 -1
- package/listener/BarLineChartTouchListener.d.ts +82 -1
- package/listener/BarLineChartTouchListener.js +169 -67
- package/listener/BarLineChartTouchListener.js.map +1 -1
- package/listener/ChartTouchListener.d.ts +39 -5
- package/listener/ChartTouchListener.js +38 -11
- package/listener/ChartTouchListener.js.map +1 -1
- package/listener/PieRadarChartTouchListener.d.ts +56 -1
- package/listener/PieRadarChartTouchListener.js +201 -17
- package/listener/PieRadarChartTouchListener.js.map +1 -1
- package/model/GradientColor.js.map +1 -1
- package/package.json +23 -15
- package/renderer/AxisRenderer.d.ts +66 -7
- package/renderer/AxisRenderer.js +69 -21
- package/renderer/AxisRenderer.js.map +1 -1
- package/renderer/BarChartRenderer.d.ts +11 -0
- package/renderer/BarChartRenderer.js +99 -71
- package/renderer/BarChartRenderer.js.map +1 -1
- package/renderer/BarLineScatterCandleBubbleRenderer.d.ts +37 -0
- package/renderer/BarLineScatterCandleBubbleRenderer.js +36 -8
- package/renderer/BarLineScatterCandleBubbleRenderer.js.map +1 -1
- package/renderer/BubbleChartRenderer.d.ts +6 -2
- package/renderer/BubbleChartRenderer.js +51 -40
- package/renderer/BubbleChartRenderer.js.map +1 -1
- package/renderer/CandleStickChartRenderer.d.ts +1 -1
- package/renderer/CandleStickChartRenderer.js +64 -50
- package/renderer/CandleStickChartRenderer.js.map +1 -1
- package/renderer/CombinedChartRenderer.d.ts +20 -1
- package/renderer/CombinedChartRenderer.js +72 -42
- package/renderer/CombinedChartRenderer.js.map +1 -1
- package/renderer/DataRenderer.d.ts +78 -4
- package/renderer/DataRenderer.js +65 -6
- package/renderer/DataRenderer.js.map +1 -1
- package/renderer/HorizontalBarChartRenderer.d.ts +5 -2
- package/renderer/HorizontalBarChartRenderer.js +87 -66
- package/renderer/HorizontalBarChartRenderer.js.map +1 -1
- package/renderer/LegendRenderer.d.ts +32 -0
- package/renderer/LegendRenderer.js +98 -59
- package/renderer/LegendRenderer.js.map +1 -1
- package/renderer/LineChartRenderer.d.ts +38 -1
- package/renderer/LineChartRenderer.js +198 -113
- package/renderer/LineChartRenderer.js.map +1 -1
- package/renderer/LineRadarRenderer.d.ts +19 -0
- package/renderer/LineRadarRenderer.js +25 -1
- package/renderer/LineRadarRenderer.js.map +1 -1
- package/renderer/LineScatterCandleRadarRenderer.d.ts +11 -0
- package/renderer/LineScatterCandleRadarRenderer.js +26 -9
- package/renderer/LineScatterCandleRadarRenderer.js.map +1 -1
- package/renderer/PieChartRenderer.d.ts +45 -1
- package/renderer/PieChartRenderer.js +195 -122
- package/renderer/PieChartRenderer.js.map +1 -1
- package/renderer/RadarChartRenderer.d.ts +10 -0
- package/renderer/RadarChartRenderer.js +119 -77
- package/renderer/RadarChartRenderer.js.map +1 -1
- package/renderer/Renderer.d.ts +8 -0
- package/renderer/Renderer.js +5 -0
- package/renderer/Renderer.js.map +1 -1
- package/renderer/ScatterChartRenderer.d.ts +5 -5
- package/renderer/ScatterChartRenderer.js +51 -37
- package/renderer/ScatterChartRenderer.js.map +1 -1
- package/renderer/XAxisRenderer.d.ts +29 -4
- package/renderer/XAxisRenderer.js +128 -95
- package/renderer/XAxisRenderer.js.map +1 -1
- package/renderer/XAxisRendererHorizontalBarChart.d.ts +11 -0
- package/renderer/XAxisRendererHorizontalBarChart.js +75 -57
- package/renderer/XAxisRendererHorizontalBarChart.js.map +1 -1
- package/renderer/XAxisRendererRadarChart.d.ts +5 -0
- package/renderer/XAxisRendererRadarChart.js +26 -13
- package/renderer/XAxisRendererRadarChart.js.map +1 -1
- package/renderer/YAxisRenderer.d.ts +42 -5
- package/renderer/YAxisRenderer.js +126 -69
- package/renderer/YAxisRenderer.js.map +1 -1
- package/renderer/YAxisRendererHorizontalBarChart.d.ts +22 -1
- package/renderer/YAxisRendererHorizontalBarChart.js +80 -58
- package/renderer/YAxisRendererHorizontalBarChart.js.map +1 -1
- package/renderer/YAxisRendererRadarChart.js +62 -32
- package/renderer/YAxisRendererRadarChart.js.map +1 -1
- package/renderer/scatter/ChevronDownShapeRenderer.d.ts +4 -0
- package/renderer/scatter/ChevronDownShapeRenderer.js +5 -1
- package/renderer/scatter/ChevronDownShapeRenderer.js.map +1 -1
- package/renderer/scatter/ChevronUpShapeRenderer.d.ts +4 -0
- package/renderer/scatter/ChevronUpShapeRenderer.js +5 -1
- package/renderer/scatter/ChevronUpShapeRenderer.js.map +1 -1
- package/renderer/scatter/CircleShapeRenderer.d.ts +4 -0
- package/renderer/scatter/CircleShapeRenderer.js +8 -5
- package/renderer/scatter/CircleShapeRenderer.js.map +1 -1
- package/renderer/scatter/CrossShapeRenderer.d.ts +4 -0
- package/renderer/scatter/CrossShapeRenderer.js +5 -1
- package/renderer/scatter/CrossShapeRenderer.js.map +1 -1
- package/renderer/scatter/IShapeRenderer.d.ts +14 -0
- package/renderer/scatter/IShapeRenderer.js.map +1 -1
- package/renderer/scatter/SquareShapeRenderer.d.ts +4 -0
- package/renderer/scatter/SquareShapeRenderer.js +8 -5
- package/renderer/scatter/SquareShapeRenderer.js.map +1 -1
- package/renderer/scatter/TriangleShapeRenderer.d.ts +4 -0
- package/renderer/scatter/TriangleShapeRenderer.js +9 -5
- package/renderer/scatter/TriangleShapeRenderer.js.map +1 -1
- package/renderer/scatter/XShapeRenderer.d.ts +4 -0
- package/renderer/scatter/XShapeRenderer.js +5 -1
- package/renderer/scatter/XShapeRenderer.js.map +1 -1
- package/utils/ColorTemplate.d.ts +21 -1
- package/utils/ColorTemplate.js +21 -3
- package/utils/ColorTemplate.js.map +1 -1
- package/utils/HorizontalViewPortHandler.d.ts +3 -0
- package/utils/HorizontalViewPortHandler.js +3 -0
- package/utils/HorizontalViewPortHandler.js.map +1 -1
- package/utils/MPSize.d.ts +7 -0
- package/utils/ObjectPool.d.ts +56 -0
- package/utils/ObjectPool.js +66 -8
- package/utils/ObjectPool.js.map +1 -1
- package/utils/Transformer.d.ts +118 -0
- package/utils/Transformer.js +141 -7
- package/utils/Transformer.js.map +1 -1
- package/utils/TransformerHorizontalBarChart.d.ts +10 -0
- package/utils/TransformerHorizontalBarChart.js +18 -2
- package/utils/TransformerHorizontalBarChart.js.map +1 -1
- package/utils/Utils.d.ts +139 -17
- package/utils/Utils.js +185 -60
- package/utils/Utils.js.map +1 -1
- package/utils/ViewPortHandler.d.ts +234 -19
- package/utils/ViewPortHandler.js +306 -63
- package/utils/ViewPortHandler.js.map +1 -1
- package/utils/colors/colorful.js.map +1 -1
- package/utils/colors/joyful.js.map +1 -1
- package/utils/colors/liberty.js.map +1 -1
- package/utils/colors/material.js.map +1 -1
- package/utils/colors/pastel.js.map +1 -1
- package/utils/colors/vordiplom.js.map +1 -1
- package/charts/index.d.ts +0 -11
- package/charts/index.js +0 -15
- 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
|
|
4
|
-
import {
|
|
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
|
-
|
|
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
|
|
47
|
-
function
|
|
48
|
-
function
|
|
49
|
-
|
|
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
|
|
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"] =
|
|
11
|
-
CLogTypes[CLogTypes["info"] =
|
|
12
|
-
CLogTypes[CLogTypes["warning"] =
|
|
13
|
-
CLogTypes[CLogTypes["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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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,
|
|
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),
|
|
323
|
-
drawMultilineText(c, textLayout, x, y,
|
|
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
|
|
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
|
|
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
|
|
637
|
+
if (!values)
|
|
513
638
|
return 0;
|
|
514
639
|
let remainder = 0;
|
|
515
640
|
let lastIndex = values.length - 1;
|