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