Search in sources :

Example 6 with PDTilingPattern

use of org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern in project pdfbox by apache.

the class PageDrawer method getPaint.

/**
 * Returns an AWT paint for the given PDColor.
 *
 * @param color The color to get a paint for. This can be an actual color or a pattern.
 * @throws IOException
 */
protected Paint getPaint(PDColor color) throws IOException {
    PDColorSpace colorSpace = color.getColorSpace();
    if (!(colorSpace instanceof PDPattern)) {
        float[] rgb = colorSpace.toRGB(color.getComponents());
        return new Color(clampColor(rgb[0]), clampColor(rgb[1]), clampColor(rgb[2]));
    } else {
        PDPattern patternSpace = (PDPattern) colorSpace;
        PDAbstractPattern pattern = patternSpace.getPattern(color);
        if (pattern instanceof PDTilingPattern) {
            PDTilingPattern tilingPattern = (PDTilingPattern) pattern;
            if (tilingPattern.getPaintType() == PDTilingPattern.PAINT_COLORED) {
                // colored tiling pattern
                return tilingPaintFactory.create(tilingPattern, null, null, xform);
            } else {
                // uncolored tiling pattern
                return tilingPaintFactory.create(tilingPattern, patternSpace.getUnderlyingColorSpace(), color, xform);
            }
        } else {
            PDShadingPattern shadingPattern = (PDShadingPattern) pattern;
            PDShading shading = shadingPattern.getShading();
            if (shading == null) {
                LOG.error("shadingPattern is null, will be filled with transparency");
                return new Color(0, 0, 0, 0);
            }
            return shading.toPaint(Matrix.concatenate(getInitialMatrix(), shadingPattern.getMatrix()));
        }
    }
}
Also used : PDAbstractPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern) PDTilingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern) PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) Color(java.awt.Color) PDColor(org.apache.pdfbox.pdmodel.graphics.color.PDColor) PDPattern(org.apache.pdfbox.pdmodel.graphics.color.PDPattern) PDShadingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern) PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Aggregations

PDTilingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern)6 PDColor (org.apache.pdfbox.pdmodel.graphics.color.PDColor)5 PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)5 PDPattern (org.apache.pdfbox.pdmodel.graphics.color.PDPattern)5 PDPageContentStream (org.apache.pdfbox.pdmodel.PDPageContentStream)4 PDRectangle (org.apache.pdfbox.pdmodel.common.PDRectangle)4 COSName (org.apache.pdfbox.cos.COSName)3 PDAppearanceStream (org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream)3 AffineTransform (java.awt.geom.AffineTransform)2 Rectangle2D (java.awt.geom.Rectangle2D)2 PDFormXObject (org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject)2 PDImageXObject (org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)2 PDAbstractPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern)2 Color (java.awt.Color)1 BufferedImage (java.awt.image.BufferedImage)1 IOException (java.io.IOException)1 Method (java.lang.reflect.Method)1 PDDocument (org.apache.pdfbox.pdmodel.PDDocument)1 PDPage (org.apache.pdfbox.pdmodel.PDPage)1 PDPatternContentStream (org.apache.pdfbox.pdmodel.PDPatternContentStream)1