Ticket #1978: addTunePrefToGPXdraw.patch
File addTunePrefToGPXdraw.patch, 3.1 KB (added by , 16 years ago) |
---|
-
src/org/openstreetmap/josm/gui/layer/GpxLayer.java
old new 86 86 private int computeCacheMaxLineLengthUsed; 87 87 private Color computeCacheColorUsed; 88 88 private boolean computeCacheColored; 89 private int computeCacheColorTracksTune; 89 90 90 91 public GpxLayer(GpxData d) { 91 92 super((String) d.attr.get("name")); … … 396 397 } catch (java.lang.NumberFormatException e) { 397 398 Main.pref.put("draw.rawgps.min-arrow-distance", "0"); 398 399 } 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 400 401 /**************************************************************** 401 402 ********** STEP 2a - CHECK CACHE VALIDITY ********************** 402 403 ****************************************************************/ 403 404 if (computeCacheInSync && ((computeCacheMaxLineLengthUsed != maxLineLength) || 404 405 (!neutralColor.equals(computeCacheColorUsed)) || 405 (computeCacheColored != colored))) { 406 (computeCacheColored != colored) || 407 (computeCacheColorTracksTune != colorTracksTune))) { 406 408 // System.out.println("(re-)computing gpx line styles, reason: CCIS=" + computeCacheInSync + " CCMLLU=" + (computeCacheMaxLineLengthUsed != maxLineLength) + " CCCU=" + (!neutralColor.equals(computeCacheColorUsed)) + " CCC=" + (computeCacheColored != colored)); 407 409 computeCacheMaxLineLengthUsed = maxLineLength; 408 410 computeCacheInSync = false; 409 411 computeCacheColorUsed = neutralColor; 410 412 computeCacheColored = colored; 413 computeCacheColorTracksTune = colorTracksTune; 411 414 } 412 415 413 416 /**************************************************************** … … 428 431 double dist = trkPnt.latlon.greatCircleDistance(oldWp.latlon); 429 432 double dtime = trkPnt.time - oldWp.time; 430 433 double vel = dist/dtime; 434 double velColor = vel/colorTracksTune*255; 431 435 432 436 if (!colored) { 433 437 trkPnt.speedLineColor = neutralColor; 434 } else if (dtime <= 0 || vel < 0 || vel > 36) { // attn: bad case first438 } else if (dtime <= 0 || vel < 0 || velColor > 255) { // attn: bad case first 435 439 trkPnt.speedLineColor = colors[255]; 436 440 } else { 437 trkPnt.speedLineColor = colors[(int) ( 7*vel)];441 trkPnt.speedLineColor = colors[(int) (velColor)]; 438 442 } 439 443 if (maxLineLength == -1 || dist <= maxLineLength) { 440 444 trkPnt.drawLine = true;