Skip some parts of image-layer shorthands when they are initial

To make it closer to Gecko's serialization algorithm.
This commit is contained in:
Xidorn Quan 2017-03-15 16:26:51 +11:00
parent de421216ad
commit bd0109f8b9
2 changed files with 22 additions and 35 deletions

View file

@ -158,31 +158,25 @@
try!(write!(dest, " "));
}
% for name in "image repeat attachment position_x position_y".split():
try!(${name}.to_css(dest));
try!(image.to_css(dest));
% for name in "repeat attachment position_x position_y".split():
try!(write!(dest, " "));
try!(${name}.to_css(dest));
% endfor
try!(write!(dest, "/ "));
try!(size.to_css(dest));
try!(write!(dest, " "));
if *size != background_size::single_value::get_initial_specified_value() {
try!(write!(dest, " / "));
try!(size.to_css(dest));
}
match (origin, clip) {
(&Origin::padding_box, &Clip::padding_box) => {
try!(origin.to_css(dest));
},
(&Origin::border_box, &Clip::border_box) => {
try!(origin.to_css(dest));
},
(&Origin::content_box, &Clip::content_box) => {
try!(origin.to_css(dest));
},
_ => {
try!(origin.to_css(dest));
if *origin != Origin::padding_box || *clip != Clip::border_box {
try!(write!(dest, " "));
try!(origin.to_css(dest));
if *clip != From::from(*origin) {
try!(write!(dest, " "));
try!(clip.to_css(dest));
}
};
}
}
Ok(())

View file

@ -151,26 +151,19 @@
position_x.to_css(dest)?;
dest.write_str(" ")?;
position_y.to_css(dest)?;
dest.write_str(" / ")?;
size.to_css(dest)?;
if *size != mask_size::single_value::get_initial_specified_value() {
dest.write_str(" / ")?;
size.to_css(dest)?;
}
dest.write_str(" ")?;
repeat.to_css(dest)?;
dest.write_str(" ")?;
match (origin, clip) {
(&Origin::padding_box, &Clip::padding_box) => {
try!(origin.to_css(dest));
},
(&Origin::border_box, &Clip::border_box) => {
try!(origin.to_css(dest));
},
(&Origin::content_box, &Clip::content_box) => {
try!(origin.to_css(dest));
},
_ => {
try!(origin.to_css(dest));
try!(write!(dest, " "));
try!(clip.to_css(dest));
if *origin != Origin::border_box || *clip != Clip::border_box {
dest.write_str(" ")?;
origin.to_css(dest)?;
if *clip != From::from(*origin) {
dest.write_str(" ")?;
clip.to_css(dest)?;
}
}