use more float literals
This commit is contained in:
parent
e25a9f7b12
commit
012cdbf7cc
@ -61,8 +61,8 @@ fn hsl_3_args(
|
|||||||
|
|
||||||
Ok(Value::Color(Color::from_hsla_fn(
|
Ok(Value::Color(Color::from_hsla_fn(
|
||||||
Number(hue.num().rem_euclid(360.0)),
|
Number(hue.num().rem_euclid(360.0)),
|
||||||
saturation.num() / Number::from(100),
|
saturation.num() / Number(100.0),
|
||||||
lightness.num() / Number::from(100),
|
lightness.num() / Number(100.0),
|
||||||
Number(alpha),
|
Number(alpha),
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
@ -223,7 +223,7 @@ fn darken(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult<Value>
|
|||||||
num: n,
|
num: n,
|
||||||
unit: u,
|
unit: u,
|
||||||
as_slash: _,
|
as_slash: _,
|
||||||
}) => bound!(args, "amount", n, u, 0, 100) / Number::from(100),
|
}) => bound!(args, "amount", n, u, 0, 100) / Number(100.0),
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
format!(
|
format!(
|
||||||
@ -260,7 +260,7 @@ fn saturate(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult<Value
|
|||||||
num: n,
|
num: n,
|
||||||
unit: u,
|
unit: u,
|
||||||
as_slash: _,
|
as_slash: _,
|
||||||
}) => bound!(args, "amount", n, u, 0, 100) / Number::from(100),
|
}) => bound!(args, "amount", n, u, 0, 100) / Number(100.0),
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
format!(
|
format!(
|
||||||
@ -314,7 +314,7 @@ fn desaturate(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult<Val
|
|||||||
num: n,
|
num: n,
|
||||||
unit: u,
|
unit: u,
|
||||||
as_slash: _,
|
as_slash: _,
|
||||||
}) => bound!(args, "amount", n, u, 0, 100) / Number::from(100),
|
}) => bound!(args, "amount", n, u, 0, 100) / Number(100.0),
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
format!(
|
format!(
|
||||||
@ -384,7 +384,7 @@ pub(crate) fn invert(mut args: ArgumentResult, visitor: &mut Visitor) -> SassRes
|
|||||||
as_slash: _,
|
as_slash: _,
|
||||||
}),
|
}),
|
||||||
..
|
..
|
||||||
}) => Some(bound!(args, "weight", n, u, 0, 100) / Number::from(100)),
|
}) => Some(bound!(args, "weight", n, u, 0, 100) / Number(100.0)),
|
||||||
None => None,
|
None => None,
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
return Err((
|
return Err((
|
||||||
|
@ -17,7 +17,7 @@ pub(crate) fn blackness(mut args: ArgumentResult, visitor: &mut Visitor) -> Sass
|
|||||||
};
|
};
|
||||||
|
|
||||||
let blackness =
|
let blackness =
|
||||||
Number::from(1) - (color.red().max(color.green()).max(color.blue()) / Number::from(255));
|
Number(1.0) - (color.red().max(color.green()).max(color.blue()) / Number(255.0));
|
||||||
|
|
||||||
Ok(Value::Dimension(SassNumber {
|
Ok(Value::Dimension(SassNumber {
|
||||||
num: (blackness * 100),
|
num: (blackness * 100),
|
||||||
@ -33,7 +33,7 @@ pub(crate) fn whiteness(mut args: ArgumentResult, visitor: &mut Visitor) -> Sass
|
|||||||
.get_err(0, "color")?
|
.get_err(0, "color")?
|
||||||
.assert_color_with_name("color", args.span())?;
|
.assert_color_with_name("color", args.span())?;
|
||||||
|
|
||||||
let whiteness = color.red().min(color.green()).min(color.blue()) / Number::from(255);
|
let whiteness = color.red().min(color.green()).min(color.blue()) / Number(255.0);
|
||||||
|
|
||||||
Ok(Value::Dimension(SassNumber {
|
Ok(Value::Dimension(SassNumber {
|
||||||
num: (whiteness * 100),
|
num: (whiteness * 100),
|
||||||
@ -77,7 +77,7 @@ fn hwb_inner(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult<Valu
|
|||||||
num: n,
|
num: n,
|
||||||
unit: Unit::Percent,
|
unit: Unit::Percent,
|
||||||
..
|
..
|
||||||
}) => n / Number::from(100),
|
}) => n / Number(100.0),
|
||||||
Value::Dimension(SassNumber { num: n, .. }) => n,
|
Value::Dimension(SassNumber { num: n, .. }) => n,
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
|
@ -25,7 +25,7 @@ macro_rules! opt_hsl {
|
|||||||
Value::Dimension(SassNumber { num: n, .. }) if n.is_nan() => todo!(),
|
Value::Dimension(SassNumber { num: n, .. }) if n.is_nan() => todo!(),
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: n, unit: u, ..
|
num: n, unit: u, ..
|
||||||
}) => Some(bound!($args, $arg, n, u, $low, $high) / Number::from(100)),
|
}) => Some(bound!($args, $arg, n, u, $low, $high) / Number(100.0)),
|
||||||
Value::Null => None,
|
Value::Null => None,
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
@ -197,7 +197,7 @@ pub(crate) fn scale_color(mut args: ArgumentResult, visitor: &mut Visitor) -> Sa
|
|||||||
num: n,
|
num: n,
|
||||||
unit: Unit::Percent,
|
unit: Unit::Percent,
|
||||||
..
|
..
|
||||||
}) => Some(bound!($args, $arg, n, Unit::Percent, $low, $high) / Number::from(100)),
|
}) => Some(bound!($args, $arg, n, Unit::Percent, $low, $high) / Number(100.0)),
|
||||||
v @ Value::Dimension { .. } => {
|
v @ Value::Dimension { .. } => {
|
||||||
return Err((
|
return Err((
|
||||||
format!(
|
format!(
|
||||||
@ -228,20 +228,16 @@ pub(crate) fn scale_color(mut args: ArgumentResult, visitor: &mut Visitor) -> Sa
|
|||||||
|
|
||||||
if red.is_some() || green.is_some() || blue.is_some() {
|
if red.is_some() || green.is_some() || blue.is_some() {
|
||||||
return Ok(Value::Color(Color::from_rgba(
|
return Ok(Value::Color(Color::from_rgba(
|
||||||
scale(
|
scale(color.red(), red.unwrap_or_else(Number::zero), Number(255.0)),
|
||||||
color.red(),
|
|
||||||
red.unwrap_or_else(Number::zero),
|
|
||||||
Number::from(255),
|
|
||||||
),
|
|
||||||
scale(
|
scale(
|
||||||
color.green(),
|
color.green(),
|
||||||
green.unwrap_or_else(Number::zero),
|
green.unwrap_or_else(Number::zero),
|
||||||
Number::from(255),
|
Number(255.0),
|
||||||
),
|
),
|
||||||
scale(
|
scale(
|
||||||
color.blue(),
|
color.blue(),
|
||||||
blue.unwrap_or_else(Number::zero),
|
blue.unwrap_or_else(Number::zero),
|
||||||
Number::from(255),
|
Number(255.0),
|
||||||
),
|
),
|
||||||
scale(
|
scale(
|
||||||
color.alpha(),
|
color.alpha(),
|
||||||
@ -258,7 +254,7 @@ pub(crate) fn scale_color(mut args: ArgumentResult, visitor: &mut Visitor) -> Sa
|
|||||||
// Color::as_hsla() returns more exact values than Color::hue(), etc.
|
// Color::as_hsla() returns more exact values than Color::hue(), etc.
|
||||||
let (this_hue, this_saturation, this_luminance, this_alpha) = color.as_hsla();
|
let (this_hue, this_saturation, this_luminance, this_alpha) = color.as_hsla();
|
||||||
return Ok(Value::Color(Color::from_hsla(
|
return Ok(Value::Color(Color::from_hsla(
|
||||||
scale(this_hue, Number::zero(), Number::from(360)),
|
scale(this_hue, Number::zero(), Number(360.0)),
|
||||||
scale(
|
scale(
|
||||||
this_saturation,
|
this_saturation,
|
||||||
saturation.unwrap_or_else(Number::zero),
|
saturation.unwrap_or_else(Number::zero),
|
||||||
|
@ -428,7 +428,7 @@ pub(crate) fn mix(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult
|
|||||||
2,
|
2,
|
||||||
"weight",
|
"weight",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: (Number::from(50)),
|
num: (Number(50.0)),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -438,7 +438,7 @@ pub(crate) fn mix(mut args: ArgumentResult, visitor: &mut Visitor) -> SassResult
|
|||||||
num: n,
|
num: n,
|
||||||
unit: u,
|
unit: u,
|
||||||
as_slash: _,
|
as_slash: _,
|
||||||
}) => bound!(args, "weight", n, u, 0, 100) / Number::from(100),
|
}) => bound!(args, "weight", n, u, 0, 100) / Number(100.0),
|
||||||
v => {
|
v => {
|
||||||
return Err((
|
return Err((
|
||||||
format!(
|
format!(
|
||||||
|
@ -408,7 +408,7 @@ fn acos(mut args: ArgumentResult, _: &mut Visitor) -> SassResult<Value> {
|
|||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
..
|
..
|
||||||
}) => Value::Dimension(SassNumber {
|
}) => Value::Dimension(SassNumber {
|
||||||
num: if num > Number::from(1) || num < Number::from(-1) {
|
num: if num > Number(1.0) || num < Number(-1.0) {
|
||||||
Number(f64::NAN)
|
Number(f64::NAN)
|
||||||
} else if num.is_one() {
|
} else if num.is_one() {
|
||||||
Number::zero()
|
Number::zero()
|
||||||
@ -448,7 +448,7 @@ fn asin(mut args: ArgumentResult, _: &mut Visitor) -> SassResult<Value> {
|
|||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
if num > Number::from(1) || num < Number::from(-1) {
|
if num > Number(1.0) || num < Number(-1.0) {
|
||||||
return Ok(Value::Dimension(SassNumber {
|
return Ok(Value::Dimension(SassNumber {
|
||||||
num: Number(f64::NAN),
|
num: Number(f64::NAN),
|
||||||
unit: Unit::Deg,
|
unit: Unit::Deg,
|
||||||
@ -629,7 +629,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"e",
|
"e",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(std::f64::consts::E),
|
num: Number(std::f64::consts::E),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -637,7 +637,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"pi",
|
"pi",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(std::f64::consts::PI),
|
num: Number(std::f64::consts::PI),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -645,7 +645,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"epsilon",
|
"epsilon",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(std::f64::EPSILON),
|
num: Number(std::f64::EPSILON),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -653,7 +653,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"max-safe-integer",
|
"max-safe-integer",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(9007199254740991.0),
|
num: Number(9007199254740991.0),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -661,7 +661,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"min-safe-integer",
|
"min-safe-integer",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(-9007199254740991.0),
|
num: Number(-9007199254740991.0),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -669,7 +669,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"max-number",
|
"max-number",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(f64::MAX),
|
num: Number(f64::MAX),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
@ -677,7 +677,7 @@ pub(crate) fn declare(f: &mut Module) {
|
|||||||
f.insert_builtin_var(
|
f.insert_builtin_var(
|
||||||
"min-number",
|
"min-number",
|
||||||
Value::Dimension(SassNumber {
|
Value::Dimension(SassNumber {
|
||||||
num: Number::from(f64::MIN_POSITIVE),
|
num: Number(f64::MIN_POSITIVE),
|
||||||
unit: Unit::None,
|
unit: Unit::None,
|
||||||
as_slash: None,
|
as_slash: None,
|
||||||
}),
|
}),
|
||||||
|
@ -89,19 +89,15 @@ struct Rgb {
|
|||||||
|
|
||||||
impl PartialEq for Rgb {
|
impl PartialEq for Rgb {
|
||||||
fn eq(&self, other: &Self) -> bool {
|
fn eq(&self, other: &Self) -> bool {
|
||||||
if self.red != other.red
|
if self.red != other.red && !(self.red >= Number(255.0) && other.red >= Number(255.0)) {
|
||||||
&& !(self.red >= Number::from(255.0) && other.red >= Number::from(255.0))
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if self.green != other.green
|
if self.green != other.green
|
||||||
&& !(self.green >= Number::from(255.0) && other.green >= Number::from(255.0))
|
&& !(self.green >= Number(255.0) && other.green >= Number(255.0))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if self.blue != other.blue
|
if self.blue != other.blue && !(self.blue >= Number(255.0) && other.blue >= Number(255.0)) {
|
||||||
&& !(self.blue >= Number::from(255.0) && other.blue >= Number::from(255.0))
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
@ -203,16 +199,16 @@ impl Color {
|
|||||||
/// <https://github.com/sass/dart-sass/blob/0d0270cb12a9ac5cce73a4d0785fecb00735feee/lib/src/functions/color.dart#L718>
|
/// <https://github.com/sass/dart-sass/blob/0d0270cb12a9ac5cce73a4d0785fecb00735feee/lib/src/functions/color.dart#L718>
|
||||||
pub fn mix(self, other: &Color, weight: Number) -> Self {
|
pub fn mix(self, other: &Color, weight: Number) -> Self {
|
||||||
let weight = weight.clamp(0.0, 100.0);
|
let weight = weight.clamp(0.0, 100.0);
|
||||||
let normalized_weight = weight * Number::from(2.0) - Number::one();
|
let normalized_weight = weight * Number(2.0) - Number::one();
|
||||||
let alpha_distance = self.alpha() - other.alpha();
|
let alpha_distance = self.alpha() - other.alpha();
|
||||||
|
|
||||||
let combined_weight1 = if normalized_weight * alpha_distance == Number::from(-1) {
|
let combined_weight1 = if normalized_weight * alpha_distance == Number(-1.0) {
|
||||||
normalized_weight
|
normalized_weight
|
||||||
} else {
|
} else {
|
||||||
(normalized_weight + alpha_distance)
|
(normalized_weight + alpha_distance)
|
||||||
/ (Number::one() + normalized_weight * alpha_distance)
|
/ (Number::one() + normalized_weight * alpha_distance)
|
||||||
};
|
};
|
||||||
let weight1 = (combined_weight1 + Number::one()) / Number::from(2.0);
|
let weight1 = (combined_weight1 + Number::one()) / Number(2.0);
|
||||||
let weight2 = Number::one() - weight1;
|
let weight2 = Number::one() - weight1;
|
||||||
|
|
||||||
Color::from_rgba(
|
Color::from_rgba(
|
||||||
@ -233,9 +229,9 @@ impl Color {
|
|||||||
return h.hue();
|
return h.hue();
|
||||||
}
|
}
|
||||||
|
|
||||||
let red = self.red() / Number::from(255.0);
|
let red = self.red() / Number(255.0);
|
||||||
let green = self.green() / Number::from(255.0);
|
let green = self.green() / Number(255.0);
|
||||||
let blue = self.blue() / Number::from(255.0);
|
let blue = self.blue() / Number(255.0);
|
||||||
|
|
||||||
let min = red.min(green.min(blue));
|
let min = red.min(green.min(blue));
|
||||||
let max = red.max(green.max(blue));
|
let max = red.max(green.max(blue));
|
||||||
@ -245,25 +241,25 @@ impl Color {
|
|||||||
let hue = if min == max {
|
let hue = if min == max {
|
||||||
Number::zero()
|
Number::zero()
|
||||||
} else if max == red {
|
} else if max == red {
|
||||||
Number::from(60.0) * (green - blue) / delta
|
Number(60.0) * (green - blue) / delta
|
||||||
} else if max == green {
|
} else if max == green {
|
||||||
Number::from(120.0) + Number::from(60.0) * (blue - red) / delta
|
Number(120.0) + Number(60.0) * (blue - red) / delta
|
||||||
} else {
|
} else {
|
||||||
Number::from(240.0) + Number::from(60.0) * (red - green) / delta
|
Number(240.0) + Number(60.0) * (red - green) / delta
|
||||||
};
|
};
|
||||||
|
|
||||||
hue % Number::from(360.0)
|
hue % Number(360.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Calculate saturation from RGBA values
|
/// Calculate saturation from RGBA values
|
||||||
pub fn saturation(&self) -> Number {
|
pub fn saturation(&self) -> Number {
|
||||||
if let Some(h) = &self.hsla {
|
if let Some(h) = &self.hsla {
|
||||||
return h.saturation() * Number::from(100.0);
|
return h.saturation() * Number(100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
let red: Number = self.red() / Number::from(255.0);
|
let red: Number = self.red() / Number(255.0);
|
||||||
let green = self.green() / Number::from(255.0);
|
let green = self.green() / Number(255.0);
|
||||||
let blue = self.blue() / Number::from(255.0);
|
let blue = self.blue() / Number(255.0);
|
||||||
|
|
||||||
let min = red.min(green.min(blue));
|
let min = red.min(green.min(blue));
|
||||||
let max = red.max(green.max(blue));
|
let max = red.max(green.max(blue));
|
||||||
@ -278,26 +274,26 @@ impl Color {
|
|||||||
|
|
||||||
let s = delta
|
let s = delta
|
||||||
/ if sum > Number::one() {
|
/ if sum > Number::one() {
|
||||||
Number::from(2.0) - sum
|
Number(2.0) - sum
|
||||||
} else {
|
} else {
|
||||||
sum
|
sum
|
||||||
};
|
};
|
||||||
|
|
||||||
s * Number::from(100.0)
|
s * Number(100.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Calculate luminance from RGBA values
|
/// Calculate luminance from RGBA values
|
||||||
pub fn lightness(&self) -> Number {
|
pub fn lightness(&self) -> Number {
|
||||||
if let Some(h) = &self.hsla {
|
if let Some(h) = &self.hsla {
|
||||||
return h.luminance() * Number::from(100.0);
|
return h.luminance() * Number(100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
let red: Number = self.red() / Number::from(255.0);
|
let red: Number = self.red() / Number(255.0);
|
||||||
let green = self.green() / Number::from(255.0);
|
let green = self.green() / Number(255.0);
|
||||||
let blue = self.blue() / Number::from(255.0);
|
let blue = self.blue() / Number(255.0);
|
||||||
let min = red.min(green.min(blue));
|
let min = red.min(green.min(blue));
|
||||||
let max = red.max(green.max(blue));
|
let max = red.max(green.max(blue));
|
||||||
(((min + max) / Number::from(2.0)) * Number::from(100.0)).round()
|
(((min + max) / Number(2.0)) * Number(100.0)).round()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn as_hsla(&self) -> (Number, Number, Number, Number) {
|
pub fn as_hsla(&self) -> (Number, Number, Number, Number) {
|
||||||
@ -305,13 +301,13 @@ impl Color {
|
|||||||
return (h.hue(), h.saturation(), h.luminance(), self.alpha());
|
return (h.hue(), h.saturation(), h.luminance(), self.alpha());
|
||||||
}
|
}
|
||||||
|
|
||||||
let red = self.red() / Number::from(255.0);
|
let red = self.red() / Number(255.0);
|
||||||
let green = self.green() / Number::from(255.0);
|
let green = self.green() / Number(255.0);
|
||||||
let blue = self.blue() / Number::from(255.0);
|
let blue = self.blue() / Number(255.0);
|
||||||
let min = red.min(green.min(blue));
|
let min = red.min(green.min(blue));
|
||||||
let max = red.max(green.max(blue));
|
let max = red.max(green.max(blue));
|
||||||
|
|
||||||
let lightness = (min + max) / Number::from(2.0);
|
let lightness = (min + max) / Number(2.0);
|
||||||
|
|
||||||
let saturation = if min == max {
|
let saturation = if min == max {
|
||||||
Number::zero()
|
Number::zero()
|
||||||
@ -319,7 +315,7 @@ impl Color {
|
|||||||
let d = max - min;
|
let d = max - min;
|
||||||
let mm = max + min;
|
let mm = max + min;
|
||||||
d / if mm > Number::one() {
|
d / if mm > Number::one() {
|
||||||
Number::from(2.0) - mm
|
Number(2.0) - mm
|
||||||
} else {
|
} else {
|
||||||
mm
|
mm
|
||||||
}
|
}
|
||||||
@ -328,18 +324,18 @@ impl Color {
|
|||||||
let mut hue = if min == max {
|
let mut hue = if min == max {
|
||||||
Number::zero()
|
Number::zero()
|
||||||
} else if blue == max {
|
} else if blue == max {
|
||||||
Number::from(4.0) + (red - green) / (max - min)
|
Number(4.0) + (red - green) / (max - min)
|
||||||
} else if green == max {
|
} else if green == max {
|
||||||
Number::from(2.0) + (blue - red) / (max - min)
|
Number(2.0) + (blue - red) / (max - min)
|
||||||
} else {
|
} else {
|
||||||
(green - blue) / (max - min)
|
(green - blue) / (max - min)
|
||||||
};
|
};
|
||||||
|
|
||||||
if hue.is_negative() {
|
if hue.is_negative() {
|
||||||
hue += Number::from(360.0);
|
hue += Number(360.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
hue *= Number::from(60.0);
|
hue *= Number(60.0);
|
||||||
|
|
||||||
(hue % Number(360.0), saturation, lightness, self.alpha())
|
(hue % Number(360.0), saturation, lightness, self.alpha())
|
||||||
}
|
}
|
||||||
@ -422,9 +418,9 @@ impl Color {
|
|||||||
return self.clone();
|
return self.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
let red = Number::from(u8::max_value()) - self.red();
|
let red = Number(255.0) - self.red();
|
||||||
let green = Number::from(u8::max_value()) - self.green();
|
let green = Number(255.0) - self.green();
|
||||||
let blue = Number::from(u8::max_value()) - self.blue();
|
let blue = Number(255.0) - self.blue();
|
||||||
|
|
||||||
let inverse = Color::new_rgba(red, green, blue, self.alpha(), ColorFormat::Infer);
|
let inverse = Color::new_rgba(red, green, blue, self.alpha(), ColorFormat::Infer);
|
||||||
|
|
||||||
@ -434,7 +430,7 @@ impl Color {
|
|||||||
pub fn complement(&self) -> Self {
|
pub fn complement(&self) -> Self {
|
||||||
let (hue, saturation, luminance, alpha) = self.as_hsla();
|
let (hue, saturation, luminance, alpha) = self.as_hsla();
|
||||||
|
|
||||||
Color::from_hsla(hue + Number::from(180), saturation, luminance, alpha)
|
Color::from_hsla(hue + Number(180.0), saturation, luminance, alpha)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,7 +438,7 @@ impl Color {
|
|||||||
impl Color {
|
impl Color {
|
||||||
pub fn alpha(&self) -> Number {
|
pub fn alpha(&self) -> Number {
|
||||||
if self.alpha > Number::one() {
|
if self.alpha > Number::one() {
|
||||||
self.alpha / Number::from(255.0)
|
self.alpha / Number(255.0)
|
||||||
} else {
|
} else {
|
||||||
self.alpha
|
self.alpha
|
||||||
}
|
}
|
||||||
|
@ -913,7 +913,7 @@ impl<'a, 'c, P: StylesheetParser<'a>> ValueParser<'a, 'c, P> {
|
|||||||
Number::from(red),
|
Number::from(red),
|
||||||
Number::from(green),
|
Number::from(green),
|
||||||
Number::from(blue),
|
Number::from(blue),
|
||||||
Number::from(alpha),
|
Number(alpha),
|
||||||
// todo:
|
// todo:
|
||||||
// // Don't emit four- or eight-digit hex colors as hex, since that's not
|
// // Don't emit four- or eight-digit hex colors as hex, since that's not
|
||||||
// // yet well-supported in browsers.
|
// // yet well-supported in browsers.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user