private void saveView()

in tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/doc/DiagramGenerator.java [337:384]


    private void saveView(final Dimension currentSize, final Dimension desiredSize, final String name, final VisualizationViewer<Node, Edge> viewer) {
        BufferedImage bi = new BufferedImage(currentSize.width, currentSize.height, BufferedImage.TYPE_INT_ARGB);

        final Graphics2D g = bi.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

        final boolean db = viewer.isDoubleBuffered();
        viewer.setDoubleBuffered(false);
        viewer.paint(g);
        viewer.setDoubleBuffered(db);
        if (!currentSize.equals(desiredSize)) {
            final double xFactor = desiredSize.width * 1. / currentSize.width;
            final double yFactor = desiredSize.height * 1. / currentSize.height;
            final double factor = Math.min(xFactor, yFactor);
            info("optimal size is (" + currentSize.width + ", " + currentSize.height + ")");
            info("scaling with a factor of " + factor);

            final AffineTransform tx = new AffineTransform();
            tx.scale(factor, factor);
            final AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
            BufferedImage biNew = new BufferedImage((int) (bi.getWidth() * factor), (int) (bi.getHeight() * factor), bi.getType());
            bi = op.filter(bi, biNew);
        }
        g.dispose();

        OutputStream os = null;
        try {
            final File file = new File(output, (outputFileName != null ? outputFileName : name) + "." + format);
            os = new FileOutputStream(file);
            if (!ImageIO.write(bi, format, os)) {
                throw new IllegalStateException("can't save picture " + name + "." + format);
            }
            info("Saved " + file.getAbsolutePath());
        } catch (final IOException e) {
            throw new IllegalStateException("can't save the diagram", e);
        } finally {
            if (os != null) {
                try {
                    os.flush();
                    os.close();
                } catch (final IOException e) {
                    // no-op
                }
            }
        }
    }