remove clones when paring hsla colors

This commit is contained in:
ConnorSkees 2020-05-24 07:03:19 -04:00
parent 90f7023896
commit bb89a865d4

View File

@ -15,6 +15,7 @@
//! Named colors retain their original casing, //! Named colors retain their original casing,
//! so `rEd` should be emitted as `rEd`. //! so `rEd` should be emitted as `rEd`.
use std::cmp::{max, min};
use std::fmt::{self, Display}; use std::fmt::{self, Display};
use crate::value::Number; use crate::value::Number;
@ -198,8 +199,8 @@ impl Color {
let red = self.red() / Number::from(255); let red = self.red() / Number::from(255);
let green = self.green() / Number::from(255); let green = self.green() / Number::from(255);
let blue = self.blue() / Number::from(255); let blue = self.blue() / Number::from(255);
let min = red.clone().min(green.clone().min(blue.clone())); let min = min(&red, min(&green, &blue)).clone();
let max = red.clone().max(green.clone().max(blue.clone())); let max = max(&red, max(&green, &blue)).clone();
if min == max { if min == max {
return Number::zero(); return Number::zero();
} }
@ -229,7 +230,7 @@ impl Color {
let green = self.green() / Number::from(255); let green = self.green() / Number::from(255);
let blue = self.blue() / Number::from(255); let blue = self.blue() / Number::from(255);
let min = red.clone().min(green.clone().min(blue.clone())); let min = min(&red, min(&green, &blue)).clone();
let max = red.max(green.max(blue)); let max = red.max(green.max(blue));
if min == max { if min == max {
@ -255,7 +256,7 @@ impl Color {
let red = self.red() / Number::from(255); let red = self.red() / Number::from(255);
let green = self.green() / Number::from(255); let green = self.green() / Number::from(255);
let blue = self.blue() / Number::from(255); let blue = self.blue() / Number::from(255);
let min = red.clone().min(green.clone().min(blue.clone())); let min = min(&red, min(&green, &blue)).clone();
let max = red.max(green.max(blue)); let max = red.max(green.max(blue));
(((min + max) / Number::from(2)) * Number::from(100)).round() (((min + max) / Number::from(2)) * Number::from(100)).round()
} }
@ -268,8 +269,8 @@ impl Color {
let red = self.red() / Number::from(255); let red = self.red() / Number::from(255);
let green = self.green() / Number::from(255); let green = self.green() / Number::from(255);
let blue = self.blue() / Number::from(255); let blue = self.blue() / Number::from(255);
let min = red.clone().min(green.clone().min(blue.clone())); let min = min(&red, min(&green, &blue)).clone();
let max = red.clone().max(green.clone().max(blue.clone())); let max = max(&red, max(&green, &blue)).clone();
let lightness = (min.clone() + max.clone()) / Number::from(2); let lightness = (min.clone() + max.clone()) / Number::from(2);