- From: Bjoern Hoehrmann <derhoermi@gmx.net>
- Date: Tue, 03 Jan 2006 19:44:52 +0100
- To: Jeff Schiller <codedread@gmail.com>
- Cc: www-svg@w3.org
* Jeff Schiller wrote:
><svg ...>
><g xml:id="button" fill="rgb(200,0,0)">
> <rect xml:id="shadow" x="7" y="7" width="5" height="5" fill="grey" />
> <rect xml:id="buttonSurface" fill="inherit" x="5" y="5" width="5" height="5"/>
></g>
></svg>
>
>With uDOM:
>
>function highlightButton(bHighlight) {
> var nHighlight = (bHighlight ? : 20 : -20);
> var ele = document.getElementById("buttonSurface");
> var color = ele.getRGBColorTraitNS(null, "fill");
> color.red += nHighlight;
> color.green += nHighlight;
> color.blue += nHighlight;
> ele.setRGBColorTraitNS(null, "fill", color);
>}
This is not allowed, the red, green and blue members are readonly and
there is no get/setRGBColorTraitNS method, you would rather
var color = ele.getRGBColorTrait("fill");
ele.setRGBColorTrait("fill", document.documentElement.createSVGRGBColor(color.red + nHighlight, color.green + nHighlight, color.blue + nHighlight))
There are other problems like there is no gurantee that your current
fill can be converted to an SVGRGBColor which the script should check
for if it's a general purpose script. Also note that animations might
be applied to the fill property, and the changes you make here would
be reflected in the result of the animation.
>With existing DOM:
Here you should use
document.documentElement.getComputedStyle(ele,
'').getPropertyCSSValue('fill')
which would return a RGBColor which is similar to the SVGRGBColor,
but you'd probably have to do the stringification of the result
yourself and use setAttributeNS to update the tree.
--
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/
Received on Tuesday, 3 January 2006 18:44:34 UTC