From a previous post I found I have a function to get the colour of an element as follows:

   public static Color getColor(Element element, String attribute) {
        Color returnColor = null;
        final Document document = element.getOwnerDocument();
        if ( document != null ) {
//System.out.println("doc.getDocumentElement: "+document.getDocumentElement().getClass().toString()); final ViewCSS viewCSS = (ViewCSS) document.getDocumentElement();
            if ( viewCSS != null ) {
                final CSSStyleDeclaration computedStyle =
                        viewCSS.getComputedStyle(element, null);
                if ( computedStyle != null ) {
System.out.println("CSS Text: "+computedStyle.getCssText());
                    final SVGPaint svgPaint =
(SVGPaint) computedStyle.getPropertyCSSValue(attribute);
                    if ( svgPaint != null ) {
if (svgPaint.getPaintType() == SVGPaint.SVG_PAINTTYPE_RGBCOLOR) {
                            final RGBColor rgb = svgPaint.getRGBColor();
final float red = rgb.getRed().getFloatValue(CSSValue.CSS_PRIMITIVE_VALUE); final float green = rgb.getGreen().getFloatValue(CSSValue.CSS_PRIMITIVE_VALUE); final float blue = rgb.getBlue().getFloatValue(CSSValue.CSS_PRIMITIVE_VALUE); returnColor = new Color(red / 255, green / 255, blue / 255);
                        }
                    }
                }
            }
        }
        return returnColor;
    }

I have a simple SVG which creates a coloured rectangle:

<?xml version="1.0" encoding="UTF-8"?><svg xmlns:xlink="http://www.w3.org/1999/xlink"; xmlns="http://www.w3.org/2000/svg"; contentScriptType="text/ecmascript" width="1000" zoomAndPan="magnify" contentStyleType="text/css" height="500" preserveAspectRatio="xMidYMid meet" version="1.0"><rect fill="#ff0000" x="100" width="100" y="100" height="50"/></svg>

Unfortunately I cannot get the colour of the rectangle back to a java.awt.Color object, as I get the following exception:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.batik.css.dom.CSSOMComputedStyle.getCssText(Unknown Source)
        at ataglancedemo.SVGUtils.getColor(SVGUtils.java:56)
        at ataglancedemo.GlanceRect.getBackground(GlanceRect.java:93)
        at ataglancedemo.MainFrame.test4(MainFrame.java:84)
        at ataglancedemo.MainFrame.<init>(MainFrame.java:213)
        at ataglancedemo.Main$1.run(Main.java:29)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Can anyone tell me how to get the background color in all circumstances, i.e. when it is just an attribute or if as a CSS?

Many thanks

Tom

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to