diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-08-27 21:56:53 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-08-27 21:56:53 +0200 |
| commit | 8a45ec2875a4f72cb02d574b63b5dda141da35c1 (patch) | |
| tree | 40fdb2f5992f7b232af63c4fb1a65791dae04c61 /src/library | |
| parent | 2a92428ff6986d8e564b7c223f3d0c5ca0eacaf1 (diff) | |
Fix default values for rgb-clamping 🩹
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/color.rs | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/library/color.rs b/src/library/color.rs index eab84fd0..12bebdc9 100644 --- a/src/library/color.rs +++ b/src/library/color.rs @@ -5,22 +5,27 @@ use super::*; pub async fn rgb(span: Span, mut args: TableValue, _: LayoutContext<'_>) -> Pass<Value> { let mut f = Feedback::new(); + let r = args.expect::<Spanned<f64>>("red value", span, &mut f); + let g = args.expect::<Spanned<f64>>("green value", span, &mut f); + let b = args.expect::<Spanned<f64>>("blue value", span, &mut f); + let a = args.take::<Spanned<f64>>(); + + let mut clamp = |component: Option<Spanned<f64>>, default| { + component.map(|c| { + if c.v < 0.0 || c.v > 255.0 { + error!(@f, c.span, "should be between 0 and 255") + } + c.v.min(255.0).max(0.0).round() as u8 + }).unwrap_or(default) + }; + let color = RgbaColor::new( - clamp(args.expect::<Spanned<f64>>("red value", span, &mut f), &mut f), - clamp(args.expect::<Spanned<f64>>("green value", span, &mut f), &mut f), - clamp(args.expect::<Spanned<f64>>("blue value", span, &mut f), &mut f), - clamp(args.take::<Spanned<f64>>(), &mut f), + clamp(r, 0), + clamp(g, 0), + clamp(b, 0), + clamp(a, 255), ); args.unexpected(&mut f); Pass::new(Value::Color(color), f) } - -fn clamp(component: Option<Spanned<f64>>, f: &mut Feedback) -> u8 { - component.map(|c| { - if c.v < 0.0 || c.v > 255.0 { - error!(@f, c.span, "should be between 0 and 255") - } - c.v.min(255.0).max(0.0).round() as u8 - }).unwrap_or_default() -} |
