///|
fn main raise {
let window = @exr.Window::new(0, 0, 7, 15)
let make = fn(name : String, scale : Double) -> @exr.Image raise {
@exr.Image::new(window, [
@exr.Plane::from_values(
{ name, kind: F32, linear: false, },
window,
Array::makei(128, i => (i % 8).to_double() * scale),
),
])
}
let source = @exr.merge([make("R", 0.5), make("G", 0.25), make("B", 0.125)])
let bytes = @exr.encode(source)
let file = @exr.ExrFile::open(bytes)
let request = @exr.Window::new(2, 5, 5, 10)
let plan = file.plan(request)
assert_eq(plan.length(), 1)
let selected = file.read_with_stats(region=Some(request))
assert_eq(selected.chunks_decoded, 1)
let default_preview = selected.image.preview_rgba()
let brighter = selected.image.preview_rgba(options={
..@exr.PreviewOptions::default(),
exposure_stops: 1.0,
})
assert_eq(default_preview.length(), 4 * 6 * 4)
assert_true(brighter[0] > default_preview[0])
let histogram = selected.image.plane("R").histogram(0.0, 4.0, 8)
assert_eq(histogram.nonfinite, 0)
assert_eq(histogram.below, 0)
assert_eq(histogram.above, 0)
let before = selected.image.plane("R").sample_bits()
ignore(selected.image.preview_rgba())
assert_eq(selected.image.plane("R").sample_bits(), before)
println(
"offline preview: native/JS/Wasm-compatible region selection, histogram and exposure preview verified",
)
}