Hi Gerd

There are very few places that write 24 bit longitudes

patch attached - what do you think?

Ticker

On Tue, 2018-05-15 at 10:29 +0100, Ticker Berkin wrote:
> Hi Gerd
> 
> I'd like to check how many places would need to be changed where
> longitudes of +180 might be written before changing the low level
> assert
> 
> I'll do that now
> 
> Ticker
> 
> On Tue, 2018-05-15 at 05:04 +0000, Gerd Petermann wrote:
> > Hi Steve,
> > 
> > thanks for reporting. I think this problem is caused by
> > img_io_3.patch (r4167)
> > 
> > @Ticker: I see many more places where we use the put3s method to
> > write longitude values. If I got that right we might either change
> > all those places
> > to write -8388608 instead of 8388608, or we may change the
> > assertion
> > to allow 8388608 (with a corresponding comment).
> > 
> > I'd prefer the latter.
> > 
> > Gerd
> > 
> > ________________________________________
> > Von: mkgmap-dev <[email protected]> im Auftrag
> > von Steve Sgalowski <[email protected]>
> > Gesendet: Montag, 14. Mai 2018 23:42:03
> > An: Development list for mkgmap
> > Betreff: [mkgmap-dev] mkgmap 4189
> > 
> > i just installed mkgmap 4189 , gave it a burl and this is the
> > result
> > 
> > java  in use is 1.80.171
> > 
> > using mapuloader 4.894
> > 
> > Stephen
> > 
> > _______________________________________________
> > mkgmap-dev mailing list
> > [email protected]
> > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> _______________________________________________
> mkgmap-dev mailing list
> [email protected]
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
Index: src/uk/me/parabola/imgfmt/Utils.java
===================================================================
--- src/uk/me/parabola/imgfmt/Utils.java	(revision 4189)
+++ src/uk/me/parabola/imgfmt/Utils.java	(working copy)
@@ -28,6 +28,7 @@
 import java.util.Date;
 import java.util.zip.GZIPInputStream;
 
+import uk.me.parabola.imgfmt.app.ImgFileWriter;
 import uk.me.parabola.imgfmt.app.Coord;
 /**
  * Some miscellaneous functions that are used within the .img code.
@@ -443,4 +444,12 @@
 			return 4;
 	}
 
+	public static void put3sLongitude(ImgFileWriter writer, int longitude) {
+		// handle special case, write -180/-8388608 instead of 180/8388608 to avoid assertion
+		if (longitude == Utils.MAX_LON_MAP_UNITS)
+			writer.put3s(Utils.MIN_LON_MAP_UNITS);
+		else
+			writer.put3s(longitude);
+	}
+
 }
Index: src/uk/me/parabola/imgfmt/app/net/RouteCenter.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/RouteCenter.java	(revision 4189)
+++ src/uk/me/parabola/imgfmt/app/net/RouteCenter.java	(working copy)
@@ -16,6 +16,7 @@
 
 import java.util.List;
 
+import uk.me.parabola.imgfmt.Utils;
 import uk.me.parabola.imgfmt.app.Area;
 import uk.me.parabola.imgfmt.app.Coord;
 import uk.me.parabola.imgfmt.app.ImgFileWriter;
@@ -134,7 +135,7 @@
 
 		// Write the tables header
 		writer.put1u(tabC.getFormat());
-		writer.put3s(centralPoint.getLongitude());
+		Utils.put3sLongitude(writer, centralPoint.getLongitude());
 		writer.put3s(centralPoint.getLatitude());
 		writer.put1u(tabA.getNumberOfItems());
 		writer.put1u(tabB.getNumberOfItems());
Index: src/uk/me/parabola/imgfmt/app/net/RouteNode.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/RouteNode.java	(revision 4189)
+++ src/uk/me/parabola/imgfmt/app/net/RouteNode.java	(working copy)
@@ -20,6 +20,8 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+
+import uk.me.parabola.imgfmt.Utils;
 import uk.me.parabola.imgfmt.app.Coord;
 import uk.me.parabola.imgfmt.app.CoordNode;
 import uk.me.parabola.imgfmt.app.ImgFileWriter;
@@ -253,7 +255,7 @@
 	public void writeNod3OrNod4(ImgFileWriter writer) {
 		assert isBoundary() : "trying to write nod3 for non-boundary node";
 
-		writer.put3s(coord.getLongitude());
+		Utils.put3sLongitude(writer, coord.getLongitude());
 		writer.put3s(coord.getLatitude()); 
 		writer.put3u(offsetNod1);
 	}
Index: src/uk/me/parabola/imgfmt/app/trergn/Subdivision.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/trergn/Subdivision.java	(revision 4189)
+++ src/uk/me/parabola/imgfmt/app/trergn/Subdivision.java	(working copy)
@@ -269,7 +269,7 @@
 		log.debug("write subdiv", latitude, longitude);
 		file.put3u(startRgnPointer);
 		file.put1u(getType());
-		file.put3s(longitude);
+		Utils.put3sLongitude(file, longitude);
 		file.put3s(latitude);
 		
 		assert width <= 0x7fff;
Index: src/uk/me/parabola/imgfmt/app/trergn/TREHeader.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/trergn/TREHeader.java	(revision 4189)
+++ src/uk/me/parabola/imgfmt/app/trergn/TREHeader.java	(working copy)
@@ -163,13 +163,9 @@
 	 */
 	protected void writeFileHeader(ImgFileWriter writer) {
 		writer.put3s(area.getMaxLat());
-		// handle special case, write -180 instead of 180 to avoid assertion
-		if (area.getMaxLong() == Utils.MAX_LON_MAP_UNITS)
-			writer.put3s(Utils.MIN_LON_MAP_UNITS);
-		else
-			writer.put3s(area.getMaxLong());
+		Utils.put3sLongitude(writer, area.getMaxLong());
 		writer.put3s(area.getMinLat());
-		writer.put3s(area.getMinLong());
+		writer.put3s(area.getMinLong());  // minLong cant be +180
 
 		writer.put4(getMapLevelsPos());
 		writer.put4(getMapLevelsSize());
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

Reply via email to