Example usage for com.itextpdf.text.pdf.parser Path addSubpaths

List of usage examples for com.itextpdf.text.pdf.parser Path addSubpaths

Introduction

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

Prototype

public void addSubpaths(List<? extends Subpath> subpaths) 

Source Link

Document

Adds the subpaths to this path.

Usage

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

License:Open Source License

protected Path filterStrokePath(Path sourcePath, Matrix ctm, float lineWidth, int lineCapStyle,
        int lineJoinStyle, float miterLimit, LineDashPattern lineDashPattern) {
    Path path = sourcePath;/*ww w . java2s . c o  m*/
    JoinType joinType = getJoinType(lineJoinStyle);
    EndType endType = getEndType(lineCapStyle);

    if (lineDashPattern != null) {
        if (!lineDashPattern.isSolid()) {
            path = applyDashPattern(path, lineDashPattern);
        }
    }

    ClipperOffset offset = new ClipperOffset(miterLimit,
            StrictPdfCleanUpProcessor.arcTolerance * StrictPdfCleanUpProcessor.floatMultiplier);
    List<Subpath> degenerateSubpaths = addPath(offset, path, joinType, endType);

    PolyTree resultTree = new PolyTree();
    offset.execute(resultTree, lineWidth * StrictPdfCleanUpProcessor.floatMultiplier / 2);
    Path offsetedPath = convertToPath(resultTree);

    if (degenerateSubpaths.size() > 0) {
        if (endType == EndType.OPEN_ROUND) {
            List<Subpath> circles = convertToCircles(degenerateSubpaths, lineWidth / 2);
            offsetedPath.addSubpaths(circles);
        } else if (endType == EndType.OPEN_SQUARE && lineDashPattern != null) {
            List<Subpath> squares = convertToSquares(degenerateSubpaths, lineWidth, sourcePath);
            offsetedPath.addSubpaths(squares);
        }
    }

    return filterFillPath(offsetedPath, ctm, PathPaintingRenderInfo.NONZERO_WINDING_RULE);
}