Skip to content

Commit 7730a58

Browse files
committed
Fixed grid display
Visual only: fixes a problem where the grid was being drawn out of alignment at most zoom levels. Also makes grid alignment more consistent at distant zoom.
1 parent c56fd58 commit 7730a58

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/com/modsim/gui/view/View.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.modsim.gui.view;
22

33
import java.awt.*;
4-
import java.awt.geom.AffineTransform;
4+
import java.awt.geom.*;
55
import java.text.DecimalFormat;
66

77
import javax.swing.*;
@@ -78,8 +78,8 @@ public void paintComponent(Graphics oldG) {
7878
g.setColor(Colors.grid);
7979
double xD = (camX + getWidth()/2);
8080
double yD = (camY + getHeight()/2);
81-
double xOff = (int)xD % (int)(Main.sim.grid * zoom);
82-
double yOff = (int)yD % (int)(Main.sim.grid * zoom);
81+
double xOff = xD % (Main.sim.grid * zoom);
82+
double yOff = yD % (Main.sim.grid * zoom);
8383
g.translate(xOff, yOff);
8484
drawGrid(g);
8585

@@ -168,13 +168,19 @@ public void drawGrid(Graphics2D g) {
168168
int xNum = (int)(getWidth() / grid);
169169
int yNum = (int)(getHeight() / grid);
170170

171+
AffineTransform oldxform = new AffineTransform(g.getTransform());
172+
Line2D verticalLine = new Line2D.Double(0.0, -grid, 0.0, getHeight() + grid);
173+
Line2D horizontalLine = new Line2D.Double(-grid, 0.0, getWidth() + grid, 0.0);
171174
for (int i = 0; i <= xNum + 1; i++) {
172-
g.drawLine((int)(i * grid), (int)-grid, (int)(i*grid), getHeight() + (int)grid);
175+
g.draw(verticalLine);
176+
g.translate(grid, 0.0);
173177
}
174-
178+
g.setTransform(oldxform);
175179
for (int i = 0; i <= yNum + 1; i++) {
176-
g.drawLine((int)-grid, (int)(i * grid), getWidth() + (int)grid, (int)(i*grid));
180+
g.draw(horizontalLine);
181+
g.translate(0.0, grid);
177182
}
183+
g.setTransform(oldxform);
178184
}
179185

180186
/**

0 commit comments

Comments
 (0)