diff --git a/vtm/src/org/oscim/map/Map.java b/vtm/src/org/oscim/map/Map.java index 4d0da802..37bb4e9f 100644 --- a/vtm/src/org/oscim/map/Map.java +++ b/vtm/src/org/oscim/map/Map.java @@ -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(); } diff --git a/vtm/src/org/oscim/theme/ExternalRenderTheme.java b/vtm/src/org/oscim/theme/ExternalRenderTheme.java index 043295a6..6a7a08a0 100644 --- a/vtm/src/org/oscim/theme/ExternalRenderTheme.java +++ b/vtm/src/org/oscim/theme/ExternalRenderTheme.java @@ -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()) { diff --git a/vtm/src/org/oscim/theme/ThemeLoader.java b/vtm/src/org/oscim/theme/ThemeLoader.java index 93445dca..c5eb03a4 100644 --- a/vtm/src/org/oscim/theme/ThemeLoader.java +++ b/vtm/src/org/oscim/theme/ThemeLoader.java @@ -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); + } + } }