This is an automated email from the git hooks/post-receive script.

sebastic-guest pushed a commit to branch master
in repository mkgmap.

commit 86db0cb7115a670e0b6556b51308734cfe2cdb94
Author: Bas Couwenberg <sebas...@xs4all.nl>
Date:   Fri Jan 23 16:21:57 2015 +0100

    Imported Upstream version 0.0.0+svn3419
---
 resources/mkgmap-version.properties                |  4 +--
 resources/styles/default/points                    |  2 +-
 resources/styles/default/polygons                  |  2 +-
 .../mkgmap/osmstyle/actions/EchoAction.java        |  3 +-
 .../mkgmap/osmstyle/actions/EchoTagsAction.java    |  3 +-
 .../osmstyle/actions/TransliterateFilter.java      | 38 ++++++++++++++++++++++
 .../mkgmap/osmstyle/actions/ValueBuilder.java      | 14 ++++++--
 .../mkgmap/reader/osm/CoastlineFileLoader.java     |  3 +-
 src/uk/me/parabola/mkgmap/reader/osm/Element.java  | 10 ++++++
 .../mkgmap/reader/osm/LinkDestinationHook.java     |  7 ++--
 .../parabola/mkgmap/reader/osm/LocationHook.java   |  3 +-
 .../mkgmap/reader/osm/MultiPolygonRelation.java    | 14 +++++---
 .../mkgmap/reader/osm/POIGeneratorHook.java        |  3 +-
 .../parabola/mkgmap/reader/osm/SeaGenerator.java   | 30 +++++++++++------
 .../mkgmap/osmstyle/actions/ValueBuilderTest.java  | 20 ++++++++++++
 15 files changed, 126 insertions(+), 30 deletions(-)

diff --git a/resources/mkgmap-version.properties 
b/resources/mkgmap-version.properties
index 5f04cf4..0ad5766 100644
--- a/resources/mkgmap-version.properties
+++ b/resources/mkgmap-version.properties
@@ -1,2 +1,2 @@
-svn.version: 3394
-build.timestamp: 2015-01-07T05:52:25+0000
+svn.version: 3419
+build.timestamp: 2015-01-19T20:25:08+0000
diff --git a/resources/styles/default/points b/resources/styles/default/points
index e571d63..edfd825 100644
--- a/resources/styles/default/points
+++ b/resources/styles/default/points
@@ -187,7 +187,7 @@ amenity=zoo [0x2c07 resolution 24]
 landuse=military [0x640b resolution 24]
 landuse=village_green & name=* [0x2c06 resolution 24]
 
-healthcare=hospital | amenity=hospital [0x3002 resolution 22]
+healthcare=hospital | amenity=hospital | amenity=clinic [0x3002 resolution 22]
 healthcare=* | amenity=dentist | amenity=doctors [0x3002 resolution 24]
 
 highway=motorway_junction [0x2100 resolution 24]
diff --git a/resources/styles/default/polygons 
b/resources/styles/default/polygons
index d25da79..825c09c 100644
--- a/resources/styles/default/polygons
+++ b/resources/styles/default/polygons
@@ -28,7 +28,7 @@ amenity=school [0x0a resolution 22]
 amenity=supermarket [0x08 resolution 22]
 amenity=university [0x0a resolution 21]
 
-healthcare=hospital | amenity=hospital [0x0b resolution 22]
+healthcare=hospital | amenity=hospital | amenity=clinic [0x0b resolution 22]
 healthcare=* | amenity=dentist | amenity=doctors | amenity=nursing_home
 [0x0b resolution 23]
 
diff --git a/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoAction.java 
b/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoAction.java
index e095be2..9b454bb 100644
--- a/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoAction.java
+++ b/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoAction.java
@@ -16,6 +16,7 @@
 package uk.me.parabola.mkgmap.osmstyle.actions;
 
 import uk.me.parabola.mkgmap.reader.osm.Element;
+import uk.me.parabola.mkgmap.reader.osm.FakeIdGenerator;
 
 /**
  * Sends a message to the console.
@@ -31,7 +32,7 @@ public class EchoAction implements Action {
 
        public boolean perform(Element el) {
                String e = value.build(el, el);
-               System.err.println(el.getId() + ": " + e);
+               System.err.println(el.getId() + 
(FakeIdGenerator.isFakeId(el.getId()) ? " (" + el.getOriginalId() + ")" : "") + 
": " + e);
                return false;
        }
 }
diff --git a/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoTagsAction.java 
b/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoTagsAction.java
index 6850f49..7ee0778 100644
--- a/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoTagsAction.java
+++ b/src/uk/me/parabola/mkgmap/osmstyle/actions/EchoTagsAction.java
@@ -14,6 +14,7 @@
 package uk.me.parabola.mkgmap.osmstyle.actions;
 
 import uk.me.parabola.mkgmap.reader.osm.Element;
+import uk.me.parabola.mkgmap.reader.osm.FakeIdGenerator;
 
 /**
  * Sends a message including the tags of an element to System.err.
@@ -29,7 +30,7 @@ public class EchoTagsAction implements Action {
 
        public boolean perform(Element el) {
                String e = value.build(el, el);
-               System.err.println(el.getId() + " - " + el.toTagString()+" " + 
e);
+               System.err.println(el.getId() + 
(FakeIdGenerator.isFakeId(el.getId()) ? " (" + el.getOriginalId() + ")" : "") + 
" - " + el.toTagString()+" " + e);
                return false;
        }
        
diff --git 
a/src/uk/me/parabola/mkgmap/osmstyle/actions/TransliterateFilter.java 
b/src/uk/me/parabola/mkgmap/osmstyle/actions/TransliterateFilter.java
new file mode 100644
index 0000000..9e6c33d
--- /dev/null
+++ b/src/uk/me/parabola/mkgmap/osmstyle/actions/TransliterateFilter.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 or
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ */
+package uk.me.parabola.mkgmap.osmstyle.actions;
+
+import uk.me.parabola.imgfmt.app.labelenc.TableTransliterator;
+import uk.me.parabola.imgfmt.app.labelenc.Transliterator;
+import uk.me.parabola.mkgmap.reader.osm.Element;
+
+/**
+ * Transliterate the string to ascii or latin.
+ */
+public class TransliterateFilter extends ValueFilter {
+       private static final Transliterator ASCII = new 
TableTransliterator("ascii");
+       private static final Transliterator LATIN1 = new 
TableTransliterator("latin1");
+
+       private final Transliterator trans;
+
+       public TransliterateFilter(String charset) {
+               if ("latin1".equals(charset))
+                       trans = LATIN1;
+               else
+                       trans = ASCII;
+       }
+
+       protected String doFilter(String value, Element el) {
+               return trans.transliterate(value);
+       }
+}
diff --git a/src/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilder.java 
b/src/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilder.java
index b942153..36be8cc 100644
--- a/src/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilder.java
+++ b/src/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilder.java
@@ -39,11 +39,14 @@ public class ValueBuilder {
 
                        // This must be last
                        Pattern.compile("[ \t]*([^: \\t|]+:[^|]*)"),
+                       Pattern.compile("[ \t]*([^: \\t|]+)"),
        };
 
+       private static final Pattern NAME_ARG_SPLIT = 
Pattern.compile("([^:]+)(?::[\"']?(.*?)[\"']?)?", Pattern.DOTALL);
+
        private final List<ValueItem> items = new ArrayList<>();
        private final boolean completeCheck;
-       
+
        public ValueBuilder(String pattern) {
                this (pattern, true);
        }
@@ -190,9 +193,8 @@ public class ValueBuilder {
        }
 
        private void addFilter(ValueItem item, String expr) {
-               Pattern pattern = Pattern.compile("([^:]+):[\"']?(.*?)[\"']?", 
Pattern.DOTALL);
+               Matcher matcher = NAME_ARG_SPLIT.matcher(expr);
 
-               Matcher matcher = pattern.matcher(expr);
                matcher.matches();
                String cmd = matcher.group(1);
                String arg = matcher.group(2);
@@ -225,6 +227,12 @@ public class ValueBuilder {
                case "part":
                        item.addFilter(new PartFilter(arg));
                        break;
+               case "ascii":
+                       item.addFilter(new TransliterateFilter("ascii"));
+                       break;
+               case "latin1":
+                       item.addFilter(new TransliterateFilter("latin1"));
+                       break;
                case "country-ISO":
                        item.addFilter(new CountryISOFilter());
                        break;
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/CoastlineFileLoader.java 
b/src/uk/me/parabola/mkgmap/reader/osm/CoastlineFileLoader.java
index 6b393f5..f71f1c4 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/CoastlineFileLoader.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/CoastlineFileLoader.java
@@ -178,7 +178,8 @@ public final class CoastlineFileLoader {
                Collection<Way> ways = new ArrayList<Way>();
                for (CoastlineWay w : coastlines) {
                        if (w.getBbox().intersects(bbox)) {
-                               Way x = new Way(FakeIdGenerator.makeFakeId(), 
w.getPoints());
+                               Way x = new Way(w.getOriginalId(), 
w.getPoints());
+                               x.setFakeId();
                                x.addTag("natural", "coastline");
                                ways.add(x);
                        }
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/Element.java 
b/src/uk/me/parabola/mkgmap/reader/osm/Element.java
index d4c610a..972d4e2 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/Element.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/Element.java
@@ -25,6 +25,7 @@ import java.util.Map;
 public abstract class Element {
        private Tags tags;
        private long id;
+       private long OriginalId;
 
        public int getTagCount() {
                return (tags == null ? 0 : tags.size());
@@ -170,10 +171,19 @@ public abstract class Element {
                return id;
        }
 
+       public long getOriginalId() {
+               return OriginalId;
+       }
+
        protected void setId(long id) {
                this.id = id;
+               OriginalId = id;
        }
 
+       public void setFakeId() {
+               id = FakeIdGenerator.makeFakeId();
+       }
+       
        public String toTagString() {
                if (tags == null)
                        return "[]";
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/LinkDestinationHook.java 
b/src/uk/me/parabola/mkgmap/reader/osm/LinkDestinationHook.java
index 83f0f2e..78d3b51 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/LinkDestinationHook.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/LinkDestinationHook.java
@@ -260,8 +260,8 @@ public class LinkDestinationHook extends 
OsmReadingHooksAdaptor {
                        double dist = firstPoint.distance(cutPoint);
                        if (dist <= maxLength) {
                                // create a new way with the first two points 
and identical tags
-                               Way precedingWay = new 
Way(FakeIdGenerator.makeFakeId(), w
-                                               .getPoints().subList(0, 1 + 1));
+                               Way precedingWay = new Way(w.getOriginalId(), 
w.getPoints().subList(0, 1 + 1));
+                               precedingWay.setFakeId();
                                precedingWay.copyTags(w);
 
                                saver.addWay(precedingWay);
@@ -325,7 +325,8 @@ public class LinkDestinationHook extends 
OsmReadingHooksAdaptor {
                                
                                // create the new way with identical tags
                                w.getPoints().add(i,cConnection);
-                               Way  precedingWay = new 
Way(FakeIdGenerator.makeFakeId(), new ArrayList<Coord>(w.getPoints().subList(0, 
i+1)));
+                               Way  precedingWay = new Way(w.getOriginalId(), 
new ArrayList<Coord>(w.getPoints().subList(0, i+1)));
+                               precedingWay.setFakeId();
                                precedingWay.copyTags(w);
                                
                                saver.addWay(precedingWay);
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/LocationHook.java 
b/src/uk/me/parabola/mkgmap/reader/osm/LocationHook.java
index abef120..ebc49dc 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/LocationHook.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/LocationHook.java
@@ -142,7 +142,8 @@ public class LocationHook extends OsmReadingHooksAdaptor {
                                Coord mpCenter = ((MultiPolygonRelation) 
r).getCofG();
                                if (mpCenter != null && 
saver.getBoundingBox().contains(mpCenter)){
                                        // create a fake node for which the 
bounds information is collected
-                                       Node mpNode = new 
Node(FakeIdGenerator.makeFakeId(), mpCenter);
+                                       Node mpNode = new 
Node(r.getOriginalId(), mpCenter);
+                                       mpNode.setFakeId();
                                        processElem(mpNode);
                                        // copy the bounds tags back to the 
multipolygon
                                        for (String boundsTag : 
BoundaryQuadTree.mkgmapTagsArray) {
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java 
b/src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java
index 03365f6..62202dd 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java
@@ -1105,7 +1105,8 @@ public class MultiPolygonRelation extends Relation {
                // This enables the style file to decide if the polygon 
information or
                // the simple line information should be used.
                for (Way orgOuterWay : outerWaysForLineTagging) {
-                       Way lineTagWay =  new Way(FakeIdGenerator.makeFakeId(), 
orgOuterWay.getPoints());
+                       Way lineTagWay =  new Way(getOriginalId(), 
orgOuterWay.getPoints());
+                       lineTagWay.setFakeId();
                        lineTagWay.addTag(STYLE_FILTER_TAG, STYLE_FILTER_LINE);
                        lineTagWay.addTag(MP_CREATED_TAG, "true");
                        for (Entry<String,String> tag : outerTags.entrySet()) {
@@ -1555,8 +1556,9 @@ public class MultiPolygonRelation extends Relation {
                List<Way> cuttedOuterPolygon = new 
ArrayList<Way>(finishedAreas.size());
                Long2ObjectOpenHashMap<Coord> commonCoordMap = new 
Long2ObjectOpenHashMap<>();
                for (Area area : finishedAreas) {
-                       Way w = singularAreaToWay(area, 
FakeIdGenerator.makeFakeId());
+                       Way w = singularAreaToWay(area, getOriginalId());
                        if (w != null) {
+                               w.setFakeId();
                                // make sure that equal coords are changed to 
identical coord instances
                                // this allows merging in the ShapeMerger
                                // TODO: maybe better merge here?
@@ -2201,7 +2203,8 @@ public class MultiPolygonRelation extends Relation {
                // This enables the style file to decide if the polygon 
information or
                // the simple line information should be used.
                for (Way orgOuterWay : outerWaysForLineTagging) {
-                       Way lineTagWay =  new Way(FakeIdGenerator.makeFakeId(), 
orgOuterWay.getPoints());
+                       Way lineTagWay =  new Way(getOriginalId(), 
orgOuterWay.getPoints());
+                       lineTagWay.setFakeId();
                        lineTagWay.addTag(STYLE_FILTER_TAG, STYLE_FILTER_LINE);
                        lineTagWay.addTag(MP_CREATED_TAG, "true");
                        for (Entry<String,String> tag : tags.entrySet()) {
@@ -2369,8 +2372,9 @@ public class MultiPolygonRelation extends Relation {
                private Rectangle bounds;
 
                public JoinedWay(Way originalWay) {
-                       super(FakeIdGenerator.makeFakeId(), 
originalWay.getPoints());
-                       this.originalWays = new ArrayList<Way>();
+                       super(originalWay.getOriginalId(), 
originalWay.getPoints());
+                       setFakeId();
+                       originalWays = new ArrayList<Way>();
                        addWay(originalWay);
 
                        // we have to initialize the min/max values
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/POIGeneratorHook.java 
b/src/uk/me/parabola/mkgmap/reader/osm/POIGeneratorHook.java
index 22c7427..8da68e7 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/POIGeneratorHook.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/POIGeneratorHook.java
@@ -325,7 +325,8 @@ public class POIGeneratorHook extends 
OsmReadingHooksAdaptor {
        }
 
        private static Node createPOI(Element source, Coord poiCoord, short 
poiTypeTagKey) {
-               Node poi = new Node(FakeIdGenerator.makeFakeId(), poiCoord);
+               Node poi = new Node(source.getOriginalId(), poiCoord);
+               poi.setFakeId();
                poi.copyTags(source);
                poi.deleteTag(MultiPolygonRelation.STYLE_FILTER_TAG);
                poi.addTag(poiTypeTagKey, "true");
diff --git a/src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java 
b/src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
index eaec776..c411d8c 100644
--- a/src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
+++ b/src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
@@ -480,7 +480,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                        return;
                if (way.hasIdenticalEndPoints()){
                        // add a copy of this way to be able to draw it as a 
shape
-                       Way shapeWay = new Way(FakeIdGenerator.makeFakeId(), 
way.getPoints());
+                       Way shapeWay = new Way(way.getOriginalId(), 
way.getPoints());
+                       shapeWay.setFakeId();
                        // change the tag so that only special rules looking 
for it are firing
                        shapeWay.deleteTag("natural"); 
                        shapeWay.addTag("mkgmap:removed_natural",naturalVal); 
@@ -676,7 +677,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                                                for (Way w : seaPrecompWays) {
                                                        // set a new id to be 
sure that the precompiled ids do not
                                                        // interfere with the 
ids of this run
-                                                       
w.setId(FakeIdGenerator.makeFakeId());
+                                                       w.setFakeId();
 
                                                        if 
("land".equals(w.getTag("natural"))) {
                                                                landWays.add(w);
@@ -831,7 +832,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                                        if 
(FakeIdGenerator.isFakeId(w1.getId())) {
                                                wm = w1;
                                        } else {
-                                               wm = new 
Way(FakeIdGenerator.makeFakeId());
+                                               wm = new 
Way(w1.getOriginalId());
+                                               wm.setFakeId();
                                                wm.getPoints().addAll(points1);
                                                beginMap.put(points1.get(0), 
wm);
                                        }
@@ -1048,8 +1050,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                                log.info("clipping", segment);
                                toBeRemoved.add(segment);
                                for (List<Coord> pts : clipped) {
-                                       long id = FakeIdGenerator.makeFakeId();
-                                       Way shore = new Way(id, pts);
+                                       Way shore = new 
Way(segment.getOriginalId(), pts);
+                                       shore.setFakeId();
                                        toBeAdded.add(shore);
                                }
                        }
@@ -1170,7 +1172,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                for (Way w : islands) {
 
                        if (!FakeIdGenerator.isFakeId(w.getId())) {
-                               Way w1 = new Way(FakeIdGenerator.makeFakeId());
+                               Way w1 = new Way(w.getOriginalId());
+                               w1.setFakeId();
                                w1.getPoints().addAll(w.getPoints());
                                // only copy the name tags
                                for (Entry<String, String> tagEntry : 
w.getTagEntryIterator()){
@@ -1249,7 +1252,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                                        points.add(pStart);
                                        
                                        
if(!FakeIdGenerator.isFakeId(w.getId())) {
-                                               Way w1 = new 
Way(FakeIdGenerator.makeFakeId());
+                                               Way w1 = new 
Way(w.getOriginalId());
+                                               w1.setFakeId();
                                                
w1.getPoints().addAll(w.getPoints());
                                                // only copy the name tags
                                                for (Entry<String, String> 
tagEntry : w.getTagEntryIterator()){
@@ -1265,8 +1269,13 @@ public class SeaGenerator extends OsmReadingHooksAdaptor 
{
                                                seaRelation.addElement("inner", 
w);
                                        }
                                } else if(allowSeaSectors) {
-                                       long seaId = 
FakeIdGenerator.makeFakeId();
-                                       Way sea = new Way(seaId);
+                                       Way sea;
+                                       if (seaRelation != null) {
+                                               sea = new 
Way(seaRelation.getOriginalId());
+                                               sea.setFakeId();
+                                       }
+                                       else
+                                               sea = new 
Way(FakeIdGenerator.makeFakeId());
                                        sea.getPoints().addAll(points);
                                        sea.addPoint(new 
Coord(pEnd.getLatitude(), pStart.getLongitude()));
                                        sea.addPoint(pStart);
@@ -1473,7 +1482,8 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
                                                if 
(FakeIdGenerator.isFakeId(w1.getId())) {
                                                        wm = w1;
                                                } else {
-                                                       wm = new 
Way(FakeIdGenerator.makeFakeId());
+                                                       wm = new 
Way(w1.getOriginalId());
+                                                       wm.setFakeId();
                                                        ways.remove(w1);
                                                        ways.add(wm);
                                                        
wm.getPoints().addAll(points1);
diff --git a/test/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilderTest.java 
b/test/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilderTest.java
index 8a30ca6..546ab06 100644
--- a/test/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilderTest.java
+++ b/test/uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilderTest.java
@@ -204,4 +204,24 @@ public class ValueBuilderTest {
                exp.add("name");
                assertEquals(exp, vb.getUsedTags());
        }
+
+       @Test
+       public void testTranslitAscii() {
+               ValueBuilder vb = new ValueBuilder("${name|ascii}");
+
+               Element el = new Way(1);
+               el.addTag("name", "frêd");
+               String s = vb.build(el, null);
+               assertEquals("fred", s);
+       }
+
+       @Test
+       public void testTranslitLatin1() {
+               ValueBuilder vb = new ValueBuilder("${name|latin1}");
+
+               Element el = new Way(1);
+               el.addTag("name", "frêdş");
+               String s = vb.build(el, null);
+               assertEquals("frêds", s);
+       }
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-grass/mkgmap.git

_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to