Ignore:
Timestamp:
2010-10-22T22:10:52+02:00 (14 years ago)
Author:
oliverw
Message:
  • Show elevation level labels instead of hours
  • Fixed minor annoyances in drawLabel
Location:
applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation
Files:
3 edited

Legend:

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

    r23721 r23756  
    2828        ElevationGain,          // Elevation gain
    2929        ElevationLoss,          // Elevation loss       
     30        ElevationLevel,         // Elevation level (e. g. crossed 300m)
    3031        FullHour                        // Full Hour   
    3132}
  • applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/DefaultElevationProfileRenderer.java

    r23755 r23756  
    8787                switch (kind) {
    8888                case Plain:
     89                case ElevationLevel:
    8990                        if (z > profile.getAverageHeight()) {
    9091                                return HIGH_COLOR;
     
    111112                }
    112113
    113                 return null;
     114                throw new RuntimeException("Unknown way point kind: " + kind);
    114115        }
    115116
     
    185186                }
    186187               
     188                if (kind == ElevationWayPointKind.ElevationLevel) {
     189                        int ele = ((int)Math.rint(WayPointHelper.getElevation(wpt) / 100.0)) * 100;                                             
     190                        drawLabel(String.format("%dm", ele), pnt.x, pnt.y + g.getFontMetrics().getHeight(), g, c);
     191                }
     192               
    187193                if (kind == ElevationWayPointKind.Highlighted) {
    188194                        int eleH = (int) WayPointHelper.getElevation(wpt);
     
    190196                        int min = WayPointHelper.getMinuteOfWayPoint(wpt);
    191197                        drawSphere(g, Color.WHITE, c, pnt.x, pnt.y, BIG_WPT_RADIUS);
    192                         drawLabel(String.format("%02d:%02d", hour, min), pnt.x, pnt.y - g.getFontMetrics().getHeight(), g);
    193                         drawLabel(String.format("%dm", eleH), pnt.x, pnt.y + g.getFontMetrics().getHeight(), g);
     198                        drawLabel(String.format("%02d:%02d", hour, min), pnt.x, pnt.y - g.getFontMetrics().getHeight() - 5, g);
     199                        drawLabel(String.format("%dm", eleH), pnt.x, pnt.y + g.getFontMetrics().getHeight() + 5, g);
    194200                }
    195201        }
     
    238244                                DefaultElevationProfileRenderer.TRIANGLE_BASESIZE);
    239245
    240                 drawLabel(String.format("%dm", eleH), pnt.x, pnt.y + g.getFontMetrics().getHeight(), g);
     246                drawLabel(String.format("%dm", eleH), pnt.x, pnt.y + g.getFontMetrics().getHeight(), g, c);
    241247        }
    242248
     
    383389         */
    384390        private void drawLabel(String s, int x, int y, Graphics g) {
     391                drawLabel(s, x, y, g, Color.BLACK);
     392        }
     393        /**
     394         * Draws a label.
     395         * @param s The text to draw.
     396         * @param x The x coordinate of the label.
     397         * @param y The y coordinate of the label.
     398         * @param g The graphics context.
     399         * @param secondGradColor The second color of the gradient.
     400         */
     401        private void drawLabel(String s, int x, int y, Graphics g, Color secondGradColor) {
    385402                Graphics2D g2d = (Graphics2D) g;
    386403
     
    392409               
    393410                GradientPaint gradient = new GradientPaint(x, y, Color.WHITE, x, y
    394                                 + height, Color.BLACK, false);
     411                                + height, secondGradColor, false);
    395412                g2d.setPaint(gradient);         
    396413
    397                 Rectangle r = new Rectangle(x - (width / 2) - 5, y - (height / 2) + 1, width, height);
    398                 g2d.fillRect(r.x, r.y, r.width, r.height);
     414                Rectangle r = new Rectangle(x - (width / 2), y - (height / 2), width, height);
     415                g2d.fillRoundRect(r.x, r.y, r.width, r.height, ROUND_RECT_RADIUS, ROUND_RECT_RADIUS);
    399416               
    400417                g2d.setColor(Color.BLACK);
    401418               
    402                 g2d.drawRoundRect(r.x, r.y, r.width, r.height, ROUND_RECT_RADIUS, ROUND_RECT_RADIUS);
    403                 g2d.drawString(s, x - width / 2, y + (height / 2) - 2);
     419                g2d.drawRoundRect(r.x, r.y, r.width, r.height, ROUND_RECT_RADIUS, ROUND_RECT_RADIUS);           
     420                g2d.drawString(s, x - (width / 2) + 5, y + (height / 2) - 3);
    404421        }
    405422}
  • applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileLayer.java

    r23734 r23756  
    161161                                int ele = (int) WayPointHelper.getElevation(wpt);
    162162
    163                                 if (lastWpt != null) {                                 
     163                                if (lastWpt != null) {
     164                                        /*
    164165                                        int h1 = WayPointHelper.getHourOfWayPoint(wpt);
    165166                                        int h2 = WayPointHelper.getHourOfWayPoint(lastWpt);
    166                                         if (h1 != h2) { // hour changed?
     167                                        */
     168                                        int ele1 = (int)(ele / 100.0);
     169                                        int ele2 = (int)(lastEle / 100.0);
     170                                        if (ele1 != ele2) { // hour changed?
    167171                                                renderer.renderWayPoint(g, profile, mv, wpt,
    168                                                                 ElevationWayPointKind.FullHour);
     172                                                                ElevationWayPointKind.ElevationLevel);
    169173                                        } else { // check for elevation gain
    170174                                                if (ele > lastEle) {
Note: See TracChangeset for help on using the changeset viewer.