Are filter primitive subregions clamped to the filter effects region?

Consider this example:

<svg xmlns="http://www.w3.org/2000/svg">
   <filter id="f1" x="0" y="0" width="20" height="10"
filterUnits="userSpaceOnUse">
     <feFlood flood-color="green" x="-10" y="0" width="20" height="10"/>
     <feTile x="0" y="0" width="20" height="10"/>
   </filter>
   <rect x="0" y="0" width="20" height="10" filter="url(#f1)"/>
</svg>

I see two possible renderings:

1) the filter primitive subregion for the feFlood is the rectangle
(-10,0)-(10,10). The output is a green rectangle at (0,0)-(10,10). (The
rectangle (10,0)-(10,10) is filled with the left half of the feFlood filter
primitive subregion, which is presumably transparent since it's outside the
filter region.)
2) the filter primitive subregion for the feFlood is clamped to the filter
effects region, i.e. (0,0)-(10,10). The output is a green rectangle at
(0,0)-(20,10) since we get two full copies of the tile.

IMHO the spec is much too vague on the exact definition of the filter
primitive subregion:
http://www.w3.org/TR/SVG/filters.html#FilterPrimitiveSubRegion

All intermediate offscreens are defined to not exceed the intersection of *x
> *, *y*, *width* and *height* with the filter region<http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion>.
> The filter region and any of the *x*, *y*, *width* and *height* subregions
> are to be set up such that all offscreens are made big enough to accommodate
> any pixels which even partly intersect with either the filter region or the
> x,y,width,height subregions.
>

I interpret this discussion of "intermediate offscreens" as an
implementation note that does not affect the actual definition of the
"filter primitive subregion", in which case rendering #1 would be correct.
But if this is supposed to affect the filter primitive subregion rectangle
that feTile uses, then rendering #2 would be correct. Please write a clear
definition of "filter primitive subregion" into the spec. I also suggest
removing all language about "intermediate offscreens" or else making it into
a clearly identified "implementation note".

Rob
-- 
"He was pierced for our transgressions, he was crushed for our iniquities;
the punishment that brought us peace was upon him, and by his wounds we are
healed. We all, like sheep, have gone astray, each of us has turned to his
own way; and the LORD has laid on him the iniquity of us all." [Isaiah
53:5-6]

Received on Monday, 19 October 2009 21:17:30 UTC