use visual_cortex::{from_fn, DetectorOutput, FakeSource, Frame, FrameView, Rate, Region, Session};
#[tokio::main]
async fn main() -> visual_cortex::Result<()> {
let mut frames = vec![Frame::solid(320, 180, [20, 20, 20, 255]); 20];
frames.push(Frame::solid(320, 180, [40, 200, 240, 255]));
let session = Session::builder()
.source(FakeSource::new(frames))
.build()
.await?;
let mut banner = session
.watch("banner")
.region(Region::percent(0.25, 0.25, 0.5, 0.5))
.rate(Rate::hz(10.0))
.detector(from_fn(|view: &FrameView<'_>| {
let first_row = view.rows().next().expect("non-empty view");
Ok(DetectorOutput::Bool(first_row[2] > 128))
}))
.subscribe()?;
println!("watching for the banner...");
for _ in 0..2 {
if let Some(ev) = banner.next().await {
println!("[{}] {:?}", &*ev.watcher, ev.kind);
}
}
println!("done");
Ok(())
}