Example usage for com.itextpdf.text.pdf.parser PathPaintingRenderInfo EVEN_ODD_RULE

List of usage examples for com.itextpdf.text.pdf.parser PathPaintingRenderInfo EVEN_ODD_RULE

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf.parser PathPaintingRenderInfo EVEN_ODD_RULE.

Prototype

int EVEN_ODD_RULE

To view the source code for com.itextpdf.text.pdf.parser PathPaintingRenderInfo EVEN_ODD_RULE.

Click Source Link

Document

The even-odd rule determines whether a point is inside a path by drawing a ray from that point in any direction and simply counting the number of path segments that cross the ray, regardless of direction.

Usage

From source file:mkl.testarea.itext5.pdfcleanup.PdfCleanUpRegionFilter.java

License:Open Source License

/**
 * Note: this method will close all unclosed subpaths of the passed path.
 *
 * @param fillingRule If the subpath is contour, pass any value.
 *///  w w w .j  av  a 2s  .c  om
protected Path filterFillPath(Path path, Matrix ctm, int fillingRule) {
    path.closeAllSubpaths();

    Clipper clipper = new DefaultClipper();
    addPath(clipper, path);

    for (Rectangle rectangle : rectangles) {
        Point2D[] transfRectVertices = transformPoints(ctm, true, getVertices(rectangle));
        addRect(clipper, transfRectVertices, PolyType.CLIP);
    }

    PolyFillType fillType = PolyFillType.NON_ZERO;

    if (fillingRule == PathPaintingRenderInfo.EVEN_ODD_RULE) {
        fillType = PolyFillType.EVEN_ODD;
    }

    PolyTree resultTree = new PolyTree();
    clipper.execute(ClipType.DIFFERENCE, resultTree, fillType, PolyFillType.NON_ZERO);

    return convertToPath(resultTree);
}