diff --git a/vtm-android/src/org/oscim/android/canvas/AndroidPaint.java b/vtm-android/src/org/oscim/android/canvas/AndroidPaint.java index a5a2316e..6e854024 100644 --- a/vtm-android/src/org/oscim/android/canvas/AndroidPaint.java +++ b/vtm-android/src/org/oscim/android/canvas/AndroidPaint.java @@ -134,6 +134,11 @@ class AndroidPaint implements Paint { return Math.abs(fm.bottom); } + @Override + public float getStrokeWidth() { + return mPaint.getStrokeWidth(); + } + @Override public float getTextHeight(String text) { mPaint.getTextBounds(text, 0, text.length(), rect); diff --git a/vtm-desktop/src/org/oscim/awt/AwtPaint.java b/vtm-desktop/src/org/oscim/awt/AwtPaint.java index 58627ead..c3ec74cf 100644 --- a/vtm-desktop/src/org/oscim/awt/AwtPaint.java +++ b/vtm-desktop/src/org/oscim/awt/AwtPaint.java @@ -212,6 +212,11 @@ public class AwtPaint implements Paint { stroke = new BasicStroke(strokeWidth, cap, join, join == BasicStroke.JOIN_MITER ? 1.0f : 0, null, 0); } + @Override + public float getStrokeWidth() { + return strokeWidth; + } + @Override public float getTextHeight(String text) { Graphics2D graphics2d = bufferedImage.createGraphics(); diff --git a/vtm-ios/src/org/oscim/ios/backend/IosPaint.java b/vtm-ios/src/org/oscim/ios/backend/IosPaint.java index 77fce1bc..3466bfd0 100644 --- a/vtm-ios/src/org/oscim/ios/backend/IosPaint.java +++ b/vtm-ios/src/org/oscim/ios/backend/IosPaint.java @@ -337,6 +337,11 @@ public class IosPaint implements Paint { return descent; } + @Override + public float getStrokeWidth() { + return strokeWidth; + } + @Override public float getTextHeight(String text) { return this.fontHeight; diff --git a/vtm-web/src/org/oscim/gdx/client/GwtPaint.java b/vtm-web/src/org/oscim/gdx/client/GwtPaint.java index 064f9264..56d8cce0 100644 --- a/vtm-web/src/org/oscim/gdx/client/GwtPaint.java +++ b/vtm-web/src/org/oscim/gdx/client/GwtPaint.java @@ -124,6 +124,11 @@ public class GwtPaint implements Paint { } + @Override + public float getStrokeWidth() { + return strokeWidth; + } + @Override public float getTextHeight(String text) { // TODO diff --git a/vtm/src/org/oscim/backend/canvas/Paint.java b/vtm/src/org/oscim/backend/canvas/Paint.java index dbdaf380..5162148e 100644 --- a/vtm/src/org/oscim/backend/canvas/Paint.java +++ b/vtm/src/org/oscim/backend/canvas/Paint.java @@ -71,6 +71,8 @@ public interface Paint { float getFontDescent(); + float getStrokeWidth(); + float getTextHeight(String text); float getTextWidth(String text); diff --git a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java index b779f70f..b899d530 100644 --- a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java +++ b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java @@ -74,7 +74,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook { if (!(style instanceof ExtrusionStyle)) return false; - ExtrusionStyle extrusion = (ExtrusionStyle) style; + ExtrusionStyle extrusion = (ExtrusionStyle) style.current(); int height = 0; int minHeight = 0; diff --git a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java index 883f9c93..b32879f2 100644 --- a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java +++ b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java @@ -1,4 +1,5 @@ /* + * Copyright 2013 Hannes Janetzek * Copyright 2016 devemux86 * Copyright 2016 Andrey Novikov * @@ -56,7 +57,7 @@ public class LabelTileLoaderHook implements TileLoaderThemeHook { if (style instanceof TextStyle) { LabelTileData ld = get(tile); - TextStyle text = (TextStyle) style; + TextStyle text = (TextStyle) style.current(); if (element.type == LINE) { String value = element.tags.getValue(text.textKey); if (value == null || value.length() == 0) @@ -104,7 +105,7 @@ public class LabelTileLoaderHook implements TileLoaderThemeHook { } } } else if (style instanceof SymbolStyle) { - SymbolStyle symbol = (SymbolStyle) style; + SymbolStyle symbol = (SymbolStyle) style.current(); if (symbol.bitmap == null && symbol.texture == null) return false; diff --git a/vtm/src/org/oscim/theme/styles/AreaStyle.java b/vtm/src/org/oscim/theme/styles/AreaStyle.java index 014a9714..caa05a68 100644 --- a/vtm/src/org/oscim/theme/styles/AreaStyle.java +++ b/vtm/src/org/oscim/theme/styles/AreaStyle.java @@ -251,6 +251,7 @@ public class AreaStyle extends RenderStyle { } public T reset() { + level = -1; fillColor = Color.WHITE; strokeColor = Color.BLACK; strokeWidth = 0; diff --git a/vtm/src/org/oscim/theme/styles/CircleStyle.java b/vtm/src/org/oscim/theme/styles/CircleStyle.java index 7e1d7468..758ebef0 100644 --- a/vtm/src/org/oscim/theme/styles/CircleStyle.java +++ b/vtm/src/org/oscim/theme/styles/CircleStyle.java @@ -94,6 +94,7 @@ public final class CircleStyle extends RenderStyle { } public T reset() { + level = -1; radius = 0; scaleRadius = false; fillColor = Color.TRANSPARENT; diff --git a/vtm/src/org/oscim/theme/styles/TextStyle.java b/vtm/src/org/oscim/theme/styles/TextStyle.java index 92a107fe..eed0d676 100644 --- a/vtm/src/org/oscim/theme/styles/TextStyle.java +++ b/vtm/src/org/oscim/theme/styles/TextStyle.java @@ -173,25 +173,30 @@ public final class TextStyle extends RenderStyle { return self(); } - public TextBuilder from(TextStyle style) { - this.style = style.style; - this.textKey = style.textKey; - this.caption = style.caption; - this.dy = style.dy; - this.priority = style.priority; - this.areaSize = style.areaSize; - this.bitmap = style.bitmap; - this.texture = style.texture; - this.fillColor = style.paint.getColor(); + public TextBuilder set(TextStyle text) { + if (text == null) + return reset(); + + this.style = text.style; + this.textKey = text.textKey; + this.caption = text.caption; + this.dy = text.dy; + this.priority = text.priority; + this.areaSize = text.areaSize; + this.bitmap = text.bitmap; + this.texture = text.texture; + this.fillColor = text.paint.getColor(); this.fontFamily = FontFamily.DEFAULT; this.fontStyle = FontStyle.NORMAL; - this.strokeColor = style.stroke.getColor(); - this.strokeWidth = 2; - this.fontSize = style.fontSize; + if (text.stroke != null) { + this.strokeColor = text.stroke.getColor(); + this.strokeWidth = text.stroke.getStrokeWidth(); + } + this.fontSize = text.fontSize; - this.symbolWidth = style.symbolWidth; - this.symbolHeight = style.symbolHeight; - this.symbolPercent = style.symbolPercent; + this.symbolWidth = text.symbolWidth; + this.symbolHeight = text.symbolHeight; + this.symbolPercent = text.symbolPercent; return self(); }