Ticket #1978: addTunePrefToGPXdraw.patch

File addTunePrefToGPXdraw.patch, 3.1 KB (added by xeen, 12 years ago)

Adds pref to GPX Layer to allow speed coloring tuning for different speeds

  • src/org/openstreetmap/josm/gui/layer/GpxLayer.java

    old new  
    8686    private int computeCacheMaxLineLengthUsed;
    8787    private Color computeCacheColorUsed;
    8888    private boolean computeCacheColored;
     89    private int computeCacheColorTracksTune;
    8990
    9091    public GpxLayer(GpxData d) {
    9192        super((String) d.attr.get("name"));
     
    396397        } catch (java.lang.NumberFormatException e) {
    397398            Main.pref.put("draw.rawgps.min-arrow-distance", "0");
    398399        }
    399 
     400        int colorTracksTune = Main.pref.getInteger("draw.rawgps.colorTracksTune", 45); // allows to tweak line coloring for different speed levels. foot: 10, bike: 20, car: 45         
    400401        /****************************************************************
    401402         ********** STEP 2a - CHECK CACHE VALIDITY **********************
    402403         ****************************************************************/
    403404        if (computeCacheInSync && ((computeCacheMaxLineLengthUsed != maxLineLength) ||
    404405                                   (!neutralColor.equals(computeCacheColorUsed)) ||
    405                                    (computeCacheColored != colored))) {
     406                                   (computeCacheColored != colored) ||
     407                                   (computeCacheColorTracksTune != colorTracksTune))) {
    406408//          System.out.println("(re-)computing gpx line styles, reason: CCIS=" + computeCacheInSync + " CCMLLU=" + (computeCacheMaxLineLengthUsed != maxLineLength) + " CCCU=" +  (!neutralColor.equals(computeCacheColorUsed)) + " CCC=" + (computeCacheColored != colored));
    407409            computeCacheMaxLineLengthUsed = maxLineLength;
    408410            computeCacheInSync = false;
    409411            computeCacheColorUsed = neutralColor;
    410412            computeCacheColored = colored;
     413            computeCacheColorTracksTune = colorTracksTune;
    411414        }
    412415
    413416        /****************************************************************
     
    428431                            double dist = trkPnt.latlon.greatCircleDistance(oldWp.latlon);
    429432                            double dtime = trkPnt.time - oldWp.time;
    430433                            double vel = dist/dtime;
     434                            double velColor = vel/colorTracksTune*255;
    431435
    432436                            if (!colored) {
    433437                                trkPnt.speedLineColor = neutralColor;
    434                             } else if (dtime <= 0 || vel < 0 || vel > 36) { // attn: bad case first
     438                            } else if (dtime <= 0 || vel < 0 || velColor > 255) { // attn: bad case first
    435439                                trkPnt.speedLineColor = colors[255];
    436440                            } else {
    437                                 trkPnt.speedLineColor = colors[(int) (7*vel)];
     441                                trkPnt.speedLineColor = colors[(int) (velColor)];
    438442                            }
    439443                            if (maxLineLength == -1 || dist <= maxLineLength) {
    440444                                trkPnt.drawLine = true;