- From: Erik Dahlstrom <ed@opera.com>
- Date: Mon, 01 Nov 2010 12:56:26 +0100
- To: www-svg@w3.org
On Thu, 28 Oct 2010 22:19:31 +0200, BishKopt <bishkopt@gmail.com> wrote: > Hello all, > > I'm having a problem with implementing one of my ideas: I'd like to > have the whole page blurred, except a focus point - a circle in the > middle of the page. Additionally, the circle wouldn't have sharp edges > - it would have some kind of RadialGradient (lack of the filter inside > (sharp) and gradually blurring outside to fit the rest of the page)... You could draw the whole page twice, once with blur, once without blur but with a mask and make that be on top. Or you could write a filterchain that does it all in one go. > It wouldn't be a problem if that was not to be a blur filter, but a > color - simply masking. However... > > Is it possible to "mask a filter region" or make a filter region to be > eg. circle (instead of the whole element)? You can do the masking inside the filter chain if the UA supports feImage fully (that is: if it allows pointing to arbitrary elements and not just raster images). You can of course use a rasterimage mask too, but then it's not as scalable. An example of this technique can be seen here[1]. The relevant bits: <defs> <radialGradient id="fade"> <stop stop-opacity="1" offset="0.7"/> <stop stop-opacity="0" offset="1"/> </radialGradient> <filter id="filter" filterUnits="userSpaceOnUse"> <!-- mask rect edges --> <feImage xlink:href="#mask" result="mask"/> ... <!-- apply mask --> <feComposite operator="in" in2="mask" in="dist"/> </filter> <circle id="mask" r="200" fill="url(#fade)"/> </defs> Then use the filter as you would in general. Cheers /Erik [1] http://svg-wow.org/blog/2009/10/04/ripple/ -- Erik Dahlstrom, Core Technology Developer, Opera Software Co-Chair, W3C SVG Working Group Personal blog: http://my.opera.com/macdev_ed
Received on Monday, 1 November 2010 11:57:01 UTC