Hi Patrik
where you able to investigate some more ? Is there another build I
can/have to try it with ?
As it happens I just discovered something today. There is no encoding
done for the copyright info before the TRE section data.
Patch attached to fix this and pre-made jar file at:
http://files.mkgmap.org.uk/download/317/mkgmap.jar
Cheers,
..Steve
Index: src/uk/me/parabola/imgfmt/app/map/Map.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/map/Map.java (revision 3704)
+++ src/uk/me/parabola/imgfmt/app/map/Map.java (revision )
@@ -23,6 +23,7 @@
import uk.me.parabola.imgfmt.app.Area;
import uk.me.parabola.imgfmt.app.ImgFile;
import uk.me.parabola.imgfmt.app.Label;
+import uk.me.parabola.imgfmt.app.labelenc.EncodedText;
import uk.me.parabola.imgfmt.app.lbl.LBLFile;
import uk.me.parabola.imgfmt.app.net.NETFile;
import uk.me.parabola.imgfmt.app.net.NODFile;
@@ -164,7 +165,8 @@
* @param info Any string.
*/
public void addInfo(String info) {
- treFile.addInfo(info);
+ EncodedText enc = lblFile.getEncodedText(info);
+ treFile.addInfo(enc);
}
/**
Index: src/uk/me/parabola/mkgmap/build/MapBuilder.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/mkgmap/build/MapBuilder.java (revision 3704)
+++ src/uk/me/parabola/mkgmap/build/MapBuilder.java (revision )
@@ -15,9 +15,10 @@
import java.io.BufferedReader;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -27,8 +28,6 @@
import java.util.List;
import java.util.Set;
-import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
-
import uk.me.parabola.imgfmt.ExitException;
import uk.me.parabola.imgfmt.Utils;
import uk.me.parabola.imgfmt.app.Coord;
@@ -95,6 +94,8 @@
import uk.me.parabola.util.Configurable;
import uk.me.parabola.util.EnhancedProperties;
+import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
+
/**
* This is the core of the code to translate from the general representation
* into the garmin representation.
@@ -821,16 +822,12 @@
/**
* Set all the information that appears in the header.
- *
- * @param map The map to write to.
- * @param src The source of map information.
*/
protected void getMapInfo() {
if (licenseFileName != null) {
- File file = new File(licenseFileName);
-
try {
- BufferedReader reader = new BufferedReader(new FileReader(file));
+ FileInputStream is = new FileInputStream(licenseFileName);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
String text;
// repeat until all lines is read
Index: src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java (revision 3704)
+++ src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java (revision )
@@ -17,11 +17,12 @@
package uk.me.parabola.mkgmap.reader.osm;
import java.io.BufferedReader;
-import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -141,10 +142,10 @@
String copyrightFileName = getConfig().getProperty("copyright-file", null);
if (copyrightFileName != null)
{
- File file = new File(copyrightFileName);
List<String> copyrightArray = new ArrayList<String>();
try {
- BufferedReader reader = new BufferedReader(new FileReader(file));
+ InputStream is = new FileInputStream(copyrightFileName);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
String text;
while ((text = reader.readLine()) != null) {
copyrightArray.add(text);
Index: src/uk/me/parabola/imgfmt/app/lbl/LBLFile.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/lbl/LBLFile.java (revision 3704)
+++ src/uk/me/parabola/imgfmt/app/lbl/LBLFile.java (revision )
@@ -16,6 +16,7 @@
*/
package uk.me.parabola.imgfmt.app.lbl;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -129,7 +130,7 @@
* @return A reference to the created label.
*/
public Label newLabel(String text) {
- EncodedText encodedText = textEncoder.encodeText(text);
+ EncodedText encodedText = getEncodedText(text);
Label l = labelCache.get(encodedText);
if (l == null) {
@@ -148,6 +149,10 @@
return l;
}
+ public EncodedText getEncodedText(String text) {
+ return textEncoder.encodeText(text);
+ }
+
/**
* Align for the next label.
*
Index: src/uk/me/parabola/imgfmt/app/trergn/TREFile.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/trergn/TREFile.java (revision 3704)
+++ src/uk/me/parabola/imgfmt/app/trergn/TREFile.java (revision )
@@ -27,6 +27,7 @@
import uk.me.parabola.imgfmt.app.ImgFile;
import uk.me.parabola.imgfmt.app.ImgFileWriter;
import uk.me.parabola.imgfmt.app.Label;
+import uk.me.parabola.imgfmt.app.labelenc.EncodedText;
import uk.me.parabola.imgfmt.fs.ImgChannel;
import uk.me.parabola.log.Logger;
import uk.me.parabola.util.Configurable;
@@ -82,15 +83,14 @@
* Add a string to the 'mapinfo' section. This is a section between the
* header and the start of the data. Nothing points to it directly.
*
- * @param msg A string, usually used to describe the program that generated
- * the file.
+ * @param enc A string in the EncodedText format.
*/
- public void addInfo(String msg) {
- byte[] val = Utils.toBytes(msg);
+ public void addInfo(EncodedText enc) {
+ byte[] val = enc.getCtext();
if (position() != header.getHeaderLength() + header.getMapInfoSize())
throw new IllegalStateException("All info must be added before anything else");
- header.setMapInfoSize(header.getMapInfoSize() + (val.length+1));
+ header.setMapInfoSize(header.getMapInfoSize() + enc.getLength() + 1);
getWriter().put(val);
getWriter().put((byte) 0);
}
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev