use super::context::{BarRenderParams, LinearPriceMap, RenderContext, StyleColors};
use crate::model::Bar;
use crate::tokens::DESIGN_TOKENS;
use egui::{Pos2, Stroke};
pub fn render_ohlc_bar(
context: &RenderContext,
bar: &Bar,
price_scale: &LinearPriceMap,
colors: &StyleColors,
params: &BarRenderParams,
) {
let color = colors.bar_color(bar.is_bullish());
let high_y = price_scale.price_to_y(bar.high, context.rect);
let low_y = price_scale.price_to_y(bar.low, context.rect);
let open_y = price_scale.price_to_y(bar.open, context.rect);
let close_y = price_scale.price_to_y(bar.close, context.rect);
context.painter.line_segment(
[Pos2::new(params.x, high_y), Pos2::new(params.x, low_y)],
Stroke::new(DESIGN_TOKENS.stroke.medium, color),
);
let tick_width = params.width / 2.0;
context.painter.line_segment(
[
Pos2::new(params.x - tick_width, open_y),
Pos2::new(params.x, open_y),
],
Stroke::new(DESIGN_TOKENS.stroke.medium, color),
);
context.painter.line_segment(
[
Pos2::new(params.x, close_y),
Pos2::new(params.x + tick_width, close_y),
],
Stroke::new(DESIGN_TOKENS.stroke.medium, color),
);
}