Ignore:
Timestamp:
2006-03-25T16:21:09+01:00 (18 years ago)
Author:
imi
Message:
  • refactored GpsPoint to be immutable and added LatLon and NorthEast
  • refactored Bounding Box calculations
  • various other renames
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/gui/MapMover.java

    r66 r71  
    88import java.awt.event.MouseWheelListener;
    99
    10 import org.openstreetmap.josm.data.GeoPoint;
     10import org.openstreetmap.josm.data.coor.EastNorth;
    1111
    1212/**
     
    2222         * when moving around started.
    2323         */
    24         private GeoPoint mousePosMove;
     24        private EastNorth mousePosMove;
    2525        /**
    2626         * The map to move around.
     
    5151                        if (mousePosMove == null)
    5252                                startMovement(e);
    53                         GeoPoint center = nc.getCenter();
    54                         GeoPoint mouseCenter = nc.getPoint(e.getX(), e.getY(), false);
    55                         GeoPoint p = new GeoPoint();
    56                         p.x = mousePosMove.x + center.x - mouseCenter.x; 
    57                         p.y = mousePosMove.y + center.y - mouseCenter.y;
     53                        EastNorth center = nc.getCenter();
     54                        EastNorth mouseCenter = nc.getEastNorth(e.getX(), e.getY());
     55                        EastNorth p = new EastNorth(
     56                                        mousePosMove.east() + center.east() - mouseCenter.east(),
     57                                        mousePosMove.north() + center.north() - mouseCenter.north());
    5858                        nc.zoomTo(p, nc.getScale());
    5959                } else
     
    8686         */
    8787        private void startMovement(MouseEvent e) {
    88                 mousePosMove = nc.getPoint(e.getX(), e.getY(), false);
     88                mousePosMove = nc.getEastNorth(e.getX(), e.getY());
    8989                oldCursor = nc.getCursor();
    9090                nc.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
     
    108108         */
    109109        public void mouseWheelMoved(MouseWheelEvent e) {
     110                int w = nc.getWidth();
     111                int h = nc.getHeight();
     112
    110113                double zoom = Math.max(0.1, 1 + e.getWheelRotation()/5.0);
    111                 double zoomfactor = (zoom -1)/2+1;
    112                 int newHalfWidth = (int) (nc.getWidth()*zoomfactor - nc.getWidth()/2);
    113                 int centerx = e.getX() - (e.getX()-nc.getWidth()/2)*newHalfWidth*2/nc.getWidth();
    114                 int newHalfHeight = (int) (nc.getHeight()*zoomfactor - nc.getHeight()/2);
    115                 int centery = e.getY() - (e.getY()-nc.getHeight()/2)*newHalfHeight*2/nc.getHeight();
    116                 GeoPoint newCenter = nc.getPoint(centerx, centery, false);
     114                double zoomfactor = (zoom-1)/2+1;
     115
     116                double newHalfWidth = w*zoomfactor - w/2;
     117                double newHalfHeight = h*zoomfactor - h/2;
     118                double centerx = e.getX() - (e.getX()-w/2)*newHalfWidth*2/w;
     119                double centery = e.getY() - (e.getY()-h/2)*newHalfHeight*2/h;
     120                EastNorth newCenter = nc.getEastNorth((int)centerx, (int)centery);
     121               
    117122                nc.zoomTo(newCenter, nc.getScale()*zoom);
    118123        }
Note: See TracChangeset for help on using the changeset viewer.