diff --git a/zshell-img-tools/src/config.rs b/zshell-img-tools/src/config.rs index 48e8819..a6eddda 100644 --- a/zshell-img-tools/src/config.rs +++ b/zshell-img-tools/src/config.rs @@ -10,10 +10,10 @@ pub struct Config { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct EffectsConfig { - pub corner_radius: f32, - pub drop_shadow: bool, - pub rounded_corners: bool, - pub shadow_blur_radius: f32, + pub radius: f32, + pub shadow: bool, + pub rounding: bool, + pub shadow_blur: f32, pub shadow_color: [u8; 4], pub shadow_offset_x: f32, pub shadow_offset_y: f32, diff --git a/zshell-img-tools/src/effects.rs b/zshell-img-tools/src/effects.rs index 7124a9f..fab36ab 100644 --- a/zshell-img-tools/src/effects.rs +++ b/zshell-img-tools/src/effects.rs @@ -5,15 +5,15 @@ use tiny_skia::{ }; pub fn apply_effects(img: RgbaImage, cfg: &EffectsConfig) -> RgbaImage { - let img = if cfg.rounded_corners { - apply_rounded_corners(img, cfg.corner_radius) + let img = if cfg.rounding { + apply_rounding(img, cfg.radius) } else { img }; - if cfg.drop_shadow { - apply_drop_shadow( + if cfg.shadow { + apply_shadow( img, - cfg.shadow_blur_radius, + cfg.shadow_blur, cfg.shadow_offset_x, cfg.shadow_offset_y, cfg.shadow_color, @@ -23,7 +23,7 @@ pub fn apply_effects(img: RgbaImage, cfg: &EffectsConfig) -> RgbaImage { } } -pub fn apply_rounded_corners(img: RgbaImage, radius: f32) -> RgbaImage { +pub fn apply_rounding(img: RgbaImage, radius: f32) -> RgbaImage { let (w, h) = img.dimensions(); let mut mask = Pixmap::new(w, h).expect("mask pixmap"); let path = rounded_rect_path(0.0, 0.0, w as f32, h as f32, radius); @@ -47,16 +47,16 @@ pub fn apply_rounded_corners(img: RgbaImage, radius: f32) -> RgbaImage { pixmap_to_rgba_image(pixmap) } -pub fn apply_drop_shadow( +pub fn apply_shadow( img: RgbaImage, - blur_radius: f32, + blur: f32, offset_x: f32, offset_y: f32, // blur_passes: u32, shadow_color: [u8; 4], ) -> RgbaImage { let (iw, ih) = img.dimensions(); - let br = blur_radius.ceil() as u32; + let br = blur.ceil() as u32; let bp = 1; // Original idea // let spread = br * bp; diff --git a/zshell-img-tools/src/main.rs b/zshell-img-tools/src/main.rs index 2d38575..4071565 100644 --- a/zshell-img-tools/src/main.rs +++ b/zshell-img-tools/src/main.rs @@ -7,10 +7,10 @@ use std::process::{Command, Stdio}; #[derive(Default)] struct CliOverrides { - rounded_corners: Option, - corner_radius: Option, - drop_shadow: Option, - shadow_blur_radius: Option, + rounding: Option, + radius: Option, + shadow: Option, + shadow_blur: Option, shadow_offset_x: Option, shadow_offset_y: Option, // Accepted as four comma-separated u8 values, e.g. `255,0,0,200` @@ -57,12 +57,9 @@ fn extract_image_path() -> Option { } fn main() { - let image_path = extract_image_path(); - if let Some(path) = image_path { - if let Err(e) = run() { - eprintln!("Error: {}", e); - push_image(&path).ok(); - } + if let Some(path) = extract_image_path() && let Err(e) = run() { + eprintln!("Error: {}", e); + push_image(&path).ok(); } } @@ -79,26 +76,23 @@ fn run() -> Result<()> { "--image" => { image_path = Some(next_arg(&args, &mut i, "--image")?); } - "--corner" => { - let val = next_arg(&args, &mut i, "--corner")?; - overrides.rounded_corners = Some(parse_bool(&val)?); + "--rounding" => { + let val = next_arg(&args, &mut i, "--rounding")?; + overrides.rounding = Some(parse_bool(&val)?); } - "--corner-radius" => { - let val = next_arg(&args, &mut i, "--corner-radius")?; - overrides.corner_radius = Some( - val.parse::() - .context("--corner-radius must be a number")?, - ); + "--radius" => { + let val = next_arg(&args, &mut i, "--radius")?; + overrides.radius = Some(val.parse::().context("--radius must be a number")?); } "--shadow" => { let val = next_arg(&args, &mut i, "--shadow")?; - overrides.drop_shadow = Some(parse_bool(&val)?); + overrides.shadow = Some(parse_bool(&val)?); } "--shadow-blur" => { let val = next_arg(&args, &mut i, "--shadow-blur")?; - overrides.shadow_blur_radius = Some( + overrides.shadow_blur = Some( val.parse::() - .context("--shadow-blur-radius must be a number")?, + .context("--shadow-blur must be a number")?, ); } "--shadow-offset-x" => { @@ -132,21 +126,19 @@ fn run() -> Result<()> { let image_path = image_path.context("Missing --image ")?; // Check if any arguments were provided - let cli_args_provided = overrides.rounded_corners.is_some() - || overrides.corner_radius.is_some() - || overrides.drop_shadow.is_some() - || overrides.shadow_blur_radius.is_some() + let cli_args_provided = overrides.rounding.is_some() + || overrides.radius.is_some() + || overrides.shadow.is_some() + || overrides.shadow_blur.is_some() || overrides.shadow_offset_x.is_some() || overrides.shadow_offset_y.is_some() || overrides.shadow_color.is_some(); let mut effects = if cli_args_provided { // If all args provided - let rounded_corners = overrides.rounded_corners.context("Missing --corner")?; - let corner_radius = overrides.corner_radius.context("Missing --corner-radius")?; - let drop_shadow = overrides.drop_shadow.context("Missing --shadow")?; - let shadow_blur_radius = overrides - .shadow_blur_radius - .context("Missing --shadow-blur")?; + let rounding = overrides.rounding.context("Missing --rounding")?; + let radius = overrides.radius.context("Missing --radius")?; + let shadow = overrides.shadow.context("Missing --shadow")?; + let shadow_blur = overrides.shadow_blur.context("Missing --shadow-blur")?; let shadow_offset_x = overrides .shadow_offset_x .context("Missing --shadow-offset-x")?; @@ -155,10 +147,10 @@ fn run() -> Result<()> { .context("Missing --shadow-offset-y")?; let shadow_color = overrides.shadow_color.context("Missing --shadow-color")?; config::EffectsConfig { - rounded_corners, - corner_radius, - drop_shadow, - shadow_blur_radius, + rounding, + radius, + shadow, + shadow_blur, shadow_offset_x, shadow_offset_y, shadow_color, @@ -171,8 +163,8 @@ fn run() -> Result<()> { // if scale is set do if let Some(scale) = scale.filter(|&s| s != 1.0) { - effects.corner_radius *= scale; - effects.shadow_blur_radius *= scale; + effects.radius *= scale; + effects.shadow_blur *= scale; effects.shadow_offset_x *= scale; effects.shadow_offset_y *= scale; }