On 7 Feb 2011, at 15:25, Sebastian Klein wrote:
> Thomas Davie wrote:
>> On 7 Feb 2011, at 09:12, Thomas Davie wrote:
>>> The css mailing list recently had a long discussion about hex codes and
>>> names being a really ugly way of dealing with colours, and arguing that
>>> they should be dropped in favour of rgb(r,g,b) and rgba(r,g,b,a) (along
>>> with potentially other colour spaces for print for example). The
>>> conclusion was that there's a lot of legacy css out there that this would
>>> break, and a lot of html/css editors that would continue to produce broken
>>> code. Because of this, they never changed the standard. We have a far
>>> smaller problem here – our existing stylesheet base is much smaller, and
>>> hence perhaps have the chance to nip the problem in the bud now.
>>>
>>> I propose that all colour specifications be replaced with the modern
>>> specifiers.
>>>
>>> I also have a second proposal related to this. CSS typically uses the
>>> range 0 to 255 even in these specifiers. I'd like to propose that we use
>>> the cleaner 0.0 to 1.0 range. This has the advantage of not exposing an
>>> implementation detail, though I acknowledge there's a disadvantage in
>>> deviating from what css does here.
>> Appologies for following up my own mail.
>> One further advantage of this proposal is that it cleans up the use of
>> opacity: all over the place. If users want non-opaque items, they can
>> simply use an rgba colour. If the colour is specified to multiply any image
>> specified, then semi-transparent (or even colour variant) images are easily
>> supported too.
>> The use of 0.0 to 1.0 appears to be consistent with the existing semantics
>> of opacity: properties.
>
> There are certain advantages to have opacity as an extra property. If you
> like to modify an existing default style and, e.g. make all filled areas
> transparent, this could be done like this:
>
> area {
> fill-opacity: 0.2;
> }
>
>
> At that point, the areas have different colors, of course.
>
> Second, opacity is still needed for fill-image and icon-image, so for
> consistency it would be nice to have it for strokes and color-fills as well.
This all seems to be rather a cludge around a simple dilema – sometimes you
want to multiply colours, sometimes you want to replace colours.
Your opacity replacement there is really a case of "multiply the opacity of the
colour by 0.2", and can be generalised to "multiply the colour by rgba(1.0,
1.0, 1.0, 0.2)"
Similarly, fill-image and icon-image are again really a case of multiplying the
colour of each pixel, and this is a great example of where multiplying by a
whole colour would be useful – if I have a white icon, and want to represent
different types of the same thing with different coloured icons, it would be
very useful to be able to specify a colour-multiply of rgba(1.0, 0.0, 0.0, 1.0)
to get a red one in one place; rgba(0.0, 1.0, 0.0, 1.0) to get a green one, and
rgba(1.0, 1.0, 1.0, 0.2) to get a semi-transparent one elsewhere.
Is what's really needed a colour-multiply: property instead of opacity (but as
well as a colour:) property?
Thanks
Tom Davie
_______________________________________________
Mapcss mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/mapcss