[filter-effects] 'in2' on feBlend and feComposite

Hi,

Tav wrote the following request:

On Nov 13, 2013, at 10:13 PM, Tavmjong Bah <tavmjong@free.fr> wrote:

>> On Nov 12, 2013, at 4:51 AM, Tavmjong Bah <tavmjong@free.fr> wrote:
>> 
>>> 
>>> Since there seems to be a lot of discussion planned at the TPAC F2F for
>>> filter effects, I want to add a few issues to the list:
>>> 
>>> 
>>> 1. 'in2'
>>> 
>>> For 'feBlend' and 'feComposite' the spec says:
>>> 
>>> in2 = "(see ‘in’ attribute)"
>>>   The second input image to the compositing operation. This
>>>   attribute can take on the same values as the ‘in’ attribute.
>>> 
>>> I interpret this that 'in2' behaves like 'in', thus if 'in2'
>>> is not given and this is the first primitive, 'SourceGraphic'
>>> is used, if not given and this is not first primitive,
>>> the result of the previous filter is used.
>>> 
>>> Inkscape, rsvg, and Opera (12.16) agree with this
>>> interpretation. Batik as well as 'validator.w3.org'
>>> says 'in2' is required.  Firefox and Chrome require
>>> 'in2' to be defined.
>>> 
>>> For an example, see:
>>> 
>>> http://tavmjong.free.fr//INKSCAPE/MANUAL/images/FILTERS/Filters_SolarFlare.svg
>> 
>> I think this is a misinterpretation. This sentence really just says that in and in2 can have the same input. It does not say anything like “if in2 is not specified, then take the input of in”. To make this clear, it should maybe transformed into a note and be rephrased.
>> 
> 
> I don't have a strong feeling either way, although since 'in' and 'in2'
> can have the same input, it would be reasonable that 'in2' follow the
> same rule as 'in’.

I created a simplified test case and it looks like whatever is not working on Tavs example has nothing to do with the interpretation of ‘in2’.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
	<filter id="filter">
		<feFlood flood-color="rgb(255, 0, 0)" result="in1"/>
		<feFlood flood-color="rgb(0, 255, 0)" result="in2"/>
		<feBlend mode="multiply" in="in1"/>
	</filter>
</defs>
<rect width="200" height="200" filter="url(#filter)"/>
</svg>

http://jsfiddle.net/2jwv5/ (for testing)

In this example feBlend has the first input “in1” which is blended with the second input. However, the attribute ‘in2’ is not specified. If ‘in2’ would take the same input as ‘in’, you should see a red square. Instead you see a black square in Blink, WebKit, Opera (Presto) and IE. ‘in2’ actually behaves exactly like ‘in’ and references the previous filter primitive in the filter chain.

I suggest that we resolve to have the same behavior of ‘in2’ as for ‘in’.

Greetings,
Dirk

Received on Friday, 6 December 2013 13:42:10 UTC