[css-masking] Layered Mask Images

https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html#the-mask-image

Issue 1

  #  ‘<url>’
  #    A URL reference to a ‘mask’ element (for example ‘url(commonmasks.svg#mask)’)
  #    or an <image>.

Did you mean to include "A URL reference to an <image>" in this
definition? If not, delete "or an <image>"; <url> is included in
the definition of <image>.

Issue 2

  # ‘child’
  #    A keyword to indicate that the last direct sibling ‘mask’
  #    element of the element the ‘mask-image’ property is applied
  #    should be used as the mask source. It is equivalent to
  #    ‘select(mask:last-of-type)’.

Probably meant s/direct sibling/direct child/.

A question: is that mask element namespaced to SVG, or will it
select any <mask> element?

Issue 3

  # ‘<compound-selector>’
  #    A compound selector as defined in [SELECTORS4].

This should not be in the <dl>; it implies that this construct
is a valid value for 'mask'. Just put it as normative text
somewhere, e.g. right after the syntax expansion

   |  <child-selector> = select(<compound-selector>#)
   |
   |  where <compound-selector> is a <i>compound selector</i> a
   |  defined in [SELECTORS4]

or inside the definition of <child-selector>.

Issue 4

   # An invalid or non-existent mask source is ignored and no masking
   # is applied.

I'd assume by this you don't mean an invalid value for the 'mask-image'
property (which should make the declaration invalid instead), but
rather a mask that failed to be retrieved/decoded. But you already
cover that in the next paragraph. So what did you mean here?

Issue 5

   # ‘<child-selector>’
   #    A comma-separated list of compound selectors scoped at the
   #    element to which the ‘mask-image’ property is applied. The
   #    first matching element in tree order (as defined in [DOM])
   #    as a result of evaluating the list of selectors is taken as
   #    the mask source. If there are no matching elements the mask
   #    source is invalid.

Since 'child' is equivalent to 'select(mask:last-of-type)' and both
are defined to only select among the element's children, I think
this definition is incorrect. Unless you want to select among all
descendants (in which case, the 'child' definition needs to be
updated accordingly), I think you want

   | A functional notation [CSS3-VALUES] accepting a comma-separated
   | list of compound selectors that represents first matching child
   | element in tree order (as defined in [DOM]).

Issue 6

What happens if the identified element is not a <mask> element, but,
say, an <li>?

Issue 7

Lastly, I think select() should be renamed to child(), if it is scoped
to only match against the children. Most other syntax that takes a
scoped selector scopes it to the entire subtree; since this does not
do that, it should be clear from its name. Using child() makes it
consistent with the 'child' keyword, which behaves the same, other
than implying a particular selector as a "default argument".

~fantasai

Received on Wednesday, 3 April 2013 01:54:23 UTC