Render themes: store theme origin, fix #414
This commit is contained in:
parent
27aee33cb9
commit
7ba5984e5f
@ -242,6 +242,11 @@ public class RenderTheme implements IRenderTheme {
|
||||
return mBackground;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
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.core.GeometryBuffer.GeometryType;
|
||||
import org.oscim.core.TagSet;
|
||||
import org.oscim.theme.IRenderTheme;
|
||||
import org.oscim.theme.styles.AreaStyle;
|
||||
import org.oscim.theme.styles.LineStyle;
|
||||
import org.oscim.theme.styles.RenderStyle;
|
||||
@ -36,13 +37,16 @@ public class DebugTheme implements IRenderTheme {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scaleTextSize(float scaleFactor) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStyles() {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2017 Longri
|
||||
* Copyright 2017 devemux86
|
||||
*
|
||||
* 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
|
||||
@ -28,7 +29,12 @@ public class AtlasRenderTheme extends RenderTheme {
|
||||
|
||||
public AtlasRenderTheme(int mapBackground, float baseTextSize, Rule[] rules, int levels,
|
||||
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.atlasList = atlasList;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2017 devemux86
|
||||
*
|
||||
* 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.
|
||||
* @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
|
||||
* resources.
|
||||
*/
|
||||
public abstract void dispose();
|
||||
void dispose();
|
||||
|
||||
/**
|
||||
* @return the number of distinct drawing levels required by this
|
||||
* RenderTheme.
|
||||
*/
|
||||
public abstract int getLevels();
|
||||
int getLevels();
|
||||
|
||||
/**
|
||||
* @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.
|
||||
*
|
||||
* @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) {
|
||||
super(string);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright 2014 Hannes Janetzek
|
||||
* Copyright 2017 Longri
|
||||
* Copyright 2017 devemux86
|
||||
*
|
||||
* 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 Rule[] mRules;
|
||||
private final boolean mMapsforgeTheme;
|
||||
|
||||
class RenderStyleCache {
|
||||
final int matchType;
|
||||
@ -74,6 +76,10 @@ public class RenderTheme implements IRenderTheme {
|
||||
private final RenderStyleCache[] mStyleCache;
|
||||
|
||||
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)
|
||||
throw new IllegalArgumentException("rules missing");
|
||||
|
||||
@ -81,6 +87,7 @@ public class RenderTheme implements IRenderTheme {
|
||||
mBaseTextSize = baseTextSize;
|
||||
mLevels = levels;
|
||||
mRules = rules;
|
||||
mMapsforgeTheme = mapsforgeTheme;
|
||||
|
||||
mStyleCache = new RenderStyleCache[3];
|
||||
mStyleCache[0] = new RenderStyleCache(Element.NODE);
|
||||
@ -112,6 +119,11 @@ public class RenderTheme implements IRenderTheme {
|
||||
return mRules;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return mMapsforgeTheme;
|
||||
}
|
||||
|
||||
//AtomicInteger hitCount = new AtomicInteger(0);
|
||||
//AtomicInteger missCount = new AtomicInteger(0);
|
||||
//AtomicInteger sameCount = new AtomicInteger(0);
|
||||
|
@ -111,7 +111,7 @@ public class XmlMapsforgeAtlasThemeBuilder extends XmlMapsforgeThemeBuilder {
|
||||
|
||||
@Override
|
||||
RenderTheme createTheme(Rule[] rules) {
|
||||
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, regionMap, atlasList);
|
||||
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, true, regionMap, atlasList);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -193,7 +193,7 @@ public class XmlMapsforgeThemeBuilder extends DefaultHandler {
|
||||
}
|
||||
|
||||
RenderTheme createTheme(Rule[] rules) {
|
||||
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels);
|
||||
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
x
Reference in New Issue
Block a user