remove old renderer (test performance gain is less 10%)
git-svn-id: https://osmand.googlecode.com/svn/trunk@726 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
833ab7e60e
commit
8c6d3d409e
4 changed files with 34 additions and 1646 deletions
|
@ -344,7 +344,7 @@ public class OsmandRenderer {
|
|||
|
||||
objCount++;
|
||||
}
|
||||
if(objCount > 35){
|
||||
if(objCount > 25){
|
||||
notifyListeners(notifyList);
|
||||
objCount = 0;
|
||||
}
|
||||
|
@ -818,7 +818,7 @@ public class OsmandRenderer {
|
|||
return;
|
||||
}
|
||||
if(rc.zoom >= 16 && "highway".equals(pair.tag) && MapRenderingTypes.isOneWayWay(obj.getHighwayAttributes())){ //$NON-NLS-1$
|
||||
rc.adds = PolylineRenderer.getOneWayProperties();
|
||||
rc.adds = getOneWayProperties();
|
||||
}
|
||||
|
||||
|
||||
|
@ -947,270 +947,40 @@ public class OsmandRenderer {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO delete !!!
|
||||
private void drawPolylineOld(BinaryMapDataObject obj, Canvas canvas, RenderingContext rc, int type, int subtype, int wholeType) {
|
||||
rc.main.emptyLine();
|
||||
rc.second.emptyLine();
|
||||
rc.third.emptyLine();
|
||||
rc.adds = null;
|
||||
|
||||
PolylineRenderer.renderPolyline(type, subtype, wholeType, obj.getHighwayAttributes(), rc, this);
|
||||
|
||||
|
||||
if(rc.main.strokeWidth == 0){
|
||||
return;
|
||||
}
|
||||
int length = obj.getPointsLength();
|
||||
if(length < 2){
|
||||
return;
|
||||
}
|
||||
rc.visible++;
|
||||
|
||||
Path path = null;
|
||||
float pathRotate = 0;
|
||||
float xLength = 0;
|
||||
float yLength = 0;
|
||||
boolean inverse = false;
|
||||
float xPrev = 0;
|
||||
float yPrev = 0;
|
||||
float xMid = 0;
|
||||
float yMid = 0;
|
||||
PointF middlePoint = new PointF();
|
||||
int middle = obj.getPointsLength() / 2;
|
||||
|
||||
for (int i = 0; i < length ; i++) {
|
||||
PointF p = calcPoint(obj, i, rc);
|
||||
if(i == 0 || i == length -1){
|
||||
xMid += p.x;
|
||||
yMid += p.y;
|
||||
}
|
||||
if (path == null) {
|
||||
path = new Path();
|
||||
path.moveTo(p.x, p.y);
|
||||
} else {
|
||||
xLength += p.x - xPrev; // not abs
|
||||
yLength += p.y - yPrev; // not abs
|
||||
if(i == middle){
|
||||
middlePoint.set(p.x, p.y);
|
||||
double rot = - Math.atan2(p.x - xPrev, p.y - yPrev) * 180 / Math.PI;
|
||||
if (rot < 0) {
|
||||
rot += 360;
|
||||
}
|
||||
if (rot < 180) {
|
||||
rot += 180;
|
||||
inverse = true;
|
||||
}
|
||||
pathRotate = (float) rot;
|
||||
}
|
||||
path.lineTo(p.x, p.y);
|
||||
}
|
||||
xPrev = p.x;
|
||||
yPrev = p.y;
|
||||
}
|
||||
if (path != null) {
|
||||
rc.main.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
if (rc.second.strokeWidth != 0) {
|
||||
rc.second.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
if (rc.third.strokeWidth != 0) {
|
||||
rc.third.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
}
|
||||
}
|
||||
if (rc.adds != null) {
|
||||
for (int i = 0; i < rc.adds.length; i++) {
|
||||
rc.adds[i].updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
}
|
||||
}
|
||||
if (obj.getName() != null) {
|
||||
String name = obj.getName();
|
||||
rc.clearText();
|
||||
name = TextRenderer.renderObjectText(name, subtype, type, rc.zoom, false, rc);
|
||||
if(rc.textSize == 0 && rc.showAnotherText != null){
|
||||
name = TextRenderer.renderObjectText(rc.showAnotherText, subtype, type, rc.zoom, false, rc);
|
||||
}
|
||||
if (name != null && rc.textSize > 0) {
|
||||
if (!rc.showTextOnPath) {
|
||||
TextDrawInfo text = new TextDrawInfo(name);
|
||||
text.fillProperties(rc, middlePoint.x, middlePoint.y);
|
||||
rc.textToDraw.add(text);
|
||||
}
|
||||
if(rc.showAnotherText != null){
|
||||
name = TextRenderer.renderObjectText(rc.showAnotherText, subtype, type, rc.zoom, false, rc);
|
||||
}
|
||||
|
||||
if (rc.showTextOnPath && paintText.measureText(obj.getName()) < Math.max(Math.abs(xLength), Math.abs(yLength))) {
|
||||
if (inverse) {
|
||||
path.rewind();
|
||||
boolean st = true;
|
||||
for (int i = obj.getPointsLength() - 1; i >= 0; i--) {
|
||||
PointF p = calcPoint(obj, i, rc);
|
||||
if (st) {
|
||||
st = false;
|
||||
path.moveTo(p.x, p.y);
|
||||
} else {
|
||||
path.lineTo(p.x, p.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TextDrawInfo text = new TextDrawInfo(name);
|
||||
text.fillProperties(rc, xMid / 2, yMid / 2);
|
||||
text.pathRotate = pathRotate;
|
||||
text.drawOnPath = path;
|
||||
text.vOffset = rc.main.strokeWidth / 2 - 1;
|
||||
rc.textToDraw.add(text);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void drawPolygonOld(BinaryMapDataObject obj, Canvas canvas, RenderingContext rc, int type, int subtype) {
|
||||
float xText = 0;
|
||||
float yText = 0;
|
||||
int zoom = rc.zoom;
|
||||
Path path = null;
|
||||
rc.main.emptyArea();
|
||||
rc.second.emptyLine();
|
||||
rc.main.color = Color.rgb(245, 245, 245);
|
||||
|
||||
PolygonRenderer.renderPolygon(rc, zoom, type, subtype, this);
|
||||
if(!rc.main.fillArea){
|
||||
return;
|
||||
}
|
||||
rc.visible++;
|
||||
int len = obj.getPointsLength();
|
||||
for (int i = 0; i < obj.getPointsLength(); i++) {
|
||||
|
||||
PointF p = calcPoint(obj, i, rc);
|
||||
xText += p.x;
|
||||
yText += p.y;
|
||||
if (path == null) {
|
||||
path = new Path();
|
||||
path.moveTo(p.x, p.y);
|
||||
} else {
|
||||
path.lineTo(p.x, p.y);
|
||||
}
|
||||
}
|
||||
|
||||
if (path != null && len > 0) {
|
||||
xText /= len;
|
||||
yText /= len;
|
||||
|
||||
rc.main.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
if (rc.second.strokeWidth != 0) {
|
||||
rc.second.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
}
|
||||
String name = obj.getName();
|
||||
if(name != null){
|
||||
rc.clearText();
|
||||
name = TextRenderer.renderObjectText(name, subtype, type, rc.zoom, true, rc);
|
||||
if (rc.textSize > 0 && name != null) {
|
||||
TextDrawInfo info = new TextDrawInfo(name);
|
||||
info.fillProperties(rc, xText, yText);
|
||||
rc.textToDraw.add(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
private void drawPointOld(BinaryMapDataObject obj, Canvas canvas, RenderingContext rc, int type, int subtype, boolean renderText) {
|
||||
int resId = PointRenderer.getPointBitmap(rc.zoom, type, subtype);
|
||||
String name = null;
|
||||
if (renderText) {
|
||||
name = obj.getName();
|
||||
if (name != null) {
|
||||
rc.clearText();
|
||||
name = TextRenderer.renderObjectText(name, subtype, type, rc.zoom, true, rc);
|
||||
}
|
||||
}
|
||||
if(resId == 0 && name == null){
|
||||
return;
|
||||
}
|
||||
int len = obj.getPointsLength();
|
||||
rc.visible++;
|
||||
PointF ps = new PointF(0, 0);
|
||||
for (int i = 0; i < len; i++) {
|
||||
PointF p = calcPoint(obj, i, rc);
|
||||
ps.x += p.x;
|
||||
ps.y += p.y;
|
||||
}
|
||||
if(len > 1){
|
||||
ps.x /= len;
|
||||
ps.y /= len;
|
||||
}
|
||||
|
||||
if(resId != 0){
|
||||
IconDrawInfo ico = new IconDrawInfo();
|
||||
ico.x = ps.x;
|
||||
ico.y = ps.y;
|
||||
ico.resId = resId;
|
||||
rc.iconsToDraw.add(ico);
|
||||
}
|
||||
if (name != null && rc.textSize > 0) {
|
||||
TextDrawInfo info = new TextDrawInfo(name);
|
||||
info.fillProperties(rc, ps.x, ps.y);
|
||||
rc.textToDraw.add(info);
|
||||
}
|
||||
private static RenderingPaintProperties[] oneWay = null;
|
||||
public static RenderingPaintProperties[] getOneWayProperties(){
|
||||
if(oneWay == null){
|
||||
PathEffect arrowDashEffect1 = new DashPathEffect(new float[] { 0, 12, 10, 152 }, 0);
|
||||
PathEffect arrowDashEffect2 = new DashPathEffect(new float[] { 0, 12, 9, 153 }, 1);
|
||||
PathEffect arrowDashEffect3 = new DashPathEffect(new float[] { 0, 18, 2, 154 }, 1);
|
||||
PathEffect arrowDashEffect4 = new DashPathEffect(new float[] { 0, 18, 1, 155 }, 1);
|
||||
oneWay = new RenderingPaintProperties[4];
|
||||
oneWay[0] = new RenderingPaintProperties();
|
||||
oneWay[0].emptyLine();
|
||||
oneWay[0].color = 0xff6c70d5;
|
||||
oneWay[0].strokeWidth = 1;
|
||||
oneWay[0].pathEffect = arrowDashEffect1;
|
||||
|
||||
}
|
||||
|
||||
private void drawMultiPolygonOld(BinaryMapDataObject obj, Canvas canvas, RenderingContext rc, int type, int subtype) {
|
||||
Path path = null;
|
||||
rc.main.emptyArea();
|
||||
rc.second.emptyLine();
|
||||
rc.main.color = Color.rgb(245, 245, 245);
|
||||
PolygonRenderer.renderPolygon(rc, rc.zoom, type, subtype, this);
|
||||
if (!rc.main.fillArea) {
|
||||
return;
|
||||
}
|
||||
rc.visible++;
|
||||
path = new Path();
|
||||
for (int i = 0; i < ((MultyPolygon) obj).getBoundsCount(); i++) {
|
||||
int cnt = ((MultyPolygon) obj).getBoundPointsCount(i);
|
||||
float xText = 0;
|
||||
float yText = 0;
|
||||
for (int j = 0; j < cnt; j++) {
|
||||
PointF p = calcMultiPolygonPoint((MultyPolygon) obj, j, i, rc);
|
||||
xText += p.x;
|
||||
yText += p.y;
|
||||
if (j == 0) {
|
||||
path.moveTo(p.x, p.y);
|
||||
} else {
|
||||
path.lineTo(p.x, p.y);
|
||||
}
|
||||
}
|
||||
if (cnt > 0) {
|
||||
String name = ((MultyPolygon) obj).getName(i);
|
||||
if (name != null) {
|
||||
rc.clearText();
|
||||
name = TextRenderer.renderObjectText(name, subtype, type, rc.zoom, true, rc);
|
||||
if (rc.textSize > 0 && name != null) {
|
||||
TextDrawInfo info = new TextDrawInfo(name);
|
||||
info.fillProperties(rc, xText / cnt, yText / cnt);
|
||||
rc.textToDraw.add(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rc.main.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
if (rc.second.strokeWidth != 0) {
|
||||
//rc.second.strokeWidth = 1.5f;
|
||||
//rc.second.color = Color.BLACK;
|
||||
|
||||
rc.second.updatePaint(paint);
|
||||
canvas.drawPath(path, paint);
|
||||
oneWay[1] = new RenderingPaintProperties();
|
||||
oneWay[1].emptyLine();
|
||||
oneWay[1].color = 0xff6c70d5;
|
||||
oneWay[1].strokeWidth = 2;
|
||||
oneWay[1].pathEffect = arrowDashEffect2;
|
||||
|
||||
oneWay[2] = new RenderingPaintProperties();
|
||||
oneWay[2].emptyLine();
|
||||
oneWay[2].color = 0xff6c70d5;
|
||||
oneWay[2].strokeWidth = 3;
|
||||
oneWay[2].pathEffect = arrowDashEffect3;
|
||||
|
||||
oneWay[3] = new RenderingPaintProperties();
|
||||
oneWay[3].emptyLine();
|
||||
oneWay[3].color = 0xff6c70d5;
|
||||
oneWay[3].strokeWidth = 4;
|
||||
oneWay[3].pathEffect = arrowDashEffect4;
|
||||
|
||||
}
|
||||
return oneWay;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,384 +0,0 @@
|
|||
package net.osmand.render;
|
||||
|
||||
import net.osmand.R;
|
||||
import net.osmand.osm.MapRenderingTypes;
|
||||
|
||||
public class PointRenderer {
|
||||
|
||||
/**
|
||||
* @return 0 if there is no icon for specified zoom
|
||||
*/
|
||||
public static int getPointBitmap(int zoom, int type, int subType) {
|
||||
int resId = 0;
|
||||
switch (type) {
|
||||
case MapRenderingTypes.HIGHWAY: {
|
||||
if (zoom >= 16) {
|
||||
if (subType == 38) {
|
||||
if (zoom > 16) {
|
||||
resId = R.drawable.h_traffic_light;
|
||||
}
|
||||
} else if (subType == 40) {
|
||||
resId = zoom == 16 ? R.drawable.h_bus_stop_small : R.drawable.h_bus_stop;
|
||||
} else if (subType == 23) {
|
||||
resId = R.drawable.h_transport_ford;
|
||||
}
|
||||
}
|
||||
if (subType == 35) {
|
||||
if (zoom >= 15) {
|
||||
resId = R.drawable.h_mini_round;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.RAILWAY: {
|
||||
if (subType == 13) {
|
||||
if (zoom == 12) {
|
||||
resId = R.drawable.h_halt;
|
||||
} else if (zoom == 13 || zoom == 14) {
|
||||
resId = R.drawable.h_station_small;
|
||||
} else if (zoom >= 15) {
|
||||
resId = R.drawable.h_station;
|
||||
}
|
||||
} else if (subType == 22 || subType == 23) {
|
||||
if (zoom == 13 || zoom == 14) {
|
||||
resId = R.drawable.h_halt;
|
||||
} else if (zoom >= 15) {
|
||||
resId = R.drawable.h_station_small;
|
||||
}
|
||||
} else if (subType == 25) {
|
||||
if (zoom == 14 || zoom == 15) {
|
||||
resId = R.drawable.h_level_crossing;
|
||||
} else if (zoom >= 16) {
|
||||
resId = R.drawable.h_level_crossing2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AEROWAY: {
|
||||
if (subType == 1) {
|
||||
if (zoom >= 10 && zoom <= 14) {
|
||||
resId = R.drawable.h_aerodrome;
|
||||
}
|
||||
} else if (subType == 10) {
|
||||
if (zoom >= 9 && zoom <= 13) {
|
||||
resId = R.drawable.h_airport;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.WATERWAY: {
|
||||
if (subType == 8) {
|
||||
if (zoom > 14) {
|
||||
resId = R.drawable.h_lock_gate;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AERIALWAY: {
|
||||
if (subType == 7) {
|
||||
if (zoom == 13 || zoom == 14) {
|
||||
resId = R.drawable.h_halt;
|
||||
} else if (zoom >= 15) {
|
||||
resId = R.drawable.h_station_small;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.POWER: {
|
||||
if (zoom > 14) {
|
||||
if (subType == 1) {
|
||||
resId = R.drawable.h_power_tower;
|
||||
} else if (subType == 7) {
|
||||
resId = R.drawable.h_power_wind;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.MAN_MADE: {
|
||||
if (subType == 25) {
|
||||
if (zoom >= 16) {
|
||||
resId = R.drawable.h_tower_water;
|
||||
}
|
||||
} else if (subType == 17) {
|
||||
if (zoom >= 15) {
|
||||
resId = R.drawable.h_lighthouse;
|
||||
}
|
||||
} else if (subType == 27) {
|
||||
if (zoom >= 16) {
|
||||
resId = R.drawable.h_windmill;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.SHOP: {
|
||||
if (zoom > 15) {
|
||||
switch (subType) {
|
||||
case 27:
|
||||
case 65:
|
||||
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;
|
||||
case 31:
|
||||
resId = R.drawable.h_shop_hairdresser;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (zoom > 16) {
|
||||
switch (subType) {
|
||||
case 48:
|
||||
resId = R.drawable.h_shop_butcher;
|
||||
break;
|
||||
case 42:
|
||||
resId = R.drawable.h_shop_bakery;
|
||||
break;
|
||||
case 20:
|
||||
resId = R.drawable.h_shop_diy;
|
||||
break;
|
||||
case 16:
|
||||
resId = R.drawable.h_shop_convenience;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.TOURISM: {
|
||||
if (zoom > 15) {
|
||||
switch (subType) {
|
||||
case 4:
|
||||
resId = R.drawable.h_camp_site;
|
||||
break;
|
||||
case 5:
|
||||
resId = R.drawable.h_caravan_park;
|
||||
break;
|
||||
case 6:
|
||||
resId = R.drawable.h_camp_site; // picnic
|
||||
break;
|
||||
case 9:
|
||||
resId = R.drawable.h_alpinehut;
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
resId = R.drawable.h_guest_house;
|
||||
break;
|
||||
case 12:
|
||||
case 14:
|
||||
resId = R.drawable.h_hostel;
|
||||
break;
|
||||
case 13:
|
||||
resId = R.drawable.h_hotel;
|
||||
break;
|
||||
case 15:
|
||||
resId = R.drawable.h_museum;
|
||||
break;
|
||||
case 17:
|
||||
resId = R.drawable.h_view_point;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.NATURAL: {
|
||||
if (subType == 13) {
|
||||
if (zoom > 10) {
|
||||
resId = R.drawable.h_peak;
|
||||
}
|
||||
} else if (subType == 3) {
|
||||
if (zoom > 14) {
|
||||
resId = R.drawable.h_cave_entrance;
|
||||
}
|
||||
} else if (subType == 17) {
|
||||
if (zoom >= 14) {
|
||||
resId = R.drawable.h_spring;
|
||||
}
|
||||
} else if (subType == 19) {
|
||||
if (zoom == 16) {
|
||||
resId = R.drawable.h_tree;
|
||||
} else if (zoom >= 17) {
|
||||
resId = R.drawable.h_tree2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.HISTORIC: {
|
||||
if (zoom > 15) {
|
||||
if (subType == 6) {
|
||||
resId = R.drawable.h_memorial;
|
||||
} else {
|
||||
// something historic
|
||||
resId = R.drawable.h_view_point;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.BARRIER: {
|
||||
if (subType == 21) {
|
||||
if (zoom >= 15) {
|
||||
resId = R.drawable.h_gate2;
|
||||
}
|
||||
} else if (subType == 22) {
|
||||
if (zoom >= 16) {
|
||||
resId = R.drawable.h_liftgate;
|
||||
}
|
||||
} else if (subType == 26) {
|
||||
if (zoom >= 16) {
|
||||
resId = R.drawable.h_bollard;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.EMERGENCY: {
|
||||
if (zoom > 15) {
|
||||
if (subType == 10) {
|
||||
resId = R.drawable.h_firestation;
|
||||
} else if (subType == 7) {
|
||||
resId = R.drawable.h_sosphone;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_SUSTENANCE: {
|
||||
if (zoom > 15) {
|
||||
switch (subType) {
|
||||
case 1:
|
||||
resId = R.drawable.h_restaurant;
|
||||
break;
|
||||
case 2:
|
||||
resId = R.drawable.h_cafe;
|
||||
break;
|
||||
case 4:
|
||||
resId = R.drawable.h_fast_food;
|
||||
break;
|
||||
case 5:
|
||||
resId = R.drawable.h_pub;
|
||||
break;
|
||||
case 7:
|
||||
case 6:
|
||||
resId = R.drawable.h_bar;
|
||||
break;
|
||||
case 8:
|
||||
resId = R.drawable.h_food_drinkingtap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_EDUCATION: {
|
||||
if (zoom > 15) {
|
||||
if (subType == 2 || subType == 3) {
|
||||
resId = R.drawable.h_school;
|
||||
} else if (subType == 4) {
|
||||
resId = R.drawable.h_library;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_TRANSPORTATION: {
|
||||
if (subType == 1 || subType == 2) {
|
||||
if (zoom > 14) {
|
||||
resId = R.drawable.h_parking;
|
||||
}
|
||||
} else if (subType == 4) {
|
||||
if (zoom > 13) {
|
||||
resId = R.drawable.h_fuel;
|
||||
}
|
||||
} else if (subType == 17) {
|
||||
if (zoom >= 17) {
|
||||
resId = R.drawable.h_rental_bicycle;
|
||||
}
|
||||
} else if (subType == 20) {
|
||||
if (zoom >= 16) {
|
||||
resId = R.drawable.h_car_share;
|
||||
}
|
||||
} else if (subType == 18) {
|
||||
if (zoom > 14) {
|
||||
resId = R.drawable.h_bus_station;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_FINANCE: {
|
||||
if (subType == 1) {
|
||||
if (zoom > 16) {
|
||||
resId = R.drawable.h_atm;
|
||||
}
|
||||
} else if (subType == 2) {
|
||||
if (zoom > 15) {
|
||||
resId = R.drawable.h_bank;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_HEALTHCARE: {
|
||||
if (subType == 1) {
|
||||
if (zoom > 15) {
|
||||
resId = R.drawable.h_pharmacy;
|
||||
}
|
||||
} else if (subType == 2) {
|
||||
if (zoom >= 15) {
|
||||
resId = R.drawable.h_hospital;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_ENTERTAINMENT: {
|
||||
if (zoom >= 15) {
|
||||
if (subType == 3) {
|
||||
resId = R.drawable.h_cinema;
|
||||
} else if (subType == 9) {
|
||||
resId = R.drawable.h_theatre;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AMENITY_OTHER: {
|
||||
if (zoom > 16) {
|
||||
switch (subType) {
|
||||
case 10:
|
||||
resId = R.drawable.h_police;
|
||||
break;
|
||||
case 18:
|
||||
resId = R.drawable.h_toilets;
|
||||
break;
|
||||
case 15:
|
||||
resId = R.drawable.h_recycling;
|
||||
break;
|
||||
case 7:
|
||||
resId = R.drawable.h_embassy;
|
||||
break;
|
||||
case 8:
|
||||
resId = R.drawable.h_grave_yard;
|
||||
break;
|
||||
case 17:
|
||||
resId = R.drawable.h_telephone;
|
||||
break;
|
||||
case 11:
|
||||
resId = R.drawable.h_postbox;
|
||||
break;
|
||||
case 16:
|
||||
resId = R.drawable.h_shelter;
|
||||
break;
|
||||
case 12:
|
||||
resId = R.drawable.h_postoffice;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (zoom >= 16) {
|
||||
if (subType == 26) {
|
||||
resId = R.drawable.h_place_of_worship;
|
||||
} else if (subType == 13) {
|
||||
resId = R.drawable.h_prison;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return resId;
|
||||
}
|
||||
}
|
|
@ -1,322 +0,0 @@
|
|||
package net.osmand.render;
|
||||
|
||||
import net.osmand.R;
|
||||
import net.osmand.osm.MapRenderingTypes;
|
||||
import net.osmand.render.OsmandRenderer.RenderingContext;
|
||||
import android.graphics.Color;
|
||||
|
||||
public class PolygonRenderer {
|
||||
|
||||
public static void renderPolygon(RenderingContext rc, int zoom, int type, int subtype, OsmandRenderer o) {
|
||||
if (type == MapRenderingTypes.HIGHWAY) {
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
if (subtype == MapRenderingTypes.PL_HW_SERVICE || subtype == MapRenderingTypes.PL_HW_UNCLASSIFIED
|
||||
|| subtype == MapRenderingTypes.PL_HW_RESIDENTIAL) {
|
||||
rc.second.color = Color.rgb(194, 194, 194);
|
||||
rc.second.strokeWidth = 1;
|
||||
rc.main.color= Color.WHITE;
|
||||
} else if(subtype == MapRenderingTypes.PL_HW_PEDESTRIAN || subtype == MapRenderingTypes.PL_HW_FOOTWAY){
|
||||
rc.main.color = Color.rgb(236, 236, 236);
|
||||
rc.second.color = Color.rgb(176, 176, 176);
|
||||
rc.second.strokeWidth = 1;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.RAILWAY) {
|
||||
if(subtype == 13){
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xffd4aaaa;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.WATERWAY) {
|
||||
if(subtype == 3){
|
||||
rc.main.fillArea = zoom >= 7;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
} else if(subtype == 4 || subtype == 7 || subtype == 13){
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.AEROWAY) {
|
||||
if(subtype == 1 || subtype == 10){
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0x80cccccc;
|
||||
} else if(subtype == 2){
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
rc.main.color = 0xffcc99ff;
|
||||
} else if(subtype == 9){
|
||||
// apron
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xffe9d1ff;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.POWER) {
|
||||
if(subtype == 5 || subtype == 6){
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xffbbbbbb;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.MAN_MADE) {
|
||||
rc.main.fillArea = zoom > 15;
|
||||
if (subtype == MapRenderingTypes.SUBTYPE_BUILDING) {
|
||||
rc.main.color = Color.rgb(188, 169, 169);
|
||||
} else if (subtype == MapRenderingTypes.SUBTYPE_GARAGES) {
|
||||
rc.main.color = Color.rgb(221, 221, 221);
|
||||
}
|
||||
} else if (type == MapRenderingTypes.TOURISM) {
|
||||
if (subtype == 2 || subtype == 7) {
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xfff2caea;
|
||||
if(subtype == 7){
|
||||
rc.second.color = 0xff734a08;
|
||||
rc.second.pathEffect = o.getDashEffect("9_3"); //$NON-NLS-1$
|
||||
if(zoom <= 15){
|
||||
rc.second.strokeWidth = 1;
|
||||
} else {
|
||||
rc.second.strokeWidth = 2;
|
||||
}
|
||||
}
|
||||
} else if(subtype >= 4 && subtype <= 6){
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
rc.main.color = 0xa0ccff99;
|
||||
} else if(subtype == 8){
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_zoo);
|
||||
}
|
||||
|
||||
} else if (type == MapRenderingTypes.NATURAL) {
|
||||
switch(subtype){
|
||||
case 2 :
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_beach);
|
||||
case 5:
|
||||
rc.main.fillArea = zoom >= 6;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
break;
|
||||
case 7:
|
||||
rc.main.fillArea = zoom >= 8;
|
||||
rc.main.shader = o.getShader(R.drawable.h_glacier);
|
||||
if(zoom >= 10){
|
||||
rc.second.color = 0xff99ccff;
|
||||
rc.second.strokeWidth = 2;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
rc.main.color = 0xffffffc0;
|
||||
break;
|
||||
case 9:
|
||||
rc.main.fillArea = zoom >= 11;
|
||||
rc.main.color = 0xfff2efe9;
|
||||
break;
|
||||
case 11:
|
||||
case 22:
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_marsh);
|
||||
break;
|
||||
case 12 :
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_mud);
|
||||
break;
|
||||
case 16 :
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_scrub);
|
||||
break;
|
||||
case 21:
|
||||
rc.main.fillArea = zoom >= 7;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
break;
|
||||
case 23 :
|
||||
rc.main.fillArea = zoom >= 8;
|
||||
rc.main.color = 0xffaed1a0;
|
||||
break;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.LANDUSE) {
|
||||
switch (subtype) {
|
||||
case 1:
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xffc8b084;
|
||||
break;
|
||||
case 2:
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
break;
|
||||
case 4:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
if(zoom >= 12 && zoom <= 14){
|
||||
rc.main.color = 0xffaacbaf;
|
||||
} else if (zoom > 14) {
|
||||
rc.main.shader = o.getShader(R.drawable.h_grave_yard);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffefc8c8;
|
||||
break;
|
||||
case 3:
|
||||
case 6:
|
||||
case 13:
|
||||
case 16:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xff9d9d6c;
|
||||
break;
|
||||
case 7:
|
||||
rc.main.fillArea = zoom >= 11;
|
||||
rc.main.color = 0xffead8bd;
|
||||
break;
|
||||
case 9:
|
||||
rc.main.fillArea = zoom >= 11;
|
||||
rc.main.color = 0xffddbf92;
|
||||
break;
|
||||
case 10:
|
||||
rc.main.fillArea = zoom >= 8;
|
||||
if(zoom <= 13){
|
||||
rc.main.color = 0xff8dc56c;
|
||||
} else {
|
||||
rc.main.shader = o.getShader(R.drawable.h_forest);
|
||||
}
|
||||
break;
|
||||
case 11 :
|
||||
rc.main.color = Color.rgb(223, 209, 214);
|
||||
rc.main.fillArea = zoom >= 16;
|
||||
break;
|
||||
case 12:
|
||||
case 17:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffcfeca8;
|
||||
break;
|
||||
case 15:
|
||||
case 20:
|
||||
rc.main.color = 0xffdfd1d6;
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
break;
|
||||
case 18:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xa0ffa8a8;
|
||||
break;
|
||||
case 19:
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
rc.main.shader = o.getShader(R.drawable.h_orchard);
|
||||
break;
|
||||
case 21:
|
||||
rc.main.color = 0xffcfeca8;
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
break;
|
||||
case 22 :
|
||||
rc.main.fillArea = zoom >= 7;
|
||||
rc.main.color = 0xffb5d0d0;
|
||||
break;
|
||||
case 23:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffdddddd;
|
||||
break;
|
||||
case 24:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffcfeca8;
|
||||
if(zoom >= 15){
|
||||
rc.second.color = Color.RED;
|
||||
rc.second.strokeWidth = 1;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.shader = o.getShader(R.drawable.h_quarry2);
|
||||
break;
|
||||
case 27:
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
if(zoom < 14){
|
||||
rc.main.color = 0xffabdf96;
|
||||
} else {
|
||||
rc.main.shader = o.getShader(R.drawable.h_vineyard);
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
rc.main.fillArea = zoom >= 11;
|
||||
rc.main.color = 0x30666600;
|
||||
if(zoom >= 14){
|
||||
rc.second.strokeWidth= 1;
|
||||
rc.second.color = 0x60666600;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.MILITARY) {
|
||||
if(subtype == 3){
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xffff8f8f;
|
||||
} else if(subtype == 4){
|
||||
rc.main.fillArea = zoom >= 10;
|
||||
rc.main.shader = o.getShader(R.drawable.h_danger);
|
||||
}
|
||||
} else if (type == MapRenderingTypes.LEISURE) {
|
||||
switch (subtype) {
|
||||
case 2:
|
||||
case 4:
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.main.color = 0xff33cc99;
|
||||
break;
|
||||
case 3:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffb5e3b5;
|
||||
break;
|
||||
case 5:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.second.color = 0xff888888;
|
||||
rc.second.strokeWidth = 1;
|
||||
rc.main.color = 0xff74dcba;
|
||||
break;
|
||||
case 6:
|
||||
rc.main.color = 0xff8ad3af;
|
||||
rc.main.fillArea = zoom >= 13;
|
||||
rc.second.color = 0xff888888;
|
||||
rc.second.strokeWidth = 1;
|
||||
break;
|
||||
case 11:
|
||||
if(zoom < 8){
|
||||
rc.main.fillArea = false;
|
||||
} else if(zoom >= 8 && zoom <= 12){
|
||||
rc.main.fillArea = true;
|
||||
rc.main.color = 0xffabdf96;
|
||||
} else {
|
||||
rc.main.fillArea = true;
|
||||
rc.main.shader = o.getShader(R.drawable.h_nr);
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xb0b6fdb6;
|
||||
break;
|
||||
case 13:
|
||||
rc.main.color = 0xffccfff1;
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
break;
|
||||
case 14:
|
||||
case 15:
|
||||
rc.main.fillArea = zoom >= 12;
|
||||
rc.main.color = 0xffcfeca8;
|
||||
break;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.AMENITY_HEALTHCARE) {
|
||||
if (subtype == 2) {
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
rc.main.color = 0xfff0f0d8;
|
||||
rc.second.color = Color.rgb(212, 168, 158);
|
||||
rc.second.strokeWidth = 1;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.AMENITY_TRANSPORTATION) {
|
||||
if (subtype == 1 || subtype == 2) {
|
||||
rc.main.color = Color.rgb(246, 238, 183);
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.AMENITY_ENTERTAINMENT) {
|
||||
if (subtype == 3) {
|
||||
rc.main.color = Color.rgb(204, 153, 153);
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
}
|
||||
} else if (type == MapRenderingTypes.AMENITY_EDUCATION) {
|
||||
if(subtype == 1 || subtype == 2 || subtype == 3 || subtype == 5){
|
||||
rc.main.fillArea = zoom >= 15;
|
||||
rc.main.color = 0xfff0f0d8;
|
||||
rc.second.color = Color.rgb(212, 168, 158);
|
||||
rc.second.strokeWidth = 1;
|
||||
} else {
|
||||
// draw as building education
|
||||
rc.main.color = Color.rgb(188, 169, 169);
|
||||
rc.main.fillArea = zoom >= 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,676 +0,0 @@
|
|||
package net.osmand.render;
|
||||
|
||||
import net.osmand.osm.MapRenderingTypes;
|
||||
import net.osmand.render.OsmandRenderer.RenderingContext;
|
||||
import net.osmand.render.OsmandRenderer.RenderingPaintProperties;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.DashPathEffect;
|
||||
import android.graphics.PathEffect;
|
||||
import android.graphics.Paint.Cap;
|
||||
|
||||
public class PolylineRenderer {
|
||||
|
||||
public static void renderPolyline(int type, int subtype, int wholeType, int highwayAttributes,RenderingContext rc, OsmandRenderer o){
|
||||
int zoom = rc.zoom;
|
||||
int color = Color.BLACK;
|
||||
PathEffect pathEffect = null;
|
||||
float strokeWidth = zoom >= 15 ? 1 : 0;
|
||||
int shadowLayer = 0;
|
||||
int shadowColor = 0;
|
||||
|
||||
switch (type) {
|
||||
case MapRenderingTypes.HIGHWAY: {
|
||||
int hwType = subtype;
|
||||
boolean carRoad = true;
|
||||
int layer = MapRenderingTypes.getWayLayer(wholeType);
|
||||
boolean tunnel = layer == 1;
|
||||
boolean bridge = layer == 2;
|
||||
if (hwType == MapRenderingTypes.PL_HW_TRUNK || hwType == MapRenderingTypes.PL_HW_MOTORWAY) {
|
||||
if (hwType == MapRenderingTypes.PL_HW_TRUNK) {
|
||||
color = Color.rgb(168, 218, 168);
|
||||
} else {
|
||||
color = Color.rgb(128, 155, 192);
|
||||
}
|
||||
if(zoom < 10){
|
||||
if (zoom >= 7) {
|
||||
strokeWidth = 3.5f;
|
||||
} else if (zoom == 6) {
|
||||
strokeWidth = 2;
|
||||
} else if (zoom == 5) {
|
||||
strokeWidth = 1;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if (zoom <= 12) {
|
||||
strokeWidth = 3f;
|
||||
} else if (zoom <= 14) {
|
||||
strokeWidth = 7f;
|
||||
}
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_PRIMARY) {
|
||||
color = Color.rgb(235, 152, 154);
|
||||
if (zoom < 7) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom == 7) {
|
||||
strokeWidth = 1.5f;
|
||||
} else if (zoom == 8 || zoom == 9) {
|
||||
strokeWidth = 2f;
|
||||
} else if (zoom <= 12) {
|
||||
strokeWidth = 3f;
|
||||
} else if (zoom <= 14) {
|
||||
strokeWidth = 7f;
|
||||
}
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_SECONDARY) {
|
||||
color = Color.rgb(253, 214, 164);
|
||||
if(zoom < 8){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom <= 10){
|
||||
strokeWidth = 1;
|
||||
} else if(zoom <= 12){
|
||||
strokeWidth = 2;
|
||||
} else if(zoom <= 14){
|
||||
strokeWidth = 6;
|
||||
}
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_TERTIARY) {
|
||||
color = Color.rgb(254, 254, 179);
|
||||
shadowLayer = 2;
|
||||
shadowColor = Color.rgb(186, 186, 186);
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 14){
|
||||
strokeWidth = 4;
|
||||
shadowLayer = 1;
|
||||
} else if(zoom < 15){
|
||||
strokeWidth = 6;
|
||||
shadowLayer = 1;
|
||||
}
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_RESIDENTIAL || hwType == MapRenderingTypes.PL_HW_UNCLASSIFIED){
|
||||
if(zoom < 14){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 15){
|
||||
strokeWidth = 4;
|
||||
}
|
||||
shadowLayer = 1;
|
||||
shadowColor = Color.rgb(194, 194, 194);
|
||||
color = Color.WHITE;
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_SERVICE || hwType == MapRenderingTypes.PL_HW_LIVING_STREET) {
|
||||
shadowLayer = 1;
|
||||
shadowColor = Color.rgb(194, 194, 194);
|
||||
if(zoom < 15){
|
||||
strokeWidth = 0;
|
||||
}
|
||||
color = Color.WHITE;
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_PEDESTRIAN) {
|
||||
shadowLayer = 1;
|
||||
shadowColor = Color.rgb(176, 176, 176);
|
||||
color = Color.rgb(236, 236, 236);
|
||||
} else {
|
||||
carRoad = false;
|
||||
if (hwType == MapRenderingTypes.PL_HW_CONSTRUCTION || hwType == MapRenderingTypes.PL_HW_PROPOSED) {
|
||||
strokeWidth = zoom >= 15 ? (zoom == 15 ? 6 : 8) : 0;
|
||||
color = 0xff99cccc;
|
||||
rc.second.color = Color.WHITE;
|
||||
rc.second.strokeWidth = strokeWidth - 1;
|
||||
rc.second.pathEffect = o.getDashEffect("8_6"); //$NON-NLS-1$
|
||||
} else {
|
||||
if (hwType == MapRenderingTypes.PL_HW_TRACK) {
|
||||
strokeWidth = zoom >= 14 ? 2f : 0;
|
||||
color = 0xff996600;
|
||||
pathEffect = o.getDashEffect("4_3"); //$NON-NLS-1$
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_PATH) {
|
||||
strokeWidth = zoom >= 14 ? 1f : 0;
|
||||
color = Color.BLACK;
|
||||
pathEffect = o.getDashEffect("6_3"); //$NON-NLS-1$
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_CYCLEWAY) {
|
||||
strokeWidth = zoom >= 14 ? 2f : 0;
|
||||
pathEffect = o.getDashEffect("2_2"); //$NON-NLS-1$
|
||||
color = Color.BLUE;
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_BRIDLEWAY) {
|
||||
strokeWidth = zoom >= 14 ? 2f : 0;
|
||||
pathEffect = o.getDashEffect("2_2"); //$NON-NLS-1$
|
||||
color = Color.GREEN;
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_BYWAY) {
|
||||
strokeWidth = zoom >= 14 ? 2f : 0;
|
||||
pathEffect = o.getDashEffect("4_3"); //$NON-NLS-1$
|
||||
color = 0xffffcc00;
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_STEPS) {
|
||||
color = Color.rgb(250, 128, 115);
|
||||
strokeWidth = zoom >= 15 ? 5 : 0;
|
||||
pathEffect = o.getDashEffect("1_2"); //$NON-NLS-1$
|
||||
} else if (hwType == MapRenderingTypes.PL_HW_FOOTWAY) {
|
||||
color = Color.rgb(250, 128, 115);
|
||||
strokeWidth = zoom >= 15 ? 2 : 0;
|
||||
pathEffect = o.getDashEffect("2_2"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (carRoad) {
|
||||
if (zoom >= 15) {
|
||||
if (zoom < 16) {
|
||||
strokeWidth = 9;
|
||||
} else if (zoom == 16) {
|
||||
strokeWidth = 11;
|
||||
} else if (zoom == 17) {
|
||||
strokeWidth = 13;
|
||||
} else if (zoom >= 18) {
|
||||
strokeWidth = 16;
|
||||
} else if (zoom >= 19) {
|
||||
strokeWidth = 20;
|
||||
}
|
||||
if (hwType == MapRenderingTypes.PL_HW_SERVICE || hwType == MapRenderingTypes.PL_HW_LIVING_STREET) {
|
||||
strokeWidth -= 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(bridge && zoom > 14){
|
||||
if(rc.second.strokeWidth == 0){
|
||||
rc.second.color = color;
|
||||
rc.second.strokeWidth = strokeWidth;
|
||||
rc.second.pathEffect = pathEffect;
|
||||
strokeWidth += 2;
|
||||
color = Color.BLACK;
|
||||
pathEffect = null;
|
||||
if(rc.second.pathEffect == null){
|
||||
rc.second.cap = Cap.SQUARE;
|
||||
} else {
|
||||
color = 0x88ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(type == MapRenderingTypes.HIGHWAY && rc.zoom >= 16 && MapRenderingTypes.isOneWayWay(highwayAttributes)){
|
||||
rc.adds = getOneWayProperties();
|
||||
|
||||
}
|
||||
|
||||
if (tunnel && zoom > 12 && carRoad) {
|
||||
pathEffect = o.getDashEffect("4_4"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.RAILWAY: {
|
||||
int layer = MapRenderingTypes.getWayLayer(wholeType);
|
||||
boolean tunnel = layer == 1;
|
||||
boolean bridge = layer == 2;
|
||||
if (subtype == 1) {
|
||||
color = 0xffaaaaaa;
|
||||
if (zoom < 7) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom == 7) {
|
||||
strokeWidth = 1;
|
||||
} else if (zoom == 8) {
|
||||
strokeWidth = 1.5f;
|
||||
} else if (zoom <= 12) {
|
||||
strokeWidth = 2;
|
||||
if(tunnel){
|
||||
pathEffect = o.getDashEffect("5_2"); //$NON-NLS-1$
|
||||
}
|
||||
} else if(zoom == 13){
|
||||
color = 0xff999999;
|
||||
strokeWidth = 3;
|
||||
rc.second.color = Color.WHITE;
|
||||
rc.second.strokeWidth = 1;
|
||||
rc.second.pathEffect = o.getDashEffect("8_12"); //$NON-NLS-1$
|
||||
} else {
|
||||
color = 0xff999999;
|
||||
strokeWidth = 3;
|
||||
rc.second.color = Color.WHITE;
|
||||
rc.second.strokeWidth = 1;
|
||||
if(tunnel){
|
||||
rc.second.strokeWidth = 3;
|
||||
rc.second.pathEffect = o.getDashEffect("4_4"); //$NON-NLS-1$
|
||||
} else if(bridge){
|
||||
rc.third.color = color;
|
||||
rc.third.strokeWidth = 1;
|
||||
rc.third.pathEffect = o.getDashEffect("12_8_1_0"); //$NON-NLS-1$
|
||||
rc.second.strokeWidth = 4;
|
||||
strokeWidth = 5;
|
||||
color = Color.BLACK ;
|
||||
} else {
|
||||
rc.second.strokeWidth = 1;
|
||||
rc.second.pathEffect = o.getDashEffect("0_11_8_1"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
}
|
||||
} else if(subtype == 2 ) {
|
||||
color = 0xff444444;
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 15){
|
||||
strokeWidth = 1;
|
||||
if(tunnel){
|
||||
pathEffect = o.getDashEffect("5_3"); //$NON-NLS-1$
|
||||
}
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
if(tunnel){
|
||||
pathEffect = o.getDashEffect("5_3"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
} else if(subtype == 3){
|
||||
color = 0xff666666;
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
if(tunnel){
|
||||
pathEffect = o.getDashEffect("5_3"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
} else if(subtype == 4 || subtype == 5 || subtype == 9){
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
if(bridge){
|
||||
strokeWidth = 4.5f;
|
||||
color = Color.BLACK;
|
||||
rc.second.strokeWidth = 2;
|
||||
rc.second.color = Color.GRAY;
|
||||
rc.second.pathEffect = o.getDashEffect("4_2"); //$NON-NLS-1$
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
color = Color.GRAY;
|
||||
pathEffect = o.getDashEffect("4_2"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
} else if (subtype == 6) {
|
||||
color = 0xff999999;
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
if(tunnel){
|
||||
pathEffect = o.getDashEffect("5_3"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
} else if (subtype == 7) {
|
||||
if(zoom < 13){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
color = 0xff999999;
|
||||
strokeWidth = 3;
|
||||
rc.second.color = Color.WHITE;
|
||||
rc.second.strokeWidth = 1;
|
||||
rc.second.pathEffect = o.getDashEffect("0_1_8_1"); //$NON-NLS-1$
|
||||
}
|
||||
} else if (subtype == 8 || subtype == 11) {
|
||||
if(zoom < 15){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
color = 0xff666666;
|
||||
if(tunnel){
|
||||
strokeWidth = 5;
|
||||
pathEffect = o.getDashEffect("5_3"); //$NON-NLS-1$
|
||||
rc.second.color = 0xffcccccc;
|
||||
rc.second.strokeWidth = 3;
|
||||
}
|
||||
}
|
||||
} else if (subtype == 10) {
|
||||
if(zoom < 15){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 3;
|
||||
color = 0xff777777;
|
||||
pathEffect = o.getDashEffect("2_3"); //$NON-NLS-1$
|
||||
}
|
||||
} else if (subtype == 12) {
|
||||
if(zoom < 15){
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 3;
|
||||
color = Color.GRAY;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.WATERWAY: {
|
||||
if (zoom <= 10) {
|
||||
strokeWidth = 0;
|
||||
// draw rivers & canals
|
||||
if (subtype == 2 || subtype == 4) {
|
||||
color = 0xffb5d0d0;
|
||||
if (zoom == 10) {
|
||||
strokeWidth = 2;
|
||||
} else if (zoom == 9) {
|
||||
strokeWidth = 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch (subtype) {
|
||||
case 1:
|
||||
if (zoom >= 15) {
|
||||
color = 0xffb5d0d0;
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
color = 0xffb5d0d0;
|
||||
|
||||
if (zoom < 13) {
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
if (zoom == 13) {
|
||||
strokeWidth = 3;
|
||||
} else {
|
||||
if (zoom == 14) {
|
||||
strokeWidth = 5;
|
||||
} else if (zoom == 15 || zoom == 16) {
|
||||
strokeWidth = 6;
|
||||
} else if (zoom == 17) {
|
||||
strokeWidth = 10;
|
||||
} else if (zoom == 18) {
|
||||
strokeWidth = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
color = 0xffb5d0d0;
|
||||
if (zoom < 13) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom < 15) {
|
||||
strokeWidth = 1;
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 11:
|
||||
if (zoom < 15) {
|
||||
strokeWidth = 0;
|
||||
} else {
|
||||
strokeWidth = 2;
|
||||
color = 0xffaaaaaa;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
if (zoom >= 13) {
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
color = 0xffb5d0d0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(zoom > 12 && MapRenderingTypes.getWayLayer(wholeType) == 1){
|
||||
pathEffect = o.getDashEffect("4_2"); //$NON-NLS-1$
|
||||
rc.second.strokeWidth = strokeWidth - 2;
|
||||
rc.second.color = Color.WHITE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.BARRIER: {
|
||||
if (subtype == 5) {
|
||||
color = Color.GRAY;
|
||||
if (zoom == 14) {
|
||||
strokeWidth = 4;
|
||||
} else if (zoom == 15) {
|
||||
strokeWidth = 6;
|
||||
} else if (zoom > 15) {
|
||||
strokeWidth = 9;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else {
|
||||
if (subtype == 1) {
|
||||
strokeWidth = zoom >= 16 ? 3 : 0;
|
||||
color = 0xffaed1a0;
|
||||
} else {
|
||||
strokeWidth = zoom >= 16 ? 1 : 0;
|
||||
color = Color.BLACK;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.POWER: {
|
||||
if (zoom >= 14) {
|
||||
if (subtype == 3) {
|
||||
color = Color.rgb(186, 186, 186);
|
||||
strokeWidth = zoom == 14 ? 1 : 2;
|
||||
} else if (subtype == 4) {
|
||||
color = Color.rgb(186, 186, 186);
|
||||
strokeWidth = 1;
|
||||
}
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AEROWAY: {
|
||||
if(subtype == 7){
|
||||
color = 0xffbbbbcc;
|
||||
if(zoom < 11){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 12){
|
||||
strokeWidth = 2;
|
||||
} else if(zoom < 13){
|
||||
strokeWidth = 4;
|
||||
} else if(zoom < 14){
|
||||
strokeWidth = 7;
|
||||
} else if(zoom < 15){
|
||||
strokeWidth = 12;
|
||||
} else {
|
||||
strokeWidth = 18;
|
||||
}
|
||||
} else if(subtype == 8){
|
||||
color = 0xffbbbbcc;
|
||||
if(zoom < 12){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 14){
|
||||
strokeWidth = 1;
|
||||
} else if(zoom < 15){
|
||||
strokeWidth = 4;
|
||||
} else {
|
||||
strokeWidth = 6;
|
||||
}
|
||||
}
|
||||
if(MapRenderingTypes.getWayLayer(wholeType) == 2 && zoom > 12){
|
||||
if(rc.second.strokeWidth == 0){
|
||||
rc.second.color = color;
|
||||
rc.second.strokeWidth = strokeWidth;
|
||||
rc.second.pathEffect = pathEffect;
|
||||
strokeWidth += 2;
|
||||
color = Color.BLACK;
|
||||
pathEffect = null;
|
||||
if(rc.second.pathEffect == null){
|
||||
rc.second.cap = Cap.SQUARE;
|
||||
} else {
|
||||
color = Color.GRAY;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.AERIALWAY: {
|
||||
// TODO shader on path doesn't work
|
||||
if (zoom >= 12) {
|
||||
if (subtype == 1 || subtype == 2) {
|
||||
color = Color.rgb(186, 186, 186);
|
||||
strokeWidth = 2;
|
||||
// paint.setShader(getShader(R.drawable.h_cable_car));
|
||||
} else if (subtype == 3 || subtype == 4 || subtype == 5) {
|
||||
color = Color.rgb(186, 186, 186);
|
||||
strokeWidth = 2;
|
||||
// paint.setShader(getShader(R.drawable.h_chair_lift));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.MAN_MADE: {
|
||||
if (subtype == 8) {
|
||||
// breakwater, groyone
|
||||
color = 0xffaaaaaa;
|
||||
if (zoom < 12) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom < 14) {
|
||||
strokeWidth = 1;
|
||||
} else if (zoom < 16) {
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
strokeWidth = 4;
|
||||
}
|
||||
} else if (subtype == 9) {
|
||||
// pier
|
||||
color = 0xfff2efe9;
|
||||
if (zoom < 12) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom < 14) {
|
||||
strokeWidth = 1;
|
||||
} else if (zoom < 16) {
|
||||
strokeWidth = 3;
|
||||
} else {
|
||||
strokeWidth = 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.LEISURE: {
|
||||
if (subtype == 8) {
|
||||
if (zoom < 13) {
|
||||
strokeWidth = 0;
|
||||
} else if (zoom < 16) {
|
||||
color = Color.BLUE;
|
||||
strokeWidth = 1;
|
||||
pathEffect = o.getDashEffect("6_2"); //$NON-NLS-1$
|
||||
} else {
|
||||
color = Color.BLUE;
|
||||
strokeWidth = 2;
|
||||
pathEffect = o.getDashEffect("6_2"); //$NON-NLS-1$
|
||||
}
|
||||
} else if (subtype == 5) {
|
||||
if (zoom >= 13) {
|
||||
color = 0xff888888;
|
||||
strokeWidth = 1;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MapRenderingTypes.ADMINISTRATIVE: {
|
||||
color = 0xFF800080;
|
||||
if (subtype == 29 || subtype == 30) {
|
||||
// admin level 9, 10
|
||||
if (zoom > 12) {
|
||||
pathEffect = o.getDashEffect("3_2"); //$NON-NLS-1$
|
||||
strokeWidth = 1;
|
||||
if (zoom > 16) {
|
||||
strokeWidth = 2;
|
||||
}
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if (subtype == 28 || subtype == 27) {
|
||||
// admin level 7, 8
|
||||
if (zoom > 11) {
|
||||
pathEffect = o.getDashEffect("5_2"); //$NON-NLS-1$
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if (subtype == 25 || subtype == 26) {
|
||||
// admin level 5, 6
|
||||
if (zoom > 10) {
|
||||
pathEffect = subtype == 25 ? o.getDashEffect("6_3_2_3_2_3") : o.getDashEffect("6_3_2_3"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
strokeWidth = 2;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if (subtype == 24) {
|
||||
// admin level 4
|
||||
pathEffect = o.getDashEffect("4_3"); //$NON-NLS-1$
|
||||
if (zoom >= 4 && zoom <= 6) {
|
||||
strokeWidth = 0.6f;
|
||||
} else if (zoom >= 7 && zoom <= 10) {
|
||||
strokeWidth = 2;
|
||||
} else if (zoom > 10) {
|
||||
strokeWidth = 3;
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if (subtype == 23 || subtype == 22) {
|
||||
// admin level 2, 3
|
||||
if (zoom >= 4 && zoom <= 6) {
|
||||
strokeWidth = 2;
|
||||
} else if (zoom >= 7 && zoom <= 9) {
|
||||
strokeWidth = 3;
|
||||
} else if (zoom > 9) {
|
||||
if (subtype == 22) {
|
||||
strokeWidth = 6;
|
||||
} else {
|
||||
strokeWidth = 5;
|
||||
pathEffect = o.getDashEffect("4_2"); //$NON-NLS-1$
|
||||
}
|
||||
} else {
|
||||
strokeWidth = 0;
|
||||
}
|
||||
} else if(subtype == 19){
|
||||
color = 0xa009dd09;
|
||||
if(zoom < 7){
|
||||
strokeWidth = 0;
|
||||
} else if(zoom < 10){
|
||||
strokeWidth =1.5f;
|
||||
pathEffect = o.getDashEffect("4_2"); //$NON-NLS-1$
|
||||
} else {
|
||||
strokeWidth =3f;
|
||||
pathEffect = o.getDashEffect("6_2"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
rc.main.color = color;
|
||||
rc.main.pathEffect = pathEffect;
|
||||
rc.main.shadowColor = shadowColor;
|
||||
rc.main.shadowLayer = shadowLayer;
|
||||
rc.main.strokeWidth = strokeWidth;
|
||||
|
||||
}
|
||||
|
||||
private static RenderingPaintProperties[] oneWay = null;
|
||||
public static RenderingPaintProperties[] getOneWayProperties(){
|
||||
if(oneWay == null){
|
||||
PathEffect arrowDashEffect1 = new DashPathEffect(new float[] { 0, 12, 10, 152 }, 0);
|
||||
PathEffect arrowDashEffect2 = new DashPathEffect(new float[] { 0, 12, 9, 153 }, 1);
|
||||
PathEffect arrowDashEffect3 = new DashPathEffect(new float[] { 0, 18, 2, 154 }, 1);
|
||||
PathEffect arrowDashEffect4 = new DashPathEffect(new float[] { 0, 18, 1, 155 }, 1);
|
||||
oneWay = new RenderingPaintProperties[4];
|
||||
oneWay[0] = new RenderingPaintProperties();
|
||||
oneWay[0].emptyLine();
|
||||
oneWay[0].color = 0xff6c70d5;
|
||||
oneWay[0].strokeWidth = 1;
|
||||
oneWay[0].pathEffect = arrowDashEffect1;
|
||||
|
||||
oneWay[1] = new RenderingPaintProperties();
|
||||
oneWay[1].emptyLine();
|
||||
oneWay[1].color = 0xff6c70d5;
|
||||
oneWay[1].strokeWidth = 2;
|
||||
oneWay[1].pathEffect = arrowDashEffect2;
|
||||
|
||||
oneWay[2] = new RenderingPaintProperties();
|
||||
oneWay[2].emptyLine();
|
||||
oneWay[2].color = 0xff6c70d5;
|
||||
oneWay[2].strokeWidth = 3;
|
||||
oneWay[2].pathEffect = arrowDashEffect3;
|
||||
|
||||
oneWay[3] = new RenderingPaintProperties();
|
||||
oneWay[3].emptyLine();
|
||||
oneWay[3].color = 0xff6c70d5;
|
||||
oneWay[3].strokeWidth = 4;
|
||||
oneWay[3].pathEffect = arrowDashEffect4;
|
||||
|
||||
}
|
||||
return oneWay;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue