Пример #1
0
        public override void RenderNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi)
        {
            if (Display.NEVER == this.display)
            {
                return;
            }

            if (Bitmap != null)
            {
                renderCallback.RenderPointOfInterestSymbol(renderContext, this.display, this.priority, this.bitmap, poi);
            }
        }
Пример #2
0
 public override void RenderNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi)
 {
     // do nothing
 }
Пример #3
0
 private void RenderPointOfInterest(RenderContext renderContext, PointOfInterest pointOfInterest)
 {
     renderContext.DrawingLayers = pointOfInterest.Layer;
     renderContext.renderTheme.MatchNode(this, renderContext, pointOfInterest);
 }
Пример #4
0
 /// <param name="renderCallback">
 ///            a reference to the receiver of all render callbacks. </param>
 /// <param name="renderContext"> </param>
 /// <param name="poi"> </param>
 public abstract void RenderNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi);
Пример #5
0
        public void RenderPointOfInterestCircle(RenderContext renderContext, float radius, IPaint fill, IPaint stroke, int level, PointOfInterest poi)
        {
            Point poiPosition = MercatorProjection.GetPixelRelativeToTile(poi.Position, renderContext.rendererJob.tile);

            renderContext.AddToCurrentDrawingLayer(level, new ShapePaintContainer(new CircleContainer(poiPosition, radius), stroke));
            renderContext.AddToCurrentDrawingLayer(level, new ShapePaintContainer(new CircleContainer(poiPosition, radius), fill));
        }
Пример #6
0
        public void RenderPointOfInterestSymbol(RenderContext renderContext, Display display, int priority, IBitmap symbol, PointOfInterest poi)
        {
            Point poiPosition = MercatorProjection.GetPixelAbsolute(poi.Position, renderContext.rendererJob.tile.MapSize);

            renderContext.labels.Add(new SymbolContainer(poiPosition, display, priority, symbol));
        }
Пример #7
0
        public void RenderPointOfInterestCaption(RenderContext renderContext, Display display, int priority, string caption, float horizontalOffset, float verticalOffset, IPaint fill, IPaint stroke, Position position, int maxTextWidth, PointOfInterest poi)
        {
            Point poiPosition = MercatorProjection.GetPixelAbsolute(poi.Position, renderContext.rendererJob.tile.MapSize);

            renderContext.labels.Add(this.graphicFactory.CreatePointTextContainer(poiPosition.Offset(horizontalOffset, verticalOffset), display, priority, caption, fill, stroke, null, position, maxTextWidth));
        }
Пример #8
0
 internal virtual void MatchNode(RenderCallback renderCallback, RenderContext renderContext, IList <RenderInstruction> matchingList, PointOfInterest pointOfInterest)
 {
     if (MatchesNode(pointOfInterest.Tags, renderContext.rendererJob.tile.ZoomLevel))
     {
         for (int i = 0, n = this.renderInstructions.Count; i < n; ++i)
         {
             this.renderInstructions[i].RenderNode(renderCallback, renderContext, pointOfInterest);
             matchingList.Add(this.renderInstructions[i]);
         }
         for (int i = 0, n = this.subRules.Count; i < n; ++i)
         {
             this.subRules[i].MatchNode(renderCallback, renderContext, matchingList, pointOfInterest);
         }
     }
 }
Пример #9
0
 public override void RenderNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi)
 {
     renderCallback.RenderPointOfInterestCircle(renderContext, GetRenderRadius(renderContext.rendererJob.tile.ZoomLevel), GetFillPaint(renderContext.rendererJob.tile.ZoomLevel), GetStrokePaint(renderContext.rendererJob.tile.ZoomLevel), this.level, poi);
 }
Пример #10
0
        /// <summary>
        /// Matches a node with the given parameters against this RenderTheme. </summary>
        ///  <param name="renderCallback">
        ///            the callback implementation which will be executed on each match. </param>
        /// <param name="renderContext"> </param>
        /// <param name="poi">
        ///            the point of interest. </param>
        public virtual void MatchNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi)
        {
            lock (this)
            {
                MatchingCacheKey matchingCacheKey = new MatchingCacheKey(poi.Tags, renderContext.rendererJob.tile.ZoomLevel, Closed.NO);

                IList <RenderInstruction> matchingList = this.poiMatchingCache.Get(matchingCacheKey);
                if (matchingList != null)
                {
                    // cache hit
                    for (int i = 0, n = matchingList.Count; i < n; ++i)
                    {
                        matchingList[i].RenderNode(renderCallback, renderContext, poi);
                    }
                    return;
                }

                // cache miss
                matchingList = new List <RenderInstruction>();

                for (int i = 0, n = this.rulesList.Count; i < n; ++i)
                {
                    this.rulesList[i].MatchNode(renderCallback, renderContext, matchingList, poi);
                }
                this.poiMatchingCache.Add(matchingCacheKey, matchingList);
            }
        }
Пример #11
0
        public override void RenderNode(RenderCallback renderCallback, RenderContext renderContext, PointOfInterest poi)
        {
            if (Display.NEVER == this.display)
            {
                return;
            }

            string caption = this.textKey.GetValue(poi.Tags);

            if (string.ReferenceEquals(caption, null))
            {
                return;
            }

            float horizontalOffset = 0f;

            float verticalOffset = this.dyScaled[renderContext.rendererJob.tile.ZoomLevel] ?? this.dy;

            if (this.bitmap != null)
            {
                horizontalOffset = ComputeHorizontalOffset();
                verticalOffset   = ComputeVerticalOffset(renderContext.rendererJob.tile.ZoomLevel);
            }

            renderCallback.RenderPointOfInterestCaption(renderContext, this.display, this.priority, caption, horizontalOffset, verticalOffset, getFillPaint(renderContext.rendererJob.tile.ZoomLevel), getStrokePaint(renderContext.rendererJob.tile.ZoomLevel), this.position, this.maxTextWidth, poi);
        }