W3C home > Mailing lists > Public > www-style@w3.org > May 2011

[css3-images] Changing the angles in gradients

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Tue, 17 May 2011 12:57:00 -0700
Message-ID: <BANLkTik4BzGwGuVevwL6gQpctpy-OyoJFA@mail.gmail.com>
To: www-style list <www-style@w3.org>, "Robert O'Callahan" <rocallahan@gmail.com>, Simon Fraser <smfr@me.com>
I've been pretty adamant for some time that gradients should use the
math-y interpretation of angles, where 0deg is East and 90deg is
North.  In addition to matching what you learn in school about polar
coordinates, it matches what tools like Photoshop expose.  Other
members of the WG, though, have been equally adamant that we should
more closely match existing language conventions, particularly that
bigger angles mean clockwise rotation.

The strength of my conviction has eroded over time.  It really is true
that *every* other use of angles uses them to represent clockwise
rotations.  In SVG, angles are present in transforms and the
glyph-orientation properties, while in CSS they're present in
transforms, image-orientation, and the azimuth and elevation aural
properties.  In all of them (save elevation, which rotates in a
different axis), the rotation is CW.

I also know that, as an author, there have been several places where
SVG has annoyed me because it does two similar things in an
inconsistent way (unfortunately, I don't remember exactly what things
annoyed me).  I suspect these things were designed to be consistent
with other tools that SVG wanted to align with.  I, having never used
these tools, don't understand this and just see the
self-inconsistency.  I'd prefer to avoid a similar situation with CSS,
where users that don't remember their polar coordinates and never used
gradients in Photoshop look at CSS gradients and just see that the
angles are defined in a way that's inconsistent with how they're
defined elsewhere.  Plus, an argument can be made that actually
respecting polar coordinates would involve CW rotation, as the angles
should progress from the X-axis toward the Y-axis, which points
downward on the screen.

So, we have three choices:

A) Keep the angles as they are, with 0deg=East and 90deg=North
B) Switch to screen-coord polar, with 0deg=East and 90deg=South
C) Switch to bearing angles, with 0deg=North and 90deg=East

Except for 'azimuth', current properties are consistent with either B
or C, as they just use the angles for rotation, not direction.  I
slightly lean towards B now, but I'd be okay with C too.

Implementors, what do you think?  Are you okay with changing the angle
definition?  If so, do you prefer B or C?

~TJ
Received on Tuesday, 17 May 2011 19:57:47 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:40 GMT