namespace EE::UI::Charts¶
Overview¶
namespace Charts { // typedefs typedef std::variant<TooltipText, TooltipData> TooltipPayload; typedef std::function<std::optional<TooltipPayload>(const PointTooltipContext&)> PointTooltipProvider; typedef std::variant<StridedSpan<float>, StridedSpan<double>, LinearSpan> XDataView; typedef std::variant<StridedSpan<float>, StridedSpan<double>> YDataView; // enums enum AxisPosition; enum DataOrder; enum LineCap; enum LineJoin; // structs struct ChartPoint; struct DataDelta; struct DataRange; struct IndexRange; struct LinearSpan; struct PointTooltipContext; struct RangeConstraints; struct ReducedPoint; struct TooltipData; struct TooltipField; struct TooltipText; struct XYDataChunk; // classes class AxisScale; class AxisViewport; class ChartAxis; class ChartModel; class ImmutableXYDataSource; class LineSeries; class LinearScale; class ModelXYDataSource; class OwnedXYDataSource; class RingXYDataSource; template <typename T> class StridedSpan; class UIChart; class XYDataRead; class XYDataSource; // global functions EE_API SmallVector<double, 16> linearTicks(DataRange range, float pixelLength, float targetSpacing = 80.f); EE_API String formatNumericTick(double value, double step); EE_API std::vector<ReducedPoint> reducePixelBuckets(const XYDataRead& read, IndexRange visible, DataRange xRange, size_t pixelWidth); EE_API void reducePixelBuckets(const XYDataRead& read, IndexRange visible, DataRange xRange, size_t pixelWidth, std::vector<ReducedPoint>& output); template <typename Object, typename Member> StridedSpan<Member> memberSpan(std::span<const Object> objects, Member Object::* member); template <typename X> DataOrder detectXOrder(StridedSpan<X> xs); template <typename X, typename Y> requires(std::is_same_v<X, float>||std::is_same_v<X, double>); template <typename Object, typename X, typename Y> requires(std::is_same_v<X, float>||std::is_same_v<X, double>); EE_API std::optional<DataRange> xExtent(const XYDataRead& read); EE_API std::optional<DataRange> yExtent(const XYDataRead& read); EE_API std::optional<DataRange> visibleYExtent(const XYDataRead& read, DataRange xRange); EE_API size_t lowerBoundX(const XYDataRead& read, double value); EE_API IndexRange visibleLogicalRange(const XYDataRead& read, double minimum, double maximum); EE_API ChartPoint pointAt(const XYDataRead& read, size_t logicalIndex); } // namespace Charts
Detailed Documentation¶
Global Functions¶
EE_API SmallVector<double, 16> linearTicks(DataRange range, float pixelLength, float targetSpacing = 80.f)
Nice-number ticks, independent of label formatting and text measurement.
EE_API std::vector<ReducedPoint> reducePixelBuckets(const XYDataRead& read, IndexRange visible, DataRange xRange, size_t pixelWidth)
Reduces an ascending-X visible interval to at most four source samples per pixel bucket. Each point retains its logical index. Invalid values split line connectivity.
EE_API void reducePixelBuckets(const XYDataRead& read, IndexRange visible, DataRange xRange, size_t pixelWidth, std::vector<ReducedPoint>& output)
Writes into a reusable buffer, retaining its capacity across data updates.
template <typename X, typename Y> requires(std::is_same_v<X, float>||std::is_same_v<X, double>)
Zero-copy shared, separate X/Y arrays. Inputs must be the same length.
template <typename Object, typename X, typename Y> requires(std::is_same_v<X, float>||std::is_same_v<X, double>)
Zero-copy shared AoS storage with typed member views.
EE_API std::optional<DataRange> xExtent(const XYDataRead& read)
Finite paired values only; NaN and Inf form gaps.
EE_API std::optional<DataRange> visibleYExtent(const XYDataRead& read, DataRange xRange)
Scans only the raw samples in an ascending-X interval.
EE_API size_t lowerBoundX(const XYDataRead& read, double value)
Ascending-X reads only; returns the first index whose X is at least value.
EE_API IndexRange visibleLogicalRange(const XYDataRead& read, double minimum, double maximum)
Ascending-X reads only; includes samples in [minimum, maximum].