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

Re: Proposed wording for 'how object transforms affect gradient rendering output'

From: Anthony Grasso <anthony.grasso@cisra.canon.com.au>
Date: Tue, 09 Feb 2010 17:15:46 +1100
Message-ID: <4B70FD92.7090105@cisra.canon.com.au>
To: www-svg@w3.org
CC: cyril.concolato@telecom-paristech.fr
Hi SVG WG,

Firstly, thank you to Cyril for the valuable feedback provided. Please see my 
comments below.

Cyril Concolato wrote:
> Hi Anthony,
> 
> Here are some comments.
> 
> In your wording you use the term 'initially'. I think I understand what 
> it means but I would prefer if you would say something like: "before any 
> transformation is applied to the gradient".
> 

Agreed. The suggested wording has been used in the new draft of the proposed 
wording (end of email).

> You also mention the magnitude of the normal. I don't understand what it 
> means and how it is used. To me, it is sufficient to say that the normal 
> is perpendicular, we don't even need to say the direction +90° or -90°. 
> It does not matter.
> 

True. The part about the magnitude of the normal has been removed.

> Concerning the order between object transforms and gradient transforms, 
> are you sure about it? I thought it was first apply gradient transforms 
> because they apply to all reference of the gradients, then object 
> transforms. If you look at SVG 1.1 [1], you'll find:
> "[The gradientTransform] transformation matrix is post-multiplied to 
> (i.e., inserted to the right of) any previously defined transformations, 
> including the implicit transformation necessary to convert from object 
> bounding box units to user space."
> 

Right again. The wording has been adjusted accordingly to match what it is 
currently written in the standard.

> Concerning the position of the text. I think the first two sentences 
> "The angle ... vector." only apply to linear gradients because of the 
> notion of gradient vector. For the rest of the paragraph, it's fine to 
> put it in the introduction.
> 

A gradient normal is useful when calculating skews on radial gradients as it 
provides the tangent at each colour point on the gradient. Please see the 
attached diagrams.

The revised wording of the first paragraph in the proposed text now reads:

[[
The angle of the color transitions along the gradient vector is defined by the 
gradient normal. Before any transforms are applied to the gradient or its 
referencing objects, the gradient normal is perpendicular with the gradient 
vector. If an object references a gradient, conceptually the object should take 
a copy of the gradient vector and gradient normal and treat it as part of its 
own geometry. Any transformations applied to the object geometry also apply to 
the copied gradient vector and gradient normal. Any gradient transforms that are 
specified on the reference gradient are applied before any object 
transformations are applied to the gradient.
]]


Please advise before the next telcon if there is any more wording that needs to 
be adjusted or if  any other changes need to be made.

Erik, can we add this issue to the next telcon agenda please.


Thanks,

Anthony

> Regards,
> 
> Cyril
> 
> [1] 
> http://www.w3.org/TR/SVG11/pservers.html#LinearGradientTransformAttribute
> 
> Le 04/02/2010 05:58, Anthony Grasso a écrit :
>> Hi SVG WG,
>>
>> In relation to the discussion on "gradient userSpaceOnUse" [1] and the
>> investigation I did on "how authoring tools apply object transforms to
>> gradients" [2], I have devised some wording to put in (possibly) current
>> and future SVG specifications.
>>
>> I propose adding the following wording and diagrams for the different
>> parts in the gradient section:
>>
>> Wording to be placed after the first paragraph of the introduction for
>> gradients [3] (in SVG Tiny 1.2)
>>
>> [[
>> The angle of the color transitions along the gradient vector is defined
>> by the gradient normal (see diagram below). Initially, the gradient
>> normal is perpendicular with the gradient vector and is the same
>> magnitude as the gradient vector. If an object references a gradient,
>> conceptually the object should take a copy of the gradient vector and
>> gradient normal and treat it as part of its own geometry. Any
>> transformations applied to the object geometry also apply to the copied
>> gradient vector and gradient normal. Any gradient transforms that are
>> specified on the reference gradient are applied after object
>> transformations have been applied but prior to rendering.
>> ]]
>>
>>
>> The wording in the last sentence of the second last paragraph for
>> gradientUnits attribute [4] should be reworded to:
>>
>> [[
>> When the object's bounding box is not square, the gradient normal which
>> is initially perpendicular to the gradient vector within object bounding
>> box space shall render non-perpendicular relative to the gradient vector
>> in user space. This transformation is due to application of the
>> non-uniform scaling transformation from bounding box space to user space.
>> ]]
>>
>>
>>
>> Note that this wording is a first draft and open to discussion. To my
>> understand of the issue, there are some implementations that have an
>> alternative method of applying transforms and thus producing a different
>> result. I can sympathise that this wording is potentially contentious,
>> but given that gradients are an integral part of any graphics language,
>> a consensus must be reached on this issue so all implementations will
>> produce the same result.
>>
>> Cheers,
>>
>> Anthony
>>
>>
>> [1] http://lists.w3.org/Archives/Public/www-svg/2010Jan/0000.html
>> [2] 
>> http://lists.w3.org/Archives/Public/public-svg-wg/2010JanMar/0035.html
>> [3] http://www.w3.org/TR/SVGTiny12/painting.html#Gradients
>> [4]
>> http://www.w3.org/TR/SVGTiny12/painting.html#LinearGradientUnitsAttribute
> 
> 
Received on Tuesday, 9 February 2010 06:16:25 GMT

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