Render themes: store theme origin, fix #414
This commit is contained in:
parent
27aee33cb9
commit
7ba5984e5f
vtm-jeo/src/org/oscim/theme/carto
vtm-playground/src/org/oscim/test
vtm/src/org/oscim/theme
@ -242,6 +242,11 @@ public class RenderTheme implements IRenderTheme {
|
|||||||
return mBackground;
|
return mBackground;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMapsforgeTheme() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void scaleTextSize(float scaleFactor) {
|
public void scaleTextSize(float scaleFactor) {
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package org.oscim.theme;
|
package org.oscim.test;
|
||||||
|
|
||||||
import org.oscim.backend.canvas.Color;
|
import org.oscim.backend.canvas.Color;
|
||||||
import org.oscim.core.GeometryBuffer.GeometryType;
|
import org.oscim.core.GeometryBuffer.GeometryType;
|
||||||
import org.oscim.core.TagSet;
|
import org.oscim.core.TagSet;
|
||||||
|
import org.oscim.theme.IRenderTheme;
|
||||||
import org.oscim.theme.styles.AreaStyle;
|
import org.oscim.theme.styles.AreaStyle;
|
||||||
import org.oscim.theme.styles.LineStyle;
|
import org.oscim.theme.styles.LineStyle;
|
||||||
import org.oscim.theme.styles.RenderStyle;
|
import org.oscim.theme.styles.RenderStyle;
|
||||||
@ -36,13 +37,16 @@ public class DebugTheme implements IRenderTheme {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMapsforgeTheme() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void scaleTextSize(float scaleFactor) {
|
public void scaleTextSize(float scaleFactor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateStyles() {
|
public void updateStyles() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
|
* Copyright 2017 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@ -28,7 +29,12 @@ public class AtlasRenderTheme extends RenderTheme {
|
|||||||
|
|
||||||
public AtlasRenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels,
|
public AtlasRenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels,
|
||||||
Map<Object, TextureRegion> textureRegionMap, List<TextureAtlas> atlasList) {
|
Map<Object, TextureRegion> textureRegionMap, List<TextureAtlas> atlasList) {
|
||||||
super(mapBackground, baseTextSize, rules, levels);
|
this(mapBackground, baseTextSize, rules, levels, false, textureRegionMap, atlasList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AtlasRenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels, boolean mapsforgeTheme,
|
||||||
|
Map<Object, TextureRegion> textureRegionMap, List<TextureAtlas> atlasList) {
|
||||||
|
super(mapBackground, baseTextSize, rules, levels, mapsforgeTheme);
|
||||||
this.textureRegionMap = textureRegionMap;
|
this.textureRegionMap = textureRegionMap;
|
||||||
this.atlasList = atlasList;
|
this.atlasList = atlasList;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
|
* Copyright 2017 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -29,35 +30,40 @@ public interface IRenderTheme {
|
|||||||
* @param zoomLevel the zoom level at which the way should be matched.
|
* @param zoomLevel the zoom level at which the way should be matched.
|
||||||
* @return matching render instructions
|
* @return matching render instructions
|
||||||
*/
|
*/
|
||||||
public abstract RenderStyle[] matchElement(GeometryType type, TagSet tags, int zoomLevel);
|
RenderStyle[] matchElement(GeometryType type, TagSet tags, int zoomLevel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Must be called when this RenderTheme gets destroyed to clean up and free
|
* Must be called when this RenderTheme gets destroyed to clean up and free
|
||||||
* resources.
|
* resources.
|
||||||
*/
|
*/
|
||||||
public abstract void dispose();
|
void dispose();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the number of distinct drawing levels required by this
|
* @return the number of distinct drawing levels required by this
|
||||||
* RenderTheme.
|
* RenderTheme.
|
||||||
*/
|
*/
|
||||||
public abstract int getLevels();
|
int getLevels();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the map background color of this RenderTheme.
|
* @return the map background color of this RenderTheme.
|
||||||
*/
|
*/
|
||||||
public abstract int getMapBackground();
|
int getMapBackground();
|
||||||
|
|
||||||
public void updateStyles();
|
/**
|
||||||
|
* Is Mapsforge or VTM theme.
|
||||||
|
*/
|
||||||
|
boolean isMapsforgeTheme();
|
||||||
|
|
||||||
|
void updateStyles();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scales the text size of this RenderTheme by the given factor.
|
* Scales the text size of this RenderTheme by the given factor.
|
||||||
*
|
*
|
||||||
* @param scaleFactor the factor by which the text size should be scaled.
|
* @param scaleFactor the factor by which the text size should be scaled.
|
||||||
*/
|
*/
|
||||||
public abstract void scaleTextSize(float scaleFactor);
|
void scaleTextSize(float scaleFactor);
|
||||||
|
|
||||||
public static class ThemeException extends IllegalArgumentException {
|
class ThemeException extends IllegalArgumentException {
|
||||||
public ThemeException(String string) {
|
public ThemeException(String string) {
|
||||||
super(string);
|
super(string);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014 Hannes Janetzek
|
* Copyright 2014 Hannes Janetzek
|
||||||
* Copyright 2017 Longri
|
* Copyright 2017 Longri
|
||||||
|
* Copyright 2017 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -41,6 +42,7 @@ public class RenderTheme implements IRenderTheme {
|
|||||||
|
|
||||||
private final int mLevels;
|
private final int mLevels;
|
||||||
private final Rule[] mRules;
|
private final Rule[] mRules;
|
||||||
|
private final boolean mMapsforgeTheme;
|
||||||
|
|
||||||
class RenderStyleCache {
|
class RenderStyleCache {
|
||||||
final int matchType;
|
final int matchType;
|
||||||
@ -74,6 +76,10 @@ public class RenderTheme implements IRenderTheme {
|
|||||||
private final RenderStyleCache[] mStyleCache;
|
private final RenderStyleCache[] mStyleCache;
|
||||||
|
|
||||||
public RenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels) {
|
public RenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels) {
|
||||||
|
this(mapBackground, baseTextSize, rules, levels, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels, boolean mapsforgeTheme) {
|
||||||
if (rules == null)
|
if (rules == null)
|
||||||
throw new IllegalArgumentException("rules missing");
|
throw new IllegalArgumentException("rules missing");
|
||||||
|
|
||||||
@ -81,6 +87,7 @@ public class RenderTheme implements IRenderTheme {
|
|||||||
mBaseTextSize = baseTextSize;
|
mBaseTextSize = baseTextSize;
|
||||||
mLevels = levels;
|
mLevels = levels;
|
||||||
mRules = rules;
|
mRules = rules;
|
||||||
|
mMapsforgeTheme = mapsforgeTheme;
|
||||||
|
|
||||||
mStyleCache = new RenderStyleCache[3];
|
mStyleCache = new RenderStyleCache[3];
|
||||||
mStyleCache[0] = new RenderStyleCache(Element.NODE);
|
mStyleCache[0] = new RenderStyleCache(Element.NODE);
|
||||||
@ -112,6 +119,11 @@ public class RenderTheme implements IRenderTheme {
|
|||||||
return mRules;
|
return mRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMapsforgeTheme() {
|
||||||
|
return mMapsforgeTheme;
|
||||||
|
}
|
||||||
|
|
||||||
//AtomicInteger hitCount = new AtomicInteger(0);
|
//AtomicInteger hitCount = new AtomicInteger(0);
|
||||||
//AtomicInteger missCount = new AtomicInteger(0);
|
//AtomicInteger missCount = new AtomicInteger(0);
|
||||||
//AtomicInteger sameCount = new AtomicInteger(0);
|
//AtomicInteger sameCount = new AtomicInteger(0);
|
||||||
|
@ -111,7 +111,7 @@ public class XmlMapsforgeAtlasThemeBuilder extends XmlMapsforgeThemeBuilder {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
RenderTheme createTheme(Rule[] rules) {
|
RenderTheme createTheme(Rule[] rules) {
|
||||||
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, regionMap, atlasList);
|
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, true, regionMap, atlasList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -193,7 +193,7 @@ public class XmlMapsforgeThemeBuilder extends DefaultHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RenderTheme createTheme(Rule[] rules) {
|
RenderTheme createTheme(Rule[] rules) {
|
||||||
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels);
|
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user