W3C home > Mailing lists > Public > www-svg@w3.org > December 2010

Re: type of feFunc*

From: Dr. Olaf Hoffmann <Dr.O.Hoffmann@gmx.de>
Date: Tue, 7 Dec 2010 12:55:49 +0100
To: www-svg@w3.org
Message-Id: <201012071255.50485.Dr.O.Hoffmann@gmx.de>
Tavmjong Bah:
> Hello Olaf,

Hello,
>
> 	I have been tasked with responding to your email of 13 Jun 2010
> concerning the definition of the attribute type for the elements feFunc*
> defined in:
>
> http://www.w3.org/TR/SVG11/filters.html#feComponentTransferTypeAttribute
>
>
> (ISSUE-2338: http://www.w3.org/Graphics/SVG/WG/track/issues/2338 ).
>
> 	My proposed rewording of this section follows. Please let me know if
> this rewording is satisfactory (your original email is at the bottom).
>
> 					Thanks,
>
> 					Tav
>

To resume, the changes are basically:
a) use consequently n instead of undefined N - this is obviously ok
b) add something useful for the case C = 1 - this looks ok as well
Comments on two minor issues see below inline.


The remaing question/problem indeed applies to several filter definitions.
I think, it is not mentioned at all that one has to transform
colours like '#abcdef' to three values, all from the interval [0, 1].
Missing this (because other chapters of SVG use other notations than
channels for colours), the formulas in this chapter are a little bit confusing
and it takes some time to guess, how to apply them.
But to explain this or vocabulary like 'transparent black' is
more an issue for the introduction, not for a specific filter section.

So - ok for this section.
If someone could have a critical look on undefined vocabulary
like the relation of colour values to colour channels and something
like 'transparent black' could improve the understandability of the
filter chapter even more ;o) 
Does really no implementor have problems with this, or is it possible
that some missing vocabulary could have been the source of some
implementation bugs in the past? ;o)

> ==================================================
>
> type = "identity | table | discrete | linear | gamma"
>
> Indicates the type of component transfer function. The type of
> function determines the applicability of the other attributes.
>
> In the following, C is the initial component

of what? 
For example for feFuncA it represents value of the alpha channel?
For feFuncR it represents the red colour channel value...

> , C' is the remapped  
> component; both in the closed interval [0, 1].
>
> * For identity:
>
>     C' = C
>
> * For table, the function is defined by linear interpolation between
>   values given in the attribute ‘tableValues’.  The table has n+1
>   values (i.e., v_0 to v_n) specifying the start and end values for
>   n evenly sized interpolation regions. Interpolations use the
>   following formula:
>
>     For a value C < 1 find k such that:
>
>       k/n <= C < (k+1)/n
>
>       The result C' is given by:
>
>       C' = v_k + (C - k/n)*n * (v_k+1 - v_k)
>
>     If C = 1 then C' = v_n.
>
> * For discrete, the function is defined by the step function defined
>   by attribute ‘tableValues’, which provides a list of n values (i.e.,
>   v0 to v_n-1) in order to identify a step function consisting of n
>   steps of the same width. The step function is defined by the
>   following formula:
>
>     For a value C < 1 find k such that:
>
>       k/n <= C < (k+1)/n
>
>       The result C' is given by:
>
>       C' = vk

should be
C' = v_k
in your notation?

>
>     If C = 1 then C' = v_n-1.
>
> * For linear, the function is defined by the following linear equation:
>
>     C' = slope * C + intercept
>
> * For gamma, the function is defined by the following exponential
> function:
>
>     C' = amplitude * pow(C, exponent) + offset
>
>

Best wishes

Olaf
Received on Tuesday, 7 December 2010 11:56:28 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:47 GMT