@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2017 Andrey Novikov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
@@ -18,10 +18,8 @@ package org.oscim.android.theme;
|
||||
|
||||
import android.content.res.AssetManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.oscim.theme.IRenderTheme.ThemeException;
|
||||
import org.oscim.theme.ThemeFile;
|
||||
import org.oscim.theme.ThemeUtils;
|
||||
import org.oscim.theme.XmlRenderThemeMenuCallback;
|
||||
import org.oscim.utils.Utils;
|
||||
|
||||
@@ -37,6 +35,7 @@ public class AssetsRenderTheme implements ThemeFile {
|
||||
|
||||
private final AssetManager mAssetManager;
|
||||
private final String mFileName;
|
||||
private boolean mMapsforgeTheme;
|
||||
private XmlRenderThemeMenuCallback mMenuCallback;
|
||||
private final String mRelativePathPrefix;
|
||||
|
||||
@@ -102,7 +101,12 @@ public class AssetsRenderTheme implements ThemeFile {
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return ThemeUtils.isMapsforgeTheme(this);
|
||||
return mMapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapsforgeTheme(boolean mapsforgeTheme) {
|
||||
mMapsforgeTheme = mapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2020 devemux86
|
||||
* Copyright 2020-2021 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
|
||||
@@ -18,7 +18,6 @@ import android.content.ContentResolver;
|
||||
import android.net.Uri;
|
||||
import org.oscim.theme.IRenderTheme.ThemeException;
|
||||
import org.oscim.theme.ThemeFile;
|
||||
import org.oscim.theme.ThemeUtils;
|
||||
import org.oscim.theme.XmlRenderThemeMenuCallback;
|
||||
import org.oscim.utils.Utils;
|
||||
|
||||
@@ -33,6 +32,7 @@ public class ContentRenderTheme implements ThemeFile {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final ContentResolver mContentResolver;
|
||||
private boolean mMapsforgeTheme;
|
||||
private XmlRenderThemeMenuCallback mMenuCallback;
|
||||
private final String mRelativePathPrefix;
|
||||
private final Uri mUri;
|
||||
@@ -99,7 +99,12 @@ public class ContentRenderTheme implements ThemeFile {
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return ThemeUtils.isMapsforgeTheme(this);
|
||||
return mMapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapsforgeTheme(boolean mapsforgeTheme) {
|
||||
mMapsforgeTheme = mapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2017 nebular
|
||||
* Copyright 2017 Andrey Novikov
|
||||
*
|
||||
@@ -64,6 +64,10 @@ public enum VtmThemes implements ThemeFile {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapsforgeTheme(boolean mapsforgeTheme) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) {
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2017 Andrey Novikov
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
@@ -34,6 +34,7 @@ public class ExternalRenderTheme implements ThemeFile {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final long mFileModificationDate;
|
||||
private boolean mMapsforgeTheme;
|
||||
private XmlRenderThemeMenuCallback mMenuCallback;
|
||||
private final String mPath;
|
||||
|
||||
@@ -110,7 +111,12 @@ public class ExternalRenderTheme implements ThemeFile {
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return ThemeUtils.isMapsforgeTheme(this);
|
||||
return mMapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapsforgeTheme(boolean mapsforgeTheme) {
|
||||
mMapsforgeTheme = mapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2017 Andrey Novikov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
@@ -18,8 +18,6 @@ package org.oscim.theme;
|
||||
import org.oscim.theme.IRenderTheme.ThemeException;
|
||||
import org.oscim.utils.Utils;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
@@ -30,6 +28,7 @@ public class StreamRenderTheme implements ThemeFile {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final InputStream mInputStream;
|
||||
private boolean mMapsforgeTheme;
|
||||
private XmlRenderThemeMenuCallback mMenuCallback;
|
||||
private final String mRelativePathPrefix;
|
||||
|
||||
@@ -48,8 +47,7 @@ public class StreamRenderTheme implements ThemeFile {
|
||||
*/
|
||||
public StreamRenderTheme(String relativePathPrefix, InputStream inputStream, XmlRenderThemeMenuCallback menuCallback) {
|
||||
mRelativePathPrefix = relativePathPrefix;
|
||||
mInputStream = new BufferedInputStream(inputStream);
|
||||
mInputStream.mark(0);
|
||||
mInputStream = inputStream;
|
||||
mMenuCallback = menuCallback;
|
||||
}
|
||||
|
||||
@@ -82,17 +80,17 @@ public class StreamRenderTheme implements ThemeFile {
|
||||
|
||||
@Override
|
||||
public InputStream getRenderThemeAsStream() throws ThemeException {
|
||||
try {
|
||||
mInputStream.reset();
|
||||
} catch (IOException e) {
|
||||
throw new ThemeException(e.getMessage());
|
||||
}
|
||||
return mInputStream;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMapsforgeTheme() {
|
||||
return ThemeUtils.isMapsforgeTheme(this);
|
||||
return mMapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapsforgeTheme(boolean mapsforgeTheme) {
|
||||
mMapsforgeTheme = mapsforgeTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016-2017 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2017 Andrey Novikov
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
@@ -51,6 +51,11 @@ public interface ThemeFile extends Serializable {
|
||||
*/
|
||||
boolean isMapsforgeTheme();
|
||||
|
||||
/**
|
||||
* @param mapsforgeTheme true if theme file is in Mapsforge format
|
||||
*/
|
||||
void setMapsforgeTheme(boolean mapsforgeTheme);
|
||||
|
||||
/**
|
||||
* @param menuCallback the interface callback to create a settings menu on the fly.
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2017 Longri
|
||||
* Copyright 2017-2020 devemux86
|
||||
* Copyright 2017-2021 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
|
||||
@@ -117,7 +117,7 @@ public class XmlAtlasThemeBuilder extends XmlThemeBuilder {
|
||||
|
||||
@Override
|
||||
RenderTheme createTheme(Rule[] rules) {
|
||||
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, mMapsforgeTheme, regionMap, atlasList);
|
||||
return new AtlasRenderTheme(mMapBackground, mTextScale, rules, mLevels, mTheme.isMapsforgeTheme(), regionMap, atlasList);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Copyright 2010, 2011, 2012, 2013 mapsforge.org
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2014 Ludwig M Brinckmann
|
||||
* Copyright 2016-2020 devemux86
|
||||
* Copyright 2016-2021 devemux86
|
||||
* Copyright 2016-2017 Longri
|
||||
* Copyright 2016-2020 Andrey Novikov
|
||||
* Copyright 2018-2019 Gustl22
|
||||
@@ -175,7 +175,6 @@ public class XmlThemeBuilder {
|
||||
private final ThemeCallback mThemeCallback;
|
||||
RenderTheme mRenderTheme;
|
||||
|
||||
final boolean mMapsforgeTheme;
|
||||
private final float mScale;
|
||||
|
||||
private Set<String> mCategories;
|
||||
@@ -193,7 +192,6 @@ public class XmlThemeBuilder {
|
||||
mTheme = theme;
|
||||
mPullParser = pullParser;
|
||||
mThemeCallback = themeCallback;
|
||||
mMapsforgeTheme = theme.isMapsforgeTheme();
|
||||
mScale = CanvasAdapter.getScale();
|
||||
}
|
||||
|
||||
@@ -215,14 +213,14 @@ public class XmlThemeBuilder {
|
||||
}
|
||||
|
||||
public void endDocument() {
|
||||
if (mMapsforgeTheme) {
|
||||
if (mTheme.isMapsforgeTheme()) {
|
||||
// Building rule for Mapsforge themes
|
||||
mRulesList.add(buildingRule());
|
||||
}
|
||||
|
||||
Rule[] rules = new Rule[mRulesList.size()];
|
||||
for (int i = 0, n = rules.length; i < n; i++)
|
||||
rules[i] = mRulesList.get(i).onComplete(mMapsforgeTheme ? new int[1] : null);
|
||||
rules[i] = mRulesList.get(i).onComplete(mTheme.isMapsforgeTheme() ? new int[1] : null);
|
||||
|
||||
mRenderTheme = createTheme(rules);
|
||||
|
||||
@@ -237,7 +235,7 @@ public class XmlThemeBuilder {
|
||||
}
|
||||
|
||||
RenderTheme createTheme(Rule[] rules) {
|
||||
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels, mTransformKeyMap, mTransformTagMap, mMapsforgeTheme);
|
||||
return new RenderTheme(mMapBackground, mTextScale, rules, mLevels, mTransformKeyMap, mTransformTagMap, mTheme.isMapsforgeTheme());
|
||||
}
|
||||
|
||||
public void endElement() {
|
||||
@@ -431,13 +429,13 @@ public class XmlThemeBuilder {
|
||||
else if ("NODE".equals(val))
|
||||
element = Rule.Element.NODE;
|
||||
} else if ("k".equals(name)) {
|
||||
if (mMapsforgeTheme) {
|
||||
if (mTheme.isMapsforgeTheme()) {
|
||||
if (!"*".equals(value))
|
||||
keys = value;
|
||||
} else
|
||||
keys = value;
|
||||
} else if ("v".equals(name)) {
|
||||
if (mMapsforgeTheme) {
|
||||
if (mTheme.isMapsforgeTheme()) {
|
||||
if (!"*".equals(value))
|
||||
values = value;
|
||||
} else
|
||||
@@ -935,7 +933,10 @@ public class XmlThemeBuilder {
|
||||
if ("schemaLocation".equals(name))
|
||||
continue;
|
||||
|
||||
if ("version".equals(name))
|
||||
if ("xmlns".equals(name))
|
||||
mTheme.setMapsforgeTheme("http://mapsforge.org/renderTheme".equals(value));
|
||||
|
||||
else if ("version".equals(name))
|
||||
version = Integer.parseInt(value);
|
||||
|
||||
else if ("map-background".equals(name)) {
|
||||
@@ -956,7 +957,7 @@ public class XmlThemeBuilder {
|
||||
|
||||
validateExists("version", version, elementName);
|
||||
|
||||
int renderThemeVersion = mMapsforgeTheme ? RENDER_THEME_VERSION_MAPSFORGE : RENDER_THEME_VERSION_VTM;
|
||||
int renderThemeVersion = mTheme.isMapsforgeTheme() ? RENDER_THEME_VERSION_MAPSFORGE : RENDER_THEME_VERSION_VTM;
|
||||
if (version > renderThemeVersion)
|
||||
throw new ThemeException("invalid render theme version:" + version);
|
||||
|
||||
@@ -1006,7 +1007,7 @@ public class XmlThemeBuilder {
|
||||
b.themeCallback(mThemeCallback);
|
||||
String symbol = null;
|
||||
|
||||
if (mMapsforgeTheme) {
|
||||
if (mTheme.isMapsforgeTheme()) {
|
||||
// Reset default priority
|
||||
b.priority = DEFAULT_PRIORITY;
|
||||
}
|
||||
@@ -1051,7 +1052,7 @@ public class XmlThemeBuilder {
|
||||
else if ("priority".equals(name)) {
|
||||
b.priority = Integer.parseInt(value);
|
||||
|
||||
if (mMapsforgeTheme) {
|
||||
if (mTheme.isMapsforgeTheme()) {
|
||||
// Mapsforge: higher priorities are drawn first (0 = default priority)
|
||||
// VTM: lower priorities are drawn first (0 = highest priority)
|
||||
b.priority = FastMath.clamp(DEFAULT_PRIORITY - b.priority, 0, Integer.MAX_VALUE);
|
||||
|
||||
Reference in New Issue
Block a user