xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom McCallum" <tom.mccal...@gulfstream-software.com>
Subject Another Color Question
Date Mon, 09 Apr 2007 14:11:38 GMT
 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: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Mime
View raw message