# Re: Fwd: Question on gradient userSpaceOnUse

Date: Thu, 7 Jan 2010 08:00:31 -0600
Message-ID: <da131fde1001070600k100a11a7ib83f194558f2d2fc@mail.gmail.com>

Cc: www-svg <www-svg@w3.org>
```Thanks Anthony, I understand what you are saying with respect to the

It would be really great if the decision on which one is right could be made
sooner rather than later with an official test too.

Unfortunately I came across this issue in trying to implement
non-scaling-stroke in webkit (you're next mozilla!) And trying to compare
results with Opera.  I guess I'll just have to make sure webkit's
comparing to another UA.

Jeff

On Jan 7, 2010 6:19 AM, "Anthony Grasso" <anthony.grasso@cisra.canon.com.au>
wrote:

Hi Jeff,

I spent some time a while back tackling this problem. See comments below.

Jeff Schiller wrote: > > Hi www-svg, > > This is an email I forwarded to
Erik Dahlstrom to questio...
I think the wording below [1] is very ambiguous.

[[
If gradientUnits="userSpaceOnUse", 'x1', 'y1', 'x2', 'y2' shall represent
values in the coordinate system that results from taking the current user
coordinate system in place at the time when the gradient element is
referenced"
]]

The diagrams that Ken and Cyril presented illustrate one vital detail
required for rendering linear gradients which is not present in any of the
SVG specifications. A gradient direction is defined by the vector, but there
is a second component which defines the direction of the stripes on a linear
gradient - the Gradient Normal. Ken's and Cyril's diagrams both show the

The problem is at what point in time the gradient normal is transformed.
>From a technical perspective the two different results are correct (see
both_sides_of_the_coin.png).

Implementation 'A' defines a Gradient Vector and a Gradient Normal prior to
being transformed (A.1). When the transformation is applied both vector and
normal are transformed (A.2).

Implementation 'B' defines a Gradient Vector only prior to being transformed
(B.1). When the transform is applied the vector is transformed (B.2). The
normal is then defined on the gradient (B.3) prior to any gradientTransform
attributes being applied.

element is reference and additionally does not define how a gradient normal
works with a gradient vector both implementations are technically correct.
The question then remains which looks better (see real_world_01.png and
real_world_02.png).

This is something that will must be made clear for SVG 2.0, hence an issue
should be raised.

Cheers,

Anthony

[1]
```
Received on Thursday, 7 January 2010 14:01:04 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:54:25 UTC