Search in sources :

Example 41 with Path2D

use of java.awt.geom.Path2D in project java-swing-tips by aterai.

the class StarIcon method initStar.

// class MyDragGestureListener implements DragGestureListener {
// @Override public void dragGestureRecognized(DragGestureEvent dge) {
// File outfile;
// try {
// outfile = File.createTempFile("starburst", ".svg");
// FileWriter w = new FileWriter(outfile);
// w.writeData(textArea.getText());
// // outfile.deleteOnExit();
// } catch (IOException ex) {
// Toolkit.getDefaultToolkit().beep();
// JOptionPane.showMessageDialog(
// null, "Could not create file.", "Error", JOptionPane.ERROR_MESSAGE);
// return;
// }
// if (Objects.isNull(outfile)) {
// return;
// }
// File tmpFile = outfile;
// Transferable tran = new Transferable() {
// @Override public Object getTransferData(DataFlavor flavor) {
// return Arrays.asList(tmpFile);
// }
// 
// @Override public DataFlavor[] getTransferDataFlavors() {
// return new DataFlavor[] {DataFlavor.javaFileListFlavor};
// }
// 
// @Override public boolean isDataFlavorSupported(DataFlavor flavor) {
// return flavor.equals(DataFlavor.javaFileListFlavor);
// }
// };
// DragSourceAdapter dsa = new DragSourceAdapter() {
// @Override public void dragDropEnd(DragSourceDropEvent e) {
// if (e.getDropSuccess()) {
// System.out.println(e);
// }
// }
// };
// dge.startDrag(DragSource.DefaultMoveDrop, tran, dsa);
// }
// }
public void initStar() {
    int r1 = outer.getNumber().intValue();
    int r2 = inner.getNumber().intValue();
    int vc = vcModel.getNumber().intValue();
    boolean antialias = check.isSelected();
    // outer.setMinimum(r2 + 1);
    Path2D star = SvgUtils.makeStar(r1, r2, vc);
    label.setIcon(new StarIcon(star, antialias));
    int min = Math.min(r1, r2);
    int max = Math.max(r1, r2);
    String fmt1 = "addendum_circle_radius=\"%d\" ";
    String fmt2 = "dedendum_circle_radius =\"%d\" ";
    String fmt3 = "number_of_teeth=\"%dT\"";
    String fmt = fmt1 + fmt2 + fmt3;
    String desc = String.format(fmt, max, min, vc);
    String style = styleField.getText().trim();
    StringBuilder sb = SvgUtils.makeStarburstSvg(star.getPathIterator(null), max * 2, style, desc);
    // Font font = new Font(Font.MONOSPACED, Font.PLAIN, 200);
    // FontRenderContext frc = new FontRenderContext(null, true, true);
    // Shape copyright = new TextLayout("\u3042", font, frc).getOutline(null);
    // Rectangle r = copyright.getBounds();
    // AffineTransform at = AffineTransform.getTranslateInstance(0d, r.getHeight());
    // StringBuilder sb = makeStarburstSvg(copyright.getPathIterator(at), 200, styleStr, desc);
    textArea.setText(sb.toString());
}
Also used : Path2D(java.awt.geom.Path2D)

Example 42 with Path2D

use of java.awt.geom.Path2D in project java-swing-tips by aterai.

the class PaintPanel method updateUI.

@Override
public void updateUI() {
    removeMouseMotionListener(handler);
    removeMouseListener(handler);
    super.updateUI();
    handler = new MouseInputAdapter() {

        private Path2D path;

        @Override
        public void mousePressed(MouseEvent e) {
            path = new Path2D.Double();
            path.moveTo(e.getX(), e.getY());
            getList().add(path);
            e.getComponent().repaint();
        }

        @Override
        public void mouseDragged(MouseEvent e) {
            if (path != null) {
                path.lineTo(e.getX(), e.getY());
                e.getComponent().repaint();
            }
        }
    };
    addMouseMotionListener(handler);
    addMouseListener(handler);
}
Also used : MouseEvent(java.awt.event.MouseEvent) Path2D(java.awt.geom.Path2D) MouseInputAdapter(javax.swing.event.MouseInputAdapter)

Example 43 with Path2D

use of java.awt.geom.Path2D in project java-swing-tips by aterai.

the class BalloonToolTip method makeBalloonShape.

private Shape makeBalloonShape() {
    float w = getWidth() - 1f;
    float h = getHeight() - TRI_HEIGHT - 1f;
    float r = 10f;
    float cx = getWidth() * .5f;
    Path2D triangle = new Path2D.Float();
    triangle.moveTo(cx - TRI_HEIGHT, h);
    triangle.lineTo(cx, h + TRI_HEIGHT);
    triangle.lineTo(cx + TRI_HEIGHT, h);
    Area area = new Area(new RoundRectangle2D.Float(0f, 0f, w, h, r, r));
    area.add(new Area(triangle));
    return area;
}
Also used : Area(java.awt.geom.Area) Path2D(java.awt.geom.Path2D) RoundRectangle2D(java.awt.geom.RoundRectangle2D)

Example 44 with Path2D

use of java.awt.geom.Path2D in project java-swing-tips by aterai.

the class TitledBorderUtil method paintWrapBorder.

private void paintWrapBorder(Component c, Border bdr, Graphics g, Rectangle b, Rectangle l) {
    Graphics2D g2 = (Graphics2D) g.create();
    int pos = getPosition2();
    if (pos == TOP || pos == BOTTOM) {
        int tsp = TEXT_SPACING2;
        Path2D p = new Path2D.Float();
        appendRect(p, b.x, b.y, b.width, l.y - b.y);
        appendRect(p, b.x, l.y, l.x - b.x - tsp, l.height);
        appendRect(p, l.x + l.width + tsp, l.y, b.x - l.x + b.width - l.width - tsp, l.height);
        appendRect(p, b.x, l.y + l.height, b.width, b.y - l.y + b.height - l.height);
        g2.clip(p);
    }
    bdr.paintBorder(c, g2, b.x, b.y, b.width, b.height);
    g2.dispose();
}
Also used : Path2D(java.awt.geom.Path2D)

Example 45 with Path2D

use of java.awt.geom.Path2D in project java-swing-tips by aterai.

the class SilhouetteIcon method getOuterShape.

// Inspired from java - 'Fill' Unicode characters in labels - Stack Overflow
// https://stackoverflow.com/questions/18686199/fill-unicode-characters-in-labels
private static Area getOuterShape(Shape shape) {
    Area area = new Area();
    Path2D path = new Path2D.Double();
    PathIterator pi = shape.getPathIterator(null);
    double[] coords = new double[6];
    while (!pi.isDone()) {
        int pathSegmentType = pi.currentSegment(coords);
        switch(pathSegmentType) {
            case PathIterator.SEG_MOVETO:
                path.moveTo(coords[0], coords[1]);
                break;
            case PathIterator.SEG_LINETO:
                path.lineTo(coords[0], coords[1]);
                break;
            case PathIterator.SEG_QUADTO:
                path.quadTo(coords[0], coords[1], coords[2], coords[3]);
                break;
            case PathIterator.SEG_CUBICTO:
                path.curveTo(coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]);
                break;
            case PathIterator.SEG_CLOSE:
                path.closePath();
                area.add(createArea(path));
                path.reset();
                break;
            default:
                System.err.println("Unexpected value! " + pathSegmentType);
                break;
        }
        pi.next();
    }
    return area;
}
Also used : Area(java.awt.geom.Area) PathIterator(java.awt.geom.PathIterator) Path2D(java.awt.geom.Path2D)

Aggregations

Path2D (java.awt.geom.Path2D)126 Point2D (java.awt.geom.Point2D)20 Area (java.awt.geom.Area)16 Rectangle2D (java.awt.geom.Rectangle2D)13 Shape (java.awt.Shape)9 Point (java.awt.Point)8 Line2D (java.awt.geom.Line2D)8 PathIterator (java.awt.geom.PathIterator)8 ArrayList (java.util.ArrayList)8 AffineTransform (java.awt.geom.AffineTransform)7 GeneralPath (java.awt.geom.GeneralPath)7 Color (java.awt.Color)6 Graphics2D (java.awt.Graphics2D)6 Paint (java.awt.Paint)6 ShapeRoi (ij.gui.ShapeRoi)5 BasicStroke (java.awt.BasicStroke)4 RadialGradientPaint (java.awt.RadialGradientPaint)4 Point2D_F64 (georegression.struct.point.Point2D_F64)3 RoundRectangle2D (java.awt.geom.RoundRectangle2D)3 Vector2D (de.gurkenlabs.litiengine.util.geom.Vector2D)2