scichart 2.0.2195 → 2.1.2261

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 (232) hide show
  1. package/Charting/ChartModifiers/CursorModifier.d.ts +9 -0
  2. package/Charting/ChartModifiers/CursorModifier.js +10 -0
  3. package/Charting/ChartModifiers/DataPointSelectionModifier.js +0 -1
  4. package/Charting/ChartModifiers/RolloverModifier.d.ts +30 -3
  5. package/Charting/ChartModifiers/RolloverModifier.js +46 -80
  6. package/Charting/Drawing/BrushCache.d.ts +8 -2
  7. package/Charting/Drawing/BrushCache.js +16 -8
  8. package/Charting/Drawing/WebGlRenderContext2D.d.ts +1 -0
  9. package/Charting/Drawing/WebGlRenderContext2D.js +4 -1
  10. package/Charting/LayoutManager/BaseAxisLayoutStrategy.d.ts +2 -0
  11. package/Charting/LayoutManager/BaseAxisLayoutStrategy.js +33 -0
  12. package/Charting/LayoutManager/BottomAlignedOuterHorizontallyStackedAxisLayoutStrategy.js +18 -2
  13. package/Charting/LayoutManager/LeftAlignedOuterVerticallyStackedAxisLayoutStrategy.js +19 -2
  14. package/Charting/LayoutManager/RightAlignedOuterVerticallyStackedAxisLayoutStrategy.js +18 -2
  15. package/Charting/LayoutManager/TopAlignedOuterHorizontallyStackedAxisLayoutStrategy.js +18 -2
  16. package/Charting/Model/BaseDataSeries.d.ts +42 -15
  17. package/Charting/Model/BaseDataSeries.js +77 -28
  18. package/Charting/Model/BaseHeatmapDataSeries.d.ts +31 -23
  19. package/Charting/Model/BaseHeatmapDataSeries.js +45 -18
  20. package/Charting/Model/DataDistributionCalculator/DataDistributionCalculator.d.ts +23 -0
  21. package/Charting/Model/DataDistributionCalculator/DataDistributionCalculator.js +122 -0
  22. package/Charting/Model/DataDistributionCalculator/IDataDistributionCalculator.d.ts +57 -0
  23. package/Charting/Model/DataDistributionCalculator/IDataDistributionCalculator.js +2 -0
  24. package/Charting/Model/Filters/OhlcFilterBase.d.ts +2 -2
  25. package/Charting/Model/Filters/XyFilterBase.d.ts +3 -3
  26. package/Charting/Model/Filters/XyMovingAverageFilter.js +1 -1
  27. package/Charting/Model/Filters/XyyFilterBase.d.ts +4 -4
  28. package/Charting/Model/Filters/XyzFilterBase.d.ts +4 -4
  29. package/Charting/Model/IDataSeries.d.ts +37 -5
  30. package/Charting/Model/OhlcDataSeries.d.ts +12 -11
  31. package/Charting/Model/OhlcDataSeries.js +47 -44
  32. package/Charting/Model/PointSeries/BasePointSeriesResampled.d.ts +21 -0
  33. package/Charting/Model/PointSeries/BasePointSeriesResampled.js +56 -0
  34. package/Charting/Model/PointSeries/BasePointSeriesWrapped.d.ts +14 -0
  35. package/Charting/Model/PointSeries/BasePointSeriesWrapped.js +23 -0
  36. package/Charting/Model/PointSeries/IPointSeries.d.ts +31 -0
  37. package/Charting/Model/PointSeries/IPointSeries.js +2 -0
  38. package/Charting/Model/PointSeries/OhlcPointSeriesResampled.d.ts +13 -0
  39. package/Charting/Model/PointSeries/OhlcPointSeriesResampled.js +59 -0
  40. package/Charting/Model/PointSeries/OhlcPointSeriesWrapped.d.ts +11 -0
  41. package/Charting/Model/PointSeries/OhlcPointSeriesWrapped.js +32 -0
  42. package/Charting/Model/PointSeries/XyPointSeriesResampled.d.ts +7 -0
  43. package/Charting/Model/PointSeries/XyPointSeriesResampled.js +27 -0
  44. package/Charting/Model/PointSeries/XyPointSeriesWrapped.d.ts +6 -0
  45. package/Charting/Model/PointSeries/XyPointSeriesWrapped.js +27 -0
  46. package/Charting/Model/PointSeries/XyyPointSeriesResampled.d.ts +10 -0
  47. package/Charting/Model/PointSeries/XyyPointSeriesResampled.js +48 -0
  48. package/Charting/Model/PointSeries/XyyPointSeriesWrapped.d.ts +8 -0
  49. package/Charting/Model/PointSeries/XyyPointSeriesWrapped.js +29 -0
  50. package/Charting/Model/PointSeries/XyzPointSeriesWrapped.d.ts +8 -0
  51. package/Charting/Model/PointSeries/XyzPointSeriesWrapped.js +29 -0
  52. package/Charting/Model/XyDataSeries.d.ts +3 -2
  53. package/Charting/Model/XyDataSeries.js +26 -26
  54. package/Charting/Model/XyyDataSeries.d.ts +5 -5
  55. package/Charting/Model/XyyDataSeries.js +30 -27
  56. package/Charting/Model/XyzDataSeries.d.ts +5 -5
  57. package/Charting/Model/XyzDataSeries.js +30 -27
  58. package/Charting/Numerics/CoordinateCalculators/CategoryCoordinateCalculator.d.ts +2 -2
  59. package/Charting/Numerics/CoordinateCalculators/FlippedCategoryCoordinateCalculator.d.ts +2 -2
  60. package/Charting/Numerics/CoordinateCalculators/FlippedNumericCoordinateCalculator.d.ts +2 -1
  61. package/Charting/Numerics/CoordinateCalculators/FlippedNumericCoordinateCalculator.js +6 -2
  62. package/Charting/Numerics/CoordinateCalculators/NumericCoordinateCalculator.d.ts +2 -1
  63. package/Charting/Numerics/CoordinateCalculators/NumericCoordinateCalculator.js +6 -2
  64. package/Charting/Numerics/Resamplers/ExtremeResamplerHelper.d.ts +54 -0
  65. package/Charting/Numerics/Resamplers/ExtremeResamplerHelper.js +234 -0
  66. package/Charting/Numerics/Resamplers/ResamplingMode.d.ts +37 -0
  67. package/Charting/Numerics/Resamplers/ResamplingMode.js +41 -0
  68. package/Charting/Numerics/Resamplers/ResamplingParams.d.ts +39 -0
  69. package/Charting/Numerics/Resamplers/ResamplingParams.js +52 -0
  70. package/Charting/Services/RenderPassData.d.ts +6 -1
  71. package/Charting/Services/RenderPassData.js +5 -1
  72. package/Charting/Services/RenderPassInfo.d.ts +18 -0
  73. package/Charting/Services/RenderPassInfo.js +14 -0
  74. package/Charting/Services/SciChartRenderer.d.ts +14 -1
  75. package/Charting/Services/SciChartRenderer.js +127 -31
  76. package/Charting/Visuals/Annotations/AnnotationBase.d.ts +1 -1
  77. package/Charting/Visuals/Annotations/CursorTooltipSvgAnnotation.d.ts +1 -0
  78. package/Charting/Visuals/Annotations/CursorTooltipSvgAnnotation.js +6 -0
  79. package/Charting/Visuals/Annotations/RolloverMarkerSvgAnnotation.d.ts +5 -0
  80. package/Charting/Visuals/Annotations/RolloverMarkerSvgAnnotation.js +12 -1
  81. package/Charting/Visuals/Annotations/RolloverTooltipSvgAnnotation.d.ts +6 -8
  82. package/Charting/Visuals/Annotations/RolloverTooltipSvgAnnotation.js +12 -9
  83. package/Charting/Visuals/Annotations/SvgAnnotationBase.js +7 -2
  84. package/Charting/Visuals/Axis/AxisBase2D.d.ts +23 -0
  85. package/Charting/Visuals/Axis/AxisBase2D.js +71 -24
  86. package/Charting/Visuals/Axis/AxisCore.d.ts +11 -0
  87. package/Charting/Visuals/Axis/AxisCore.js +39 -18
  88. package/Charting/Visuals/Axis/AxisRenderer.d.ts +1 -0
  89. package/Charting/Visuals/Axis/AxisRenderer.js +37 -10
  90. package/Charting/Visuals/Axis/CategoryAxisBase.d.ts +51 -0
  91. package/Charting/Visuals/Axis/CategoryAxisBase.js +85 -20
  92. package/Charting/Visuals/Axis/IAxisCoreOptions.d.ts +5 -0
  93. package/Charting/Visuals/Axis/LabelProvider/LabelCache.js +2 -2
  94. package/Charting/Visuals/Axis/LabelProvider/LabelProviderBase2D.js +9 -4
  95. package/Charting/Visuals/Axis/LabelProvider/SmartDateLabelProvider.js +7 -4
  96. package/Charting/Visuals/Axis/NumericAxis.js +2 -2
  97. package/Charting/Visuals/Axis/constants.d.ts +1 -0
  98. package/Charting/Visuals/Axis/constants.js +1 -0
  99. package/Charting/Visuals/RenderableSeries/Animations/FadeAnimation.d.ts +2 -2
  100. package/Charting/Visuals/RenderableSeries/Animations/ScaleAnimation.d.ts +2 -2
  101. package/Charting/Visuals/RenderableSeries/Animations/SeriesAnimation.d.ts +3 -3
  102. package/Charting/Visuals/RenderableSeries/Animations/SweepAnimation.d.ts +2 -2
  103. package/Charting/Visuals/RenderableSeries/Animations/WaveAnimation.d.ts +2 -2
  104. package/Charting/Visuals/RenderableSeries/Animations/animationHelpers.d.ts +6 -6
  105. package/Charting/Visuals/RenderableSeries/Animations/animationHelpers.js +2 -2
  106. package/Charting/Visuals/RenderableSeries/BaseBandRenderableSeries.d.ts +9 -2
  107. package/Charting/Visuals/RenderableSeries/BaseBandRenderableSeries.js +45 -1
  108. package/Charting/Visuals/RenderableSeries/BaseLineRenderableSeries.d.ts +1 -0
  109. package/Charting/Visuals/RenderableSeries/BaseLineRenderableSeries.js +1 -0
  110. package/Charting/Visuals/RenderableSeries/BaseMountainRenderableSeries.d.ts +1 -0
  111. package/Charting/Visuals/RenderableSeries/BaseMountainRenderableSeries.js +1 -0
  112. package/Charting/Visuals/RenderableSeries/BaseOhlcRenderableSeries.d.ts +12 -5
  113. package/Charting/Visuals/RenderableSeries/BaseOhlcRenderableSeries.js +113 -0
  114. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.d.ts +42 -6
  115. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.js +131 -22
  116. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.d.ts +36 -4
  117. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.js +51 -3
  118. package/Charting/Visuals/RenderableSeries/BaseStackedRenderableSeries.d.ts +38 -4
  119. package/Charting/Visuals/RenderableSeries/BaseStackedRenderableSeries.js +54 -3
  120. package/Charting/Visuals/RenderableSeries/DrawingProviders/BandSeriesDrawingProvider.d.ts +1 -1
  121. package/Charting/Visuals/RenderableSeries/DrawingProviders/BandSeriesDrawingProvider.js +8 -14
  122. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.js +4 -3
  123. package/Charting/Visuals/RenderableSeries/DrawingProviders/BubbleSeriesDrawingProvider.js +5 -11
  124. package/Charting/Visuals/RenderableSeries/DrawingProviders/ColumnSeriesDrawingProvider.d.ts +1 -0
  125. package/Charting/Visuals/RenderableSeries/DrawingProviders/ColumnSeriesDrawingProvider.js +31 -19
  126. package/Charting/Visuals/RenderableSeries/DrawingProviders/LineSeriesDrawingProvider.d.ts +2 -1
  127. package/Charting/Visuals/RenderableSeries/DrawingProviders/LineSeriesDrawingProvider.js +17 -21
  128. package/Charting/Visuals/RenderableSeries/DrawingProviders/MountainSeriesDrawingProvider.js +16 -15
  129. package/Charting/Visuals/RenderableSeries/DrawingProviders/OhlcSeriesDrawingProvider.js +9 -15
  130. package/Charting/Visuals/RenderableSeries/DrawingProviders/PointMarkerDrawingProvider.d.ts +4 -3
  131. package/Charting/Visuals/RenderableSeries/DrawingProviders/PointMarkerDrawingProvider.js +16 -21
  132. package/Charting/Visuals/RenderableSeries/DrawingProviders/UniformContoursDrawingProvider.js +2 -9
  133. package/Charting/Visuals/RenderableSeries/DrawingProviders/UniformHeatmapDrawingProvider.js +0 -7
  134. package/Charting/Visuals/RenderableSeries/FastBubbleRenderableSeries.d.ts +11 -2
  135. package/Charting/Visuals/RenderableSeries/FastBubbleRenderableSeries.js +17 -0
  136. package/Charting/Visuals/RenderableSeries/FastColumnRenderableSeries.d.ts +1 -0
  137. package/Charting/Visuals/RenderableSeries/FastColumnRenderableSeries.js +1 -0
  138. package/Charting/Visuals/RenderableSeries/FastLineRenderableSeries.d.ts +1 -0
  139. package/Charting/Visuals/RenderableSeries/FastLineRenderableSeries.js +6 -0
  140. package/Charting/Visuals/RenderableSeries/HitTest/BandSeriesHitTestProvider.js +2 -2
  141. package/Charting/Visuals/RenderableSeries/HitTest/BaseHitTestProvider.js +1 -1
  142. package/Charting/Visuals/RenderableSeries/HitTest/BubbleSeriesHitTestProvider.js +1 -1
  143. package/Charting/Visuals/RenderableSeries/HitTest/ColumnSeriesHitTestProvider.js +2 -2
  144. package/Charting/Visuals/RenderableSeries/HitTest/LineSeriesHitTestProvider.js +2 -2
  145. package/Charting/Visuals/RenderableSeries/HitTest/MountainSeriesHitTestProvider.js +1 -1
  146. package/Charting/Visuals/RenderableSeries/HitTest/OhlcSeriesHitTestProvider.js +2 -2
  147. package/Charting/Visuals/RenderableSeries/HitTest/ScatterSeriesHitTestProvider.js +1 -1
  148. package/Charting/Visuals/RenderableSeries/HitTest/StackedColumnSeriesHitTestProvider.js +2 -2
  149. package/Charting/Visuals/RenderableSeries/HitTest/StackedMountainSeriesHitTestProvider.js +2 -2
  150. package/Charting/Visuals/RenderableSeries/HitTest/hitTestHelpers.d.ts +6 -6
  151. package/Charting/Visuals/RenderableSeries/HitTest/hitTestHelpers.js +1 -1
  152. package/Charting/Visuals/RenderableSeries/IBaseRenderableSeriesOptions.d.ts +12 -1
  153. package/Charting/Visuals/RenderableSeries/IRenderableSeries.d.ts +38 -2
  154. package/Charting/Visuals/RenderableSeries/ISpline.d.ts +3 -3
  155. package/Charting/Visuals/RenderableSeries/SplineBandRenderableSeries.d.ts +4 -4
  156. package/Charting/Visuals/RenderableSeries/SplineBandRenderableSeries.js +5 -5
  157. package/Charting/Visuals/RenderableSeries/SplineLineRenderableSeries.d.ts +3 -3
  158. package/Charting/Visuals/RenderableSeries/SplineLineRenderableSeries.js +3 -3
  159. package/Charting/Visuals/RenderableSeries/SplineMountainRenderableSeries.d.ts +3 -3
  160. package/Charting/Visuals/RenderableSeries/SplineMountainRenderableSeries.js +3 -3
  161. package/Charting/Visuals/RenderableSeries/StackedColumnCollection.js +0 -6
  162. package/Charting/Visuals/RenderableSeries/StackedMountainCollection.d.ts +1 -1
  163. package/Charting/Visuals/RenderableSeries/StackedMountainCollection.js +1 -7
  164. package/Charting/Visuals/RenderableSeries/UniformContoursRenderableSeries.d.ts +5 -0
  165. package/Charting/Visuals/RenderableSeries/UniformContoursRenderableSeries.js +6 -0
  166. package/Charting/Visuals/RenderableSeries/UniformHeatmapRenderableSeries.d.ts +5 -0
  167. package/Charting/Visuals/RenderableSeries/UniformHeatmapRenderableSeries.js +6 -0
  168. package/Charting/Visuals/RenderableSeries/XyScatterRenderableSeries.d.ts +5 -3
  169. package/Charting/Visuals/RenderableSeries/XyScatterRenderableSeries.js +6 -3
  170. package/Charting/Visuals/RenderableSeries/constants.d.ts +3 -0
  171. package/Charting/Visuals/RenderableSeries/constants.js +3 -0
  172. package/Charting/Visuals/SciChartDefaults.d.ts +9 -1
  173. package/Charting/Visuals/SciChartDefaults.js +9 -1
  174. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.d.ts +1 -0
  175. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.js +7 -2
  176. package/Charting/Visuals/SciChartSurface.d.ts +4 -4
  177. package/Charting/Visuals/SciChartSurface.js +18 -11
  178. package/Charting/Visuals/SciChartSurfaceBase.d.ts +3 -2
  179. package/Charting/Visuals/SciChartSurfaceBase.js +4 -4
  180. package/Charting/Visuals/createMaster.d.ts +1 -1
  181. package/Charting/Visuals/createMaster.js +11 -6
  182. package/Charting/Visuals/createSingle.d.ts +1 -1
  183. package/Charting/Visuals/createSingle.js +2 -2
  184. package/Charting/Visuals/licenseManager2D.js +24 -21
  185. package/Charting/Visuals/licenseManager2dState.d.ts +4 -0
  186. package/Charting/Visuals/licenseManager2dState.js +12 -0
  187. package/Charting/Visuals/loader.js +2 -0
  188. package/Charting/Visuals/sciChartInitCommon.d.ts +2 -2
  189. package/Charting/Visuals/sciChartInitCommon.js +22 -12
  190. package/Charting3D/Model/DataSeries/XyzDataSeries3D.d.ts +7 -7
  191. package/Charting3D/Model/DataSeries/XyzDataSeries3D.js +3 -3
  192. package/Charting3D/Visuals/SciChart3DSurface.d.ts +2 -2
  193. package/Charting3D/Visuals/SciChart3DSurface.js +3 -3
  194. package/Charting3D/Visuals/createMaster3d.d.ts +1 -1
  195. package/Charting3D/Visuals/createMaster3d.js +11 -6
  196. package/Charting3D/Visuals/createSingle3d.d.ts +1 -1
  197. package/Charting3D/Visuals/createSingle3d.js +2 -2
  198. package/Core/BuildStamp.d.ts +1 -1
  199. package/Core/BuildStamp.js +2 -2
  200. package/Core/NumberRange.d.ts +1 -0
  201. package/Core/NumberRange.js +8 -0
  202. package/Core/OneTimePerformanceWarning.d.ts +6 -0
  203. package/Core/OneTimePerformanceWarning.js +19 -0
  204. package/Core/storage/localStorageApi.d.ts +9 -0
  205. package/Core/storage/localStorageApi.js +32 -0
  206. package/_wasm/scichart.browser.js +1 -1
  207. package/_wasm/scichart2d.js +95 -95
  208. package/_wasm/scichart2d.wasm +0 -0
  209. package/_wasm/scichart3d.js +96 -96
  210. package/_wasm/scichart3d.wasm +0 -0
  211. package/constants/performanceWarnings.d.ts +5 -0
  212. package/constants/performanceWarnings.js +8 -0
  213. package/package.json +1 -1
  214. package/types/NumberArray.d.ts +1 -0
  215. package/types/NumberArray.js +5 -1
  216. package/types/SearchMode.d.ts +21 -0
  217. package/types/SearchMode.js +25 -0
  218. package/types/TSciChart.d.ts +144 -40
  219. package/types/TSciChart3D.d.ts +66 -28
  220. package/types/TStackedAxisLength.d.ts +4 -0
  221. package/types/TStackedAxisLength.js +4 -0
  222. package/utils/array.d.ts +7 -0
  223. package/utils/array.js +19 -1
  224. package/utils/calcAverage.d.ts +2 -2
  225. package/utils/ccall/appendDoubleVectorFromJsArray.d.ts +19 -0
  226. package/utils/ccall/appendDoubleVectorFromJsArray.js +91 -0
  227. package/utils/hash.d.ts +7 -0
  228. package/utils/hash.js +35 -0
  229. package/utils/tooltip.d.ts +42 -0
  230. package/utils/tooltip.js +119 -0
  231. package/utils/ccall/fillDoubleVectorFromJsArray.d.ts +0 -3
  232. package/utils/ccall/fillDoubleVectorFromJsArray.js +0 -33
@@ -3,11 +3,14 @@ import { SeriesAnimationFiniteStateMachine } from "../../../Core/Animations/Anim
3
3
  import { EventHandler } from "../../../Core/EventHandler";
4
4
  import { NumberRange } from "../../../Core/NumberRange";
5
5
  import { ESeriesType } from "../../../types/SeriesType";
6
- import { DoubleVector, TSciChart } from "../../../types/TSciChart";
6
+ import { SCRTDoubleVector, TSciChart } from "../../../types/TSciChart";
7
7
  import { ELineDrawMode, WebGlRenderContext2D } from "../../Drawing/WebGlRenderContext2D";
8
8
  import { SeriesInfo } from "../../Model/ChartData/SeriesInfo";
9
9
  import { IDataSeries } from "../../Model/IDataSeries";
10
10
  import { IPaletteProvider } from "../../Model/IPaletteProvider";
11
+ import { IPointSeries } from "../../Model/PointSeries/IPointSeries";
12
+ import { EResamplingMode } from "../../Numerics/Resamplers/ResamplingMode";
13
+ import { ResamplingParams } from "../../Numerics/Resamplers/ResamplingParams";
11
14
  import { RenderPassData } from "../../Services/RenderPassData";
12
15
  import { IThemeProvider } from "../../Themes/IThemeProvider";
13
16
  import { AxisCore } from "../Axis/AxisCore";
@@ -46,9 +49,15 @@ export interface IBasedStackedRenderableSeriesOptions {
46
49
  * details on how to implement stacked column and mountain charts in SciChart
47
50
  */
48
51
  export declare abstract class BaseStackedRenderableSeries implements IRenderableSeries {
52
+ /** @inheritDoc */
49
53
  abstract readonly type: ESeriesType;
54
+ /** @inheritDoc */
50
55
  readonly id: string;
56
+ /** @inheritDoc */
51
57
  readonly isStacked: boolean;
58
+ /** @inheritDoc */
59
+ readonly supportsResampling = false;
60
+ /** @inheritDoc */
52
61
  readonly isSpline: boolean;
53
62
  readonly rolloverModifierProps: RolloverModifierRenderableSeriesProps;
54
63
  /** @inheritDoc */
@@ -59,8 +68,12 @@ export declare abstract class BaseStackedRenderableSeries implements IRenderable
59
68
  /**
60
69
  * the accumulated values which are used to draw each column/band for {@link BaseStackedRenderableSeries}
61
70
  */
62
- accumulatedValues: DoubleVector;
63
- protected accumulatedFinalAnimationValues: DoubleVector;
71
+ accumulatedValues: SCRTDoubleVector;
72
+ /**
73
+ * When true, enables drawing optimizations on the series for extra performance
74
+ */
75
+ enableDrawingOptimisations: boolean;
76
+ protected accumulatedFinalAnimationValues: SCRTDoubleVector;
64
77
  protected webAssemblyContext: TSciChart;
65
78
  protected parentCollection: BaseStackedCollection<BaseStackedRenderableSeries>;
66
79
  protected notifyParentPropertyChangedFn: (propertyName: string) => void;
@@ -114,7 +127,7 @@ export declare abstract class BaseStackedRenderableSeries implements IRenderable
114
127
  /**
115
128
  * @inheritDoc
116
129
  */
117
- getNativeXValues(): DoubleVector;
130
+ getNativeXValues(): SCRTDoubleVector;
118
131
  /**
119
132
  * Called when the {@link BaseStackedRenderableSeries} is detached from its parent {@link BaseStackedCollection}
120
133
  */
@@ -193,6 +206,18 @@ export declare abstract class BaseStackedRenderableSeries implements IRenderable
193
206
  * animation() is not supported for BaseStackedRenderableSeries
194
207
  */
195
208
  get animation(): SeriesAnimation;
209
+ /** @inheritDoc */
210
+ getIndicesRange(xRange: NumberRange): NumberRange;
211
+ /**
212
+ * resamplingMode property is not supported for BaseStackedRenderableSeries
213
+ */
214
+ get resamplingMode(): EResamplingMode;
215
+ set resamplingMode(value: EResamplingMode);
216
+ /**
217
+ * resamplingPrecision property is not supported for BaseStackedRenderableSeries
218
+ */
219
+ get resamplingPrecision(): number;
220
+ set resamplingPrecision(value: number);
196
221
  /**
197
222
  * @inheritDoc
198
223
  */
@@ -286,6 +311,15 @@ export declare abstract class BaseStackedRenderableSeries implements IRenderable
286
311
  getSeriesInfo(hitTestInfo: HitTestInfo): SeriesInfo;
287
312
  /** @inheritDoc */
288
313
  toJSON(excludeData?: boolean): TSeriesDefinition;
314
+ /**
315
+ * toPointSeries method is not supported for BaseStackedRenderableSeries
316
+ * @param resamplingParams
317
+ */
318
+ toPointSeries(resamplingParams?: ResamplingParams): IPointSeries;
319
+ /**
320
+ * getCurrentRenderPassData method is not supported for BaseStackedRenderableSeries
321
+ */
322
+ getCurrentRenderPassData(): RenderPassData;
289
323
  /**
290
324
  * drawingProviders property is not supported for BaseStackedRenderableSeries
291
325
  * instead set on the {@link StackedColumnCollection} or {@link StackedMountainCollection}
@@ -26,14 +26,23 @@ var BaseStackedRenderableSeries = /** @class */ (function () {
26
26
  */
27
27
  function BaseStackedRenderableSeries(webAssemblyContext, options) {
28
28
  var _a, _b;
29
+ /** @inheritDoc */
29
30
  this.id = (0, guid_1.generateGuid)();
31
+ /** @inheritDoc */
30
32
  this.isStacked = true;
33
+ /** @inheritDoc */
34
+ this.supportsResampling = false;
35
+ /** @inheritDoc */
31
36
  this.isSpline = false;
32
37
  this.rolloverModifierProps = new RolloverModifierRenderableSeriesProps_1.RolloverModifierRenderableSeriesProps(this);
33
38
  /** @inheritDoc */
34
39
  this.selected = new EventHandler_1.EventHandler();
35
40
  /** @inheritDoc */
36
41
  this.hovered = new EventHandler_1.EventHandler();
42
+ /**
43
+ * When true, enables drawing optimizations on the series for extra performance
44
+ */
45
+ this.enableDrawingOptimisations = true;
37
46
  this.drawNaNAsProperty = WebGlRenderContext2D_1.ELineDrawMode.DiscontinuousLine;
38
47
  this.isVisibleProperty = true;
39
48
  this.strokeThicknessProperty = 2;
@@ -44,8 +53,8 @@ var BaseStackedRenderableSeries = /** @class */ (function () {
44
53
  this.isHoveredProperty = false;
45
54
  this.notifyDataSeriesChanged = this.notifyDataSeriesChanged.bind(this);
46
55
  this.notifyPointMarkerChanged = this.notifyPointMarkerChanged.bind(this);
47
- this.accumulatedValues = new webAssemblyContext.DoubleVector();
48
- this.accumulatedFinalAnimationValues = new webAssemblyContext.DoubleVector();
56
+ this.accumulatedValues = new webAssemblyContext.SCRTDoubleVector();
57
+ this.accumulatedFinalAnimationValues = new webAssemblyContext.SCRTDoubleVector();
49
58
  this.dataSeries = (_a = options === null || options === void 0 ? void 0 : options.dataSeries) !== null && _a !== void 0 ? _a : this.dataSeriesProperty;
50
59
  this.opacityProperty = (_b = options === null || options === void 0 ? void 0 : options.opacity) !== null && _b !== void 0 ? _b : 1;
51
60
  this.webAssemblyContext = webAssemblyContext;
@@ -266,6 +275,36 @@ var BaseStackedRenderableSeries = /** @class */ (function () {
266
275
  enumerable: false,
267
276
  configurable: true
268
277
  });
278
+ /** @inheritDoc */
279
+ BaseStackedRenderableSeries.prototype.getIndicesRange = function (xRange) {
280
+ throw Error("getIndicesRange() method is not supported for BaseStackedRenderableSeries");
281
+ };
282
+ Object.defineProperty(BaseStackedRenderableSeries.prototype, "resamplingMode", {
283
+ /**
284
+ * resamplingMode property is not supported for BaseStackedRenderableSeries
285
+ */
286
+ get: function () {
287
+ throw Error("resamplingMode property is not supported for BaseStackedRenderableSeries");
288
+ },
289
+ set: function (value) {
290
+ throw Error("resamplingMode property is not supported for BaseStackedRenderableSeries");
291
+ },
292
+ enumerable: false,
293
+ configurable: true
294
+ });
295
+ Object.defineProperty(BaseStackedRenderableSeries.prototype, "resamplingPrecision", {
296
+ /**
297
+ * resamplingPrecision property is not supported for BaseStackedRenderableSeries
298
+ */
299
+ get: function () {
300
+ throw Error("resamplingPrecision property is not supported for BaseStackedRenderableSeries");
301
+ },
302
+ set: function (value) {
303
+ throw Error("resamplingPrecision property is not supported for BaseStackedRenderableSeries");
304
+ },
305
+ enumerable: false,
306
+ configurable: true
307
+ });
269
308
  Object.defineProperty(BaseStackedRenderableSeries.prototype, "parentSurface", {
270
309
  // NOT SUPPORTED METHODS END
271
310
  /**
@@ -497,8 +536,20 @@ var BaseStackedRenderableSeries = /** @class */ (function () {
497
536
  return { type: this.type, options: options };
498
537
  }
499
538
  };
539
+ /**
540
+ * toPointSeries method is not supported for BaseStackedRenderableSeries
541
+ * @param resamplingParams
542
+ */
543
+ BaseStackedRenderableSeries.prototype.toPointSeries = function (resamplingParams) {
544
+ throw Error("toPointSeries method is not supported for BaseStackedRenderableSeries");
545
+ };
546
+ /**
547
+ * getCurrentRenderPassData method is not supported for BaseStackedRenderableSeries
548
+ */
549
+ BaseStackedRenderableSeries.prototype.getCurrentRenderPassData = function () {
550
+ throw Error("getCurrentRenderPassData method is not supported for BaseStackedRenderableSeries");
551
+ };
500
552
  Object.defineProperty(BaseStackedRenderableSeries.prototype, "drawingProviders", {
501
- // NOT SUPPORTED PROPERTIES BEGIN
502
553
  /**
503
554
  * drawingProviders property is not supported for BaseStackedRenderableSeries
504
555
  * instead set on the {@link StackedColumnCollection} or {@link StackedMountainCollection}
@@ -1,9 +1,9 @@
1
1
  import { TSciChart } from "../../../../types/TSciChart";
2
2
  import { WebGlRenderContext2D } from "../../../Drawing/WebGlRenderContext2D";
3
3
  import { RenderPassData } from "../../../Services/RenderPassData";
4
+ import { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
4
5
  import { BaseBandRenderableSeries } from "../BaseBandRenderableSeries";
5
6
  import { BaseSeriesDrawingProvider } from "./BaseSeriesDrawingProvider";
6
- import { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
7
7
  /**
8
8
  * Used internally - a drawing provider performs drawing for a {@link BaseBandRenderableSeries} using
9
9
  * our WebAssembly WebGL rendering engine
@@ -18,8 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.BandSeriesDrawingProvider = void 0;
19
19
  var Deleter_1 = require("../../../../Core/Deleter");
20
20
  var SeriesType_1 = require("../../../../types/SeriesType");
21
- var Pen2DCache_1 = require("../../../Drawing/Pen2DCache");
22
21
  var BrushCache_1 = require("../../../Drawing/BrushCache");
22
+ var Pen2DCache_1 = require("../../../Drawing/Pen2DCache");
23
23
  var WebGlRenderContext2D_1 = require("../../../Drawing/WebGlRenderContext2D");
24
24
  var constants_1 = require("../constants");
25
25
  var BaseSeriesDrawingProvider_1 = require("./BaseSeriesDrawingProvider");
@@ -78,11 +78,12 @@ var BandSeriesDrawingProvider = /** @class */ (function (_super) {
78
78
  */
79
79
  BandSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
80
80
  var _a;
81
- var dataSeries = this.parentSeries.dataSeries;
81
+ var pointSeries = renderPassData.pointSeries;
82
+ var containsNaN = this.parentSeries.dataSeries.dataDistributionCalculator.containsNaN;
82
83
  var args = new this.webAssemblyContext.SCRTBandDrawingParams();
83
84
  args.forceShaderMethod = true;
84
85
  args.verticalChart = renderPassData.isVerticalChart;
85
- args.lineGaps = dataSeries.containsNaN
86
+ args.lineGaps = containsNaN
86
87
  ? this.parentSeries.drawNaNAs === WebGlRenderContext2D_1.ELineDrawMode.DiscontinuousLine
87
88
  ? this.webAssemblyContext.SCRTLineGapMode.DrawGaps
88
89
  : this.webAssemblyContext.SCRTLineGapMode.CloseGaps
@@ -105,10 +106,10 @@ var BandSeriesDrawingProvider = /** @class */ (function (_super) {
105
106
  args.SetLinesPen1(strokePenY1);
106
107
  }
107
108
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
108
- var xValues = dataSeries.getNativeXValues();
109
- var xDrawValues = isCategoryAxis ? dataSeries.getNativeIndexes() : xValues;
110
- var yDrawValues = dataSeries.getNativeYValues();
111
- var y1DrawValues = dataSeries.getNativeY1Values();
109
+ var xValues = pointSeries.xValues;
110
+ var xDrawValues = isCategoryAxis ? pointSeries.indexes : xValues;
111
+ var yDrawValues = pointSeries.yValues;
112
+ var y1DrawValues = pointSeries.y1Values;
112
113
  var isSplineBandSeries = this.parentSeries.type === SeriesType_1.ESeriesType.SplineBandSeries && xValues.size() > 1;
113
114
  if (isSplineBandSeries) {
114
115
  var splineBandSeries = this.parentSeries;
@@ -128,14 +129,7 @@ var BandSeriesDrawingProvider = /** @class */ (function (_super) {
128
129
  }
129
130
  args.isSmoothColors = this.palettingState.gradientPaletting;
130
131
  var nativeContext = renderContext.getNativeContext();
131
- var viewRect = this.parentSeries.parentSurface.seriesViewRect;
132
- nativeContext.PushMatrix();
133
- nativeContext.PushState();
134
- nativeContext.Translate(viewRect.x, viewRect.y);
135
- nativeContext.SetClipRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);
136
132
  this.nativeDrawingProvider.DrawPointsVec(nativeContext, xDrawValues, yDrawValues, y1DrawValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args);
137
- nativeContext.PopMatrix();
138
- nativeContext.PopState();
139
133
  args.delete();
140
134
  };
141
135
  /**
@@ -44,6 +44,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function () {
44
44
  * @returns the new {@link UIntVector} with ARGB colors
45
45
  */
46
46
  BaseSeriesDrawingProvider.prototype.applyStrokePaletting = function (strokePen) {
47
+ var _a;
47
48
  if (this.parentSeries.hasStrokePaletteProvider()) {
48
49
  var strokeColorArgb = (0, colorUtil_1.uintArgbColorMultiplyOpacity)((0, parseColor_1.parseColorToUIntArgb)(this.parentSeries.stroke), this.parentSeries.opacity);
49
50
  if (isNaN(strokeColorArgb)) {
@@ -70,11 +71,11 @@ var BaseSeriesDrawingProvider = /** @class */ (function () {
70
71
  }
71
72
  }
72
73
  else {
73
- this.palettingState.palettedColors = (0, Deleter_1.deleteSafe)(this.palettingState.palettedColors);
74
74
  if (this.palettingState.originalPenColor) {
75
75
  strokePen.m_uiColor = this.palettingState.originalPenColor;
76
76
  this.palettingState.originalPenColor = undefined;
77
77
  }
78
+ (_a = this.palettingState.palettedColors) === null || _a === void 0 ? void 0 : _a.clear();
78
79
  }
79
80
  // Due to pass-by-pointer limitations of WASM binding, we pass an empty vector rather than null
80
81
  if (!this.palettingState.palettedColors) {
@@ -82,7 +83,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function () {
82
83
  }
83
84
  };
84
85
  BaseSeriesDrawingProvider.prototype.applyStrokeFillPaletting = function (stroke, strokePen, fill, fillBrush, opacity, usePalette, resetPenBrushColors) {
85
- var _a, _b;
86
+ var _a, _b, _c;
86
87
  if (usePalette === void 0) { usePalette = false; }
87
88
  if (resetPenBrushColors === void 0) { resetPenBrushColors = true; }
88
89
  var hasStrokePaletteProvider = this.parentSeries.hasStrokePaletteProvider();
@@ -165,8 +166,8 @@ var BaseSeriesDrawingProvider = /** @class */ (function () {
165
166
  }
166
167
  }
167
168
  else {
168
- this.palettingState.palettedColors = (0, Deleter_1.deleteSafe)(this.palettingState.palettedColors);
169
169
  this.palettingState.paletteTextureCache.reset();
170
+ (_c = this.palettingState.palettedColors) === null || _c === void 0 ? void 0 : _c.clear();
170
171
  // This was needed for resetPenBrushColors, therefore commented out as well
171
172
  // if (strokePen) {
172
173
  // if (this.palettingState.originalPenColor) {
@@ -51,12 +51,12 @@ var BubbleSeriesDrawingProvider = /** @class */ (function (_super) {
51
51
  return;
52
52
  }
53
53
  var spriteTexture = pointMarker.getSprite();
54
- var dataSeries = this.parentSeries.dataSeries;
54
+ var pointSeries = renderPassData.pointSeries;
55
55
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
56
56
  var args = new this.webAssemblyContext.SCRTPointDrawingParams();
57
- var xValues = dataSeries.getNativeXValues();
58
- var yValues = dataSeries.getNativeYValues();
59
- var zValues = dataSeries.getNativeZValues();
57
+ var xValues = pointSeries.xValues;
58
+ var yValues = pointSeries.yValues;
59
+ var zValues = pointSeries.zValues;
60
60
  args.count = yValues.size();
61
61
  args.verticalChart = renderPassData.isVerticalChart;
62
62
  args.forceShaderMethod = true;
@@ -66,7 +66,7 @@ var BubbleSeriesDrawingProvider = /** @class */ (function (_super) {
66
66
  args.SetPalettedColors(this.palettingState.palettedColors);
67
67
  args.zMultiplier = DpiHelper_1.DpiHelper.PIXEL_RATIO;
68
68
  var nativeContext = renderContext.getNativeContext();
69
- this.drawPoints(nativeContext, isCategoryAxis ? dataSeries.getNativeIndexes() : xValues, yValues, zValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args, this.parentSeries.parentSurface.seriesViewRect);
69
+ this.drawPoints(nativeContext, isCategoryAxis ? pointSeries.indexes : xValues, yValues, zValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args, this.parentSeries.parentSurface.seriesViewRect);
70
70
  args.delete();
71
71
  };
72
72
  /**
@@ -89,13 +89,7 @@ var BubbleSeriesDrawingProvider = /** @class */ (function (_super) {
89
89
  return false;
90
90
  };
91
91
  BubbleSeriesDrawingProvider.prototype.drawPoints = function (nativeContext, xValues, yValues, zValues, xCoordCalc, yCoordCalc, args, viewRect) {
92
- nativeContext.PushMatrix();
93
- nativeContext.PushState();
94
- nativeContext.Translate(viewRect.x, viewRect.y);
95
- nativeContext.SetClipRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);
96
92
  this.nativeDrawingProvider.DrawPointsVec(nativeContext, xValues, yValues, zValues, xCoordCalc, yCoordCalc, args);
97
- nativeContext.PopMatrix();
98
- nativeContext.PopState();
99
93
  };
100
94
  return BubbleSeriesDrawingProvider;
101
95
  }(BaseSeriesDrawingProvider_1.BaseSeriesDrawingProvider));
@@ -11,6 +11,7 @@ import { BaseSeriesDrawingProvider } from "./BaseSeriesDrawingProvider";
11
11
  export declare class ColumnSeriesDrawingProvider extends BaseSeriesDrawingProvider<FastColumnRenderableSeries> {
12
12
  private nativeDrawingProvider;
13
13
  private strokePenCache;
14
+ private strokePenFillColoredCache;
14
15
  private fillBrushCache;
15
16
  /**
16
17
  * Creates an instance of the {@link ColumnSeriesDrawingProvider}
@@ -37,9 +37,14 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
37
37
  var _this = _super.call(this, webAssemblyContext, parentSeries) || this;
38
38
  _this.nativeDrawingProvider = new webAssemblyContext.SCRTColumnSeriesDrawingProvider();
39
39
  _this.strokePenCache = new Pen2DCache_1.Pen2DCache(webAssemblyContext);
40
+ _this.strokePenFillColoredCache = new Pen2DCache_1.Pen2DCache(webAssemblyContext);
40
41
  _this.fillBrushCache = new BrushCache_1.BrushCache(webAssemblyContext);
41
42
  var _a = _this.parentSeries, stroke = _a.stroke, strokeThickness = _a.strokeThickness, fill = _a.fill, opacity = _a.opacity;
42
43
  (0, Pen2DCache_1.createPenInCache)(_this.strokePenCache, stroke, strokeThickness, opacity);
44
+ // the pen is used to fix a bug when columns disappear when zooming out with zero stroke thickness
45
+ if (strokeThickness === 0) {
46
+ (0, Pen2DCache_1.createPenInCache)(_this.strokePenFillColoredCache, fill, 1, opacity);
47
+ }
43
48
  (0, BrushCache_1.createBrushInCache)(_this.fillBrushCache, fill, opacity);
44
49
  return _this;
45
50
  }
@@ -49,6 +54,7 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
49
54
  ColumnSeriesDrawingProvider.prototype.delete = function () {
50
55
  this.nativeDrawingProvider = (0, Deleter_1.deleteSafe)(this.nativeDrawingProvider);
51
56
  this.strokePenCache = (0, Deleter_1.deleteSafe)(this.strokePenCache);
57
+ this.strokePenFillColoredCache = (0, Deleter_1.deleteSafe)(this.strokePenFillColoredCache);
52
58
  this.fillBrushCache = (0, Deleter_1.deleteSafe)(this.fillBrushCache);
53
59
  _super.prototype.delete.call(this);
54
60
  };
@@ -56,39 +62,39 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
56
62
  * @inheritDoc
57
63
  */
58
64
  ColumnSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
59
- // TODO: We need to get truncated pointseries out (viewport culling) for efficient drawing of large datasets
60
- var dataSeries = this.parentSeries.dataSeries;
65
+ var pointSeries = renderPassData.pointSeries;
61
66
  var viewRect = this.parentSeries.parentSurface.seriesViewRect;
67
+ var strokeThickness = this.parentSeries.strokeThickness;
62
68
  var args = new this.webAssemblyContext.SCRTColumnDrawingParams();
63
69
  args.forceShaderMethod = true;
64
70
  args.verticalChart = renderPassData.isVerticalChart;
65
71
  args.zeroLineY = this.parentSeries.zeroLineY;
66
72
  args.columnWidth = this.parentSeries.getDataPointWidth(renderPassData.xCoordinateCalculator, this.parentSeries.dataPointWidth);
67
- args.viewportWidth = viewRect.width;
68
- args.viewportHeight = viewRect.height;
69
- var fillBrush = (0, BrushCache_1.getScrtBrushFromCache)(this.fillBrushCache);
70
- if (fillBrush) {
71
- args.SetFillBrush(fillBrush);
73
+ var strokePenCache = this.strokePenCache;
74
+ // ISSUE: If the strokeThickness property is not provided,
75
+ // the fill will be disappeared with large zoom (when the column width will be small or zero)
76
+ if (args.columnWidth === 0 && strokeThickness === 0) {
77
+ strokePenCache = this.strokePenFillColoredCache;
72
78
  }
73
- var linesPen = (0, Pen2DCache_1.getScrtPenFromCache)(this.strokePenCache);
79
+ var linesPen = (0, Pen2DCache_1.getScrtPenFromCache)(strokePenCache);
74
80
  if (linesPen) {
75
81
  args.SetLinesPen(linesPen);
76
82
  }
83
+ var fillBrush = (0, BrushCache_1.getScrtBrushFromCache)(this.fillBrushCache);
84
+ if (fillBrush) {
85
+ args.SetFillBrush(fillBrush);
86
+ }
87
+ args.viewportWidth = viewRect.width;
88
+ args.viewportHeight = viewRect.height;
77
89
  // Paletting per point
78
90
  _super.prototype.applyStrokeFillPaletting.call(this, this.parentSeries.stroke, linesPen, this.parentSeries.fill, fillBrush, this.parentSeries.opacity);
79
91
  args.SetPalettedColors(this.palettingState.palettedColors);
80
92
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
81
- var xValues = dataSeries.getNativeXValues();
82
- var yValues = dataSeries.getNativeYValues();
93
+ var xValues = pointSeries.xValues;
94
+ var yValues = pointSeries.yValues;
83
95
  args.count = yValues.size();
84
96
  var nativeContext = renderContext.getNativeContext();
85
- nativeContext.PushMatrix();
86
- nativeContext.PushState();
87
- nativeContext.Translate(viewRect.x, viewRect.y);
88
- nativeContext.SetClipRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);
89
- this.nativeDrawingProvider.DrawPointsVec(nativeContext, isCategoryAxis ? dataSeries.getNativeIndexes() : xValues, yValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args);
90
- nativeContext.PopMatrix();
91
- nativeContext.PopState();
97
+ this.nativeDrawingProvider.DrawPointsVec(nativeContext, isCategoryAxis ? pointSeries.indexes : xValues, yValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args);
92
98
  args.delete();
93
99
  };
94
100
  /**
@@ -103,16 +109,22 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
103
109
  */
104
110
  ColumnSeriesDrawingProvider.prototype.onSeriesPropertyChange = function (propertyName) {
105
111
  _super.prototype.onSeriesPropertyChange.call(this, propertyName);
112
+ var _a = this.parentSeries, stroke = _a.stroke, strokeThickness = _a.strokeThickness, opacity = _a.opacity, fill = _a.fill;
106
113
  if (propertyName === constants_1.PROPERTY.STROKE ||
107
114
  propertyName === constants_1.PROPERTY.STROKE_THICKNESS ||
108
115
  propertyName === constants_1.PROPERTY.OPACITY) {
109
- var _a = this.parentSeries, stroke = _a.stroke, strokeThickness = _a.strokeThickness, opacity = _a.opacity;
110
116
  (0, Pen2DCache_1.createPenInCache)(this.strokePenCache, stroke, strokeThickness, opacity);
111
117
  }
112
118
  if (propertyName === constants_1.PROPERTY.FILL || propertyName === constants_1.PROPERTY.OPACITY) {
113
- var _b = this.parentSeries, fill = _b.fill, opacity = _b.opacity;
114
119
  (0, BrushCache_1.createBrushInCache)(this.fillBrushCache, fill, opacity);
115
120
  }
121
+ if (strokeThickness === 0 &&
122
+ (propertyName === constants_1.PROPERTY.STROKE_THICKNESS ||
123
+ propertyName === constants_1.PROPERTY.STROKE ||
124
+ propertyName === constants_1.PROPERTY.OPACITY ||
125
+ propertyName === constants_1.PROPERTY.FILL)) {
126
+ (0, Pen2DCache_1.createPenInCache)(this.strokePenFillColoredCache, fill, strokeThickness, opacity);
127
+ }
116
128
  };
117
129
  return ColumnSeriesDrawingProvider;
118
130
  }(BaseSeriesDrawingProvider_1.BaseSeriesDrawingProvider));
@@ -1,9 +1,9 @@
1
1
  import { TSciChart } from "../../../../types/TSciChart";
2
2
  import { WebGlRenderContext2D } from "../../../Drawing/WebGlRenderContext2D";
3
3
  import { RenderPassData } from "../../../Services/RenderPassData";
4
+ import { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
4
5
  import { BaseLineRenderableSeries } from "../BaseLineRenderableSeries";
5
6
  import { BaseSeriesDrawingProvider } from "./BaseSeriesDrawingProvider";
6
- import { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
7
7
  /**
8
8
  * Used internally - a drawing provider performs drawing for a {@link FastLineRenderableSeries} using
9
9
  * our WebAssembly WebGL rendering engine
@@ -11,6 +11,7 @@ import { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
11
11
  export declare class LineSeriesDrawingProvider extends BaseSeriesDrawingProvider<BaseLineRenderableSeries> {
12
12
  private linesPenCache;
13
13
  private nativeDrawingProvider;
14
+ private args;
14
15
  /**
15
16
  * Creates an instance of the {@link LineSeriesDrawingProvider}
16
17
  * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
@@ -37,6 +37,7 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
37
37
  function LineSeriesDrawingProvider(webAssemblyContext, parentSeries) {
38
38
  var _this = _super.call(this, webAssemblyContext, parentSeries) || this;
39
39
  _this.linesPenCache = new Pen2DCache_1.Pen2DCache(webAssemblyContext);
40
+ _this.args = new webAssemblyContext.SCRTLineDrawingParams();
40
41
  return _this;
41
42
  }
42
43
  /**
@@ -87,22 +88,23 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
87
88
  if (!linesPen) {
88
89
  return;
89
90
  }
90
- // TODO: We need to get truncated pointseries out (viewport culling) for efficient drawing of large datasets
91
- var dataSeries = this.parentSeries.dataSeries;
92
- var args = new this.webAssemblyContext.SCRTLineDrawingParams();
93
- args.SetLinesPen(linesPen);
94
- args.isDigitalLine = this.parentSeries.isDigitalLine;
95
- args.forceShaderMethod = true;
96
- args.lineGaps = dataSeries.containsNaN
91
+ var pointSeries = renderPassData.pointSeries;
92
+ var containsNaN = this.parentSeries.dataSeries.dataDistributionCalculator.containsNaN;
93
+ this.args.Reset();
94
+ this.args.SetLinesPen(linesPen);
95
+ this.args.isDigitalLine = this.parentSeries.isDigitalLine;
96
+ this.args.forceShaderMethod = true;
97
+ this.args.containsNaN = containsNaN;
98
+ this.args.lineGaps = containsNaN
97
99
  ? this.parentSeries.drawNaNAs === WebGlRenderContext2D_1.ELineDrawMode.DiscontinuousLine
98
100
  ? this.webAssemblyContext.SCRTLineGapMode.DrawGaps
99
101
  : this.webAssemblyContext.SCRTLineGapMode.CloseGaps
100
102
  : this.webAssemblyContext.SCRTLineGapMode.Default;
101
- args.verticalChart = renderPassData.isVerticalChart;
103
+ this.args.verticalChart = renderPassData.isVerticalChart;
102
104
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
103
- var xValues = dataSeries.getNativeXValues();
104
- var xDrawValues = isCategoryAxis ? dataSeries.getNativeIndexes() : xValues;
105
- var yDrawValues = dataSeries.getNativeYValues();
105
+ var xValues = pointSeries.xValues;
106
+ var xDrawValues = isCategoryAxis ? pointSeries.indexes : xValues;
107
+ var yDrawValues = pointSeries.yValues;
106
108
  var isSplineLineSeries = this.parentSeries.type === SeriesType_1.ESeriesType.SplineLineSeries && xValues.size() > 1;
107
109
  if (isSplineLineSeries) {
108
110
  var spline = this.parentSeries;
@@ -113,15 +115,14 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
113
115
  xDrawValues = spline.xSplineValues;
114
116
  yDrawValues = spline.ySplineValues;
115
117
  }
116
- args.count = yDrawValues.size();
118
+ this.args.count = yDrawValues.size();
117
119
  // Stroke paletting per point
118
120
  this.applyStrokePaletting(linesPen);
119
121
  if (this.palettingState.palettedColors) {
120
- args.SetPalettedColors(this.palettingState.palettedColors);
122
+ this.args.SetPalettedColors(this.palettingState.palettedColors);
121
123
  }
122
124
  var nativeContext = renderContext.getNativeContext();
123
- this.drawLines(renderContext, nativeContext, xDrawValues, yDrawValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args, this.parentSeries.parentSurface.seriesViewRect);
124
- args.delete();
125
+ this.drawLines(renderContext, nativeContext, xDrawValues, yDrawValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, this.args, this.parentSeries.parentSurface.seriesViewRect);
125
126
  };
126
127
  /**
127
128
  * @inheritDoc
@@ -129,16 +130,11 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
129
130
  LineSeriesDrawingProvider.prototype.delete = function () {
130
131
  this.linesPenCache = (0, Deleter_1.deleteSafe)(this.linesPenCache);
131
132
  this.nativeDrawingProvider = (0, Deleter_1.deleteSafe)(this.nativeDrawingProvider);
133
+ this.args = (0, Deleter_1.deleteSafe)(this.args);
132
134
  _super.prototype.delete.call(this);
133
135
  };
134
136
  LineSeriesDrawingProvider.prototype.drawLines = function (renderContext, nativeContext, xValues, yValues, xCoordCalc, yCoordCalc, args, viewRect) {
135
- nativeContext.PushMatrix();
136
- nativeContext.PushState();
137
- nativeContext.Translate(viewRect.x, viewRect.y);
138
- nativeContext.SetClipRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);
139
137
  this.nativeDrawingProvider.DrawLinesVec(nativeContext, xValues, yValues, xCoordCalc, yCoordCalc, args);
140
- nativeContext.PopMatrix();
141
- nativeContext.PopState();
142
138
  };
143
139
  return LineSeriesDrawingProvider;
144
140
  }(BaseSeriesDrawingProvider_1.BaseSeriesDrawingProvider));
@@ -21,6 +21,7 @@ var SeriesType_1 = require("../../../../types/SeriesType");
21
21
  var BrushCache_1 = require("../../../Drawing/BrushCache");
22
22
  var Pen2DCache_1 = require("../../../Drawing/Pen2DCache");
23
23
  var WebGlRenderContext2D_1 = require("../../../Drawing/WebGlRenderContext2D");
24
+ var SciChartSurfaceBase_1 = require("../../SciChartSurfaceBase");
24
25
  var constants_1 = require("../constants");
25
26
  var BaseSeriesDrawingProvider_1 = require("./BaseSeriesDrawingProvider");
26
27
  /**
@@ -55,11 +56,11 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
55
56
  */
56
57
  MountainSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
57
58
  var _a;
58
- // TODO: We need to get truncated pointseries out (viewport culling) for efficient drawing of large datasets
59
- var dataSeries = this.parentSeries.dataSeries;
59
+ var pointSeries = renderPassData.pointSeries;
60
+ var containsNaN = this.parentSeries.dataSeries.dataDistributionCalculator.containsNaN;
60
61
  var args = new this.webAssemblyContext.SCRTMountainDrawingParams();
61
62
  args.forceShaderMethod = true;
62
- args.lineGaps = dataSeries.containsNaN
63
+ args.lineGaps = containsNaN
63
64
  ? this.parentSeries.drawNaNAs === WebGlRenderContext2D_1.ELineDrawMode.DiscontinuousLine
64
65
  ? this.webAssemblyContext.SCRTLineGapMode.DrawGaps
65
66
  : this.webAssemblyContext.SCRTLineGapMode.CloseGaps
@@ -67,7 +68,7 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
67
68
  args.verticalChart = renderPassData.isVerticalChart;
68
69
  args.zeroLineY = this.parentSeries.zeroLineY;
69
70
  args.isDigitalLine = this.parentSeries.isDigitalLine;
70
- var fillBrush = (0, BrushCache_1.getScrtBrushFromCache)(this.fillBrushCache);
71
+ var fillBrush = this.createBrush();
71
72
  if (fillBrush) {
72
73
  args.SetFillBrush(fillBrush);
73
74
  }
@@ -83,9 +84,9 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
83
84
  }
84
85
  args.isSmoothColors = this.palettingState.gradientPaletting;
85
86
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
86
- var xValues = dataSeries.getNativeXValues();
87
- var xDrawValues = isCategoryAxis ? dataSeries.getNativeIndexes() : xValues;
88
- var yDrawValues = dataSeries.getNativeYValues();
87
+ var xValues = pointSeries.xValues;
88
+ var xDrawValues = isCategoryAxis ? pointSeries.indexes : xValues;
89
+ var yDrawValues = pointSeries.yValues;
89
90
  var isSplineMountainSeries = this.parentSeries.type === SeriesType_1.ESeriesType.SplineMountainSeries && xValues.size() > 1;
90
91
  if (isSplineMountainSeries) {
91
92
  var rs = this.parentSeries;
@@ -98,13 +99,7 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
98
99
  args.count = yDrawValues.size();
99
100
  var nativeContext = renderContext.getNativeContext();
100
101
  var viewRect = this.parentSeries.parentSurface.seriesViewRect;
101
- nativeContext.PushMatrix();
102
- nativeContext.PushState();
103
- nativeContext.Translate(viewRect.x, viewRect.y);
104
- nativeContext.SetClipRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);
105
102
  this.nativeDrawingProvider.DrawPointsVec(nativeContext, xDrawValues, yDrawValues, renderPassData.xCoordinateCalculator.nativeCalculator, renderPassData.yCoordinateCalculator.nativeCalculator, args);
106
- nativeContext.PopMatrix();
107
- nativeContext.PopState();
108
103
  args.delete();
109
104
  };
110
105
  /**
@@ -141,8 +136,14 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
141
136
  this.createBrush();
142
137
  };
143
138
  MountainSeriesDrawingProvider.prototype.createBrush = function () {
144
- var _a = this.parentSeries, fill = _a.fill, opacity = _a.opacity, fillLinearGradient = _a.fillLinearGradient;
145
- return (0, BrushCache_1.createBrushInCache)(this.fillBrushCache, fill, opacity, fillLinearGradient);
139
+ var _a = this.parentSeries, fill = _a.fill, opacity = _a.opacity, fillLinearGradient = _a.fillLinearGradient, parentSurface = _a.parentSurface;
140
+ var textureHeightRatio = (parentSurface === null || parentSurface === void 0 ? void 0 : parentSurface.isCopyCanvasSurface)
141
+ ? parentSurface.domCanvas2D.height / SciChartSurfaceBase_1.SciChartSurfaceBase.domMasterCanvas.height
142
+ : 1;
143
+ var textureWidthRatio = (parentSurface === null || parentSurface === void 0 ? void 0 : parentSurface.isCopyCanvasSurface)
144
+ ? parentSurface.domCanvas2D.width / SciChartSurfaceBase_1.SciChartSurfaceBase.domMasterCanvas.width
145
+ : 1;
146
+ return (0, BrushCache_1.createBrushInCache)(this.fillBrushCache, fill, opacity, textureHeightRatio, textureWidthRatio, fillLinearGradient);
146
147
  };
147
148
  MountainSeriesDrawingProvider.prototype.createPen = function () {
148
149
  var _a = this.parentSeries, stroke = _a.stroke, strokeThickness = _a.strokeThickness, opacity = _a.opacity, strokeDashArray = _a.strokeDashArray;