use std::path::PathBuf;
pub struct RasterExport {
pub format: String,
pub output: PathBuf,
pub frames: u16,
pub fps: u16,
}
impl RasterExport {
pub fn new(format: String, output: PathBuf, frames: u16, fps: u16) -> Self {
Self {
format,
output,
frames,
fps,
}
}
pub fn execute(&self) -> Result<(), String> {
println!(
"Raster export: format={}, output={}, frames={}, fps={}",
self.format,
self.output.display(),
self.frames,
self.fps
);
if self.format == "png" {
self.export_png()
} else if self.format == "gif" {
self.export_gif()
} else {
Err(format!("Unsupported format: {}", self.format))
}
}
fn export_png(&self) -> Result<(), String> {
let frame = cvkg_export_raster::CapturedFrame {
width: 200,
height: 200,
rgba: vec![128u8; 200 * 200 * 4],
};
let png_bytes = cvkg_export_raster::encode_png(&frame)?;
std::fs::write(&self.output, png_bytes)
.map_err(|e| format!("Failed to write PNG: {}", e))?;
println!("Wrote test PNG to {}", self.output.display());
Ok(())
}
fn export_gif(&self) -> Result<(), String> {
let frames: Vec<cvkg_export_raster::CapturedFrame> = (0..self.frames)
.map(|_| cvkg_export_raster::CapturedFrame {
width: 200,
height: 200,
rgba: vec![128u8; 200 * 200 * 4],
})
.collect();
let gif_bytes = cvkg_export_raster::encode_gif(&frames, self.fps)?;
std::fs::write(&self.output, gif_bytes)
.map_err(|e| format!("Failed to write GIF: {}", e))?;
println!(
"Wrote test GIF ({} frames) to {}",
self.frames,
self.output.display()
);
Ok(())
}
}