List of usage examples for com.lowagie.text.pdf PdfContentByte closePath
public void closePath()
From source file:org.mapfish.print.map.renderers.vector.PointRenderer.java
License:Open Source License
protected void renderImpl(RenderingContext context, PdfContentByte dc, PJsonObject style, Point geometry) { PdfGState state = new PdfGState(); final Coordinate coordinate = geometry.getCoordinate(); float pointRadius = style.optFloat("pointRadius", 4.0f); final float f = context.getStyleFactor(); String graphicName = style.optString("graphicName"); float width = style.optFloat("graphicWidth", pointRadius * 2.0f); float height = style.optFloat("graphicHeight", pointRadius * 2.0f); float offsetX = style.optFloat("graphicXOffset", -width / 2.0f); float offsetY = style.optFloat("graphicYOffset", -height / 2.0f); // See Feature/Vector.js for more information about labels String label = style.optString("label"); String labelAlign = style.optString("labelAlign", "lb"); /*//from w ww. ja va 2 s .c o m * Valid values for horizontal alignment: "l"=left, "c"=center, "r"=right. * Valid values for vertical alignment: "t"=top, "m"=middle, "b"=bottom. */ float labelXOffset = style.optFloat("labelXOffset", (float) 0.0); float labelYOffset = style.optFloat("labelYOffset", (float) 0.0); String fontColor = style.optString("fontColor", "#000000"); /* Supported itext fonts: COURIER, HELVETICA, TIMES_ROMAN */ String fontFamily = style.optString("fontFamily", "HELVETICA"); String fontSize = style.optString("fontSize", "12"); String fontWeight = style.optString("fontWeight", "normal"); if (style.optString("externalGraphic") != null) { float opacity = style.optFloat("graphicOpacity", style.optFloat("fillOpacity", 1.0f)); state.setFillOpacity(opacity); state.setStrokeOpacity(opacity); dc.setGState(state); try { Image image = PDFUtils.createImage(context, width * f, height * f, new URI(style.getString("externalGraphic")), 0.0f); image.setAbsolutePosition((float) coordinate.x + offsetX * f, (float) coordinate.y + offsetY * f); dc.addImage(image); } catch (BadElementException e) { context.addError(e); } catch (URISyntaxException e) { context.addError(e); } catch (DocumentException e) { context.addError(e); } } else if (graphicName != null && !graphicName.equalsIgnoreCase("circle")) { PolygonRenderer.applyStyle(context, dc, style, state); float[] symbol = SYMBOLS.get(graphicName); if (symbol == null) { throw new InvalidValueException("graphicName", graphicName); } dc.setGState(state); dc.moveTo((float) coordinate.x + symbol[0] * width * f + offsetX * f, (float) coordinate.y + symbol[1] * height * f + offsetY * f); for (int i = 2; i < symbol.length - 2; i += 2) { dc.lineTo((float) coordinate.x + symbol[i] * width * f + offsetX * f, (float) coordinate.y + symbol[i + 1] * height * f + offsetY * f); } dc.closePath(); dc.fillStroke(); } else if (label != null && label.length() > 0) { BaseFont bf = PDFUtils.getBaseFont(fontFamily, fontSize, fontWeight); float fontHeight = (float) Double.parseDouble(fontSize.toLowerCase().replaceAll("px", "")) * f; dc.setFontAndSize(bf, fontHeight); dc.setColorFill(ColorWrapper.convertColor(fontColor)); state.setFillOpacity((float) 1.0); dc.setGState(state); dc.beginText(); dc.setTextMatrix((float) coordinate.x + labelXOffset * f, (float) coordinate.y + labelYOffset * f); dc.setGState(state); dc.showTextAligned(PDFUtils.getHorizontalAlignment(labelAlign), label, (float) coordinate.x + labelXOffset * f, (float) coordinate.y + labelYOffset * f - PDFUtils.getVerticalOffset(labelAlign, fontHeight), 0); dc.endText(); } else { PolygonRenderer.applyStyle(context, dc, style, state); dc.setGState(state); dc.circle((float) coordinate.x, (float) coordinate.y, pointRadius * f); dc.fillStroke(); } }
From source file:org.mapfish.print.map.renderers.vector.PolygonRenderer.java
License:Open Source License
private void renderRing(PdfContentByte dc, LineString ring) { Coordinate[] coords = ring.getCoordinates(); if (coords.length < 3) return;/*from ww w. j a v a 2 s.c o m*/ dc.moveTo((float) coords[0].x, (float) coords[0].y); for (int i = 1; i < coords.length - 1; i++) { Coordinate coord = coords[i]; dc.lineTo((float) coord.x, (float) coord.y); } dc.closePath(); }
From source file:org.xhtmlrenderer.pdf.ITextOutputDevice.java
License:Open Source License
private void followPath(Shape s, int drawType) { PdfContentByte cb = _currentPage; if (s == null) return;/* w w w.jav a2 s . c o m*/ if (drawType == STROKE) { if (!(_stroke instanceof BasicStroke)) { s = _stroke.createStrokedShape(s); followPath(s, FILL); return; } } if (drawType == STROKE) { setStrokeDiff(_stroke, _oldStroke); _oldStroke = _stroke; ensureStrokeColor(); } else if (drawType == FILL) { ensureFillColor(); } PathIterator points; if (drawType == CLIP) { points = s.getPathIterator(IDENTITY); } else { points = s.getPathIterator(_transform); } float[] coords = new float[6]; int traces = 0; while (!points.isDone()) { ++traces; int segtype = points.currentSegment(coords); normalizeY(coords); switch (segtype) { case PathIterator.SEG_CLOSE: cb.closePath(); break; case PathIterator.SEG_CUBICTO: cb.curveTo(coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]); break; case PathIterator.SEG_LINETO: cb.lineTo(coords[0], coords[1]); break; case PathIterator.SEG_MOVETO: cb.moveTo(coords[0], coords[1]); break; case PathIterator.SEG_QUADTO: System.out.println("Quad to " + coords[0] + " " + coords[1] + " " + coords[2] + " " + coords[3]); cb.curveTo(coords[0], coords[1], coords[2], coords[3]); break; } points.next(); } switch (drawType) { case FILL: if (traces > 0) { if (points.getWindingRule() == PathIterator.WIND_EVEN_ODD) cb.eoFill(); else cb.fill(); } break; case STROKE: if (traces > 0) cb.stroke(); break; default: // drawType==CLIP if (traces == 0) cb.rectangle(0, 0, 0, 0); if (points.getWindingRule() == PathIterator.WIND_EVEN_ODD) cb.eoClip(); else cb.clip(); cb.newPath(); } }