xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thomas.dewe...@kodak.com
Subject Re: How do I parse style information to get Java Color?
Date Fri, 03 Feb 2006 16:57:37 GMT
Hi James,

        Ahh, you need to boot the CSS DOM:
                http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom

James Balnaves <lists@balnaves.com> wrote on 02/03/2006 11:28:52 AM:

> Thanks for the suggestion. Unfortunately I get identical results 
> using this method, a null pointer exception on the getPropertyCSSValue 
> (). Is there something else I need to do to calculate the stroke? 
> Perhaps I am missing something in the setup. I am creating the 
> document from a file stream using the following snippet I found in 
> the docs somewhere:
> 
>              String parser = 
> XMLResourceDescriptor.getXMLParserClassName();
>              SAXSVGDocumentFactory f = new SAXSVGDocumentFactory 
> (parser);
>              SVGDocument doc = (SVGDocument)f.createDocument 
> ("http:internal", is);
> 
> After that I use getElementsByTagName() to find the paths, which I am 
> then using as the element in your example code. Does anything look 
> out of place?
> 
> Thanks, James.
> 
> On Feb 2, 2006, at 8:36 PM, Tonny Kohar wrote:
> 
> > Hi,
> >
> > On Thu, 2006-02-02 at 15:26 -0500, James Balnaves wrote:
> >> When I try this, the CSSStyleDeclaration ends up containing an
> >> "element" member of type SVGOMPathElement that has attributes "fill"
> >> and "d", but the CSSStyleDeclaration "values" member HashMap is 
> >> empty.
> >> When I call style.getPropertyCSSValue("stroke") I get a null pointer
> >> exception, even though this value exists up in the main svg element.
> >
> > How about something like this
> > ViewCSS viewCSS =
> > (ViewCSS)element.getOwnerDocument().getDocumentElement();
> > CSSStyleDeclaration computedStyle =
> > viewCSS.getComputedStyle(element,null);
> > SVGPaint svgPaint =
> > (SVGPaint)computedStyle.getPropertyCSSValue 
> > (SVGConstants.SVG_STROKE_ATTRIBUTE);
> > Color color = null;
> > if (svgPaint.getPaintType() == SVGPaint.SVG_PAINTTYPE_RGBCOLOR) {
> > RGBColor rgbColor = svgPaint.getRGBColor();
> >         CSSPrimitiveValue redValue = rgbColor.getRed();
> >         CSSPrimitiveValue blueValue = rgbColor.getBlue();
> >         CSSPrimitiveValue greenValue = rgbColor.getGreen();
> >         float r = redValue.getFloatValue 
> > (CSSPrimitiveValue.CSS_NUMBER);
> >         float g =
> > greenValue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER);
> >         float b = blueValue.getFloatValue 
> > (CSSPrimitiveValue.CSS_NUMBER);
> >         color = new
> > Color((int)r,(int)g,(int)b);
> > } else if (svgPaint.getPaintType() ==
> > SVGPaint.SVG_PAINTTYPE_CURRENTCOLOR) {
> >    // this is the color keyword eg: black, blue, green, aliceblue,etc
> >    // please check with the SVG / CSS Dom for the exact RGB value for 
> > this
> > color keyword
> >                             } else if (svgPaint.getPaintType() ==
> > SVGPaint....) {
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
> 


---------------------------------------------------------------------
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