Replace ColorOrAuto by CaretColor

This is its only use.
This commit is contained in:
Anthony Ramine 2018-02-28 10:24:06 +01:00
parent 6fbf2c1e3c
commit c4efbb4d51
8 changed files with 65 additions and 24 deletions

View file

@ -6,8 +6,8 @@
use gecko::values::{convert_nscolor_to_rgba, convert_rgba_to_nscolor}; use gecko::values::{convert_nscolor_to_rgba, convert_rgba_to_nscolor};
use gecko_bindings::structs::{nscolor, StyleComplexColor}; use gecko_bindings::structs::{nscolor, StyleComplexColor};
use values::{Auto, Either};
use values::computed::Color as ComputedColor; use values::computed::Color as ComputedColor;
use values::generics::pointing::CaretColor;
impl From<nscolor> for StyleComplexColor { impl From<nscolor> for StyleComplexColor {
fn from(other: nscolor) -> Self { fn from(other: nscolor) -> Self {
@ -59,21 +59,27 @@ impl From<StyleComplexColor> for ComputedColor {
} }
} }
impl From<Either<ComputedColor, Auto>> for StyleComplexColor { impl<Color> From<CaretColor<Color>> for StyleComplexColor
fn from(other: Either<ComputedColor, Auto>) -> Self { where
Color: Into<StyleComplexColor>,
{
fn from(other: CaretColor<Color>) -> Self {
match other { match other {
Either::First(color) => color.into(), CaretColor::Color(color) => color.into(),
Either::Second(_auto) => StyleComplexColor::auto(), CaretColor::Auto => StyleComplexColor::auto(),
} }
} }
} }
impl From<StyleComplexColor> for Either<ComputedColor, Auto> { impl<Color> From<StyleComplexColor> for CaretColor<Color>
where
StyleComplexColor: Into<Color>,
{
fn from(other: StyleComplexColor) -> Self { fn from(other: StyleComplexColor) -> Self {
if !other.mIsAuto { if !other.mIsAuto {
Either::First(other.into()) CaretColor::Color(other.into())
} else { } else {
Either::Second(Auto) CaretColor::Auto
} }
} }
} }

View file

@ -43,10 +43,10 @@ ${helpers.single_keyword("-moz-user-focus",
${helpers.predefined_type( ${helpers.predefined_type(
"caret-color", "caret-color",
"ColorOrAuto", "CaretColor",
"Either::Second(Auto)", "generics::pointing::CaretColor::Auto",
spec="https://drafts.csswg.org/css-ui/#caret-color", spec="https://drafts.csswg.org/css-ui/#caret-color",
animation_value_type="Either<AnimatedColor, Auto>", animation_value_type="AnimatedCaretColor",
boxed=not RUSTC_HAS_PR45225, boxed=not RUSTC_HAS_PR45225,
ignored_when_colors_disabled=True, ignored_when_colors_disabled=True,
products="gecko", products="gecko",

View file

@ -70,10 +70,10 @@ pub use self::list::{ListStyleImage, Quotes};
pub use self::list::ListStyleType; pub use self::list::ListStyleType;
pub use self::outline::OutlineStyle; pub use self::outline::OutlineStyle;
pub use self::percentage::Percentage; pub use self::percentage::Percentage;
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position, ZIndex}; pub use self::pointing::{CaretColor, Cursor};
pub use self::pointing::Cursor;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
pub use self::pointing::CursorImage; pub use self::pointing::CursorImage;
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position, ZIndex};
pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind}; pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind};
pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth}; pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth};
pub use self::svg::MozContextProperties; pub use self::svg::MozContextProperties;
@ -633,9 +633,6 @@ impl ClipRectOrAuto {
} }
} }
/// <color> | auto
pub type ColorOrAuto = Either<Color, Auto>;
/// The computed value of a CSS `url()`, resolved relative to the stylesheet URL. /// The computed value of a CSS `url()`, resolved relative to the stylesheet URL.
#[cfg(feature = "servo")] #[cfg(feature = "servo")]
#[derive(Clone, Debug, Deserialize, MallocSizeOf, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, MallocSizeOf, PartialEq, Serialize)]

View file

@ -15,6 +15,10 @@ use std::fmt::{self, Write};
use style_traits::{CssWriter, ToCss}; use style_traits::{CssWriter, ToCss};
use style_traits::ParseError; use style_traits::ParseError;
use style_traits::cursor::CursorKind; use style_traits::cursor::CursorKind;
use values::computed::color::Color;
use values::generics::pointing::CaretColor as GenericCaretColor;
#[cfg(feature = "gecko")]
use values::specified::url::SpecifiedUrl;
/// The computed value for the `cursor` property. /// The computed value for the `cursor` property.
/// ///
@ -22,8 +26,6 @@ use style_traits::cursor::CursorKind;
pub use values::specified::pointing::Cursor; pub use values::specified::pointing::Cursor;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
pub use values::specified::pointing::CursorImage; pub use values::specified::pointing::CursorImage;
#[cfg(feature = "gecko")]
use values::specified::url::SpecifiedUrl;
impl Cursor { impl Cursor {
/// Set `cursor` to `auto` /// Set `cursor` to `auto`
@ -138,3 +140,6 @@ impl ToCss for CursorImage {
Ok(()) Ok(())
} }
} }
/// A computed value for the `caret-color` property.
pub type CaretColor = GenericCaretColor<Color>;

View file

@ -25,6 +25,7 @@ pub mod font;
pub mod gecko; pub mod gecko;
pub mod grid; pub mod grid;
pub mod image; pub mod image;
pub mod pointing;
pub mod position; pub mod position;
pub mod rect; pub mod rect;
pub mod size; pub mod size;

View file

@ -0,0 +1,15 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! Generic values for pointing properties.
/// A generic value for the `caret-color` property.
#[derive(Animate, Clone, ComputeSquaredDistance, Copy, Debug, MallocSizeOf)]
#[derive(PartialEq, ToAnimatedValue, ToAnimatedZero, ToComputedValue, ToCss)]
pub enum CaretColor<Color> {
/// An explicit color.
Color(Color),
/// The keyword `auto`.
Auto,
}

View file

@ -63,11 +63,11 @@ pub use self::list::ListStyleType;
pub use self::outline::OutlineStyle; pub use self::outline::OutlineStyle;
pub use self::rect::LengthOrNumberRect; pub use self::rect::LengthOrNumberRect;
pub use self::percentage::Percentage; pub use self::percentage::Percentage;
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position}; pub use self::pointing::{CaretColor, Cursor};
pub use self::position::{PositionComponent, ZIndex};
pub use self::pointing::Cursor;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
pub use self::pointing::CursorImage; pub use self::pointing::CursorImage;
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position};
pub use self::position::{PositionComponent, ZIndex};
pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind}; pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind};
pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth}; pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth};
pub use self::svg::MozContextProperties; pub use self::svg::MozContextProperties;
@ -693,9 +693,6 @@ impl ClipRectOrAuto {
} }
} }
/// <color> | auto
pub type ColorOrAuto = Either<Color, Auto>;
/// Whether quirks are allowed in this context. /// Whether quirks are allowed in this context.
#[derive(Clone, Copy, PartialEq)] #[derive(Clone, Copy, PartialEq)]
pub enum AllowQuirks { pub enum AllowQuirks {

View file

@ -6,7 +6,12 @@
//! //!
//! https://drafts.csswg.org/css-ui/#pointing-keyboard //! https://drafts.csswg.org/css-ui/#pointing-keyboard
use cssparser::Parser;
use parser::{Parse, ParserContext};
use style_traits::ParseError;
use style_traits::cursor::CursorKind; use style_traits::cursor::CursorKind;
use values::generics::pointing::CaretColor as GenericCaretColor;
use values::specified::color::Color;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
use values::specified::url::SpecifiedUrl; use values::specified::url::SpecifiedUrl;
@ -38,3 +43,18 @@ pub struct CursorImage {
/// The <x> and <y> coordinates. /// The <x> and <y> coordinates.
pub hotspot: Option<(f32, f32)>, pub hotspot: Option<(f32, f32)>,
} }
/// A specified value for the `caret-color` property.
pub type CaretColor = GenericCaretColor<Color>;
impl Parse for CaretColor {
fn parse<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
if input.try(|i| i.expect_ident_matching("auto")).is_ok() {
return Ok(GenericCaretColor::Auto);
}
Ok(GenericCaretColor::Color(Color::parse(context, input)?))
}
}