Source code

Revision control

Copy as Markdown

Other Tools

/* 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 https://mozilla.org/MPL/2.0/. */
<%namespace name="helpers" file="/helpers.mako.rs" />
<% from data import ALL_CORNERS, ALL_SIDES, maybe_moz_logical_alias %>
<%
def maybe_logical_spec(side, kind):
if side[1]: # if it is logical
else:
%>
% for side in ALL_SIDES:
<%
side_name = side[0]
is_logical = side[1]
%>
${helpers.predefined_type(
"border-%s-color" % side_name, "Color",
"computed_value::T::currentcolor()",
engines="gecko servo",
aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-color"),
spec=maybe_logical_spec(side, "color"),
animation_value_type="AnimatedColor",
logical=is_logical,
logical_group="border-color",
allow_quirks="No" if is_logical else "Yes",
ignored_when_colors_disabled=True,
affects="paint",
)}
${helpers.predefined_type(
"border-%s-style" % side_name, "BorderStyle",
"specified::BorderStyle::None",
engines="gecko servo",
aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-style"),
spec=maybe_logical_spec(side, "style"),
animation_value_type="discrete" if not is_logical else "none",
logical=is_logical,
logical_group="border-style",
affects="layout",
)}
${helpers.predefined_type(
"border-%s-width" % side_name,
"BorderSideWidth",
"app_units::Au::from_px(3)",
engines="gecko servo",
aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-width"),
spec=maybe_logical_spec(side, "width"),
animation_value_type="NonNegativeLength",
logical=is_logical,
logical_group="border-width",
allow_quirks="No" if is_logical else "Yes",
servo_restyle_damage="reflow rebuild_and_reflow_inline",
affects="layout",
)}
% endfor
% for corner in ALL_CORNERS:
<%
corner_name = corner[0]
is_logical = corner[1]
if is_logical:
prefixes = None
else:
prefixes = "webkit"
%>
${helpers.predefined_type(
"border-%s-radius" % corner_name,
"BorderCornerRadius",
"computed::BorderCornerRadius::zero()",
"parse",
engines="gecko servo",
extra_prefixes=prefixes,
spec=maybe_logical_spec(corner, "radius"),
boxed=True,
animation_value_type="BorderCornerRadius",
logical_group="border-radius",
logical=is_logical,
affects="paint",
)}
% endfor
${helpers.single_keyword(
"box-decoration-break",
"slice clone",
engines="gecko",
gecko_enum_prefix="StyleBoxDecorationBreak",
animation_value_type="discrete",
affects="layout",
)}
${helpers.single_keyword(
"-moz-float-edge",
"content-box margin-box",
engines="gecko",
gecko_ffi_name="mFloatEdge",
gecko_enum_prefix="StyleFloatEdge",
animation_value_type="discrete",
affects="layout",
)}
${helpers.predefined_type(
"border-image-source",
"Image",
engines="gecko servo",
initial_value="computed::Image::None",
initial_specified_value="specified::Image::None",
vector=False,
animation_value_type="discrete",
boxed=engine == "servo",
ignored_when_colors_disabled=True,
affects="paint",
)}
${helpers.predefined_type(
"border-image-outset",
"NonNegativeLengthOrNumberRect",
engines="gecko servo",
initial_value="generics::rect::Rect::all(computed::NonNegativeLengthOrNumber::zero())",
initial_specified_value="generics::rect::Rect::all(specified::NonNegativeLengthOrNumber::zero())",
animation_value_type="NonNegativeLengthOrNumberRect",
boxed=True,
affects="paint",
)}
${helpers.predefined_type(
"border-image-repeat",
"BorderImageRepeat",
"computed::BorderImageRepeat::stretch()",
engines="gecko servo",
initial_specified_value="specified::BorderImageRepeat::stretch()",
animation_value_type="discrete",
affects="paint",
)}
${helpers.predefined_type(
"border-image-width",
"BorderImageWidth",
engines="gecko servo",
initial_value="computed::BorderImageWidth::all(computed::BorderImageSideWidth::one())",
initial_specified_value="specified::BorderImageWidth::all(specified::BorderImageSideWidth::one())",
animation_value_type="BorderImageWidth",
boxed=True,
affects="paint",
)}
${helpers.predefined_type(
"border-image-slice",
"BorderImageSlice",
engines="gecko servo",
initial_value="computed::BorderImageSlice::hundred_percent()",
initial_specified_value="specified::BorderImageSlice::hundred_percent()",
animation_value_type="BorderImageSlice",
boxed=True,
affects="paint",
)}