package zhuye;
|
|
import java.awt.BasicStroke;
|
import java.awt.Color;
|
import java.awt.Graphics2D;
|
import java.awt.Shape;
|
import java.awt.Stroke;
|
import java.awt.geom.Ellipse2D;
|
import java.awt.geom.Path2D;
|
import java.awt.geom.Point2D;
|
import java.util.List;
|
|
/**
|
* Utility renderer for handheld boundary previews.
|
*/
|
public final class adddikuaiyulan {
|
private static final Color HANDHELD_BOUNDARY_FILL = new Color(51, 153, 255, 60);
|
private static final Color HANDHELD_BOUNDARY_BORDER = new Color(0, 100, 0, 220);
|
private static final Color HANDHELD_BOUNDARY_POINT = new Color(0, 100, 0);
|
|
private adddikuaiyulan() {
|
}
|
|
public static void drawPreview(Graphics2D g2d,
|
List<Point2D.Double> previewPoints,
|
double scale,
|
boolean previewActive) {
|
if (g2d == null || !previewActive || previewPoints == null || previewPoints.isEmpty()) {
|
return;
|
}
|
|
Path2D.Double path = new Path2D.Double();
|
boolean started = false;
|
for (Point2D.Double point : previewPoints) {
|
if (point == null || !Double.isFinite(point.x) || !Double.isFinite(point.y)) {
|
continue;
|
}
|
if (!started) {
|
path.moveTo(point.x, point.y);
|
started = true;
|
} else {
|
path.lineTo(point.x, point.y);
|
}
|
}
|
|
if (!started) {
|
return;
|
}
|
|
Stroke originalStroke = g2d.getStroke();
|
Color originalColor = g2d.getColor();
|
|
if (previewPoints.size() >= 3) {
|
path.closePath();
|
g2d.setColor(HANDHELD_BOUNDARY_FILL);
|
g2d.fill(path);
|
}
|
|
float outlineWidth =0.1f;
|
g2d.setStroke(new BasicStroke(outlineWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
|
g2d.setColor(HANDHELD_BOUNDARY_BORDER);
|
g2d.draw(path);
|
|
double markerSize = 0.2d;
|
double markerRadius = markerSize / 2.0d;
|
|
for (Point2D.Double point : previewPoints) {
|
if (point == null || !Double.isFinite(point.x) || !Double.isFinite(point.y)) {
|
continue;
|
}
|
Shape marker = new Ellipse2D.Double(point.x - markerRadius, point.y - markerRadius, markerSize, markerSize);
|
g2d.setColor(HANDHELD_BOUNDARY_POINT);
|
g2d.fill(marker);
|
}
|
|
g2d.setStroke(originalStroke);
|
g2d.setColor(originalColor);
|
}
|
}
|