feat: add a headless mode, driven by clap CLI args
--headless renders the current view straight to a PNG and exits, with no window/event loop: it builds its own offscreen wgpu device and reuses the same reference-orbit + ExportRender path as the "Export PNG" button. --width/--height set the output resolution (default 1920x1080); not yet supported with --buddhabrot. Refactors FractalApp::new's state construction and CLI handling into default_state()/apply_cli() so headless mode can reuse them, and factors the PNG tile-render/readback/encode loop into a shared export_to_png_blocking() used by both the windowed export path and headless. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018GFBP9qrNg6NGJWzzP36xe
This commit is contained in:
+15
-1
@@ -45,9 +45,23 @@ pub struct Cli {
|
||||
#[arg(long)]
|
||||
pub export: bool,
|
||||
|
||||
/// Output path for --export (default: fractal-<timestamp>.png).
|
||||
/// Output path for --export/--headless (default: fractal-<timestamp>.png).
|
||||
#[arg(long, value_name = "PATH")]
|
||||
pub export_path: Option<String>,
|
||||
|
||||
/// Run without opening a window: render the current view to a PNG and
|
||||
/// exit. Combine with --kind/--julia/--share/--view etc. to pick what to
|
||||
/// render. Not yet supported with --buddhabrot.
|
||||
#[arg(long)]
|
||||
pub headless: bool,
|
||||
|
||||
/// Output image width in pixels (--headless only).
|
||||
#[arg(long, value_name = "PX", default_value_t = 1920)]
|
||||
pub width: u32,
|
||||
|
||||
/// Output image height in pixels (--headless only).
|
||||
#[arg(long, value_name = "PX", default_value_t = 1080)]
|
||||
pub height: u32,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, ValueEnum)]
|
||||
|
||||
Reference in New Issue
Block a user