package dev.dtrentin.chart.model /** * Top-level chart configuration. * * @param xWindowSeconds visible X range in seconds. Data older than (latestTs - xWindowSeconds) is not rendered. * @param yRange Y axis range strategy. * @param t0 Origin of X axis (seconds = 0). * @param targetFps Render rate cap. null = display refresh rate via withFrameNanos. Range: 1..displayMax. * @param maxBufferSeconds Max history kept per signal. Caller is responsible for memory implications. * @param theme Visual theme (colors, stroke widths). */ data class ChartConfig( val xWindowSeconds: Float = 10f, val yRange: YRange = YRange.Auto(), val t0: T0 = T0.FirstSample, val targetFps: Int? = null, val maxBufferSeconds: Float = 60f, val theme: ChartTheme = ChartTheme(), val showGrid: Boolean = true, val xLabelMode: AxisLabelMode = AxisLabelMode.INSIDE, val yLabelMode: AxisLabelMode = AxisLabelMode.INSIDE, val yLabelDecimals: Int = 2, val xLabelDecimals: Int = 1, val lodMode: LodMode = LodMode.MIN_MAX, )