Changeset 23757 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-10-22T22:28:37+02:00 (14 years ago)
Author:
oliverw
Message:
  • Made min/max bigger
  • Avoid overlapping labels
Location:
applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/DefaultElevationProfileRenderer.java

    r23756 r23757  
    2727import java.awt.geom.AffineTransform;
    2828import java.awt.geom.Point2D;
     29import java.util.ArrayList;
     30import java.util.List;
    2931
    3032import org.openstreetmap.josm.data.gpx.WayPoint;
     
    4547         *
    4648         */
    47         private static final int TRIANGLE_BASESIZE = 12;
     49        private static final int TRIANGLE_BASESIZE = 24;
    4850        /**
    4951         *
     
    6365        // private static final double RAD_270 = Math.PI * 1.5;
    6466        private static final double RAD_90 = Math.PI * 0.5;
     67       
     68        private List<Rectangle> forbiddenRects = new ArrayList<Rectangle>();
    6569
    6670        /*
     
    405409                int height = g.getFont().getSize() + g.getFontMetrics().getLeading() + 5;
    406410
     411                Rectangle r = new Rectangle(x - (width / 2), y - (height / 2), width, height);
     412               
     413                if (isForbiddenArea(r)) {
     414                        return; // no space left, skip this label
     415                }
     416               
    407417                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    408                                 RenderingHints.VALUE_ANTIALIAS_ON);
    409                
     418                                RenderingHints.VALUE_ANTIALIAS_ON);             
    410419                GradientPaint gradient = new GradientPaint(x, y, Color.WHITE, x, y
    411                                 + height, secondGradColor, false);
     420                                + (height/2), secondGradColor, false);
    412421                g2d.setPaint(gradient);         
    413422
    414                 Rectangle r = new Rectangle(x - (width / 2), y - (height / 2), width, height);
     423               
    415424                g2d.fillRoundRect(r.x, r.y, r.width, r.height, ROUND_RECT_RADIUS, ROUND_RECT_RADIUS);
    416425               
     
    419428                g2d.drawRoundRect(r.x, r.y, r.width, r.height, ROUND_RECT_RADIUS, ROUND_RECT_RADIUS);           
    420429                g2d.drawString(s, x - (width / 2) + 5, y + (height / 2) - 3);
     430               
     431                forbiddenRects.add(r);
     432        }
     433       
     434        /**
     435         * Checks, if the rectangle has been 'reserved' by a previous draw action.
     436         * @param r The area to check for.
     437         * @return true; if area is already occupied by another rectangle.
     438         */
     439        private boolean isForbiddenArea(Rectangle r) {
     440               
     441                for (Rectangle rTest : forbiddenRects) {
     442                        if (r.intersects(rTest)) return true;
     443                }
     444                return false;
     445        }
     446
     447        @Override
     448        public void beginRendering() {
     449                forbiddenRects.clear();
     450        }
     451
     452        @Override
     453        public void finishRendering() {
     454                // nothing to do currently             
    421455        }
    422456}
  • applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileLayer.java

    r23756 r23757  
    1818
    1919import java.awt.Graphics2D;
     20
    2021import javax.swing.Action;
    2122import javax.swing.Icon;
     
    4445        private IElevationProfile profile;
    4546        private IElevationProfileRenderer renderer = new DefaultElevationProfileRenderer();
    46         private WayPoint selWayPoint = null;
     47        private WayPoint selWayPoint = null;   
    4748
    4849        /**
     
    158159
    159160                if (profile != null) {
     161                        renderer.beginRendering();
    160162                        for (WayPoint wpt : profile.getWayPoints()) {
    161163                                int ele = (int) WayPointHelper.getElevation(wpt);
     
    207209                        System.err.println("Layer#paint: No profile");
    208210                }
     211               
     212                renderer.finishRendering();
    209213        }
    210214
  • applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/IElevationProfileRenderer.java

    r23709 r23757  
    5050         */
    5151        void renderWayPoint(Graphics g, IElevationProfile profile, MapView mv, WayPoint wpt, ElevationWayPointKind kind);
     52       
     53        /**
     54         * Notifies the renderer that rendering starts.
     55         */
     56        void beginRendering();
     57       
     58        /**
     59         * Notifies the renderer that rendering has been finished.
     60         */
     61        void finishRendering();
    5262}
Note: See TracChangeset for help on using the changeset viewer.