use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox by apache.
the class ResourcesValidationProcess method validateShadingPattern.
/**
* This method check the Shading entry of the resource dictionary if exists.
*
* @param context
* @param resources
* @throws ValidationException
*/
protected void validateShadingPattern(PreflightContext context, PDResources resources) throws ValidationException {
try {
for (COSName name : resources.getShadingNames()) {
PDShading shading = resources.getShading(name);
ContextHelper.validateElement(context, shading, SHADING_PATTERN_PROCESS);
}
} catch (IOException e) {
context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_PATTERN_DEFINITION, e.getMessage(), e));
}
}
use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox by apache.
the class ShadingPatternValidationProcess method validate.
@Override
public void validate(PreflightContext context) throws ValidationException {
PreflightPath vPath = context.getValidationPath();
if (vPath.isEmpty()) {
return;
}
if (!vPath.isExpectedType(PDShading.class)) {
context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "ShadingPattern validation required at least a PDResources"));
} else {
PDShading shadingResource = (PDShading) vPath.peek();
PDPage page = vPath.getClosestPathElement(PDPage.class);
checkColorSpace(context, page, shadingResource);
checkGraphicState(context, page, shadingResource);
}
}
use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox-graphics2d by rototor.
the class PdfBoxGraphics2DPaintApplier method applyPaint.
@Override
public PDShading applyPaint(Paint paint, PDPageContentStream contentStream, AffineTransform tf, IPaintEnv env) throws IOException {
PaintApplierState state = new PaintApplierState();
state.document = env.getDocument();
state.resources = env.getResources();
state.contentStream = contentStream;
state.colorMapper = env.getColorMapper();
state.imageEncoder = env.getImageEncoder();
state.composite = env.getComposite();
state.pdExtendedGraphicsState = null;
state.env = env;
state.tf = tf;
PDShading shading = applyPaint(paint, state);
if (state.pdExtendedGraphicsState != null)
contentStream.setGraphicsStateParameters(extGStateCache.makeUnqiue(state.pdExtendedGraphicsState));
return shading;
}
use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox-graphics2d by rototor.
the class PdfBoxGraphics2D method draw.
public void draw(Shape s) {
try {
contentStreamSaveState();
PDShading pdShading = applyPaint();
if (pdShading != null)
applyShadingAsColor(pdShading);
if (stroke instanceof BasicStroke) {
BasicStroke basicStroke = (BasicStroke) this.stroke;
// Cap Style maps 1:1 between Java and PDF Spec
contentStream.setLineCapStyle(basicStroke.getEndCap());
// Line Join Style maps 1:1 between Java and PDF Spec
contentStream.setLineJoinStyle(basicStroke.getLineJoin());
if (basicStroke.getMiterLimit() > 0) {
// Also Miter maps 1:1 between Java and PDF Spec
// (NB: set the miter-limit only if value is > 0)
contentStream.setMiterLimit(basicStroke.getMiterLimit());
}
AffineTransform tf = new AffineTransform();
tf.concatenate(baseTransform);
tf.concatenate(transform);
double scaleX = tf.getScaleX();
contentStream.setLineWidth((float) Math.abs(basicStroke.getLineWidth() * scaleX));
float[] dashArray = basicStroke.getDashArray();
if (dashArray != null) {
for (int i = 0; i < dashArray.length; i++) dashArray[i] = (float) Math.abs(dashArray[i] * scaleX);
contentStream.setLineDashPattern(dashArray, (float) Math.abs(basicStroke.getDashPhase() * scaleX));
}
}
walkShape(s);
contentStream.stroke();
contentStreamRestoreState();
} catch (IOException e) {
throwException(e);
}
}
Aggregations