chartgpu 0.2.2 → 0.2.3

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 (47) hide show
  1. package/README.md +21 -3
  2. package/dist/core/createRenderCoordinator.d.ts.map +1 -1
  3. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts +183 -0
  4. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts.map +1 -0
  5. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts +88 -0
  6. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts.map +1 -0
  7. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts +91 -0
  8. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts.map +1 -0
  9. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts +53 -0
  10. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts.map +1 -0
  11. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts +68 -0
  12. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts.map +1 -0
  13. package/dist/core/renderCoordinator/gpu/textureManager.d.ts +69 -0
  14. package/dist/core/renderCoordinator/gpu/textureManager.d.ts.map +1 -0
  15. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts +160 -0
  16. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts.map +1 -0
  17. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts +36 -0
  18. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts.map +1 -0
  19. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts +40 -0
  20. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts.map +1 -0
  21. package/dist/core/renderCoordinator/render/renderOverlays.d.ts +70 -0
  22. package/dist/core/renderCoordinator/render/renderOverlays.d.ts.map +1 -0
  23. package/dist/core/renderCoordinator/render/renderSeries.d.ts +146 -0
  24. package/dist/core/renderCoordinator/render/renderSeries.d.ts.map +1 -0
  25. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts +112 -0
  26. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts.map +1 -0
  27. package/dist/core/renderCoordinator/types.d.ts +19 -0
  28. package/dist/core/renderCoordinator/types.d.ts.map +1 -0
  29. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts +104 -0
  30. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts.map +1 -0
  31. package/dist/core/renderCoordinator/utils/axisUtils.d.ts +122 -0
  32. package/dist/core/renderCoordinator/utils/axisUtils.d.ts.map +1 -0
  33. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts +69 -0
  34. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts.map +1 -0
  35. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts +52 -0
  36. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts.map +1 -0
  37. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts +71 -0
  38. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts.map +1 -0
  39. package/dist/core/renderCoordinator/utils/index.d.ts +12 -0
  40. package/dist/core/renderCoordinator/utils/index.d.ts.map +1 -0
  41. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts +149 -0
  42. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts.map +1 -0
  43. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts +129 -0
  44. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts.map +1 -0
  45. package/dist/index.js +5726 -5347
  46. package/dist/index.js.map +1 -1
  47. package/package.json +4 -2
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Interaction helper utilities for pointer tracking and interaction X management.
3
+ *
4
+ * Provides pure functions for transforming pointer states, managing interaction X
5
+ * in domain coordinates, and computing effective pointer positions for crosshair
6
+ * and tooltip rendering.
7
+ *
8
+ * @module interactionHelpers
9
+ */
10
+ import type { LinearScale } from '../../../utils/scales';
11
+ /**
12
+ * Source of pointer events - either real mouse input or externally synchronized.
13
+ */
14
+ export type PointerSource = 'mouse' | 'sync';
15
+ /**
16
+ * Pointer state tracking both canvas-local CSS pixels and plot-relative grid coordinates.
17
+ */
18
+ export interface PointerState {
19
+ /** Source of the pointer event */
20
+ readonly source: PointerSource;
21
+ /** X position in canvas-local CSS pixels */
22
+ readonly x: number;
23
+ /** Y position in canvas-local CSS pixels */
24
+ readonly y: number;
25
+ /** X position in plot-relative grid CSS pixels */
26
+ readonly gridX: number;
27
+ /** Y position in plot-relative grid CSS pixels */
28
+ readonly gridY: number;
29
+ /** Whether the pointer is inside the plot grid */
30
+ readonly isInGrid: boolean;
31
+ /** Whether a pointer event has occurred */
32
+ readonly hasPointer: boolean;
33
+ }
34
+ /**
35
+ * Interaction scales for coordinate transformations between domain and grid space.
36
+ */
37
+ export interface InteractionScales {
38
+ readonly xScale: LinearScale;
39
+ readonly yScale: LinearScale;
40
+ readonly plotWidthCss: number;
41
+ readonly plotHeightCss: number;
42
+ }
43
+ /**
44
+ * Grid area boundaries in CSS pixels.
45
+ */
46
+ export interface GridArea {
47
+ readonly left: number;
48
+ readonly top: number;
49
+ readonly width: number;
50
+ readonly height: number;
51
+ }
52
+ /**
53
+ * Creates an initial empty pointer state.
54
+ *
55
+ * @returns Pointer state with no active pointer
56
+ */
57
+ export declare function createPointerState(): PointerState;
58
+ /**
59
+ * Updates pointer state from mouse move event payload.
60
+ *
61
+ * @param x - Canvas-local CSS pixel X
62
+ * @param y - Canvas-local CSS pixel Y
63
+ * @param gridX - Plot-relative grid CSS pixel X
64
+ * @param gridY - Plot-relative grid CSS pixel Y
65
+ * @param isInGrid - Whether pointer is inside plot grid
66
+ * @returns Updated pointer state with source 'mouse'
67
+ */
68
+ export declare function updatePointerFromMouse(x: number, y: number, gridX: number, gridY: number, isInGrid: boolean): PointerState;
69
+ /**
70
+ * Clears pointer state when mouse leaves canvas.
71
+ *
72
+ * Preserves source and coordinates but marks as not active.
73
+ *
74
+ * @param prevState - Previous pointer state
75
+ * @returns Updated pointer state with hasPointer=false
76
+ */
77
+ export declare function clearPointer(prevState: PointerState): PointerState;
78
+ /**
79
+ * Converts domain X coordinate to grid CSS pixel coordinate.
80
+ *
81
+ * @param interactionX - X coordinate in domain units
82
+ * @param xScale - Linear scale for X axis
83
+ * @returns Grid X in CSS pixels, or null if conversion fails
84
+ */
85
+ export declare function domainToGridX(interactionX: number, xScale: LinearScale): number | null;
86
+ /**
87
+ * Converts grid CSS pixel coordinate to domain X coordinate.
88
+ *
89
+ * @param gridX - X coordinate in grid CSS pixels
90
+ * @param xScale - Linear scale for X axis
91
+ * @returns Domain X, or null if conversion fails
92
+ */
93
+ export declare function gridToDomainX(gridX: number, xScale: LinearScale): number | null;
94
+ /**
95
+ * Computes effective pointer state for sync mode.
96
+ *
97
+ * When interaction is driven by external synchronization (not mouse), derives
98
+ * a synthetic pointer position from the interaction X in domain units. Y is
99
+ * arbitrary (midpoint) since sync mode only tracks X.
100
+ *
101
+ * Returns null if interactionX is null or coordinate conversion fails.
102
+ *
103
+ * @param interactionX - X coordinate in domain units (or null if inactive)
104
+ * @param scales - Interaction scales for coordinate transformations
105
+ * @param gridArea - Grid area boundaries for canvas-local coordinate calculation
106
+ * @returns Effective pointer state, or null if sync mode is inactive
107
+ */
108
+ export declare function computeSyncPointer(interactionX: number | null, scales: InteractionScales, gridArea: GridArea): PointerState | null;
109
+ /**
110
+ * Resolves effective pointer state based on source mode.
111
+ *
112
+ * - Mouse mode: use the provided pointer state as-is
113
+ * - Sync mode: compute synthetic pointer from interaction X
114
+ *
115
+ * This enables unified rendering logic for both mouse-driven and externally
116
+ * synchronized interactions (e.g., chart sync).
117
+ *
118
+ * @param pointerState - Current pointer state
119
+ * @param interactionX - X coordinate in domain units (for sync mode)
120
+ * @param scales - Interaction scales for coordinate transformations
121
+ * @param gridArea - Grid area boundaries
122
+ * @returns Effective pointer state for rendering
123
+ */
124
+ export declare function computeEffectivePointer(pointerState: PointerState, interactionX: number | null, scales: InteractionScales | null, gridArea: GridArea): PointerState;
125
+ /**
126
+ * Normalizes interaction X value.
127
+ *
128
+ * Returns null for null, NaN, or Infinity values. This ensures consistent
129
+ * null-checking throughout the interaction system.
130
+ *
131
+ * @param x - Interaction X value to normalize
132
+ * @returns Normalized value or null
133
+ */
134
+ export declare function normalizeInteractionX(x: number | null): number | null;
135
+ /**
136
+ * Creates a listener management system for interaction X changes.
137
+ *
138
+ * Returns utilities for adding, removing, and notifying listeners.
139
+ *
140
+ * @returns Listener management utilities
141
+ */
142
+ export declare function createInteractionXListeners(): {
143
+ add: (callback: (x: number | null, source?: unknown) => void) => void;
144
+ remove: (callback: (x: number | null, source?: unknown) => void) => void;
145
+ emit: (x: number | null, source?: unknown) => void;
146
+ clear: () => void;
147
+ };
148
+ /**
149
+ * Determines if interaction X should be updated based on value equality.
150
+ *
151
+ * Prevents redundant updates when the value and source haven't changed.
152
+ *
153
+ * @param current - Current interaction X value
154
+ * @param currentSource - Current source identifier
155
+ * @param next - New interaction X value
156
+ * @param nextSource - New source identifier
157
+ * @returns True if update is needed
158
+ */
159
+ export declare function shouldUpdateInteractionX(current: number | null, currentSource: unknown, next: number | null, nextSource: unknown): boolean;
160
+ //# sourceMappingURL=interactionHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionHelpers.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/interaction/interactionHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Annotation Label Rendering Utilities
3
+ *
4
+ * Generates DOM-based annotation labels for cartesian charts.
5
+ * Handles template rendering, coordinate transformations, and styling
6
+ * for lineX, lineY, point, and text annotations.
7
+ *
8
+ * @module renderAnnotationLabels
9
+ */
10
+ import type { ResolvedChartGPUOptions } from '../../../config/OptionResolver';
11
+ import type { LinearScale } from '../../../utils/scales';
12
+ import type { TextOverlay } from '../../../components/createTextOverlay';
13
+ export interface AnnotationLabelRenderContext {
14
+ currentOptions: ResolvedChartGPUOptions;
15
+ xScale: LinearScale;
16
+ yScale: LinearScale;
17
+ canvasCssWidthForAnnotations: number;
18
+ canvasCssHeightForAnnotations: number;
19
+ plotLeftCss: number;
20
+ plotTopCss: number;
21
+ plotWidthCss: number;
22
+ plotHeightCss: number;
23
+ canvas: HTMLCanvasElement | OffscreenCanvas;
24
+ }
25
+ /**
26
+ * Renders annotation labels to the text overlay.
27
+ *
28
+ * Processes annotations and generates DOM labels with template support,
29
+ * coordinate transformations, and background styling.
30
+ *
31
+ * @param annotationOverlay - Text overlay for rendering labels
32
+ * @param overlayContainer - DOM container for overlay positioning
33
+ * @param context - Rendering context with scales, options, and layout
34
+ */
35
+ export declare function renderAnnotationLabels(annotationOverlay: TextOverlay | null, overlayContainer: HTMLElement | null, context: AnnotationLabelRenderContext): void;
36
+ //# sourceMappingURL=renderAnnotationLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderAnnotationLabels.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderAnnotationLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,uCAAuC,CAAC;AAK5F,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,uBAAuB,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,4BAA4B,EAAE,MAAM,CAAC;IACrC,6BAA6B,EAAE,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;CAC7C;AAyED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,WAAW,GAAG,IAAI,EACrC,gBAAgB,EAAE,WAAW,GAAG,IAAI,EACpC,OAAO,EAAE,4BAA4B,GACpC,IAAI,CAuMN"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Axis Label Rendering Utilities
3
+ *
4
+ * Generates DOM-based axis labels and titles for cartesian charts.
5
+ * Labels are positioned using canvas-local CSS coordinates and rendered
6
+ * into a text overlay element.
7
+ *
8
+ * @module renderAxisLabels
9
+ */
10
+ import type { ResolvedChartGPUOptions } from '../../../config/OptionResolver';
11
+ import type { LinearScale } from '../../../utils/scales';
12
+ import type { TextOverlay } from '../../../components/createTextOverlay';
13
+ export interface AxisLabelRenderContext {
14
+ gpuContext: {
15
+ canvas: HTMLCanvasElement | OffscreenCanvas | null;
16
+ };
17
+ currentOptions: ResolvedChartGPUOptions;
18
+ xScale: LinearScale;
19
+ yScale: LinearScale;
20
+ xTickValues: ReadonlyArray<number>;
21
+ plotClipRect: {
22
+ left: number;
23
+ right: number;
24
+ top: number;
25
+ bottom: number;
26
+ };
27
+ visibleXRangeMs: number;
28
+ }
29
+ /**
30
+ * Renders axis labels and titles to the text overlay.
31
+ *
32
+ * Generates X and Y axis tick labels with appropriate formatting,
33
+ * and renders axis titles if configured.
34
+ *
35
+ * @param axisLabelOverlay - Text overlay for rendering labels
36
+ * @param overlayContainer - DOM container for overlay positioning
37
+ * @param context - Rendering context with scales, options, and layout
38
+ */
39
+ export declare function renderAxisLabels(axisLabelOverlay: TextOverlay | null, overlayContainer: HTMLElement | null, context: AxisLabelRenderContext): void;
40
+ //# sourceMappingURL=renderAxisLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderAxisLabels.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderAxisLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,uCAAuC,CAAC;AAW5F,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE;QACV,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAC;KACpD,CAAC;IACF,cAAc,EAAE,uBAAuB,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAiBD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,WAAW,GAAG,IAAI,EACpC,gBAAgB,EAAE,WAAW,GAAG,IAAI,EACpC,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CA6HN"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Overlay Rendering Utilities
3
+ *
4
+ * Prepares and renders GPU-based chart overlays (grid, axes, crosshair, highlight).
5
+ * These overlays are rendered on top of the main chart series.
6
+ *
7
+ * @module renderOverlays
8
+ */
9
+ import type { ResolvedChartGPUOptions } from '../../../config/OptionResolver';
10
+ import type { LinearScale } from '../../../utils/scales';
11
+ import type { GridRenderer } from '../../../renderers/createGridRenderer';
12
+ import type { AxisRenderer } from '../../../renderers/createAxisRenderer';
13
+ import type { CrosshairRenderer } from '../../../renderers/createCrosshairRenderer';
14
+ import type { HighlightRenderer } from '../../../renderers/createHighlightRenderer';
15
+ import type { GridArea } from '../../../renderers/createGridRenderer';
16
+ export interface OverlayRenderers {
17
+ gridRenderer: GridRenderer;
18
+ xAxisRenderer: AxisRenderer;
19
+ yAxisRenderer: AxisRenderer;
20
+ crosshairRenderer: CrosshairRenderer;
21
+ highlightRenderer: HighlightRenderer;
22
+ }
23
+ export interface OverlayPrepareContext {
24
+ currentOptions: ResolvedChartGPUOptions;
25
+ xScale: LinearScale;
26
+ yScale: LinearScale;
27
+ gridArea: GridArea;
28
+ xTickCount: number;
29
+ hasCartesianSeries: boolean;
30
+ effectivePointer: {
31
+ hasPointer: boolean;
32
+ isInGrid: boolean;
33
+ source: 'mouse' | 'sync';
34
+ x: number;
35
+ y: number;
36
+ gridX: number;
37
+ gridY: number;
38
+ };
39
+ interactionScales: {
40
+ xScale: LinearScale;
41
+ yScale: LinearScale;
42
+ } | null;
43
+ seriesForRender: ReadonlyArray<any>;
44
+ withAlpha: (color: string, alpha: number) => string;
45
+ }
46
+ export interface OverlayRenderContext {
47
+ mainPass: GPURenderPassEncoder;
48
+ topOverlayPass: GPURenderPassEncoder;
49
+ hasCartesianSeries: boolean;
50
+ }
51
+ /**
52
+ * Prepares all overlay renderers with current frame data.
53
+ *
54
+ * This includes grid lines, axes, crosshair, and point highlights.
55
+ *
56
+ * @param renderers - Overlay renderer instances
57
+ * @param context - Rendering context with scales, options, and pointer state
58
+ */
59
+ export declare function prepareOverlays(renderers: OverlayRenderers, context: OverlayPrepareContext): void;
60
+ /**
61
+ * Renders all overlay elements to the appropriate render passes.
62
+ *
63
+ * Grid is rendered in the main pass (background).
64
+ * Highlight, axes, and crosshair are rendered in the top overlay pass (foreground).
65
+ *
66
+ * @param renderers - Overlay renderer instances
67
+ * @param context - Render pass context
68
+ */
69
+ export declare function renderOverlays(renderers: OverlayRenderers, context: OverlayRenderContext): void;
70
+ //# sourceMappingURL=renderOverlays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderOverlays.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderOverlays.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,4CAA4C,CAAC;AAC5G,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,4CAA4C,CAAC;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAStE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAC;IAC5B,aAAa,EAAE,YAAY,CAAC;IAC5B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,uBAAuB,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iBAAiB,EAAE;QACjB,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,WAAW,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,oBAAoB,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAoGjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAe/F"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Series Rendering Utilities
3
+ *
4
+ * Prepares and renders all chart series types (area, line, bar, scatter, candlestick, pie).
5
+ * Handles intro animations, GPU buffer management, and multi-pass rendering with proper layering.
6
+ *
7
+ * @module renderSeries
8
+ */
9
+ import type { ResolvedChartGPUOptions, ResolvedSeriesConfig, ResolvedBarSeriesConfig } from '../../../config/OptionResolver';
10
+ import type { LinearScale } from '../../../utils/scales';
11
+ import type { GridArea } from '../../../renderers/createGridRenderer';
12
+ import type { LineRenderer } from '../../../renderers/createLineRenderer';
13
+ import type { AreaRenderer } from '../../../renderers/createAreaRenderer';
14
+ import type { BarRenderer } from '../../../renderers/createBarRenderer';
15
+ import type { ScatterRenderer } from '../../../renderers/createScatterRenderer';
16
+ import type { ScatterDensityRenderer } from '../../../renderers/createScatterDensityRenderer';
17
+ import type { PieRenderer } from '../../../renderers/createPieRenderer';
18
+ import type { CandlestickRenderer } from '../../../renderers/createCandlestickRenderer';
19
+ import type { ReferenceLineRenderer } from '../../../renderers/createReferenceLineRenderer';
20
+ import type { AnnotationMarkerRenderer } from '../../../renderers/createAnnotationMarkerRenderer';
21
+ import type { DataStore } from '../../../data/createDataStore';
22
+ export interface SeriesRenderers {
23
+ lineRenderers: LineRenderer[];
24
+ areaRenderers: AreaRenderer[];
25
+ barRenderer: BarRenderer;
26
+ scatterRenderers: ScatterRenderer[];
27
+ scatterDensityRenderers: ScatterDensityRenderer[];
28
+ pieRenderers: PieRenderer[];
29
+ candlestickRenderers: CandlestickRenderer[];
30
+ }
31
+ export interface AnnotationRenderers {
32
+ referenceLineRenderer: ReferenceLineRenderer;
33
+ referenceLineRendererMsaa: ReferenceLineRenderer;
34
+ annotationMarkerRenderer: AnnotationMarkerRenderer;
35
+ annotationMarkerRendererMsaa: AnnotationMarkerRenderer;
36
+ }
37
+ export interface SeriesPrepareContext {
38
+ currentOptions: ResolvedChartGPUOptions;
39
+ seriesForRender: ReadonlyArray<ResolvedSeriesConfig>;
40
+ xScale: LinearScale;
41
+ yScale: LinearScale;
42
+ gridArea: GridArea;
43
+ dataStore: DataStore;
44
+ appendedGpuThisFrame: Set<number>;
45
+ gpuSeriesKindByIndex: Array<'fullRawLine' | 'other' | 'unknown'>;
46
+ zoomState: {
47
+ getRange(): {
48
+ start: number;
49
+ end: number;
50
+ } | null;
51
+ } | null;
52
+ visibleXDomain: {
53
+ min: number;
54
+ max: number;
55
+ };
56
+ introPhase: 'pending' | 'running' | 'done';
57
+ introProgress01: number;
58
+ withAlpha: (color: string, alpha: number) => string;
59
+ maxRadiusCss: number;
60
+ }
61
+ export interface SeriesRenderContext {
62
+ hasCartesianSeries: boolean;
63
+ gridArea: GridArea;
64
+ mainPass: GPURenderPassEncoder;
65
+ plotScissor: {
66
+ x: number;
67
+ y: number;
68
+ w: number;
69
+ h: number;
70
+ };
71
+ introPhase: 'pending' | 'running' | 'done';
72
+ introProgress01: number;
73
+ referenceLineBelowCount: number;
74
+ markerBelowCount: number;
75
+ }
76
+ export interface AboveSeriesAnnotationContext {
77
+ hasCartesianSeries: boolean;
78
+ gridArea: GridArea;
79
+ overlayPass: GPURenderPassEncoder;
80
+ plotScissor: {
81
+ x: number;
82
+ y: number;
83
+ w: number;
84
+ h: number;
85
+ };
86
+ referenceLineBelowCount: number;
87
+ referenceLineAboveCount: number;
88
+ markerBelowCount: number;
89
+ markerAboveCount: number;
90
+ }
91
+ export interface SeriesPreparationResult {
92
+ visibleSeriesForRender: ReadonlyArray<{
93
+ series: ResolvedSeriesConfig;
94
+ originalIndex: number;
95
+ }>;
96
+ barSeriesConfigs: ResolvedBarSeriesConfig[];
97
+ visibleBarSeriesConfigs: ResolvedBarSeriesConfig[];
98
+ }
99
+ /**
100
+ * Prepares all series renderers with current frame data.
101
+ *
102
+ * This loop prepares ALL series (including hidden) to maintain correct renderer indices.
103
+ * Visibility filtering happens after preparation for rendering.
104
+ *
105
+ * @param renderers - Series renderer instances
106
+ * @param context - Preparation context with scales, options, and state
107
+ * @returns Preparation result with visibility-filtered series arrays
108
+ */
109
+ export declare function prepareSeries(renderers: SeriesRenderers, context: SeriesPrepareContext): SeriesPreparationResult;
110
+ /**
111
+ * Encodes scatter density compute passes before rendering.
112
+ *
113
+ * Must be called before beginRenderPass() for the main pass.
114
+ *
115
+ * @param renderers - Series renderer instances
116
+ * @param seriesForRender - All series configurations
117
+ * @param encoder - Command encoder for compute passes
118
+ */
119
+ export declare function encodeScatterDensityCompute(renderers: SeriesRenderers, seriesForRender: ReadonlyArray<ResolvedSeriesConfig>, encoder: GPUCommandEncoder): void;
120
+ /**
121
+ * Renders all series to the main render pass with proper layering.
122
+ *
123
+ * Render order (from back to front):
124
+ * 1. Pies (non-cartesian, behind cartesian series)
125
+ * 2. Annotations below series (reference lines, markers)
126
+ * 3. Area fills
127
+ * 4. Bars
128
+ * 5. Candlesticks
129
+ * 6. Scatter points
130
+ * 7. Line strokes
131
+ *
132
+ * @param renderers - Series renderer instances
133
+ * @param annotationRenderers - Annotation renderer instances
134
+ * @param context - Render pass context with pass encoders and state
135
+ */
136
+ export declare function renderSeries(renderers: SeriesRenderers, annotationRenderers: AnnotationRenderers, context: SeriesRenderContext, prepResult: SeriesPreparationResult): void;
137
+ /**
138
+ * Renders above-series annotations to the MSAA overlay pass.
139
+ *
140
+ * Must be called during the MSAA overlay pass (after blit).
141
+ *
142
+ * @param annotationRenderers - Annotation renderer instances
143
+ * @param context - Render pass context with overlay pass and state
144
+ */
145
+ export declare function renderAboveSeriesAnnotations(annotationRenderers: AnnotationRenderers, context: AboveSeriesAnnotationContext): void;
146
+ //# sourceMappingURL=renderSeries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderSeries.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/render/renderSeries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Renderer pool management for the RenderCoordinator.
3
+ *
4
+ * Manages dynamic arrays of chart renderers with lazy instantiation and proper disposal.
5
+ * Each chart type (line, area, scatter, etc.) maintains a pool of renderer instances
6
+ * that grows/shrinks based on the number of series.
7
+ *
8
+ * @module rendererPool
9
+ */
10
+ import { createAreaRenderer } from '../../../renderers/createAreaRenderer';
11
+ import { createLineRenderer } from '../../../renderers/createLineRenderer';
12
+ import { createScatterRenderer } from '../../../renderers/createScatterRenderer';
13
+ import { createScatterDensityRenderer } from '../../../renderers/createScatterDensityRenderer';
14
+ import { createPieRenderer } from '../../../renderers/createPieRenderer';
15
+ import { createCandlestickRenderer } from '../../../renderers/createCandlestickRenderer';
16
+ import { createBarRenderer } from '../../../renderers/createBarRenderer';
17
+ /**
18
+ * Configuration for renderer pool creation.
19
+ */
20
+ export interface RendererPoolConfig {
21
+ readonly device: GPUDevice;
22
+ readonly targetFormat: GPUTextureFormat;
23
+ }
24
+ /**
25
+ * Renderer pool state exposed to the render coordinator.
26
+ */
27
+ export interface RendererPoolState {
28
+ readonly areaRenderers: ReadonlyArray<ReturnType<typeof createAreaRenderer>>;
29
+ readonly lineRenderers: ReadonlyArray<ReturnType<typeof createLineRenderer>>;
30
+ readonly scatterRenderers: ReadonlyArray<ReturnType<typeof createScatterRenderer>>;
31
+ readonly scatterDensityRenderers: ReadonlyArray<ReturnType<typeof createScatterDensityRenderer>>;
32
+ readonly pieRenderers: ReadonlyArray<ReturnType<typeof createPieRenderer>>;
33
+ readonly candlestickRenderers: ReadonlyArray<ReturnType<typeof createCandlestickRenderer>>;
34
+ readonly barRenderer: ReturnType<typeof createBarRenderer>;
35
+ }
36
+ /**
37
+ * Renderer pool interface returned by factory function.
38
+ */
39
+ export interface RendererPool {
40
+ /**
41
+ * Ensures area renderer count matches the given count.
42
+ * Grows or shrinks the pool as needed, disposing excess renderers.
43
+ *
44
+ * @param count - Desired number of area renderers
45
+ */
46
+ ensureAreaRendererCount(count: number): void;
47
+ /**
48
+ * Ensures line renderer count matches the given count.
49
+ * Grows or shrinks the pool as needed, disposing excess renderers.
50
+ *
51
+ * @param count - Desired number of line renderers
52
+ */
53
+ ensureLineRendererCount(count: number): void;
54
+ /**
55
+ * Ensures scatter renderer count matches the given count.
56
+ * Grows or shrinks the pool as needed, disposing excess renderers.
57
+ *
58
+ * @param count - Desired number of scatter renderers
59
+ */
60
+ ensureScatterRendererCount(count: number): void;
61
+ /**
62
+ * Ensures scatter density renderer count matches the given count.
63
+ * Grows or shrinks the pool as needed, disposing excess renderers.
64
+ *
65
+ * @param count - Desired number of scatter density renderers
66
+ */
67
+ ensureScatterDensityRendererCount(count: number): void;
68
+ /**
69
+ * Ensures pie renderer count matches the given count.
70
+ * Grows or shrinks the pool as needed, disposing excess renderers.
71
+ *
72
+ * @param count - Desired number of pie renderers
73
+ */
74
+ ensurePieRendererCount(count: number): void;
75
+ /**
76
+ * Ensures candlestick renderer count matches the given count.
77
+ * Grows or shrinks the pool as needed, disposing excess renderers.
78
+ *
79
+ * @param count - Desired number of candlestick renderers
80
+ */
81
+ ensureCandlestickRendererCount(count: number): void;
82
+ /**
83
+ * Gets current renderer pool state for rendering.
84
+ * Returns readonly arrays to prevent external mutation.
85
+ *
86
+ * @returns Current state with all renderer arrays
87
+ */
88
+ getState(): RendererPoolState;
89
+ /**
90
+ * Disposes all renderers in the pool.
91
+ * Clears all arrays and destroys GPU resources.
92
+ */
93
+ dispose(): void;
94
+ }
95
+ /**
96
+ * Creates a renderer pool for dynamic renderer management.
97
+ *
98
+ * The renderer pool uses lazy instantiation: renderers are only created when
99
+ * the pool grows, and are disposed when the pool shrinks. This allows the
100
+ * render coordinator to efficiently handle varying numbers of series.
101
+ *
102
+ * **Architecture:**
103
+ * - Each chart type has a dedicated renderer array
104
+ * - Bar renderer is a singleton (not pooled)
105
+ * - Renderers are disposed when removed from the pool
106
+ * - Arrays are cleared to release references
107
+ *
108
+ * @param config - Configuration with device and target format
109
+ * @returns Renderer pool instance
110
+ */
111
+ export declare function createRendererPool(config: RendererPoolConfig): RendererPool;
112
+ //# sourceMappingURL=rendererPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendererPool.d.ts","sourceRoot":"","sources":["../../../../src/core/renderCoordinator/renderers/rendererPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,uBAAuB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;IACjG,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC;IAC3F,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;;;;OAKG;IACH,iCAAiC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvD;;;;;OAKG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD;;;;;OAKG;IACH,QAAQ,IAAI,iBAAiB,CAAC;IAE9B;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA+K3E"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared types for the RenderCoordinator modules.
3
+ *
4
+ * @module types
5
+ */
6
+ /**
7
+ * Minimal GPUContext interface required by RenderCoordinator utilities.
8
+ * This interface allows the render coordinator to work with any object
9
+ * that provides WebGPU context properties, not just the full GPUContext class.
10
+ */
11
+ export interface GPUContextLike {
12
+ readonly device: GPUDevice | null;
13
+ readonly canvas: HTMLCanvasElement | null;
14
+ readonly canvasContext: GPUCanvasContext | null;
15
+ readonly preferredFormat: GPUTextureFormat | null;
16
+ readonly initialized: boolean;
17
+ readonly devicePixelRatio?: number;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/renderCoordinator/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC"}