border.mako.rs (5696B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 4 5 <%namespace name="helpers" file="/helpers.mako.rs" /> 6 <% from data import ALL_CORNERS, ALL_SIDES, maybe_moz_logical_alias %> 7 8 <% 9 def maybe_logical_spec(side, kind): 10 if side[1]: # if it is logical 11 return "https://drafts.csswg.org/css-logical-props/#propdef-border-%s-%s" % (side[0], kind) 12 else: 13 return "https://drafts.csswg.org/css-backgrounds/#border-%s-%s" % (side[0], kind) 14 %> 15 % for index, side in enumerate(ALL_SIDES): 16 <% 17 side_name = side[0] 18 is_logical = side[1] 19 %> 20 ${helpers.predefined_type( 21 "border-%s-color" % side_name, "Color", 22 "computed_value::T::currentcolor()", 23 engines="gecko servo", 24 aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-color"), 25 spec=maybe_logical_spec(side, "color"), 26 logical=is_logical, 27 logical_group="border-color", 28 allow_quirks="No" if is_logical else "Yes", 29 ignored_when_colors_disabled=True, 30 affects="paint", 31 )} 32 33 ${helpers.predefined_type( 34 "border-%s-style" % side_name, "BorderStyle", 35 "specified::BorderStyle::None", 36 engines="gecko servo", 37 aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-style"), 38 spec=maybe_logical_spec(side, "style"), 39 animation_type="discrete" if not is_logical else "none", 40 gecko_ffi_name="mBorderStyle.{}".format(index), 41 logical=is_logical, 42 logical_group="border-style", 43 affects="layout", 44 )} 45 46 ${helpers.predefined_type( 47 "border-%s-width" % side_name, 48 "BorderSideWidth", 49 "computed::BorderSideWidth::medium()", 50 engines="gecko servo", 51 aliases=maybe_moz_logical_alias(engine, side, "-moz-border-%s-width"), 52 spec=maybe_logical_spec(side, "width"), 53 logical=is_logical, 54 logical_group="border-width", 55 allow_quirks="No" if is_logical else "Yes", 56 gecko_ffi_name="mBorder.{}".format(index), 57 servo_restyle_damage="rebuild_box", 58 affects="layout", 59 )} 60 % endfor 61 62 % for corner in ALL_CORNERS: 63 <% 64 corner_name = corner[0] 65 is_logical = corner[1] 66 if is_logical: 67 prefixes = None 68 else: 69 prefixes = "webkit" 70 %> 71 ${helpers.predefined_type( 72 "border-%s-radius" % corner_name, 73 "BorderCornerRadius", 74 "computed::BorderCornerRadius::zero()", 75 "parse", 76 engines="gecko servo", 77 extra_prefixes=prefixes, 78 spec=maybe_logical_spec(corner, "radius"), 79 gecko_ffi_name="mBorderRadius.{}".format(corner_name.replace('-', '_')), 80 boxed=True, 81 logical_group="border-radius", 82 logical=is_logical, 83 affects="paint", 84 )} 85 % endfor 86 87 ${helpers.single_keyword( 88 "box-decoration-break", 89 "slice clone", 90 engines="gecko", 91 gecko_enum_prefix="StyleBoxDecorationBreak", 92 spec="https://drafts.csswg.org/css-break/#propdef-box-decoration-break", 93 animation_type="discrete", 94 affects="layout", 95 )} 96 97 ${helpers.single_keyword( 98 "-moz-float-edge", 99 "content-box margin-box", 100 engines="gecko", 101 gecko_ffi_name="mFloatEdge", 102 gecko_enum_prefix="StyleFloatEdge", 103 spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-float-edge)", 104 animation_type="discrete", 105 affects="layout", 106 )} 107 108 ${helpers.predefined_type( 109 "border-image-source", 110 "Image", 111 engines="gecko servo", 112 initial_value="computed::Image::None", 113 initial_specified_value="specified::Image::None", 114 spec="https://drafts.csswg.org/css-backgrounds/#the-background-image", 115 vector=False, 116 animation_type="discrete", 117 ignored_when_colors_disabled=True, 118 servo_restyle_damage="repaint", 119 affects="paint", 120 )} 121 122 ${helpers.predefined_type( 123 "border-image-outset", 124 "NonNegativeLengthOrNumberRect", 125 engines="gecko servo", 126 initial_value="generics::rect::Rect::all(computed::NonNegativeLengthOrNumber::zero())", 127 initial_specified_value="generics::rect::Rect::all(specified::NonNegativeLengthOrNumber::zero())", 128 spec="https://drafts.csswg.org/css-backgrounds/#border-image-outset", 129 boxed=True, 130 servo_restyle_damage="repaint", 131 affects="paint", 132 )} 133 134 ${helpers.predefined_type( 135 "border-image-repeat", 136 "BorderImageRepeat", 137 "computed::BorderImageRepeat::stretch()", 138 engines="gecko servo", 139 initial_specified_value="specified::BorderImageRepeat::stretch()", 140 animation_type="discrete", 141 spec="https://drafts.csswg.org/css-backgrounds/#the-border-image-repeat", 142 servo_restyle_damage="repaint", 143 affects="paint", 144 )} 145 146 ${helpers.predefined_type( 147 "border-image-width", 148 "BorderImageWidth", 149 engines="gecko servo", 150 initial_value="computed::BorderImageWidth::all(computed::BorderImageSideWidth::one())", 151 initial_specified_value="specified::BorderImageWidth::all(specified::BorderImageSideWidth::one())", 152 spec="https://drafts.csswg.org/css-backgrounds/#border-image-width", 153 boxed=True, 154 servo_restyle_damage="repaint", 155 affects="paint", 156 )} 157 158 ${helpers.predefined_type( 159 "border-image-slice", 160 "BorderImageSlice", 161 engines="gecko servo", 162 initial_value="computed::BorderImageSlice::hundred_percent()", 163 initial_specified_value="specified::BorderImageSlice::hundred_percent()", 164 spec="https://drafts.csswg.org/css-backgrounds/#border-image-slice", 165 boxed=True, 166 servo_restyle_damage="repaint", 167 affects="paint", 168 )}