Class BaseRenderer
java.lang.Object
com.arbergashi.charts.render.BaseRenderer
- All Implemented Interfaces:
ChartRenderer
- Direct Known Subclasses:
AbstractMedicalSweepRenderer, AdaptiveFunctionRenderer, ADXRenderer, AlluvialRenderer, ArcDiagramRenderer, AreaRenderer, ATRRenderer, AutocorrelationRenderer, BandRenderer, BarRenderer, BaselineAreaRenderer, BeeswarmRenderer, BollingerBandsRenderer, BoxPlotRenderer, BubbleRenderer, BulletChartRenderer, CandlestickHollowRenderer, CandlestickHollowRenderer, CandlestickRenderer, ChangePointRenderer, ChernoffFacesRenderer, ChordDiagramRenderer, ChordFlowRenderer, ColumnRenderer, ConfidenceIntervalRenderer, ControlChartRenderer, DelaunayRenderer, DendrogramRenderer, DependencyWheelRenderer, DotPlotRenderer, ECDFRenderer, ECGRhythmRenderer, EEGRenderer, EnvelopeRenderer, ErrorBarRenderer, FibonacciRenderer, FibonacciRetracementRenderer, FourierOverlayRenderer, GanttRenderer, GanttResourceViewRenderer, GaugeBandsRenderer, GaugeRenderer, GroupedBarRenderer, HeatmapContourRenderer, HeatmapRenderer, HeikinAshiRenderer, HexbinRenderer, HighLowRenderer, HistogramRenderer, HorizonChartRenderer, HorizonRenderer, IchimokuCloudRenderer, IchimokuRenderer, ImpulseRenderer, JoyplotRenderer, KagiRenderer, KDERenderer, LineRenderer, LiveFFTRenderer, LoessRenderer, LollipopRenderer, MACDRenderer, MarimekkoRenderer, MedicalSweepRenderer, MinMaxMarkerRenderer, MovingAverageRenderer, NetworkRenderer, NightingaleRoseRenderer, OBVRenderer, OutlierDetectionRenderer, ParabolicSARRenderer, ParallelCoordinatesRenderer, ParetoRenderer, PeakDetectionRenderer, PieRenderer, PivotPointsRenderer, PointAndFigureAdvancedRenderer, PointAndFigureRenderer, PolarAdvancedRenderer, PolarLineRenderer, PolarRenderer, PolynomialRegressionRenderer, QQPlotRenderer, QuantileRegressionRenderer, RadarRenderer, RadialBarRenderer, RadialStackedRenderer, RangeRenderer, ReferenceLineRenderer, RegressionLineRenderer, RenkoRenderer, RidgeLineRenderer, RSIRenderer, RugPlotRenderer, SankeyProRenderer, SankeyRenderer, ScatterRenderer, SemiDonutRenderer, SlopeRenderer, SparklineRenderer, SpectrogramMedicalRenderer, SpectrogramRenderer, SpirometryRenderer, SplineRenderer, StackedAreaRenderer, StackedBarRenderer, StatisticalErrorBarRenderer, StepAreaRenderer, StepRenderer, StochasticRenderer, StreamgraphRenderer, SunburstRenderer, SunburstRenderer, SweepEraseEKGRenderer, TernaryContourRenderer, TernaryPhasediagramRenderer, TernaryPlotRenderer, ThresholdRenderer, TrendDecompositionRenderer, UltrasoundMModeRenderer, VCGRenderer, VectorFieldRenderer, VectorFieldRenderer, VentilatorWaveformRenderer, ViolinPlotRenderer, VolumeProfileRenderer, VolumeRenderer, VoronoiRenderer, WaterfallRenderer, WindRoseRenderer
Base class for all chart renderers, providing common functionality and utility methods.
- Since:
- 2025-06-01
- Version:
- 1.0.0
- Author:
- Arber Gashi
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ThreadLocal<double[]> static final ThreadLocal<double[]> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voiddrawData(Graphics2D g2, ChartModel model, PlotContext context) Implementation-specific drawing logic.protected voiddrawHighlightPoint(Graphics2D g2, Point2D p, Color c) protected voiddrawI18nLabel(Graphics2D g2, String key, Font font, Color color, float x, float y) Draws a localized label.protected voiddrawLabel(Graphics2D g2, String text, Font font, Color color, float x, float y) protected Arc2DgetArc(double x, double y, double w, double h, double start, double extent, int type) protected FontgetCachedFont(float baseSize, int style) Returns a cached Font for the requested base size and style.protected PaintgetCachedGradient(Color base, float height) protected BasicStrokegetCachedStroke(float width) protected BasicStrokegetCachedStroke(float width, int cap, int join) protected BasicStrokegetCachedStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase) protected ShapegetCubicCurve(double x1, double y1, double cx1, double cy1, double cx2, double cy2, double x2, double y2) protected Ellipse2DgetEllipse(double x, double y, double w, double h) getId()Returns the renderer ID used for registry/legend wiring.protected intReturns the current layer index used for theme palette selection.getLegendColor(ChartModel model) Returns the color for the legend.protected Line2DgetLine(double x1, double y1, double x2, double y2) getName()Returns the renderer name used by legends and UI labels.protected Path2D.DoubleReturns the shared Path2D.Double instance for building shapes.getPointAt(Point2D pixel, ChartModel model, PlotContext context) Returns the data index nearest to the given pixel coordinate, if supported.protected Rectangle2DgetRect(double x, double y, double w, double h) protected RoundRectangle2DgetRoundRectangle(double x, double y, double w, double h, float arcw, float arch) protected ColorgetSeriesColor(ChartModel model) protected Strokeprotected ChartThemegetTheme()Gets the current theme for this renderer.getTooltipText(int index, ChartModel model) Returns tooltip text for the given data index, or null when not supported.booleanIndicates whether this renderer should appear in the legend.protected booleanReturns whether multi-color mode is enabled.protected double[]pBuffer()Return a small allocation-free buffer for mapToPixel results (length=2)protected double[]pBuffer4()Return a small allocation-free buffer used for multi-value mapping (length=4)voidrender(Graphics2D g2, ChartModel model, PlotContext context) Main render method.protected ChartThemeresolveTheme(PlotContext context) Resolves the theme for the current render call.protected ColorseriesOrBase(ChartModel model, PlotContext context, int index) voidsetLayerIndex(int index) Sets the layer index for this renderer.setMultiColor(boolean enabled) Enables or disables multi-color rendering for supported renderers.voidsetTheme(ChartTheme theme) Sets the theme for this renderer.protected voidApply high-quality rendering hints for anti-aliasing / stroke control.protected ColorthemeAccent(PlotContext context) protected ColorthemeAxisLabel(PlotContext context) protected ColorthemeBackground(PlotContext context) protected ColorthemeBearish(PlotContext context) protected ColorthemeBullish(PlotContext context) protected ColorthemeForeground(PlotContext context) protected ColorthemeGrid(PlotContext context) protected ColorthemeSeries(PlotContext context, int index) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ChartRenderer
clearHover, createContext, getFocusValues, getPreferredYRange, renderEmptyState, supportsEmptyState
-
Field Details
-
PIXEL_BUF
-
PIXEL_BUF4
-
-
Constructor Details
-
BaseRenderer
-
-
Method Details
-
getId
-
setTheme
Sets the theme for this renderer.Framework Note: This method is automatically called by
ArberChartPanelwhen adding layers. Framework users should ensure that the panel has a theme set before rendering.- Parameters:
theme- The chart theme to apply. May benull, in which case fallbacks are used.
-
setLayerIndex
public void setLayerIndex(int index) Sets the layer index for this renderer.Framework Note: This is automatically called by
ArberChartPanelwhen adding layers. The index determines which color from the theme palette is used.- Parameters:
index- The 0-based layer index (0 = first color, 1 = second color, etc.)
-
getLayerIndex
protected int getLayerIndex()Returns the current layer index used for theme palette selection.- Returns:
- 0-based layer index
-
setMultiColor
Enables or disables multi-color rendering for supported renderers.- Parameters:
enabled- true to enable multi-color mode- Returns:
- this renderer for chaining
-
isMultiColor
protected boolean isMultiColor()Returns whether multi-color mode is enabled.- Returns:
- true when the renderer should use per-series palette colors
-
resolveTheme
Resolves the theme for the current render call.Framework contract (Option 1):
PlotContext.theme()must be non-null during rendering. Failing fast here prevents silent dark/light inconsistencies. -
themeForeground
-
themeBackground
-
themeAxisLabel
-
themeGrid
-
themeAccent
-
themeSeries
-
themeBullish
-
themeBearish
-
seriesOrBase
-
getTheme
Gets the current theme for this renderer.- Returns:
- The current theme, or
nullif not set
-
render
Main render method.- Specified by:
renderin interfaceChartRenderer- Parameters:
g2- graphics contextmodel- chart data modelcontext- plot context
-
drawData
Implementation-specific drawing logic. Must follow Zero-Allocation rules. -
getPointAt
Returns the data index nearest to the given pixel coordinate, if supported.- Specified by:
getPointAtin interfaceChartRenderer- Parameters:
pixel- mouse/crosshair position in component coordinatesmodel- data model for this layercontext- current plot context- Returns:
- optional point index
-
getTooltipText
Returns tooltip text for the given data index, or null when not supported.- Specified by:
getTooltipTextin interfaceChartRenderer- Parameters:
index- The index of the data point.model- The data model.- Returns:
- A formatted string for the tooltip, or null if no tooltip should be shown.
-
getName
Returns the renderer name used by legends and UI labels.- Specified by:
getNamein interfaceChartRenderer- Returns:
- renderer name
-
isLegendRequired
public boolean isLegendRequired()Indicates whether this renderer should appear in the legend.- Specified by:
isLegendRequiredin interfaceChartRenderer- Returns:
- true if the renderer should appear in the legend
-
getPathCache
Returns the shared Path2D.Double instance for building shapes. NOTE: This is a shared, reusable object and is reset at frame start. Do not retain a reference to this object across frames. -
pBuffer
protected double[] pBuffer()Return a small allocation-free buffer for mapToPixel results (length=2) -
pBuffer4
protected double[] pBuffer4()Return a small allocation-free buffer used for multi-value mapping (length=4) -
getCachedStroke
-
getCachedStroke
-
getCachedStroke
protected BasicStroke getCachedStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase) -
getSeriesColor
-
getLegendColor
Returns the color for the legend.- Parameters:
model- The current data model- Returns:
- color for legend swatches
-
getSeriesStroke
-
getLine
-
getRect
-
getEllipse
-
getArc
protected Arc2D getArc(double x, double y, double w, double h, double start, double extent, int type) -
getRoundRectangle
protected RoundRectangle2D getRoundRectangle(double x, double y, double w, double h, float arcw, float arch) -
getCubicCurve
protected Shape getCubicCurve(double x1, double y1, double cx1, double cy1, double cx2, double cy2, double x2, double y2) -
drawHighlightPoint
-
drawLabel
-
drawI18nLabel
Draws a localized label. The key is resolved via ChartI18N and then drawn usingdrawLabel(Graphics2D, String, Font, Color, float, float). -
getCachedGradient
-
getCachedFont
Returns a cached Font for the requested base size and style. This avoids deriving/allocating fonts each frame in draw loops. -
setupQualityHints
Apply high-quality rendering hints for anti-aliasing / stroke control. Renderers that need pixel-perfect quality should call this at frame start.
-