diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java index 757c150798..d9e8b2a1a8 100644 --- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java @@ -330,17 +330,18 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex if (ts.renders.isEmpty() // only do once (CODE HERE NEEDS TO BE UI INSTEAD) && !ts.points.isEmpty()) { // hmmm. 0-point tracks happen, but.... how? - boolean showCT = g.isShowCurrentTrack(); - - ts.renders.add(new Renderable.Altitude(ts.points, 10)); - ts.renders.add(new Renderable.StandardTrack(ts.points, 18)); - - // TODO : enable these to see how the experimental conveyor, altitude, speed, waypoint renders work - - //ts.renders.add(new Renderable.Conveyor(ts.points, view, 20, 250)); - ts.renders.add(new Renderable.DistanceMarker(ts.points, view, 1000)); - //ts.renders.add(new Renderable.Speed(ts.points, 50, 128)); - ts.renders.add(new Renderable.Arrows(ts.points,view,10,250)); + if (g.isShowCurrentTrack()) { + Renderable.StandardTrack st = new Renderable.StandardTrack(ts.points, 18); + st.setCurrentTrack(); + ts.renders.add(st); + } else { + ts.renders.add(new Renderable.Altitude(ts.points, 10)); + ts.renders.add(new Renderable.StandardTrack(ts.points, 18)); + //ts.renders.add(new Renderable.Conveyor(ts.points, view, 20, 250)); + ts.renders.add(new Renderable.DistanceMarker(ts.points, view, 1000)); + //ts.renders.add(new Renderable.Speed(ts.points, 50, 128)); + ts.renders.add(new Renderable.Arrows(ts.points, view, 10, 250)); + } } ts.recalculateRenderScales(view.getZoom()); diff --git a/OsmAnd/src/net/osmand/plus/views/Renderable.java b/OsmAnd/src/net/osmand/plus/views/Renderable.java index 2dc751eca4..616cd34377 100644 --- a/OsmAnd/src/net/osmand/plus/views/Renderable.java +++ b/OsmAnd/src/net/osmand/plus/views/Renderable.java @@ -60,7 +60,7 @@ public class Renderable { Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY); - double zoom; + double zoom = -1; double hashPoint; boolean shadow = false; // TODO: fixup shadow support @@ -115,25 +115,24 @@ public class Renderable { public static class StandardTrack extends RenderableSegment { double base; // parameter for calculating Ramer-Douglas-Peucer distance + boolean currentTrack = false; public StandardTrack(List pt, double base) { super(pt); this.base = base; } + public void setCurrentTrack() { + currentTrack = true; + } + @Override public void recalculateRenderScale(double zoom) { // Here we create the 'shadow' resampled/culled points list, based on the asynchronous call. - // The asynchronous callback will set the variable, and that is preferentially used for rendering + // The asynchronous callback will set the variable 'culled', and that is preferentially used for rendering + // The current track does not undergo this process, as it is potentially constantly changing. - double hashCode = points.hashCode() ; - - if (hashPoint != hashCode) { // current track, changing? - if (culler != null) { - culler.cancel(true); // STOP culling a track with changing points - culled = null; // and force use of original track - } - } else if (culler == null || this.zoom != zoom) { + if (!currentTrack && this.zoom != zoom) { if (culler != null) { culler.cancel(true); @@ -143,7 +142,7 @@ public class Renderable { culler = new AsynchronousResampler.RamerDouglasPeucer(this, cullDistance); if (this.zoom < zoom) { // if line would look worse (we're zooming in) then... - culled = null; // use full-resolution until re-cull complete + culled = null; // use full-resolution until re-cull complete } this.zoom = zoom; @@ -479,7 +478,7 @@ public class Renderable { float sizer = (float) Math.pow(2.0,zoom-18) * 128; int pCol = p.getColor(); - p.setColor(getComplementaryColor(p.getColor())); // and a complementary colour + p.setColor(Color.RED); //getComplementaryColor(p.getColor())); // and a complementary colour float lastx = Float.NEGATIVE_INFINITY; float lasty = Float.NEGATIVE_INFINITY; @@ -509,7 +508,7 @@ public class Renderable { && Math.min(y, lasty) < clipT && Math.max(y, lasty) > clipB) { if ((intp & 15) < 6) { - p.setStrokeWidth(stroke * (1f + 1.25f* (5 - (intp & 7)) / 2f)); + p.setStrokeWidth(stroke * (0.75f + 1.f* (5 - (intp & 7)) / 2f)); if (!broken) { canvas.drawLine(lastx, lasty, x, y, p);