示例#1
0
 public void Dispose()
 {
     if (this.renderTheme != null)
     {
         this.renderTheme.Dispose();
         this.renderTheme = null;
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
 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);
 }
示例#4
0
 /**
  * @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();
 }
示例#5
0
        /**
         * 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);
        }