Merge pull request #450 from andreynovikov/is-mapsforge-theme

Do not read theme twice if format is predefined
This commit is contained in:
Emux 2017-11-27 11:47:38 +02:00 committed by GitHub
commit e73ac4acfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 1 deletions

View File

@ -1,6 +1,7 @@
/* /*
* Copyright 2010, 2011, 2012 mapsforge.org * Copyright 2010, 2011, 2012 mapsforge.org
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* 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
* 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
@ -20,6 +21,7 @@ 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;
@ -98,6 +100,11 @@ public class AssetsRenderTheme implements ThemeFile {
} }
} }
@Override
public boolean isMapsforgeTheme() {
return ThemeUtils.isMapsforgeTheme(this);
}
@Override @Override
public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) { public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) {
mMenuCallback = menuCallback; mMenuCallback = menuCallback;

View File

@ -3,6 +3,7 @@
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* Copyright 2017 nebular * Copyright 2017 nebular
* 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).
* *
@ -58,6 +59,11 @@ public enum VtmThemes implements ThemeFile {
return AssetAdapter.readFileAsStream(mPath); return AssetAdapter.readFileAsStream(mPath);
} }
@Override
public boolean isMapsforgeTheme() {
return false;
}
@Override @Override
public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) { public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) {
} }

View File

@ -2,6 +2,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-2017 devemux86
* 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).
* *
@ -107,6 +108,11 @@ public class ExternalRenderTheme implements ThemeFile {
return is; return is;
} }
@Override
public boolean isMapsforgeTheme() {
return ThemeUtils.isMapsforgeTheme(this);
}
@Override @Override
public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) { public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) {
mMenuCallback = menuCallback; mMenuCallback = menuCallback;

View File

@ -1,5 +1,6 @@
/* /*
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* 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
* 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
@ -89,6 +90,11 @@ public class StreamRenderTheme implements ThemeFile {
return mInputStream; return mInputStream;
} }
@Override
public boolean isMapsforgeTheme() {
return ThemeUtils.isMapsforgeTheme(this);
}
@Override @Override
public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) { public void setMenuCallback(XmlRenderThemeMenuCallback menuCallback) {
mMenuCallback = menuCallback; mMenuCallback = menuCallback;

View File

@ -2,6 +2,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-2017 devemux86
* 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).
* *
@ -43,6 +44,13 @@ public interface ThemeFile extends Serializable {
*/ */
InputStream getRenderThemeAsStream() throws ThemeException; InputStream getRenderThemeAsStream() throws ThemeException;
/**
* Tells ThemeLoader if theme file is in Mapsforge format
*
* @return true if theme file is in Mapsforge format
*/
boolean isMapsforgeTheme();
/** /**
* @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.
*/ */

View File

@ -2,6 +2,7 @@
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2017 devemux86 * Copyright 2016-2017 devemux86
* Copyright 2017 Longri * Copyright 2017 Longri
* 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).
* *
@ -46,7 +47,7 @@ public class ThemeLoader {
public static IRenderTheme load(ThemeFile theme, ThemeCallback themeCallback) throws ThemeException { public static IRenderTheme load(ThemeFile theme, ThemeCallback themeCallback) throws ThemeException {
IRenderTheme t; IRenderTheme t;
if (ThemeUtils.isMapsforgeTheme(theme)) if (theme.isMapsforgeTheme())
t = Parameters.TEXTURE_ATLAS ? XmlMapsforgeAtlasThemeBuilder.read(theme, themeCallback) : XmlMapsforgeThemeBuilder.read(theme, themeCallback); t = Parameters.TEXTURE_ATLAS ? XmlMapsforgeAtlasThemeBuilder.read(theme, themeCallback) : XmlMapsforgeThemeBuilder.read(theme, themeCallback);
else else
t = Parameters.TEXTURE_ATLAS ? XmlAtlasThemeBuilder.read(theme, themeCallback) : XmlThemeBuilder.read(theme, themeCallback); t = Parameters.TEXTURE_ATLAS ? XmlAtlasThemeBuilder.read(theme, themeCallback) : XmlThemeBuilder.read(theme, themeCallback);