xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thomas.dewe...@kodak.com
Subject RE: SVG Colors inversion
Date Fri, 25 Jun 2010 13:39:26 GMT
Hi Julien,

Julien Beghin <minimoi1234@hotmail.com> wrote on 06/25/2010 09:09:37 AM:

> I'am going to give this a try.
> And going to try to fidn the matrix I've got to create ^^

        Filters are worth a try, but you might find that
feComponentTransfer is faster and easier to work with.

> It's hard to say if this would be more performant, but this might be
> a good use case for feColorMatrixElement

      This could work but it involves a lot more work than the 
feComponentTransfer case (which is just a simple table lookup).

> One part of this project consists in a kind of color inversion of 
> some elements in the displayed SVG.
> 
> In fact, only black(resp white) have to be converted in  white(resp 
black).

        This actually sounds like an excellent place to use CSS style 
sheets.
The simplest way (although perhaps not the fastest) would be to use a 
selector
with both descendent, attribute and class bits.  Something like

        svg[invert=false] .fill { fill: black }
        svg[invert=true]  .fill { fill: white }

        svg[invert=false] .fillStroke { fill: black; stroke: white }
        svg[invert=true]  .fillStroke { fill: white; stroke: black }

        The other possible option would be to use alternate Style sheets
that do something similar (might be a little faster).

        Then simply setting the 'invert' attribute on the root SVG element
should cause the colors to swap for all of the elements with an 
appropriate
'class' attribute.

        http://www.w3.org/TR/CSS2/selector.html#descendant-selectors

Mime
View raw message