clean up chart.zig

This commit is contained in:
Emil Lerch 2026-03-20 09:36:23 -07:00
parent 04882a4ff8
commit 6d99349b62
Signed by: lobo
GPG key ID: A7B62D657EF764F8

View file

@ -302,8 +302,8 @@ pub fn renderChart(
// Grid lines // Grid lines
const grid_color = blendColor(th.text_muted, 60, bg); const grid_color = blendColor(th.text_muted, 60, bg);
try drawHorizontalGridLines(&ctx, alloc, chart_left, chart_right, price_top, price_bottom, price_min, price_max, 5, grid_color); try drawHorizontalGridLines(&ctx, chart_left, chart_right, price_top, price_bottom, 5, grid_color);
try drawHorizontalGridLines(&ctx, alloc, chart_left, chart_right, rsi_top, rsi_bottom, 0, 100, 4, grid_color); try drawHorizontalGridLines(&ctx, chart_left, chart_right, rsi_top, rsi_bottom, 4, grid_color);
// Volume bars (overlaid on price panel bottom 25%) // Volume bars (overlaid on price panel bottom 25%)
{ {
@ -385,10 +385,10 @@ pub fn renderChart(
// Bollinger Band boundary lines + SMA (on top of fills) // Bollinger Band boundary lines + SMA (on top of fills)
{ {
const band_line_color = blendColor(th.text_muted, 100, bg); const band_line_color = blendColor(th.text_muted, 100, bg);
try drawLineSeries(&ctx, alloc, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, band_line_color, 1.0, .upper); try drawLineSeries(&ctx, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, band_line_color, 1.0, .upper);
try drawLineSeries(&ctx, alloc, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, band_line_color, 1.0, .lower); try drawLineSeries(&ctx, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, band_line_color, 1.0, .lower);
// SMA (middle) // SMA (middle)
try drawLineSeries(&ctx, alloc, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, blendColor(th.text_muted, 160, bg), 1.0, .middle); try drawLineSeries(&ctx, bb, data.len, price_min, price_max, price_top, price_bottom, chart_left, x_step, blendColor(th.text_muted, 160, bg), 1.0, .middle);
} }
// Price line (on top of everything) // Price line (on top of everything)
@ -411,9 +411,9 @@ pub fn renderChart(
// RSI panel // RSI panel
{ {
const ref_color = blendColor(th.text_muted, 100, bg); const ref_color = blendColor(th.text_muted, 100, bg);
try drawHLine(&ctx, alloc, chart_left, chart_right, mapY(70, 0, 100, rsi_top, rsi_bottom), ref_color, 1.0); try drawHLine(&ctx, chart_left, chart_right, mapY(70, 0, 100, rsi_top, rsi_bottom), ref_color, 1.0);
try drawHLine(&ctx, alloc, chart_left, chart_right, mapY(30, 0, 100, rsi_top, rsi_bottom), ref_color, 1.0); try drawHLine(&ctx, chart_left, chart_right, mapY(30, 0, 100, rsi_top, rsi_bottom), ref_color, 1.0);
try drawHLine(&ctx, alloc, chart_left, chart_right, mapY(50, 0, 100, rsi_top, rsi_bottom), blendColor(th.text_muted, 50, bg), 1.0); try drawHLine(&ctx, chart_left, chart_right, mapY(50, 0, 100, rsi_top, rsi_bottom), blendColor(th.text_muted, 50, bg), 1.0);
const rsi_color = blendColor(th.info, 220, bg); const rsi_color = blendColor(th.info, 220, bg);
ctx.setSourceToPixel(rsi_color); ctx.setSourceToPixel(rsi_color);
@ -438,8 +438,8 @@ pub fn renderChart(
// Panel borders // Panel borders
{ {
const border_color = blendColor(th.border, 80, bg); const border_color = blendColor(th.border, 80, bg);
try drawRect(&ctx, alloc, chart_left, price_top, chart_right, price_bottom, border_color, 1.0); try drawRect(&ctx, chart_left, price_top, chart_right, price_bottom, border_color, 1.0);
try drawRect(&ctx, alloc, chart_left, rsi_top, chart_right, rsi_bottom, border_color, 1.0); try drawRect(&ctx, chart_left, rsi_top, chart_right, rsi_bottom, border_color, 1.0);
} }
// Get latest RSI // Get latest RSI
@ -508,7 +508,6 @@ const BandField = enum { upper, middle, lower };
fn drawLineSeries( fn drawLineSeries(
ctx: *Context, ctx: *Context,
alloc: std.mem.Allocator,
bb: []const ?zfin.indicators.BollingerBand, bb: []const ?zfin.indicators.BollingerBand,
len: usize, len: usize,
price_min: f64, price_min: f64,
@ -521,7 +520,6 @@ fn drawLineSeries(
line_w: f64, line_w: f64,
field: BandField, field: BandField,
) !void { ) !void {
_ = alloc;
ctx.setSourceToPixel(col); ctx.setSourceToPixel(col);
ctx.setLineWidth(line_w); ctx.setLineWidth(line_w);
ctx.resetPath(); ctx.resetPath();
@ -549,23 +547,17 @@ fn drawLineSeries(
fn drawHorizontalGridLines( fn drawHorizontalGridLines(
ctx: *Context, ctx: *Context,
alloc: std.mem.Allocator,
left: f64, left: f64,
right: f64, right: f64,
top: f64, top: f64,
bottom: f64, bottom: f64,
min_val: f64,
max_val: f64,
n_lines: usize, n_lines: usize,
col: Pixel, col: Pixel,
) !void { ) !void {
_ = alloc;
ctx.setSourceToPixel(col); ctx.setSourceToPixel(col);
ctx.setLineWidth(0.5); ctx.setLineWidth(0.5);
for (1..n_lines) |i| { for (1..n_lines) |i| {
const frac = @as(f64, @floatFromInt(i)) / @as(f64, @floatFromInt(n_lines)); const frac = @as(f64, @floatFromInt(i)) / @as(f64, @floatFromInt(n_lines));
_ = min_val;
_ = max_val;
const y = top + frac * (bottom - top); const y = top + frac * (bottom - top);
ctx.resetPath(); ctx.resetPath();
try ctx.moveTo(left, y); try ctx.moveTo(left, y);
@ -575,8 +567,7 @@ fn drawHorizontalGridLines(
ctx.setLineWidth(2.0); ctx.setLineWidth(2.0);
} }
fn drawHLine(ctx: *Context, alloc: std.mem.Allocator, x1: f64, x2: f64, y: f64, col: Pixel, w: f64) !void { fn drawHLine(ctx: *Context, x1: f64, x2: f64, y: f64, col: Pixel, w: f64) !void {
_ = alloc;
ctx.setSourceToPixel(col); ctx.setSourceToPixel(col);
ctx.setLineWidth(w); ctx.setLineWidth(w);
ctx.resetPath(); ctx.resetPath();
@ -586,8 +577,7 @@ fn drawHLine(ctx: *Context, alloc: std.mem.Allocator, x1: f64, x2: f64, y: f64,
ctx.setLineWidth(2.0); ctx.setLineWidth(2.0);
} }
fn drawRect(ctx: *Context, alloc: std.mem.Allocator, x1: f64, y1: f64, x2: f64, y2: f64, col: Pixel, w: f64) !void { fn drawRect(ctx: *Context, x1: f64, y1: f64, x2: f64, y2: f64, col: Pixel, w: f64) !void {
_ = alloc;
ctx.setSourceToPixel(col); ctx.setSourceToPixel(col);
ctx.setLineWidth(w); ctx.setLineWidth(w);
ctx.resetPath(); ctx.resetPath();