Package org.apache.batik.gvt.filter

Examples of org.apache.batik.gvt.filter.Filter


    public RenderedImage createRendering(RenderContext rc) {
        RenderingHints rh = rc.getRenderingHints();
        if (rh == null) rh = new RenderingHints(null);

        Filter src = getSource();
        Shape aoi = rc.getAreaOfInterest();

        if(aoi == null){
            aoi = getBounds2D();
        }

        // We only depend on our source for stuff that is inside
        // our bounds and his bounds (remember our bounds may be
        // tighter than his in one or both directions).
        Rectangle2D srect = src.getBounds2D();
        Rectangle2D rect  = getBounds2D();
        Rectangle2D arect = aoi.getBounds2D();
       
        // System.out.println("Rects Src:" + srect +
        //                    "My: " + rect +
        //                    "AOI: " + arect);

        Rectangle2D.intersect(arect, rect, arect);
        Rectangle2D.intersect(srect, arect, srect);

        if((srect.getWidth()  <= 0) ||
           (srect.getHeight() <= 0))
            return null;

        AffineTransform at = rc.getTransform();
           
        RenderContext srcRC = new RenderContext(at, srect, rh);
        RenderedImage ri = src.createRendering(srcRC);
       
        if(ri == null)
            return null;

        CachableRed cr = ConcreteRenderedImageCachableRed.wrap(ri);
View Full Code Here


            }
            FilterBridge filterBridge = (FilterBridge)bridge;
            SVGOMDocument doc = (SVGOMDocument)filterElement.getOwnerDocument();
            ViewCSS v = ctx.getViewCSS();
            ctx.setViewCSS((ViewCSS)doc.getDefaultView());
            Filter filter = filterBridge.create(node,
                                                ctx,
                                                filterElement,
                                                element,
                                                null,   // in
                                                null,   // filterRegion
View Full Code Here

                newPatternContentNode.getChildren().add(patternContentNode);

                GraphicsNodeRableFactory gnrFactory
                    = ctx.getGraphicsNodeRableFactory();

                Filter filter = gnrFactory.createGraphicsNodeRable
                    (newPatternContentNode);

                newPatternContentNode.setClip
                    (new ConcreteClipRable(filter, viewBox));
View Full Code Here

        // A, B, C and D are the four user space are that make the
        // tile that will be used. We create a rendering for each of
        // these areas that i s not empty (i.e., with either width or
        // height equal to zero)
        RenderedImage ARed = null, BRed = null, CRed = null, DRed = null;
        Filter source = getSource();
       
        if (A.getWidth() > 0 && A.getHeight() > 0){
            // System.out.println("Rendering A");
            Rectangle devA = usr2dev.createTransformedShape(A).getBounds();
            if(devA.width > 0 && devA.height > 0){
                AffineTransform ATxf = new AffineTransform(usr2dev);
                ATxf.translate(-A.x + tiledX,
                               -A.y + tiledY);

                Shape aoi = A;
                if(overflow){
                    aoi = new Rectangle2D.Double(A.x,
                                                 A.y,
                                                 tiledWidth,
                                                 tiledHeight);
                }

                hints.put(GraphicsNode.KEY_AREA_OF_INTEREST,
                          aoi);

                RenderContext arc
                    = new RenderContext(ATxf, aoi, hints);

                ARed = source.createRendering(arc);
               
                //System.out.println("ARed : " + ARed.getMinX() + " / " +
                //                   ARed.getMinY() + " / " +
                //                   ARed.getWidth() + " / " +
                //                   ARed.getHeight());
            }
        }

        if(B.getWidth() > 0 && B.getHeight() > 0){
            // System.out.println("Rendering B");
            Rectangle devB = usr2dev.createTransformedShape(B).getBounds();
            if(devB.width > 0 && devB.height > 0){
                AffineTransform BTxf = new AffineTransform(usr2dev);
                BTxf.translate(-B.x + (tiledX + dx),
                               -B.y + tiledY);

                Shape aoi = B;
                if(overflow){
                    aoi = new Rectangle2D.Double(B.x - tiledWidth + w - dx,
                                                 B.y,
                                                 tiledWidth,
                                                 tiledHeight);
                }

                hints.put(GraphicsNode.KEY_AREA_OF_INTEREST,
                          aoi);

                RenderContext brc
                    = new RenderContext(BTxf, aoi, hints);

                BRed = source.createRendering(brc);
                // System.out.println("BRed : " + BRed.getMinX() + " / " + BRed.getMinY() + " / " + BRed.getWidth() + " / " + BRed.getHeight());
            }
        }

        if(C.getWidth() > 0 && C.getHeight() > 0){
            // System.out.println("Rendering C");
            Rectangle devC = usr2dev.createTransformedShape(C).getBounds();
            if(devC.width > 0 && devC.height > 0){
                AffineTransform CTxf = new AffineTransform(usr2dev);
                CTxf.translate(-C.x + tiledX,
                               -C.y + (tiledY + dy));

                Shape aoi = C;
                if(overflow){
                    aoi = new Rectangle2D.Double(C.x,
                                                 C.y - tileHeight + h - dy,
                                                 tiledWidth,
                                                 tiledHeight);
                }

                hints.put(GraphicsNode.KEY_AREA_OF_INTEREST,
                          aoi);

                RenderContext crc
                    = new RenderContext(CTxf, aoi, hints);

                CRed = source.createRendering(crc);
                // System.out.println("CRed : " + CRed.getMinX() + " / " + CRed.getMinY() + " / " + CRed.getWidth() + " / " + CRed.getHeight());
            }
        }

        if(D.getWidth() > 0 && D.getHeight() > 0){
            // System.out.println("Rendering D");
            Rectangle devD = usr2dev.createTransformedShape(D).getBounds();
            if(devD.width > 0 && devD.height > 0){
                AffineTransform DTxf = new AffineTransform(usr2dev);
                DTxf.translate(-D.x + (tiledX + dx),
                               -D.y + (tiledY + dy));

                Shape aoi = D;
                if(overflow){
                    aoi = new Rectangle2D.Double(D.x - tileWidth + w - dx,
                                                 D.y - tileHeight + h - dy,
                                                 tiledWidth,
                                                 tiledHeight);
                }

                hints.put(GraphicsNode.KEY_AREA_OF_INTEREST,
                          aoi);

                RenderContext drc
                    = new RenderContext(DTxf, aoi, hints);

                DRed = source.createRendering(drc);
                // System.out.println("DRed : " + DRed.getMinX() + " / " + DRed.getMinY() + " / " + DRed.getWidth() + " / " + DRed.getHeight());
            }
        }

        //
View Full Code Here

        // Extract Composite operation
        CompositeRule rule = getRule(filterElement);

        // Extract sources
        String in1Attr = filterElement.getAttributeNS(null, ATTR_IN);
        Filter in1;
        in1 = CSSUtilities.getFilterSource(filteredNode,
                                           in1Attr,
                                           bridgeContext,
                                           filteredElement,
                                           in,
                                           filterMap);

        String in2Attr = filterElement.getAttributeNS(null, ATTR_IN2);
        if (in2Attr.length() == 0) {
            throw new MissingAttributeException(
                Messages.formatMessage("feComposite.in2.required", null));
        }
        Filter in2;
        in2 = CSSUtilities.getFilterSource(filteredNode,
                                           in2Attr,
                                           bridgeContext,
                                           filteredElement,
                                           in,
                                           filterMap);

        if ((in1 == null) || (in2 == null)) {
            return null;
        }

        //
        // The default region is the union of the input sources
        // regions unless 'in' is 'SourceGraphic' in which case the
        // default region is the filterChain's region
        //
        Filter sourceGraphics = (Filter)filterMap.get(VALUE_SOURCE_GRAPHIC);

        Rectangle2D defaultRegion = in1.getBounds2D();
        defaultRegion.add(in2.getBounds2D());

        if(in1 == sourceGraphics) {
            defaultRegion = filterRegion;
        }

        CSSStyleDeclaration cssDecl
            = bridgeContext.getViewCSS().getComputedStyle(filterElement, null);

        UnitProcessor.Context uctx
            = new DefaultUnitProcessorContext(bridgeContext, cssDecl);

        Rectangle2D compositeArea
            = SVGUtilities.convertFilterPrimitiveRegion(filterElement,
                                                        filteredElement,
                                                        defaultRegion,
                                                        filteredNode,
                                                        uctx);

        // Now, do the composite.
        Filter filter = null;
        Vector srcs = new Vector(2);
        srcs.add(in2);
        srcs.add(in1);
        filter = new ConcreteCompositeRable(srcs, rule);
View Full Code Here

        Composite composite =
            CSSUtilities.convertOpacityToComposite(opacityVal);
        node.setComposite(composite);

        // Set node filter
        Filter filter = CSSUtilities.convertFilter(element, node, ctx);
        node.setFilter(filter);

        // Set the node mask
        Mask mask = CSSUtilities.convertMask(element, node, ctx);
        node.setMask(mask);
View Full Code Here

        CSSPrimitiveValue val =
            (CSSPrimitiveValue)decl.getPropertyCSSValue(ATTR_OPACITY);
        Composite composite = CSSUtilities.convertOpacityToComposite(val);
        gn.setComposite(composite);

        Filter filter = CSSUtilities.convertFilter(element, gn, ctx);
        gn.setFilter(filter);

        Mask mask = CSSUtilities.convertMask(element, gn, ctx);
        gn.setMask(mask);
View Full Code Here

        init(src);
        setAffine(affine);
    }

    public Rectangle2D getBounds2D() {
        Filter src = getSource();
        Rectangle2D r = src.getBounds2D();
        return affine.createTransformedShape(r).getBounds2D();
    }
View Full Code Here

                                                        filteredElement,
                                                        defaultRegion,
                                                        filteredNode,
                                                        uctx);

        Filter filter = null;
        if (uriStr.startsWith(PROTOCOL_DATA)) {
            filter = RasterRable.create(uriStr, null);
        } else {
            SVGDocument svgDoc;
            svgDoc = (SVGDocument)filterElement.getOwnerDocument();
            URL baseURL = ((SVGOMDocument)svgDoc).getURLObject();
            URL url = null;
            try {
                url = new URL(baseURL, uriStr);
            } catch (MalformedURLException mue) {
                throw new IllegalAttributeValueException(
                    Messages.formatMessage("feImage.xlinkHref.badURL", null));
            }

            try {

                URIResolver ur =
                    new URIResolver(svgDoc, bridgeContext.getDocumentLoader());

                Node refNode = ur.getNode(url.toString());
                if (refNode == null) {
                    throw new IllegalAttributeValueException(
                        Messages.formatMessage("feImage.xlinkHref.badURL",
                                               null));
                }

                Element refElement;
                if (refNode.getNodeType() == refNode.DOCUMENT_NODE) {
                    refElement = ((SVGDocument)refNode).getRootElement();
                } else {
                    refElement = (Element)refNode;
                }

                // Cannot access referenced file...
                if(refElement == null){
                    throw new IllegalAttributeValueException(
                        Messages.formatMessage("feImage.xlinkHref.badURL",
                                               null));
                }

                GraphicsNode gn =
                    bridgeContext.getGVTBuilder().build(bridgeContext,
                                                        refElement);

                GraphicsNodeRableFactory gnrFactory
                    = bridgeContext.getGraphicsNodeRableFactory();
                filter = gnrFactory.createGraphicsNodeRable(gn);

                //
                // Need to translate the image to the x, y coordinate to
                // have the same behavior as the <use> element
                // <!> FIX ME? I THINK THIS IS ONLY PARTIALLY IMPLEMENTING THE
                //     SPEC.
                // <!> TO DO : HANDLE TRANSFORM
                AffineTransform at = new AffineTransform();
                at.translate(primitiveRegion.getX(), primitiveRegion.getY());

                filter = new ConcreteAffineRable(filter, at);

            } catch (Exception ex) {
                //
                // Need to fit the raster image to the filter region
                // so that we have the same behavior as raster images
                // in the <image> element.
                //
                filter = RasterRable.create(url, null);

                Rectangle2D bounds = filter.getBounds2D();
                AffineTransform scale = new AffineTransform();
                scale.translate(primitiveRegion.getX(), primitiveRegion.getY());
                scale.scale(primitiveRegion.getWidth()/bounds.getWidth(),
                            primitiveRegion.getHeight()/bounds.getHeight());
                scale.translate(-bounds.getX(), -bounds.getY());
View Full Code Here

                         Element filterElement,
                         Element filteredElement,
                         Filter in,
                         Rectangle2D filterRegion,
                         Map filterMap){
        Filter filter = null;

        // First, extract source
        String inAttr = filterElement.getAttributeNS(null, ATTR_IN);
        in = CSSUtilities.getFilterSource(filteredNode,
                                          inAttr,
                                          bridgeContext,
                                          filteredElement,
                                          in,
                                          filterMap);

        // Exit if no 'in' found
        if (in == null) {
            return null;
        }

        //
        // The default region is the input source's region unless the
        // source is SourceGraphics, in which case the default region
        // is the filter chain's region
        //
        Filter sourceGraphics = (Filter)filterMap.get(VALUE_SOURCE_GRAPHIC);

        Rectangle2D defaultRegion = in.getBounds2D();

        if (in == sourceGraphics){
            defaultRegion = filterRegion;
View Full Code Here

TOP

Related Classes of org.apache.batik.gvt.filter.Filter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.