- From: Tavmjong Bah <tavmjong@free.fr>
- Date: Tue, 07 Dec 2010 11:34:40 +0100
- To: Dr.O.Hoffmann@gmx.de
- Cc: www-svg@w3.org
Hello Olaf,
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
==================================================
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, 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
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
==============================
Original email:
Hello www-svg,
within the definition of the attribute type for the elements feFunc*
http://www.w3.org/TR/SVG11/filters.html#feComponentTransferTypeAttribute
there seem to be some variables in the formulas undefined.
Is my interpretation correct, that C and C' correspond to the relative
channel value the subelement represents?
Between 0 and 1? Colors have to be transformed to this range?
C before, C' after transformation?
For example for feFuncR this means the relative value of the red
channel?
And what exactly is N?
My assumption is, that it is N = n. Is this correct?
At least the formulas for table and discrete look useful for
C from the interval [0;1)
For C = 1 the formulas have the problem,
that the v(n+1) for table does not exist and v(n) not for discrete.
k is one too large, there is a need to provide another formula for C=1
- something like: use formulas for [0;1) and v(n) for C=1 for table and
v(n-1) for C=1 for discrete.
For the table type this is only a formal problem, because (C-k/N) = 0
anyway, whatever v(n+1) might be; the result is C' = v(n).
Nevertheless the formula should not contain the undefined v(n+1).
For the discrete type C'=v(n) for C=1 resulting in k=N is a problem,
because the v(i) are defined in such a way, that the last value is
v(n-1).
Best wishes
Olaf
Received on Tuesday, 7 December 2010 10:35:21 UTC