Posted by Julia Skorobogata on 14 July 2021 11:14 AM
We are pleased to announce that the SciChart iOS, macOS, and Android v4.3, has now been released! It includes a lot of improvements and bug fixes. It is recommended for all users of SciChart to update to the latest version! Please see more information below.
What is new in SciChart v4.3
Major Improvements
Improved axis label formatting used in trading charts on both Android and iOS:
This feature is extremely popular in financial and trading applications. When zooming the chart you can make the labels on x-axis automatically scale. This means that at a particular zoom level you can be showing years, but zooming in closer it will transform into months, dates, and so on.
Example: zooming changes from years to years and months labels on X-axis:
Example: zooming changes from months to month and dates labels on X-axis:
This is what has been improved:
made trade chart label formatter more declarative with ability to select formats and provide quite a bit nicer output
formatters now obey locale while formatting labels
added separate DateFormatters for axis labels and for cursor labels, those are encapsulated in SCITradeChartAxisLabelFormatter
removed defaultTextFormatting for CategoryDateAxis
Stacked Series improvements for both Android and iOS platforms:
There has been a number of improvements and edge cases fixed that were reported by customers. One of the improvements allows having a proper legend for the stacked series chart, like in the example below.
Some other changes and improvements for stacked series include:
added `getYRange` implementation to fix Stacked Series range calculation issues (similar to `getXRange`)
fixed edge cases `SCILegendModifier` crashes with different Stacked Series combinations
added missing initialisers
fixed crash when there’s no visible series in `vertical collection` which is inside `horizontal collection`
fixed accumulation of vertically stacked series in different edge cases
consider only stacked series collection children as candidates for the legend, not the collection itself
Ability to modify an already existing SciChart theme
The functionality to amend the exciting SciChart theme was already in our Android version and is added to SciChart iOS library with the release of v 4.3. In the previous version of SciChart, the user had to copy the theme and then define all the keys, whether they have been changed from default ones or not. With this release, users can create themes “basedOn” parent SciChart already existing theme and override only the keys that need to be different.
Below you can see how we styled a chart using exciting SciChart Theme v4 Dark (on the left). We have changed line series and labels colors, also background color. MinorGridlines color is changed so they seem not visible at all, as well as axisBandColor is changed. This is a very easy way to give your chart the look and feel that your design requires!
Our team has been recently working on creating a financial charting component using SciChart iOS and SciChart Android. You can read about it in our blog post “Creating Native mobile Stock and Crypto Trading apps with SciChart – Preview“. Working on the iOS side we realized we can improve SciChart.framework consumption in the Swift world. Even though there is plenty of general knowledge about Objective-C to Swift and Swift to Objective-C interoperability we decided to go the extra mile and make improvements that are specific to SciChart iOS library.
SCIOS-1071 – fixed incorrect drawing of Axis GridLines and Bands when size of renderable series area changes
SC_DROID-802 -fixed `CategoryDateAxis` NPE when trying to convert date to index before label provider was updated
SCIOS-1063, SC_DROID-800 – fixed clearing of pie/donut segments when detaching legend modifier from the chart as well as optimise it (in both 2D and 3D)
improved implementation of `DefaultSeriesValueMarker`/`SCIDefaultSeriesValueMarker` to allow simpler override of its logic
added `IDoubleValueLabelFormatter`/`ISCIDoubleValueLabelFormatter` interface which defines methods for formatting double values
added this new interface into `ISCILabelProvider`/`ILabelProvider` to prevent boxing/unboxing when formatting axis labels in `updateTickLabels`
added possibility to override callback for `IsPrimaryAxis` property in `AxisBase`/`SCIAxisBase`
SciChart Android:
fixed bug in PinchZoomModifier which led to division by zero if delta was equal to zero
fixed missing SeriesValueModifier annotations if using yAxis with non-default AxisId
fixed moving of axes annotations between axis modifier surfaces when changing axis ids in annotation
fixed dragging in annotation examples because of incorrect coords from CategoryDateAxis
changed updateCurrentPoint() signature in MasterSlaveTouchModifierBase to allow override of isMaster flag;
SC_DROID-804 – fixed typo in RenderableSeriesProviderBase when isAttached was set to true instead of false on detach()
added new methods for searching and getting double value in ISciList
added methods to CategoryDateAxis for conversion Date to point coordinate and vice versa instead
added per-point interpolation in ColorMap
added onDataSeriesChanged() call when setting DataSeries for RenderableSeries;
optimized code in CategoryLabelProviderBase to make it more thread-safe
improved MotionEventManager implementation to better support case when motion events should work between charts
updated code for rendering triangle point marker to make edges rounded
applied proper blend mode for drawing sprites to correctly render tick labels on white background
changed SciChartSurfaceBase to allow replacing default IPublishMotionEvents source which is passed with services
deprecated getPointRelativeTo() in IReceiveMotionEventGroup (this transformation moved to ModifierTouchEventArgs and performed relative to original source of event)
SciChart iOS / macOS:
SCIOS-1065 – fixed unable to customise SCIPieChartTooltipModifier tooltips issue
SCIOS-1068 – fixed axis tooltips issue of drawing without background and content cutting on Mac
SCIOS-1081 – fixed drawing NSAttributedString with baselineOffset attribute
SCIOS-1080 – fixed issue with the check SCIDrawableText size before drawing because TSRMetalTexture size can’t be zero.
SCIOS-977 – fixed point markers, axis labels drawing to omit artefacts on edges
SCIOS-1079 – fixed calling wrong ISCIDataDistributionCalculator methods on ISCIDataSeries append/insert/update
SCIOS-1074 – fixed issue of update range with NSDate, not double in SCIListDate
SCIOS-988 – fixed issue when palette provider didn’t work with SCIFastBubbleRenderableSeries
SCIOS-1073 – fixed SCIView methods isPointWithinBounds worked incorrectly
SCIOS-1087 – fixed unexpected border line in SCIChartSurface on certain iOS devices
fixed blending mode while drawing triangle strips
fixed SCRTTextureBrush which should take opacity into account
fixed color interpolation in SCIColorMap, added convenience initialisers in color extensions
SCIOS-1061 – added drawRoundedRects API to the ISCIRenderContext2D
SCIOS-1076 – added improvements in unsorted data, added unsortedDataException to onUpdateXValues method
improved SCIDateValues APIs, especially for Swift
improved texture mappingMode to PerScreen to match Android and allow drawing line series with gradient style
improved SCICollectionChangedEventArgs where new and old items should be readonly which also natively improves Swift API
improved add\remove observer in SCIObservableCollection – now they obey to it’s collection generic type
added missing weak/strong declarations
used const float * pointers in ISCIRenderContext2D for drawing methods, to declare that memory should not be modified and better Swift interoperability
improved and made ISCIValues and it’s implementors more strict and Swift friendly
made annotation resizing grip index a SCIAnnotationPointIndex extensible enum
used callback instead of protocol for SCIPieChartSurfaceRenderedListener, same as in SCIChartSurface