///|
#callsite(autofill(location))
pub fn Rule::mask_layers(
self : Rule,
layers : @values.MaskLayers,
when~ : When = always,
source~ : @ir.SourceSpan? = None,
location~ : SourceLoc,
) -> Rule {
let source = resolve_source_span(source, location, "maskLayers")
let mut next = self
for (property, expression) in layers.longhands() {
next = next.append_input(
property,
expression_input(expression),
when,
source,
"",
true,
)
}
next
}
///|
#callsite(autofill(location))
pub fn Frame::mask_layers(
self : Frame,
layers : @values.MaskLayers,
when~ : When = always,
source~ : @ir.SourceSpan? = None,
location~ : SourceLoc,
) -> Frame {
let source = resolve_source_span(source, location, "maskLayers")
self.with_rule(self.rule.mask_layers(layers, when~, source~))
}
///|
pub fn StyleContract::allow_mask_layers(
self : StyleContract,
layers : Array[@values.MaskLayers],
) -> StyleContract {
let mut next = self
for
property in [
"maskImage", "maskPosition", "maskSize", "maskRepeat", "maskOrigin", "maskClip",
"maskMode", "maskComposite",
] {
next = next.allow_property(
property,
expressions=layers.map(value => {
value.longhands().filter(pair => pair.0 == property)[0].1.identity()
}),
)
}
next
}