feat: improve CLI
This commit is contained in:
+22
-4
@@ -327,7 +327,7 @@ pub struct FractalApp {
|
||||
export_requested: bool,
|
||||
/// Progress/handle for an in-flight PNG export, if any.
|
||||
export: Option<Arc<Mutex<ExportShared>>>,
|
||||
/// Output path for `--export` (native CLI only); falls back to a
|
||||
/// Output path for `--export-path` (native CLI only); falls back to a
|
||||
/// timestamped name when unset.
|
||||
export_path: Option<String>,
|
||||
/// Short status line (saved path, "link copied", errors).
|
||||
@@ -500,6 +500,24 @@ impl FractalApp {
|
||||
self.view = Self::default_view_for(FractalMode::Julia, self.kind);
|
||||
}
|
||||
}
|
||||
if let Some(pp) = &cli.phoenix_p {
|
||||
let p: Vec<&str> = pp.split(',').collect();
|
||||
if let (Some(Ok(re)), Some(Ok(im))) = (
|
||||
p.first().map(|s| s.trim().parse::<f64>()),
|
||||
p.get(1).map(|s| s.trim().parse::<f64>()),
|
||||
) {
|
||||
self.phoenix_p = (re, im);
|
||||
}
|
||||
}
|
||||
if let Some(ll) = &cli.lambda_l {
|
||||
let p: Vec<&str> = ll.split(',').collect();
|
||||
if let (Some(Ok(re)), Some(Ok(im))) = (
|
||||
p.first().map(|s| s.trim().parse::<f64>()),
|
||||
p.get(1).map(|s| s.trim().parse::<f64>()),
|
||||
) {
|
||||
self.lambda_l = (re, im);
|
||||
}
|
||||
}
|
||||
if let Some(frag) = cli.share
|
||||
&& let Some(state) = ShareState::decode(&frag)
|
||||
{
|
||||
@@ -517,10 +535,10 @@ impl FractalApp {
|
||||
if let Some(p) = cli.buddha_palette {
|
||||
self.buddha_palette = p.min(BUDDHA_PALETTE_NAMES.len() as u32 - 1);
|
||||
}
|
||||
self.export_path = cli.export_path;
|
||||
if cli.export {
|
||||
self.export_requested = true;
|
||||
if let Some(p) = cli.palette {
|
||||
self.palette = p.min(PALETTE_NAMES.len() as u32 - 1);
|
||||
}
|
||||
self.export_path = cli.export_path;
|
||||
}
|
||||
|
||||
/// Apply a view spec "re,im,half_height[,iterations]" (re/im are decimal,
|
||||
|
||||
+13
-5
@@ -25,6 +25,18 @@ pub struct Cli {
|
||||
#[arg(long, value_name = "RE,IM")]
|
||||
pub julia: Option<String>,
|
||||
|
||||
/// Coloring palette index.
|
||||
#[arg(long, value_name = "INDEX")]
|
||||
pub palette: Option<u32>,
|
||||
|
||||
/// Phoenix constant p for the Phoenix kind (z -> z^2 + c + p*z_prev).
|
||||
#[arg(long, value_name = "RE,IM")]
|
||||
pub phoenix_p: Option<String>,
|
||||
|
||||
/// Lambda constant λ for the Lambda kind (z -> λ*z*(1 - z)).
|
||||
#[arg(long, value_name = "RE,IM")]
|
||||
pub lambda_l: Option<String>,
|
||||
|
||||
/// Restore a view from a share-link fragment (the part after '#').
|
||||
#[arg(long, value_name = "FRAGMENT")]
|
||||
pub share: Option<String>,
|
||||
@@ -45,11 +57,7 @@ pub struct Cli {
|
||||
#[arg(long, value_name = "INDEX")]
|
||||
pub buddha_palette: Option<u32>,
|
||||
|
||||
/// Render a PNG export on startup.
|
||||
#[arg(long)]
|
||||
pub export: bool,
|
||||
|
||||
/// Output path for --export/--headless (default: fractal-<timestamp>.png).
|
||||
/// Output path for --headless (default: fractal-<timestamp>.png).
|
||||
#[arg(long, value_name = "PATH")]
|
||||
pub export_path: Option<String>,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user