Skip to content

Commit

Permalink
Clean up
Browse files Browse the repository at this point in the history
- Remove unused `ToolHelper` methods.
- Move measurement rendering into `AbstractDrawingLikeTool` so it isn't duplicated.
- Rename `AbstractDrawingTool` to `AbstractTemplateTool` since that is all it does now. Also remove anything that isn't
  used anymore.
  • Loading branch information
kwvanderlinde committed Oct 21, 2024
1 parent fd1df0f commit c1458ca
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 479 deletions.
77 changes: 0 additions & 77 deletions src/main/java/net/rptools/maptool/client/tool/ToolHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,8 @@
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.awt.geom.PathIterator;
import java.text.NumberFormat;
import javax.swing.AbstractAction;
import javax.swing.SwingUtilities;
Expand Down Expand Up @@ -78,72 +75,6 @@ public static void drawIsoRectangleMeasurement(
}
}

public static void drawDiamondMeasurement(ZoneRenderer renderer, Graphics2D g, Shape diamond) {
double[] north = null;
double[] west = null;
double[] east = null;
PathIterator path = diamond.getPathIterator(getPaintTransform(renderer));
while (!path.isDone()) {
double[] coords = new double[2];
int segType = path.currentSegment(coords);
if (segType != PathIterator.SEG_CLOSE) {
if (north == null) {
north = coords;
}
if (west == null) {
west = coords;
}
if (east == null) {
east = coords;
}
if (coords[1] < north[1]) {
north = coords;
}
if (coords[0] < west[0]) {
west = coords;
}
if (coords[0] > east[0]) {
east = coords;
}
}
path.next();
}
// Measure
int nx = (int) north[0];
int ny = (int) north[1];
int ex = (int) east[0];
int ey = (int) east[1];
int wx = (int) west[0];
int wy = (int) west[1];
if (g != null) {
g.setColor(Color.white);
g.setStroke(new BasicStroke(3));
g.drawLine(nx, ny - 20, nx, ny - 10);
g.drawLine(nx, ny - 15, ex, ey - 15);
g.drawLine(ex, ey - 20, ex, ey - 10);
g.drawLine(nx, ny - 15, wx, wy - 15);
g.drawLine(wx, wy - 20, wx, wy - 10);
g.setColor(Color.black);
g.setStroke(new BasicStroke(1));
g.drawLine(nx, ny - 20, nx, ny - 10);
g.drawLine(nx, ny - 15, ex, ey - 15);
g.drawLine(ex, ey - 20, ex, ey - 10);
g.drawLine(nx, ny - 15, wx, wy - 15);
g.drawLine(wx, wy - 20, wx, wy - 10);
// g.setPaintMode();
String displayString =
NumberFormat.getInstance()
.format(
isometricDistance(renderer, new ScreenPoint(nx, ny), new ScreenPoint(ex, ey)));
GraphicsUtil.drawBoxedString(g, displayString, nx + 25, ny - 25);
displayString =
NumberFormat.getInstance()
.format(
isometricDistance(renderer, new ScreenPoint(nx, ny), new ScreenPoint(wx, wy)));
GraphicsUtil.drawBoxedString(g, displayString, nx - 25, ny - 25);
}
}

public static void drawBoxedMeasurement(
ZoneRenderer renderer, Graphics2D g, ScreenPoint startPoint, ScreenPoint endPoint) {
if (!MapTool.getFrame().isPaintDrawingMeasurement()) {
Expand Down Expand Up @@ -243,17 +174,9 @@ private static double euclideanDistance(ZoneRenderer renderer, ScreenPoint p1, S

private static double isometricDistance(ZoneRenderer renderer, ScreenPoint p1, ScreenPoint p2) {
double b = p2.y - p1.y;
// return b;
return 2 * b * renderer.getZone().getUnitsPerCell() / renderer.getScaledGridSize();
}

protected static AffineTransform getPaintTransform(ZoneRenderer renderer) {
AffineTransform transform = new AffineTransform();
transform.translate(renderer.getViewOffsetX(), renderer.getViewOffsetY());
transform.scale(renderer.getScale(), renderer.getScale());
return transform;
}

protected static AbstractAction getDeleteTokenAction() {
return deleteTokenAction;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,14 @@
*/
package net.rptools.maptool.client.tool.drawing;

import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import net.rptools.maptool.client.ScreenPoint;
import net.rptools.maptool.client.swing.SwingUtil;
import net.rptools.maptool.client.tool.DefaultTool;
import net.rptools.maptool.client.tool.ToolHelper;
import net.rptools.maptool.client.ui.zone.ZoneOverlay;
import net.rptools.maptool.client.ui.zone.renderer.ZoneRenderer;
import net.rptools.maptool.model.ZonePoint;

public abstract class AbstractDrawingLikeTool extends DefaultTool implements ZoneOverlay {
Expand Down Expand Up @@ -60,4 +63,39 @@ protected ZonePoint getPoint(MouseEvent e) {
}
return zp;
}

/** Draws the shape measurement as part of the overlay. */
protected void drawMeasurementOverlay(
ZoneRenderer renderer, Graphics2D g, Measurement measurement) {
switch (measurement) {
case null -> {}
case Measurement.Rectangular rectangular -> {
var rectangle = rectangular.bounds();
ToolHelper.drawBoxedMeasurement(
renderer,
g,
ScreenPoint.fromZonePoint(renderer, rectangle.getX(), rectangle.getY()),
ScreenPoint.fromZonePoint(renderer, rectangle.getMaxX(), rectangle.getMaxY()));
}
case Measurement.LineSegment lineSegment -> {
var p1 =
ScreenPoint.fromZonePoint(renderer, lineSegment.p1().getX(), lineSegment.p1().getY());
var p2 =
ScreenPoint.fromZonePoint(renderer, lineSegment.p2().getX(), lineSegment.p2().getY());
ToolHelper.drawMeasurement(renderer, g, p1, p2);
}
case Measurement.IsoRectangular isoRectangular -> {
var north =
ScreenPoint.fromZonePoint(
renderer, isoRectangular.north().getX(), isoRectangular.north().getY());
var west =
ScreenPoint.fromZonePoint(
renderer, isoRectangular.west().getX(), isoRectangular.west().getY());
var east =
ScreenPoint.fromZonePoint(
renderer, isoRectangular.east().getX(), isoRectangular.east().getY());
ToolHelper.drawIsoRectangleMeasurement(renderer, g, north, west, east);
}
}
}
}
Loading

0 comments on commit c1458ca

Please sign in to comment.