Example usage for com.itextpdf.text.pdf PdfContentByte setGState

List of usage examples for com.itextpdf.text.pdf PdfContentByte setGState

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfContentByte setGState.

Prototype

public void setGState(final PdfGState gstate) 

Source Link

Document

Sets the graphic state

Usage

From source file:EplanPrinter.PDFPrint.java

License:Open Source License

public String insertSketch(String points, String color, String opac, int pageNum, int masterHeight,
        int masterWidth, int lineWeight, String lineStyle) throws DocumentException, IOException {
    float f = Float.valueOf(opac);
    PdfGState gs1 = new PdfGState();

    int t = points.indexOf("POLYGON");
    gs1.setFillOpacity(f);//from   w ww  .j  a  va2  s. co m

    PdfContentByte fg = pds.getOverContent(pageNum);
    fg.setGState(gs1);
    float[] pointsSt = shatterSketches(points);
    color = "0x" + color.substring(1);
    Color c = Color.decode(color);

    fg.setLineWidth(lineWeight * getRatio(masterHeight, masterWidth, pageNum));
    if (lineStyle.equals("dash")) {
        fg.setLineDash(lineWeight * 4f, lineWeight);
    } else {
        fg.setLineDash(0);
    }

    //fg.setLineWidth(5);
    fg.setColorStroke(new BaseColor(c.getRGB()));
    fg.setColorFill(new BaseColor(c.getRGB()));
    float[] prefl = scaleShape(pointsSt, masterHeight, masterWidth, pageNum);
    float[] fl = sketchTrans(prefl, pageNum);

    /* Addition. ftorres - 7/22/2015 - Added to account for rotated pages 
     *   with the origin (0,0) not set to the bottom-left of the page. [1400] */
    float flTrans[] = translateRotation(fl[0], fl[1], pageNum);

    if (points.indexOf("LINEPOINT") != -1) {
        fg.circle(flTrans[0], flTrans[1], 5);
        fg.fillStroke();
        if (t == -1) {
            gs1.setFillOpacity(0f);
        } else {
            gs1.setFillOpacity(f);
        }
        fg.setGState(gs1);
    }
    fg.moveTo(flTrans[0], flTrans[1]);
    for (int i = 2; i < pointsSt.length; i = i + 2) {
        flTrans = translateRotation(fl[i], fl[i + 1], pageNum);
        fg.lineTo(flTrans[0], flTrans[1]);
    }

    if (t != -1) {
        fg.closePathFillStroke();
        fg.fill();
    } else {
        fg.stroke();
    }

    return "";
}

From source file:EplanPrinter.PDFPrint.java

License:Open Source License

public String insertComment(String sx, String sy, String id, String deptValue, String userInit, String comment,
        int pageNum, int masterHeight, int masterWidth, int pinned, int customFontSize)
        throws DocumentException, IOException {
    float ratio = getRatio(masterHeight, masterWidth, pageNum);
    float x = Float.parseFloat(sx);
    float y = Float.parseFloat(sy);
    float[] f = commentTrans(x, y, masterHeight, masterWidth, pageNum);
    PdfGState gs1 = new PdfGState();
    gs1.setFillOpacity(1);//from  ww w . j  ava2s . com
    if (customFontSize > 0)
        fontSize = customFontSize;

    PdfContentByte fg = pds.getOverContent(pageNum);
    fg.setGState(gs1);
    BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
    float[] trans = translate(x, y, r[pageNum - 1].getHeight(), r[pageNum - 1].getWidth(), masterHeight,
            masterWidth, pageNum);
    // comment tag image (width=35pts, height=8pts)
    float[] scalar = scale(trans[0], trans[1], 35, 8, masterHeight, masterWidth, pageNum);

    /* Addition. ftorres - 7/21/2015 - Added to account for rotated pages 
     *   with the origin (0,0) not set to the bottom-left of the page. [1400] */
    float coords[] = translateRotation(trans[0], trans[1], pageNum);
    coords = checkBounds(coords[0], coords[1], pageNum);

    /* Addition. ftorres - 10/20/2015 - If the comment was pinned in EPC, then
     *   render the comment inside a comment box. */
    if (pinned == 1) {
        insertPinnedComment(coords[0], coords[1], id + " - " + deptValue + " (" + userInit + ")", comment,
                pageNum, masterHeight, masterWidth);

        // Add the pinned comment text to page annotation -Jon Changkachith 11/24/2015
        Rectangle rect = new Rectangle(0, 0, 0, 0);
        PdfAnnotation annotation = PdfAnnotation.createText(pds.getWriter(), rect,
                id + " - " + deptValue + " (" + userInit + ")", cleanupComment(comment), true, id);
        pds.addAnnotation(annotation, pds.getWriter().getCurrentPageNumber());
    } else {
        Image image = Image.getInstance(commentIMGPath);
        image.setAbsolutePosition(coords[0] + (scalar[0] * (id.length() / 5f)), coords[1]);

        /*
         * Commented out by Jon Changkachith 12/09/2015 because it was throwing
         * DocumentException with the message "The image must have absolute positioning."
        image.scaleAbsoluteHeight(1);
        image.scaleAbsoluteWidth(1);
        */
        image.scalePercent(ratio); //Added to fix DocumentException "The image must have absolute positioning." Jon Changkachith 12/09/2015
        image.setAnnotation(new Annotation(id + " - " + deptValue + " (" + userInit + ")",
                cleanupComment(comment), 0, 0, 0, 0));
        fg.addImage(image);
    }

    fg.setLineWidth(.5f * ratio);
    fg.setColorStroke(new BaseColor(Color.decode("0x6E2405").getRGB()));
    fg.setColorFill(new BaseColor(Color.decode("0x6E2405").getRGB()));

    float tHeight = scalar[1];
    float tWidth = 0;
    if (id.length() > 3) {
        tWidth = (scalar[0] * (id.length() / 5f));
    } else {
        tWidth = (scalar[0]);
    }

    fg.moveTo(coords[0], coords[1]);
    fg.lineTo(coords[0] + (10f * ratio), coords[1] - (tHeight / 2));
    fg.lineTo(coords[0] + tWidth, coords[1] - (tHeight / 2));
    fg.lineTo(coords[0] + tWidth, coords[1] + (tHeight / 2));
    fg.lineTo(coords[0] + (10f * ratio), coords[1] + (tHeight / 2));

    fg.lineTo(coords[0], coords[1]);
    fg.closePathFillStroke();
    fg.fill();

    // Comment number that goes on the comment tag image
    Phrase p = new Phrase(id);
    p.getFont().setColor(BaseColor.WHITE);
    p.getFont().setSize(8f * ratio); //comment number font size = 8f
    //p.getChunks().get(0).setAnnotation(PdfAnnotation.createText(pds.getWriter(), new Rectangle(trans[0],trans[1], trans[0]+5f, trans[1]+5f), id, comment, true, id));

    float fs[] = translateRotation(f[0], f[1], pageNum);
    fs = checkBounds(fs[0], fs[1], pageNum);
    ColumnText.showTextAligned(fg, Element.ALIGN_LEFT, p, (float) (fs[0] + (9 * ratio)),
            (float) (fs[1] - (3 * ratio)), 0);

    return "";
}

From source file:EplanPrinter.PDFPrint.java

License:Open Source License

private void insertPinnedComment(float xCoord, float yCoord, String id, String comment, int pageNum,
        int masterHeight, int masterWidth) throws DocumentException, IOException {

    int standardHeight = 38;
    int standardWidth = 130;
    int lineHeight = 7;

    if (fontSize == 8) {
        standardHeight = 48;//from   ww w  . ja va  2  s. co  m
        standardWidth = 180;
        lineHeight = 10;
    } else if (fontSize == 10) {
        standardHeight = 70;
        standardWidth = 210;
        lineHeight = 12;
    }

    // comment box position defines lower-left corner
    xCoord += 41; // x-coordinate of comment text box
    yCoord -= 7; // lower offset moves box up

    float f = (float) 0.4;
    PdfGState gs1 = new PdfGState();
    gs1.setFillOpacity(f);

    PdfContentByte fg = pds.getOverContent(pageNum);
    fg.setGState(gs1);
    fg.setLineWidth(.5f * getRatio(masterHeight, masterWidth, pageNum));

    // Calculate additional needed height for the comment, based on length of comment.
    List<String> lines = createComment(cleanupComment(comment));
    int numLines = lines.size();
    int commentHeight = (numLines - 1) * lineHeight;

    // Draw the comment box
    String color = "0xF2F3E4";
    Color c = Color.decode(color);
    color = "0xFAFAF4";
    Color c2 = Color.decode(color);
    fg.setLineWidth(1f);
    fg.setColorStroke(new BaseColor(c.getRGB()));
    fg.setColorFill(new BaseColor(c2.getRGB()));
    float newCoords[] = pinnedCoords(xCoord, yCoord, standardWidth, standardHeight + commentHeight);
    fg.roundRectangle(xCoord, newCoords[1], standardWidth, standardHeight + commentHeight, 2f);
    fg.fillStroke();

    //BaseFont bf = BaseFont.createFont();
    BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, true);
    BaseFont bfb = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, true);
    fg.setColorFill(BaseColor.RED);
    gs1.setFillOpacity(0.8f);
    fg.setGState(gs1);

    // Adding comment title text
    Phrase phrase = new Phrase("Comment", new Font(bfb, fontSize));
    ColumnText.showTextAligned(fg, Element.ALIGN_LEFT, phrase, xCoord + 3, yCoord - 7, 0);

    // Adding comment number
    phrase = new Phrase(id, new Font(bf, fontSize));
    float offset = xCoord + 35;
    if (fontSize == 8)
        offset = xCoord + 45;
    else if (fontSize == 10)
        offset = xCoord + 55;
    ColumnText.showTextAligned(fg, Element.ALIGN_LEFT, phrase, offset, yCoord - 7, 0);

    /*  Remove 10/27/2015 Jon Changkachith
    // Adding 'comment' label text
    phrase = new Phrase("Comment", new Font(bfb, fontSize));
    ColumnText.showTextAligned(fg, Element.ALIGN_LEFT, phrase, xCoord + 3, yCoord - 20f, 0);
    */

    // Adding comment text
    int commentYOffset = 32;
    for (int i = 0; i < lines.size(); i++) {
        //phrase = new Phrase(lines.get(i), new Font(bf, fontSize));
        phrase = composePhrase(lines.get(i), bf, bfb);
        ColumnText.showTextAligned(fg, Element.ALIGN_LEFT, phrase, xCoord + 3, yCoord - commentYOffset, 0);
        commentYOffset += lineHeight;
    }

}

From source file:org.frobic.colorednodes.renderers.NewEdgeRenderer.java

License:Open Source License

@Override
public void renderSelfLoop(Item nodeItem, float thickness, Color color, PreviewProperties properties,
        RenderTarget renderTarget) {/*from w  w w.  j av a 2 s.c o  m*/
    Float x = nodeItem.getData(NodeItem.X);
    Float y = nodeItem.getData(NodeItem.Y);
    Float size = nodeItem.getData(NodeItem.SIZE);
    Node node = (Node) nodeItem.getSource();

    PVector v1 = new PVector(x, y);
    v1.add(size, -size, 0);

    PVector v2 = new PVector(x, y);
    v2.add(size, size, 0);

    if (renderTarget instanceof ProcessingTarget) {
        PGraphics graphics = ((ProcessingTarget) renderTarget).getGraphics();
        graphics.strokeWeight(thickness);
        graphics.stroke(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
        graphics.noFill();
        graphics.bezier(x, y, v1.x, v1.y, v1.x, v2.y, x, y);
    } else if (renderTarget instanceof SVGTarget) {
        SVGTarget svgTarget = (SVGTarget) renderTarget;

        Element selfLoopElem = svgTarget.createElement("path");
        selfLoopElem.setAttribute("d", String.format(Locale.ENGLISH, "M %f,%f C %f,%f %f,%f %f,%f", x, y, v1.x,
                v1.y, v2.x, v2.y, x, y));
        selfLoopElem.setAttribute("class", node.getNodeData().getId());
        selfLoopElem.setAttribute("stroke", svgTarget.toHexString(color));
        selfLoopElem.setAttribute("stroke-opacity", (color.getAlpha() / 255f) + "");
        selfLoopElem.setAttribute("stroke-width", Float.toString(thickness * svgTarget.getScaleRatio()));
        selfLoopElem.setAttribute("fill", "none");
        svgTarget.getTopElement(SVGTarget.TOP_EDGES).appendChild(selfLoopElem);
    } else if (renderTarget instanceof PDFTarget) {
        PDFTarget pdfTarget = (PDFTarget) renderTarget;
        PdfContentByte cb = pdfTarget.getContentByte();
        cb.moveTo(x, -y);
        cb.curveTo(v1.x, -v1.y, v2.x, -v2.y, x, -y);
        cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
        cb.setLineWidth(thickness);
        if (color.getAlpha() < 255) {
            cb.saveState();
            float alpha = color.getAlpha() / 255f;
            PdfGState gState = new PdfGState();
            gState.setStrokeOpacity(alpha);
            cb.setGState(gState);
        }
        cb.stroke();
        if (color.getAlpha() < 255) {
            cb.restoreState();
        }
    }
}

From source file:org.frobic.colorednodes.renderers.NewEdgeRenderer.java

License:Open Source License

@Override
public void renderCurvedEdge(Item edgeItem, Item sourceItem, Item targetItem, float thickness, Color color,
        PreviewProperties properties, RenderTarget renderTarget) {
    Edge edge = (Edge) edgeItem.getSource();
    Float x1 = sourceItem.getData(NodeItem.X);
    Float x2 = targetItem.getData(NodeItem.X);
    Float y1 = sourceItem.getData(NodeItem.Y);
    Float y2 = targetItem.getData(NodeItem.Y);

    //Curved edgs
    PVector direction = new PVector(x2, y2);
    direction.sub(new PVector(x1, y1));
    float length = direction.mag();
    direction.normalize();//from  w w  w .ja  v  a 2  s  . com

    float factor = properties.getFloatValue(BEZIER_CURVENESS) * length;

    // normal vector to the edge
    PVector n = new PVector(direction.y, -direction.x);
    n.mult(factor);

    // first control point
    PVector v1 = new PVector(direction.x, direction.y);
    v1.mult(factor);
    v1.add(new PVector(x1, y1));
    v1.add(n);

    // second control point
    PVector v2 = new PVector(direction.x, direction.y);
    v2.mult(-factor);
    v2.add(new PVector(x2, y2));
    v2.add(n);

    if (renderTarget instanceof ProcessingTarget) {
        PGraphics graphics = ((ProcessingTarget) renderTarget).getGraphics();
        graphics.strokeWeight(thickness);
        graphics.stroke(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
        graphics.noFill();
        graphics.bezier(x1, y1, v1.x, v1.y, v2.x, v2.y, x2, y2);
    } else if (renderTarget instanceof SVGTarget) {
        SVGTarget svgTarget = (SVGTarget) renderTarget;
        Element edgeElem = svgTarget.createElement("path");
        edgeElem.setAttribute("class",
                edge.getSource().getNodeData().getId() + " " + edge.getTarget().getNodeData().getId());
        edgeElem.setAttribute("d", String.format(Locale.ENGLISH, "M %f,%f C %f,%f %f,%f %f,%f", x1, y1, v1.x,
                v1.y, v2.x, v2.y, x2, y2));
        edgeElem.setAttribute("stroke", svgTarget.toHexString(color));
        edgeElem.setAttribute("stroke-width", Float.toString(thickness * svgTarget.getScaleRatio()));
        edgeElem.setAttribute("stroke-opacity", (color.getAlpha() / 255f) + "");
        edgeElem.setAttribute("fill", "none");
        svgTarget.getTopElement(SVGTarget.TOP_EDGES).appendChild(edgeElem);
    } else if (renderTarget instanceof PDFTarget) {
        PDFTarget pdfTarget = (PDFTarget) renderTarget;
        PdfContentByte cb = pdfTarget.getContentByte();
        cb.moveTo(x1, -y1);
        cb.curveTo(v1.x, -v1.y, v2.x, -v2.y, x2, -y2);
        cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
        cb.setLineWidth(thickness);
        if (color.getAlpha() < 255) {
            cb.saveState();
            float alpha = color.getAlpha() / 255f;
            PdfGState gState = new PdfGState();
            gState.setStrokeOpacity(alpha);
            cb.setGState(gState);
        }
        cb.stroke();
        if (color.getAlpha() < 255) {
            cb.restoreState();
        }
    }
}

From source file:org.frobic.colorednodes.renderers.NewEdgeRenderer.java

License:Open Source License

@Override
public void renderStraightEdge(Item edgeItem, Item sourceItem, Item targetItem, float thickness, Color color,
        PreviewProperties properties, RenderTarget renderTarget) {
    Edge edge = (Edge) edgeItem.getSource();
    Float x1 = sourceItem.getData(NodeItem.X);
    Float x2 = targetItem.getData(NodeItem.X);
    Float y1 = sourceItem.getData(NodeItem.Y);
    Float y2 = targetItem.getData(NodeItem.Y);

    //Target radius - to start at the base of the arrow
    Float targetRadius = edgeItem.getData(TARGET_RADIUS);
    //Avoid edge from passing the node's center:
    if (targetRadius != null && targetRadius < 0) {
        PVector direction = new PVector(x2, y2);
        direction.sub(new PVector(x1, y1));
        direction.normalize();/*from  w  w w. j  a  v  a2s  . c o m*/
        direction = new PVector(direction.x, direction.y);
        direction.mult(targetRadius);
        direction.add(new PVector(x2, y2));
        x2 = direction.x;
        y2 = direction.y;
    }
    //Source radius
    Float sourceRadius = edgeItem.getData(SOURCE_RADIUS);
    //Avoid edge from passing the node's center:
    if (sourceRadius != null && sourceRadius < 0) {
        PVector direction = new PVector(x1, y1);
        direction.sub(new PVector(x2, y2));
        direction.normalize();
        direction = new PVector(direction.x, direction.y);
        direction.mult(sourceRadius);
        direction.add(new PVector(x1, y1));
        x1 = direction.x;
        y1 = direction.y;
    }

    if (renderTarget instanceof ProcessingTarget) {
        PGraphics graphics = ((ProcessingTarget) renderTarget).getGraphics();
        graphics.strokeWeight(thickness);
        graphics.strokeCap(PGraphics.SQUARE);
        graphics.stroke(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
        graphics.noFill();
        graphics.line(x1, y1, x2, y2);
    } else if (renderTarget instanceof SVGTarget) {
        SVGTarget svgTarget = (SVGTarget) renderTarget;
        Element edgeElem = svgTarget.createElement("path");
        edgeElem.setAttribute("class",
                edge.getSource().getNodeData().getId() + " " + edge.getTarget().getNodeData().getId());
        edgeElem.setAttribute("d", String.format(Locale.ENGLISH, "M %f,%f L %f,%f", x1, y1, x2, y2));
        edgeElem.setAttribute("stroke", svgTarget.toHexString(color));
        edgeElem.setAttribute("stroke-width", Float.toString(thickness * svgTarget.getScaleRatio()));
        edgeElem.setAttribute("stroke-opacity", (color.getAlpha() / 255f) + "");
        edgeElem.setAttribute("fill", "none");
        svgTarget.getTopElement(SVGTarget.TOP_EDGES).appendChild(edgeElem);
    } else if (renderTarget instanceof PDFTarget) {
        PDFTarget pdfTarget = (PDFTarget) renderTarget;
        PdfContentByte cb = pdfTarget.getContentByte();
        cb.moveTo(x1, -y1);
        cb.lineTo(x2, -y2);
        cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
        cb.setLineWidth(thickness);
        if (color.getAlpha() < 255) {
            cb.saveState();
            float alpha = color.getAlpha() / 255f;
            PdfGState gState = new PdfGState();
            gState.setStrokeOpacity(alpha);
            cb.setGState(gState);
        }
        cb.stroke();
        if (color.getAlpha() < 255) {
            cb.restoreState();
        }
    }
}

From source file:org.frobic.colorednodes.renderers.NewNodeRenderer.java

License:Open Source License

@Override
public void renderPDF(Item item, PDFTarget target, PreviewProperties properties) {
    Float x = item.getData(NodeItem.X);
    Float y = item.getData(NodeItem.Y);
    Float size = item.getData(NodeItem.SIZE);
    Float angle = item.getData(NodeItem.ANGLE);
    size /= 2f;//from ww w . j  a  v a  2s .c  o  m
    Color color = item.getData(NodeItem.COLOR);
    Integer nbcolors = item.getData(NodeItem.NBCOLOR);
    Color[] colors = item.getData(NodeItem.COLORS);
    Color borderColor = ((DependantColor) properties.getValue(PreviewProperty.NODE_BORDER_COLOR))
            .getColor(color);
    float borderSize = properties.getFloatValue(PreviewProperty.NODE_BORDER_WIDTH);
    float alpha = properties.getIntValue(PreviewProperty.NODE_OPACITY) / 100f;

    PdfContentByte cb = target.getContentByte();
    cb.setRGBColorStroke(borderColor.getRed(), borderColor.getGreen(), borderColor.getBlue());
    cb.setLineWidth(borderSize);
    cb.setRGBColorFill(color.getRed(), color.getGreen(), color.getBlue());
    if (alpha < 1f) {
        cb.saveState();
        PdfGState gState = new PdfGState();
        gState.setFillOpacity(alpha);
        gState.setStrokeOpacity(alpha);
        cb.setGState(gState);
    }
    for (int i = 0; i < nbcolors; i++) {
        cb.setRGBColorFill(colors[nbcolors - i - 1].getRed(), colors[nbcolors - i - 1].getGreen(),
                colors[nbcolors - i - 1].getBlue());
        if (size >= 0.5) {
            cb.newPath();
            ArrayList ar = cb.bezierArc(x - size, -y + size, x + size, 0 - size - y,
                    360f * (nbcolors - i - 1) / nbcolors + (360f / 6.28f) * angle, 360f * (1) / nbcolors);
            //cb.arc(x-size,-y+size,x+size,0-size-y,360f*(nbcolors-i-1)/nbcolors+angle,360f*(1)/nbcolors) ;
            cb.moveTo(x, -y);
            float pt[] = (float[]) ar.get(0);
            cb.moveTo(pt[0], pt[1]);
            for (int k = 0; k < ar.size(); ++k) {
                pt = (float[]) ar.get(k);
                cb.curveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);
            }
            cb.lineTo(x, -y);
            //strokeAndFill();
            //            cb.ClosePathFillStroke();
            if (borderSize > 0) {
                cb.fill();
            } else {
                cb.fill();
            }

            if (borderSize > 0) {
                cb.circle(x, -y, size);
                cb.stroke();
            }
        }
    }
    if (alpha < 1f) {
        cb.restoreState();
    }
}

From source file:org.gephi.edgelayout.api.SubdividedEdgeRenderer.java

License:Open Source License

private void renderSimplePDFItem(SubdividedEdgeItem item, RenderTarget target, PreviewProperties properties,
        Point2D.Double[] points) {
    Color color = new Color(originalColor.getRed(), originalColor.getGreen(), originalColor.getBlue(),
            (int) (255 * alpha));
    PDFTarget pdfTarget = (PDFTarget) target;
    PdfContentByte cb = pdfTarget.getContentByte();
    for (int i = 0; i < points.length - 1; i++) {
        cb.moveTo((float) points[i].x, (float) points[i].y);
        cb.lineTo((float) points[i + 1].x, (float) points[i + 1].y);
    }// w w w.j av  a 2  s .  co  m
    cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
    cb.setLineWidth(thickness);
    if (color.getAlpha() < 255) {
        cb.saveState();
        float alpha = color.getAlpha() / 255f;
        PdfGState gState = new PdfGState();
        gState.setStrokeOpacity(alpha);
        cb.setGState(gState);
    }
    cb.stroke();
    if (color.getAlpha() < 255) {
        cb.restoreState();
    }
}

From source file:org.gephi.edgelayout.api.SubdividedEdgeRenderer.java

License:Open Source License

private void renderBigPDFItem(SubdividedEdgeBigItem item, RenderTarget target, PreviewProperties properties) {
    for (SortedEdgeWrapper edgeWrapper : item.edges) {
        Edge edge = edgeWrapper.edge;//w ww  .j a v a  2 s . com
        EdgeLayoutData data = (EdgeLayoutData) edge.getEdgeData().getLayoutData();
        Point2D.Double[] points = data.getSubdivisonPoints();

        if (data.getEdgeColor() == null || points == null) {
            continue;
        }
        Color color = new Color(data.getEdgeColor().getRed(), data.getEdgeColor().getGreen(),
                data.getEdgeColor().getBlue(), (int) (255 * alpha));
        PDFTarget pdfTarget = (PDFTarget) target;
        PdfContentByte cb = pdfTarget.getContentByte();
        for (int i = 0; i < points.length - 1; i++) {
            cb.moveTo((float) points[i].x, (float) points[i].y);
            cb.lineTo((float) points[i + 1].x, (float) points[i + 1].y);
        }
        cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
        cb.setLineWidth(thickness);

        float usedAlpha = (forceAlpha ? intAlpha : color.getAlpha());
        if (usedAlpha < 255) {
            cb.saveState();
            float alpha = usedAlpha / 255f;
            PdfGState gState = new PdfGState();
            gState.setStrokeOpacity(alpha);
            cb.setGState(gState);
        }
        cb.stroke();
        if (usedAlpha < 255) {
            cb.restoreState();
        }
    }
}

From source file:org.gephi.edgelayout.api.SubdividedEdgeRenderer.java

License:Open Source License

private void renderBigAndComplexPDFItem(SubdividedEdgeBigItem item, RenderTarget target,
        PreviewProperties properties) {//www  .  ja  va 2 s . c  om
    for (SortedEdgeWrapper edgeWrapper : item.edges) {
        Edge edge = edgeWrapper.edge;
        EdgeLayoutData data = (EdgeLayoutData) edge.getEdgeData().getLayoutData();
        Point2D.Double[] points = data.getSubdivisonPoints();

        if (data.getSubdivisionEdgeColor() == null || data.getSubdivisionEdgeColor()[edgeWrapper.id] == null
                || points == null) {
            continue;
        }

        Color color = data.getSubdivisionEdgeColor()[edgeWrapper.id];
        PDFTarget pdfTarget = (PDFTarget) target;
        PdfContentByte cb = pdfTarget.getContentByte();
        int i = edgeWrapper.id;
        if (i == points.length - 1) {
            continue;
        }
        cb.moveTo((float) points[i].x, (float) points[i].y);
        cb.lineTo((float) points[i + 1].x, (float) points[i + 1].y);
        cb.setRGBColorStroke(color.getRed(), color.getGreen(), color.getBlue());
        cb.setLineWidth(thickness);

        float usedAlpha = (forceAlpha ? intAlpha : color.getAlpha());
        if (usedAlpha < 255) {
            cb.saveState();
            float alpha = usedAlpha / 255f;
            PdfGState gState = new PdfGState();
            gState.setStrokeOpacity(alpha);
            cb.setGState(gState);
        }
        cb.stroke();
        if (usedAlpha < 255) {
            cb.restoreState();
        }
    }
}