add Map.setTheme(IRenderTheme)

This commit is contained in:
Hannes Janetzek 2014-03-18 21:50:18 +01:00
parent 913afab264
commit 6113d284d8
3 changed files with 25 additions and 15 deletions

View File

@ -151,15 +151,22 @@ public abstract class Map {
log.error("No base layer set");
throw new IllegalStateException();
}
setTheme(ThemeLoader.load(theme));
}
IRenderTheme t = ThemeLoader.load(theme);
if (t == null) {
public void setTheme(IRenderTheme theme) {
if (mBaseLayer == null) {
log.error("No base layer set");
throw new IllegalStateException();
}
if (theme == null) {
log.error("Invalid theme");
return;
}
mBaseLayer.setRenderTheme(t);
MapRenderer.setBackgroundColor(t.getMapBackground());
mBaseLayer.setRenderTheme(theme);
MapRenderer.setBackgroundColor(theme.getMapBackground());
clearMap();
}

View File

@ -44,7 +44,7 @@ public class ExternalRenderTheme implements ThemeFile {
File themeFile = new File(fileName);
if (!themeFile.exists()) {
throw new ThemeException("file does not exist: " + fileName);
throw new ThemeException("file does not exist: " + themeFile.getAbsolutePath());
} else if (!themeFile.isFile()) {
throw new ThemeException("not a file: " + fileName);
} else if (!themeFile.canRead()) {

View File

@ -42,22 +42,25 @@ public class ThemeLoader {
public static IRenderTheme load(ThemeFile theme) throws ThemeException {
InputStream inputStream = null;
try {
inputStream = theme.getRenderThemeAsStream();
IRenderTheme t = XmlThemeBuilder.read(inputStream);
if (t != null)
t.scaleTextSize(CanvasAdapter.textScale + (CanvasAdapter.dpi / 240 - 1) * 0.5f);
return t;
InputStream is = theme.getRenderThemeAsStream();
return load(is);
} catch (FileNotFoundException e) {
log.error(e.getMessage());
} finally {
IOUtils.closeQuietly(inputStream);
}
return null;
}
public static IRenderTheme load(InputStream inputStream) throws ThemeException {
try {
IRenderTheme t = XmlThemeBuilder.read(inputStream);
if (t != null)
t.scaleTextSize(CanvasAdapter.textScale + (CanvasAdapter.dpi / 240 - 1) * 0.5f);
return t;
} finally {
IOUtils.closeQuietly(inputStream);
}
}
}