///|
fn stairs_hit_data(
values : Array[Double],
edges : Array[Double],
orientation : String,
baseline : Double,
fill : Bool,
path : Array[@core.Point],
) -> @render.DiscreteLineHitData {
let horizontal = orientation == "horizontal"
let datums = []
for i, value in values {
let p = if horizontal {
@core.point(value, edges[i])
} else {
@core.point(edges[i], value)
}
datums.push(
@render.discrete_datum(
i,
p,
value,
interval=Some((edges[i], edges[i + 1])),
band=if fill {
Some(@drawing.band_info(baseline, value, horizontal~))
} else {
None
},
),
)
}
let owners = []
if fill && !values.is_empty() {
owners.push(0)
}
for i in 0.. 0 {
owners.push(i)
}
owners.push(i)
}
if fill && !values.is_empty() {
owners.push(values.length() - 1)
}
@render.discrete_line_hit_data(Stairs, path, datums, owners).unwrap()
}