public void Dispose() { if (this.renderTheme != null) { this.renderTheme.Dispose(); this.renderTheme = null; } }
public static Theme GetRenderTheme(XmlRenderTheme xmlRenderTheme) { RenderThemeHandler renderThemeHandler = new RenderThemeHandler(xmlRenderTheme.RelativePathPrefix); using (Stream stream = xmlRenderTheme.OpenStream()) { XDocument xmlReader = XDocument.Load(stream); renderThemeHandler.ScanElementsTree(xmlReader.Root); return(renderThemeHandler.renderTheme); } }
private static XmlRenderTheme getRenderTheme(XmlRenderTheme jobTheme) { try { return(RenderThemeHandler.GetRenderTheme(AndroidGraphics.INSTANCE, jobTheme)); } catch (XmlException e) { System.Diagnostics.Debug.WriteLine(e); } catch (IOException e) { System.Diagnostics.Debug.WriteLine(e); } return(null); }
/** * @param jobTheme * render theme which should be used. * @param textScale * the text scale factor which should applied to the render theme. */ public JobParameters(XmlRenderTheme jobTheme, float textScale) { this.jobTheme = jobTheme; this.textScale = textScale; this.hashCodeValue = calculateHashCode(); }
/** * Called when a job needs to be executed. * * @param mapGeneratorJob * the job that should be executed. * @param BitmapImage * the BitmapImage for the generated map tile. * @return true if the job was executed successfully, false otherwise. */ public bool executeJob(MapGeneratorJob mapGeneratorJob, BitmapImage BitmapImage) { this.currentTile = mapGeneratorJob.tile; System.Windows.Media.Imaging.WriteableBitmap bmp; XmlRenderTheme jobTheme = mapGeneratorJob.jobParameters.jobTheme; if (!jobTheme.Equals(this.previousJobTheme)) { if (this.renderTheme != null) { this.renderTheme.Dispose(); } this.renderTheme = getRenderTheme(jobTheme); if (this.renderTheme == null) { this.previousJobTheme = null; return(false); } createWayLists(); this.previousJobTheme = jobTheme; this.previousZoomLevel = byte.MinValue; // invalidate the previousTextScale so that textScale from jobParameters will // be applied next time this.previousTextScale = -1; } byte zoomLevel = this.currentTile.ZoomFactor; if (zoomLevel != this.previousZoomLevel) { setScaleStrokeWidth(zoomLevel); this.previousZoomLevel = zoomLevel; } float textScale = mapGeneratorJob.jobParameters.textScale; if (textScale != this.previousTextScale) { this.renderTheme.scaleTextSize(textScale); this.previousTextScale = textScale; } if (this.mapDatabase != null) { MapReadResult mapReadResult = this.mapDatabase.ReadMapData(this.currentTile); processReadMapData(mapReadResult); } this.nodes = this.labelPlacement.placeLabels(this.nodes, this.Pointsymbols, this.areaLabels, this.currentTile); this.canvasRasterer.setCanvasBitmap(BitmapImage); this.canvasRasterer.fill(this.renderTheme.getMapBackground()); this.canvasRasterer.drawWays(this.ways); this.canvasRasterer.drawSymbols(this.waySymbols); this.canvasRasterer.drawSymbols(this.Pointsymbols); this.canvasRasterer.drawWayNames(this.wayNames); this.canvasRasterer.drawNodes(this.nodes); this.canvasRasterer.drawNodes(this.areaLabels); if (mapGeneratorJob.debugSettings.drawTileFrames) { this.canvasRasterer.drawTileFrame(); } if (mapGeneratorJob.debugSettings.drawTileCoordinates) { this.canvasRasterer.drawTileCoordinates(this.currentTile); } clearLists(); return(true); }