From 19f0a808c875243d03dd568c67860246bc1c520f Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 7 Sep 2010 13:34:44 +0000 Subject: [PATCH] implement renderer git-svn-id: https://osmand.googlecode.com/svn/trunk@492 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8 --- .../src/net/osmand/osm/MapRenderingTypes.java | 24 +-- OsmAnd/res/drawable/h_department_store.png | Bin 0 -> 993 bytes OsmAnd/res/drawable/h_firestation.png | Bin 0 -> 479 bytes OsmAnd/res/drawable/h_forest.png | Bin 0 -> 124 bytes OsmAnd/res/drawable/h_memorial.png | Bin 0 -> 3055 bytes OsmAnd/res/drawable/h_nr.png | Bin 0 -> 141 bytes OsmAnd/res/drawable/h_sosphone.png | Bin 0 -> 508 bytes OsmAnd/res/drawable/h_vineyard.png | Bin 0 -> 149 bytes .../src/net/osmand/render/OsmandRenderer.java | 186 ++++++++++++++---- 9 files changed, 165 insertions(+), 45 deletions(-) create mode 100644 OsmAnd/res/drawable/h_department_store.png create mode 100644 OsmAnd/res/drawable/h_firestation.png create mode 100644 OsmAnd/res/drawable/h_forest.png create mode 100644 OsmAnd/res/drawable/h_memorial.png create mode 100644 OsmAnd/res/drawable/h_nr.png create mode 100644 OsmAnd/res/drawable/h_sosphone.png create mode 100644 OsmAnd/res/drawable/h_vineyard.png diff --git a/DataExtractionOSM/src/net/osmand/osm/MapRenderingTypes.java b/DataExtractionOSM/src/net/osmand/osm/MapRenderingTypes.java index e294abb503..48170af66f 100644 --- a/DataExtractionOSM/src/net/osmand/osm/MapRenderingTypes.java +++ b/DataExtractionOSM/src/net/osmand/osm/MapRenderingTypes.java @@ -52,20 +52,20 @@ public class MapRenderingTypes { public final static int MASK_10 = (1 << 10) - 1; public final static int HIGHWAY = 1; - public final static int BARRIER = 2; + public final static int BARRIER = 2; //+R public final static int WATERWAY = 3; public final static int RAILWAY = 4; public final static int AEROWAY = 5; public final static int AERIALWAY = 6; public final static int POWER = 7; public final static int MAN_MADE = 8; - public final static int LEISURE = 9; - public final static int OFFICE = 10; - public final static int SHOP = 11; - public final static int EMERGENCY = 12; - public final static int TOURISM = 13; //+R TODO zoo, attractions - public final static int HISTORIC = 14; - public final static int LANDUSE = 15; + public final static int LEISURE = 9; //+R + public final static int OFFICE = 10; //+R + public final static int SHOP = 11; //+R + public final static int EMERGENCY = 12; //+R + public final static int TOURISM = 13; //+R + public final static int HISTORIC = 14; //+R + public final static int LANDUSE = 15; //+R public final static int MILITARY = 16; public final static int NATURAL = 17; public final static int AMENITY_SUSTENANCE = 18; //+R @@ -415,11 +415,11 @@ public class MapRenderingTypes { register("highway", "tertiary", HIGHWAY, PL_HW_TERTIARY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("highway", "unclassified", HIGHWAY, PL_HW_UNCLASSIFIED, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("highway", "road", HIGHWAY, PL_HW_UNCLASSIFIED, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ - register("highway", "residential", HIGHWAY, PL_HW_RESIDENTIAL, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ + register("highway", "residential", HIGHWAY, PL_HW_RESIDENTIAL, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("highway", "living_street", HIGHWAY, PL_HW_LIVING_STREET, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ - register("highway", "service", HIGHWAY, PL_HW_SERVICE, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ + register("highway", "service", HIGHWAY, PL_HW_SERVICE, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("highway", "track", HIGHWAY, PL_HW_TRACK, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ - register("highway", "pedestrian", HIGHWAY, PL_HW_PEDESTRIAN, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ + register("highway", "pedestrian", HIGHWAY, PL_HW_PEDESTRIAN, POLYLINE_TYPE, POLYGON_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ // register("highway", "raceway", HIGHWAY, PL_HW_RACEWAY, POLYLINE_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("highway", "services", HIGHWAY, PL_HW_SERVICES, POLYGON_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ @@ -842,7 +842,7 @@ public class MapRenderingTypes { // 22. amenity healthcare registerAsBuilding("amenity", "pharmacy", AMENITY_HEALTHCARE, 1); //$NON-NLS-1$ //$NON-NLS-2$ - registerAsBuilding("amenity", "hospital", AMENITY_HEALTHCARE, 2); //$NON-NLS-1$ //$NON-NLS-2$ + register("amenity", "hospital", AMENITY_HEALTHCARE, 2, POLYGON_WITH_CENTER_TYPE, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("amenity", "baby_hatch", AMENITY_HEALTHCARE, 3, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("amenity", "dentist", AMENITY_HEALTHCARE, 4, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ register("amenity", "doctors", AMENITY_HEALTHCARE, 5, POINT_TYPE); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/OsmAnd/res/drawable/h_department_store.png b/OsmAnd/res/drawable/h_department_store.png new file mode 100644 index 0000000000000000000000000000000000000000..c42b9a2f0e82b4d8d202460d5dcada5fc21f16e2 GIT binary patch literal 993 zcmV<710MW|P)I-*poNVPkjzxAw5&O%X)Z#R zX8G&V?6mngKi(Y0?Sc31d7t-vd7hV;ra2D44L|_E08jviRW<;QwQtwDYmaN`6Ca-V z5kLum1`8}a8-73kSN)v=dW7>o&zJ4I49;N zp7aO$s{p$0UA*T%`{h}MZ|4gDymw!}yZ^|0M-JPDu+z$kzMfC_**fTzqm;Z>CHm8nxVP8A6u zVt6(zoVOGOU$VZe>=JLCggU1g>mv1jS1GfTSF{w{V)t=Oh zr4N=4IES3N=nz|KUTyP?c(~1_O?EYLH5Ve049nT_yv(_8{ z#UWU>WKMr}`gVRLe=c+}^p3Kih{tA+Vd~Q<#O7o2{g3a<@{A05MlJx@1F)+#G=oqA z0F+slq$y9!kG^{(n!1VDd<^l=OOayd2n?kE8K*X*10As7w9DLYGq5)Od3m?*xY7S)cu%ATKEsd@%r-8bo5;M@7< zqbf4=zSg^$jb*h`q9j!_)!_%9JaCnhWkhd8k5h}+w4NmWV%Du&3u;m2)uJj=jz%|j&40P=0Q||H zlGnLkiCl&VGxI(c{dxf36UU( zUvP*73*kVCK?I8k79pahv9YmJgexKju8O3w2qFFhV&ICq0~@h10UMQoAa;UScovFa zbJax>z1?>#Hi0E%W6-JQ<2TRn8(0vvYA&~E4qz4yo&C|x{{o<rSL_BhKs%j25L2pXscNw5esNGF#=~m*NnvjTwmGFI-}0zo$A&@b5pXFixg2jnC`GEwG*P${?t&^Su>iFkpYxO7kvstX z77Gx=_i#ZzM6P!tk~c>6Sv)|^2Jjkef71G7#BNPMUsdR~d%s@B0@^Qr{;-+xbv1Sq zu!3}bKd}oS!h-|p@zanMIXcHP0QD>0I?Ag635;r^(;HQ1mzN2-S4plmuab@v`~iDS Va@{-nC!qiU002ovPDHLkV1k4|zuW)- literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable/h_forest.png b/OsmAnd/res/drawable/h_forest.png new file mode 100644 index 0000000000000000000000000000000000000000..540f200e7a6248441725145c4daa354318ab4280 GIT binary patch literal 124 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable/h_sosphone.png b/OsmAnd/res/drawable/h_sosphone.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5d0a26c1b21ec357625a0a2840b84c71011c98 GIT binary patch literal 508 zcmVu1Q2eRCt`FlFKgxQ544gSriK)9vchnY`SG3v=Z-ycr5G)5o{0= zVxt>GO43*u+NxAkH4U1!TH3VwP@N9_+;h^IYIPwo$v3&@-0%MG1B3uef1$MBxd(Bc4`}&x60jyMjA^8prl1`j+p00we;Ueewzq z;SB!z5v*;(&JYIN`cfr^4Ra92H8*;fTrApk?<`#6ad?wOfW;Yu<)$Dpt`m1Jzc1x9 zPr;`FZk|#I#j-4yFAbgXH-K_9r}}7(2KbLOK&yC^&S^)St}@)sIK zOv+?GIY+S7LqD3wY}{lTU~=1wK=cE$^2LVDlOQ*fdTc5)u&&F((%sa1d!h-SH6W2qcprAD+h?HG>9EE-de y?oJEi!nbzh*IHSxzIb{4DK5`73|(p!ptax4VwsT=+A$3P0000-&k$f)xRHJJ&WyU{Q5F{r s?sf1tIwtF_J=CaTlJ#!I&MyYy3< { @@ -54,6 +59,8 @@ public class OsmandRenderer implements Comparator { private PathEffect trackPathEffect = new DashPathEffect(new float[]{6,2}, 1); private PathEffect subwayPathEffect = new DashPathEffect(new float[]{6,3}, 1); private PathEffect railwayPathEffect = new DashPathEffect(new float[]{7,7}, 1); + + private Map shaders = new LinkedHashMap(); private final Context context; @@ -85,7 +92,14 @@ public class OsmandRenderer implements Comparator { } - + public Shader getShader(int resId){ + if(shaders.get(resId) == null){ + Shader sh = new BitmapShader( + BitmapFactory.decodeResource(context.getResources(), resId), TileMode.REPEAT, TileMode.REPEAT); + shaders.put(resId, sh); + } + return shaders.get(resId); + } @Override public int compare(MapRenderObject object1, MapRenderObject object2) { @@ -164,7 +178,9 @@ public class OsmandRenderer implements Comparator { Path path = null; int type = MapRenderingTypes.getObjectType(obj.getType()); int subtype = MapRenderingTypes.getPolygonSubType(obj.getType()); - int color = Color.LTGRAY; + int color = Color.WHITE; + int colorAround = 0; + Shader shader = null; if (type == MapRenderingTypes.MAN_MADE) { if (subtype == MapRenderingTypes.SUBTYPE_BUILDING) { color = Color.rgb(188, 169, 169); @@ -176,6 +192,106 @@ public class OsmandRenderer implements Comparator { if(subtype == 3){ color = Color.rgb(181, 208, 208); } + } else if (type == MapRenderingTypes.HIGHWAY) { + if (subtype == MapRenderingTypes.PL_HW_SERVICE || subtype == MapRenderingTypes.PL_HW_UNCLASSIFIED + || subtype == MapRenderingTypes.PL_HW_RESIDENTIAL) { + colorAround = Color.rgb(194, 194, 194); + color = clRoadColor; + } else if(subtype == MapRenderingTypes.PL_HW_PEDESTRIAN || subtype == MapRenderingTypes.PL_HW_FOOTWAY){ + color = Color.rgb(236, 236, 236); + colorAround = Color.rgb(176, 176, 176); + } + } else if (type == MapRenderingTypes.TOURISM) { + if (subtype == 2) { + color = Color.rgb(204, 153, 153); + } else if(subtype == 8){ + shader = getShader(R.drawable.h_zoo); + } + + } else if (type == MapRenderingTypes.NATURAL) { + if(subtype == 23){ + color = Color.rgb(114, 191, 129); + } else if(subtype == 2){ + color = Color.rgb(238, 204, 85); + } else if(subtype == 21 || subtype == 5){ + color = Color.rgb(181, 214, 241); + } + + } else if (type == MapRenderingTypes.LANDUSE) { + switch (subtype) { + case 1: + color = Color.rgb(189, 227, 203); + break; + case 2: + case 22: + color = Color.rgb(180, 213, 240); + break; + case 3: + color = Color.rgb(235, 215, 254); + break; + case 4: + shader = getShader(R.drawable.h_grave_yard); + break; + case 5: + color = Color.rgb(239, 200, 200); + break; + case 6: + color = Color.rgb(157, 157, 108); + break; + case 10: + shader = getShader(R.drawable.h_forest); + break; + case 12: + color = Color.rgb(207, 236, 168); + break; + case 15: + color = Color.rgb(223, 209, 214); + break; + case 23: + color = Color.rgb(221, 221, 221); + break; + case 24: + color = Color.rgb(254, 234, 234); + break; + case 27: + shader = getShader(R.drawable.h_vineyard); + break; + + } + } else if (type == MapRenderingTypes.LEISURE) { + colorAround = Color.rgb(147, 207, 170); + switch (subtype) { + case 2: + color = Color.rgb(189, 227, 203); + break; + case 3: + case 14: + case 15: + color = Color.rgb(199, 241, 163); + break; + case 6: + color = Color.rgb(137, 210, 174); + case 4: + color = Color.rgb(51, 204, 153); + break; + case 5: + color = Color.rgb(189, 207, 203); + break; + case 12: + color = Color.rgb(206, 246, 202); + break; + case 13: + color = Color.rgb(204, 255, 241); + break; + case 11: + shader = getShader(R.drawable.h_nr); + break; + } + } else if (type == MapRenderingTypes.AMENITY_HEALTHCARE) { + if (subtype == 2) { + color = Color.rgb(240, 240, 216); + colorAround = Color.rgb(212, 168, 158); + } } else if (type == MapRenderingTypes.AMENITY_TRANSPORTATION) { if (subtype == 1 || subtype == 2) { color = Color.rgb(246, 238, 183); @@ -187,37 +303,14 @@ public class OsmandRenderer implements Comparator { } else if (type == MapRenderingTypes.AMENITY_EDUCATION) { if(subtype == 2 || subtype == 3 || subtype == 5){ color = Color.rgb(240, 240, 216); + colorAround = Color.rgb(212, 168, 158); } else { // draw as building education color = Color.rgb(188, 169, 169); } - } else if (type == MapRenderingTypes.LEISURE) { - switch (subtype) { - case 4: - color = Color.rgb(51, 204, 153); - break; - case 12: - color = Color.rgb(206, 246, 202); - break; - } - - } else if (type == MapRenderingTypes.LANDUSE) { - switch (subtype) { - case 5: - color = Color.rgb(239, 200, 200); - break; - case 12: - color = Color.rgb(207, 236, 168); - break; - case 15: - color = Color.rgb(223, 209, 214); - break; - - } } paint.setColor(color); - for (int i = 0; i < obj.getPointsLength(); i++) { float lon = obj.getPointLongitude(i); float lat = obj.getPointLatitude(i); @@ -235,7 +328,13 @@ public class OsmandRenderer implements Comparator { if (path != null) { xText /= obj.getPointsLength(); yText /= obj.getPointsLength(); + paint.setShader(shader); canvas.drawPath(path, paint); + if(colorAround != 0){ + paintStroke.setColor(colorAround); + paintStroke.setStrokeWidth(1); + canvas.drawPath(path, paintStroke); + } String name = obj.getName(); if(name != null){ @@ -300,6 +399,9 @@ public class OsmandRenderer implements Comparator { boolean showLine = true; paint.setPathEffect(null); paint.setShadowLayer(0, 0, 0, 0); + paint.setColor(Color.BLACK); + paint.setStrokeWidth(1); + if (type == MapRenderingTypes.HIGHWAY) { int hwType = subtype; boolean carRoad = true; @@ -332,7 +434,6 @@ public class OsmandRenderer implements Comparator { paint.setColor(clCycleWayRoad); } else { - paint.setColor(clPedestrianRoad); } @@ -379,12 +480,10 @@ public class OsmandRenderer implements Comparator { } } else if(type == MapRenderingTypes.WATERWAY){ if(subtype >= 1 && subtype <= 6){ + paint.setStrokeWidth(2); paint.setColor(Color.rgb(181, 208, 208)); } - } else { - paint.setColor(Color.BLACK); - paint.setStrokeWidth(1); - } + } if(!showLine){ return; @@ -444,7 +543,7 @@ public class OsmandRenderer implements Comparator { } } - canvas.drawTextOnPath(obj.getName(), path, 0, 0, paintText); + canvas.drawTextOnPath(obj.getName(), path, 0, 2, paintText); } } @@ -468,9 +567,12 @@ public class OsmandRenderer implements Comparator { switch (subType) { case 27: case 65: - case 53: resId = R.drawable.h_shop_supermarket; break; + case 17: + case 53: + resId = R.drawable.h_department_store; + break; case 13: resId = R.drawable.h_shop_clothes; break; @@ -528,6 +630,24 @@ public class OsmandRenderer implements Comparator { break; } } + } else if(type == MapRenderingTypes.HISTORIC){ + if (zoom > 15) { + if (subType == 6) { + resId = R.drawable.h_memorial; + } else if(zoom > 16){ + // something historic + resId = R.drawable.h_view_point; + } + + } + } else if(type == MapRenderingTypes.EMERGENCY){ + if(zoom > 15){ + if(subType == 10){ + resId = R.drawable.h_firestation; + } else if(subType == 7){ + resId = R.drawable.h_sosphone; + } + } } else if(type == MapRenderingTypes.AMENITY_SUSTENANCE){ if (zoom > 15) { switch (subType) {