//! `pineal-financial` — OHLC y candlesticks. //! //! Layout del buffer: 6 floats por bar `[t, o, h, l, c, v]` (time, //! open, high, low, close, volume). Mismo principio P1 del doc //! canónico: array plano, sin objetos por bar. //! //! Aggregation (sección 3.2 del ARCHITECTURE.md): //! - **Time bucketing** (no index bucketing) para que weekends / //! holidays no colapsen la rate. //! - `open` = primero del bucket, `close` = último, `high` = max, //! `low` = min, `volume` = sum. //! - **Preserva volatilidad** — LTTB caería los wicks; estos los //! conserva por construcción. //! //! Render: dos batches separados — barras alcistas (close > open, //! verdes) y bajistas (close < open, rojas). v0.1 emite un quad //! por body + un line por wick (≈ 2 draw calls por bar; aceptable //! hasta ~500 bars on-screen). Optimización futura: agrupar //! N bodies en un solo PathBuilder fill. #![forbid(unsafe_code)] #![allow(dead_code)] pub mod ohlc_buffer; pub mod aggregate; #[cfg(feature = "gpui")] pub mod candlestick; #[cfg(feature = "gpui")] pub mod element; pub use ohlc_buffer::{Bar, OhlcBuffer}; pub use aggregate::aggregate_time_bucketed; #[cfg(feature = "gpui")] pub use candlestick::{paint_candlesticks, CandlestickStyle}; #[cfg(feature = "gpui")] pub use element::{lapaloma_candlestick, LapalomaCandlestickElement};