From e2a5fc101c26fab1a238813c91a508df2928bb48 Mon Sep 17 00:00:00 2001 From: Klemek Date: Sun, 4 Nov 2018 13:33:48 +0100 Subject: [PATCH] v1.1.1 : code optimization --- .../{mapping-1.1.jar => mapping-1.1.1.jar} | Bin 19387 -> 19044 bytes pom.xml | 2 +- .../java/fr/klemek/mapping/MainPanel.java | 170 +++++++++--------- .../java/fr/klemek/mapping/MouseListener.java | 32 ++++ 4 files changed, 119 insertions(+), 85 deletions(-) rename download/{mapping-1.1.jar => mapping-1.1.1.jar} (67%) create mode 100644 src/main/java/fr/klemek/mapping/MouseListener.java diff --git a/download/mapping-1.1.jar b/download/mapping-1.1.1.jar similarity index 67% rename from download/mapping-1.1.jar rename to download/mapping-1.1.1.jar index efca413634ba73b8ee745a77d7f239d022f76b82..4349c05822791cc4117dee57122d9856fe3eb40b 100644 GIT binary patch delta 4385 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 delta 4806 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.klemek mapping - 1.1 + 1.1.1 diff --git a/src/main/java/fr/klemek/mapping/MainPanel.java b/src/main/java/fr/klemek/mapping/MainPanel.java index 5d18200..b5fcce5 100644 --- a/src/main/java/fr/klemek/mapping/MainPanel.java +++ b/src/main/java/fr/klemek/mapping/MainPanel.java @@ -1,8 +1,6 @@ package fr.klemek.mapping; import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.event.MouseMotionListener; import javax.swing.*; @@ -13,10 +11,10 @@ class MainPanel extends JPanel { private float ratio = DEFAULT_RATIO; private transient Map map; - private int cx; - private int cy; - private float mw; - private float mh; + private int x0; + private int y0; + private float xstep; + private float ystep; private int sx = -1; private int sy = -1; @@ -29,45 +27,7 @@ class MainPanel extends JPanel { MainPanel(Map map) { this.map = map; - - this.addMouseMotionListener(new MouseMotionListener() { - @Override - public void mouseDragged(MouseEvent e) { - //ignored - } - - @Override - public void mouseMoved(MouseEvent e) { - sx = -1; - sy = -1; - if (MainPanel.this.xs != null) { - for (int x = 0; x < MainPanel.this.map.size(); x++) - for (int y = 0; y < MainPanel.this.map.size(); y++) - if (e.getPoint().distance(MainPanel.this.xs[x][y], MainPanel.this.ys[x][y]) < 6) { - sx = x; - sy = y; - return; - } - } - } - }); - this.addMouseWheelListener(e -> { - if (sx >= 0 && sy >= 0) { - if (e.isShiftDown()) { - for (int dx = -1; dx < 2; dx++) - for (int dy = -1; dy < 2; dy++) - if (sx + dx >= 0 && sx + dx < MainPanel.this.map.size() - && sy + dy >= 0 && sy + dy < MainPanel.this.map.size()) - MainPanel.this.map.set(sx + dx, sy + dy, MainPanel.this.map.get(sx + dx, sy + dy) - + (e.getPreciseWheelRotation() < 0 ? 1f : -1f) - * (e.isControlDown() ? 1f : .1f)); - } else { - MainPanel.this.map.set(sx, sy, MainPanel.this.map.get(sx, sy) - + (e.getPreciseWheelRotation() < 0 ? 1f : -1f) - * (e.isControlDown() ? 1f : .1f)); - } - } - }); + new MouseListener(this); } @Override @@ -77,56 +37,65 @@ class MainPanel extends JPanel { RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); - int w = this.getWidth(); - int h = this.getHeight(); - this.cx = Math.round(w / 2f); - this.cy = Math.round(h / 2f); - if (w > h) { - this.mh = h * SIZE * ratio; - this.mw = mh / ratio; - } else { - this.mw = w * SIZE; - this.mh = mw * ratio; - } - - g2.clearRect(0, 0, w, h); - drawMap(g2); + g2.clearRect(0, 0, this.getWidth(), this.getHeight()); + this.computeNodes(); + if (this.showGrid) + this.drawGrid(g2); + this.drawMap(g2); } - private void drawMap(Graphics2D g2) { - g2.setStroke(new BasicStroke(1f)); + private void computeNodes() { + int w = this.getWidth(); + int h = this.getHeight(); - int x0 = Math.round(this.cx - this.mw / 2f); + float mw; + float mh; + if (w > h) { + mh = h * SIZE * ratio; + mw = mh / ratio; + } else { + mw = w * SIZE; + mh = mw * ratio; + } + + this.x0 = Math.round(w / 2f - mw / 2f); + this.y0 = Math.round(h / 2f); this.xs = new int[this.map.size()][this.map.size()]; this.ys = new int[this.map.size()][this.map.size()]; - float xstep = this.mw / (2 * (this.map.size() - 1)); - float ystep = this.mh / (2 * (this.map.size() - 1)); - - g2.setColor(Color.GRAY); + this.xstep = mw / (2 * (this.map.size() - 1)); + this.ystep = mh / (2 * (this.map.size() - 1)); for (int x = 0; x < this.map.size(); x++) { for (int y = 0; y < this.map.size(); y++) { - Point p = this.getPoint(x0, xstep, ystep, x, y, this.map.get(x, y)); - + Point p = this.getPoint(x, y, this.map.get(x, y)); this.xs[x][y] = p.x; this.ys[x][y] = p.y; - - if (this.showGrid) { - Point p0 = this.getPoint(x0, xstep, ystep, x, y, 0); - if (x > 0) { - Point p1 = this.getPoint(x0, xstep, ystep, x - 1, y, 0); - g2.drawLine(p0.x, p0.y, p1.x, p1.y); - } - if (y > 0) { - Point p1 = this.getPoint(x0, xstep, ystep, x, y - 1, 0); - g2.drawLine(p0.x, p0.y, p1.x, p1.y); - } - g2.drawLine(p0.x, p0.y, p.x, p.y); - } } } + } + + private void drawGrid(Graphics2D g2) { + g2.setColor(Color.GRAY); + for (int x = 0; x < this.map.size(); x++) { + for (int y = 0; y < this.map.size(); y++) { + Point p0 = this.getPoint(x, y, 0); + if (x > 0) { + Point p1 = this.getPoint(x - 1, y, 0); + g2.drawLine(p0.x, p0.y, p1.x, p1.y); + } + if (y > 0) { + Point p1 = this.getPoint(x, y - 1, 0); + g2.drawLine(p0.x, p0.y, p1.x, p1.y); + } + g2.drawLine(p0.x, p0.y, this.xs[x][y], this.ys[x][y]); + } + } + } + + private void drawMap(Graphics2D g2) { + for (int x = 0; x < this.map.size(); x++) { for (int y = 0; y < this.map.size(); y++) { @@ -136,15 +105,15 @@ class MainPanel extends JPanel { } } - private Point getPoint(int x0, float xstep, float ystep, int x, int y, float value) { + private Point getPoint(int x, int y, float value) { float center = this.map.size() / 2f; double r = Math.sqrt(Math.pow(x - center, 2) + Math.pow(y - center, 2)); double a = Math.atan2(y - center, x - center); double x1 = center + r * Math.cos(a + this.angle); double y1 = center + r * Math.sin(a + this.angle); return new Point( - Math.round(x0 + xstep * (float) x1 + xstep * (float) y1), - Math.round(this.cy - ystep * (float) x1 + ystep * (float) y1 - ystep * value) + Math.round(this.x0 + this.xstep * (float) x1 + this.xstep * (float) y1), + Math.round(this.y0 - this.ystep * (float) x1 + this.ystep * (float) y1 - this.ystep * value) ); } @@ -162,6 +131,39 @@ class MainPanel extends JPanel { } } + void computeMouseMoved(Point position) { + sx = -1; + sy = -1; + if (MainPanel.this.xs != null) { + for (int x = 0; x < MainPanel.this.map.size(); x++) + for (int y = 0; y < MainPanel.this.map.size(); y++) + if (position.distance(MainPanel.this.xs[x][y], MainPanel.this.ys[x][y]) < 6) { + sx = x; + sy = y; + return; + } + } + } + + void computeMouseWheel(int amount, boolean controlDown, boolean shiftDown) { + if (sx >= 0 && sy >= 0) { + if (shiftDown) { + for (int dx = -1; dx < 2; dx++) + for (int dy = -1; dy < 2; dy++) + changeNode(amount, controlDown, sx + dx, sy + dy); + } else + changeNode(amount, controlDown, sx, sy); + } + } + + private void changeNode(int amount, boolean controlDown, int x, int y) { + if (x >= 0 && x < this.map.size() + && y >= 0 && y < this.map.size()) + this.map.set(x, y, MainPanel.this.map.get(x, y) + + amount * (controlDown ? -1f : -.1f)); + } + + float getRatio() { return ratio; } diff --git a/src/main/java/fr/klemek/mapping/MouseListener.java b/src/main/java/fr/klemek/mapping/MouseListener.java new file mode 100644 index 0000000..16a455b --- /dev/null +++ b/src/main/java/fr/klemek/mapping/MouseListener.java @@ -0,0 +1,32 @@ +package fr.klemek.mapping; + +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; + +public class MouseListener implements MouseMotionListener, MouseWheelListener { + + private MainPanel mp; + + MouseListener(MainPanel mp) { + this.mp = mp; + this.mp.addMouseWheelListener(this); + this.mp.addMouseMotionListener(this); + } + + @Override + public void mouseDragged(MouseEvent e) { + //ignored + } + + @Override + public void mouseMoved(MouseEvent e) { + this.mp.computeMouseMoved(e.getPoint()); + } + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + this.mp.computeMouseWheel(e.getWheelRotation(), e.isControlDown(), e.isShiftDown()); + } +}