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());
}
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);
}
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;
}
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();
}
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;
}
Aggregations