Exemple #1
0
 public MapToolContext(Rectangle viewRect, int tileSize, Point viewCentre, IMapViewport viewport,
                       IMapEditingService mapEditingService)
     : base(viewRect, tileSize, viewCentre)
 {
     this.MapEditingService = mapEditingService;
     Viewport = viewport;
 }
Exemple #2
0
        /// <summary>
        ///  Calculates the rendering offset for the given viewport. This computes the
        ///  translation offset from the viewport coordinate system to the render coordinate
        ///  system.
        ///
        ///  The rendering system uses an virtual screen coordinates system that
        ///  has its origin (0,0) in the top left corner of the screen. The viewport coordinate
        ///  system's origin is at equivalent of the the map-coordinate (0,0).
        /// </summary>
        /// <param name="viewport"></param>
        /// <returns></returns>
        public static ContinuousViewportCoordinates CalculateRenderCoordinateOffset(this IMapViewport viewport)
        {
            var size             = viewport.SizeInTiles;
            var fractionalOffset = viewport.CenterPointOffset;

            return(CalculateRenderCoordinateOffset(size, fractionalOffset));
        }
Exemple #3
0
        public ViewportRenderer(IMapViewport viewport)
        {
            this.viewport = viewport ?? throw new ArgumentNullException();
            this.viewport.PropertyChanged += ViewportChanged;

            ViewportChanged(this.viewport, null);
        }
Exemple #4
0
        public override void Paint(IGraphics graphics, IMapViewport viewport)
        {
            object state = graphics.SaveState();

            graphics.ChangeSmoothingMode(SmoothingMode.AntiAlias);
            MapVisualElementInfo info    = this.GetVisualElementInfo(viewport);
            GraphicsPath         path    = info.Path.Clone() as GraphicsPath;
            GraphicsPath         dotPath = new GraphicsPath();
            long   mapSize      = MapTileSystemHelper.MapSize(viewport.ZoomLevel);
            Matrix matrixOffset = new Matrix();

            matrixOffset.Translate(viewport.PanOffset.Width + info.Offset.X, viewport.PanOffset.Height + info.Offset.Y);
            path.Transform(matrixOffset);
            Matrix matrixWraparound = new Matrix();

            matrixWraparound.Translate(mapSize, 0);
            for (int i = 0; i < viewport.NumberOfWraparounds; i++)
            {
                RectangleF bounds   = path.GetBounds();
                float      diameter = bounds.Width / 3F;
                dotPath.AddEllipse(bounds.X + diameter, bounds.Y + diameter, diameter, diameter);
                graphics.FillPath(this.BorderColor, dotPath);
                //draw the image
                Point imageLocation = new Point((int)bounds.Location.X + (int)bounds.Width / 2 - this.image.Width / 2, (int)bounds.Location.Y);
                graphics.DrawImage(imageLocation, this.Image, true);
                path.Transform(matrixWraparound);
            }
            graphics.RestoreState(state);
        }
Exemple #5
0
        public override void ViewportChanged(IMapViewport viewport, ViewportChangeAction action)
        {
            if (this.Image == null)
            {
                base.ViewportChanged(viewport, action);
                return;
            }
            long mapSize = MapTileSystemHelper.MapSize(viewport.ZoomLevel);

            if ((action & ViewportChangeAction.Zoom) != 0)
            {
                this.pixelLocation = MapTileSystemHelper.LatLongToPixelXY(this.Location, viewport.ZoomLevel);
            }
            if ((action & ViewportChangeAction.Pan) != 0)
            {
                this.drawRect = new RectangleL(pixelLocation.X - this.Image.Size.Width / 2, pixelLocation.Y - this.Image.Size.Height, this.Image.Size.Width, this.Image.Size.Height);
            }
            RectangleL wraparoundDrawRect = this.drawRect;

            for (int i = 0; i <= viewport.NumberOfWraparounds; i++)
            {
                if (wraparoundDrawRect.IntersectsWith(viewport.ViewportInPixels))
                {
                    this.isImageInViewPort = true;
                    break;
                }
                wraparoundDrawRect.Offset(mapSize, 0L);
            }
            if (!this.IsInViewport)
            {
                return;
            }
        }
Exemple #6
0
 public override bool HitTest(PointG pointG, PointL pointL, IMapViewport viewport)
 {
     if (this.Image == null)
     {
         return(base.HitTest(pointG, pointL, viewport));
     }
     return(this.drawRect.Contains(pointL));
 }
        public override void Paint(IGraphics graphics, IMapViewport viewport)
        {
            if (this.Image == null)
            {
                base.Paint(graphics, viewport);
                return;
            }

            object state = graphics.SaveState();

            graphics.TranslateTransform(drawRect.X, drawRect.Y);
            Graphics g = graphics.UnderlayGraphics as Graphics;

            long mapSize = MapTileSystemHelper.MapSize(viewport.ZoomLevel);

            for (int i = -1; i <= viewport.NumberOfWraparounds; i++)
            {
                g.DrawImage(this.Image, new RectangleF(i * mapSize, 0, this.Image.Size.Width, this.Image.Size.Height));
            }

            graphics.RestoreState(state);
        }
Exemple #8
0
 static ViewportRenderer <TTargetTile, TTargetContext> CreateViewportRenderer(IMapViewport viewport)
 {
     return(new ViewportRenderer <TTargetTile, TTargetContext>(viewport));
 }
Exemple #9
0
 public ViewportPlotOperation(IRenderPlotOperation <TTargetTile, TTargetContext> op,
                              IMapViewport viewport) : base(op, CreateViewportRenderer(viewport))
 {
 }
 public override void UnbindViewport(IMapViewport viewport)
 {
     viewport.RemoveRenderer(renderer);
 }
Exemple #11
0
 public MapToolContext(Rectangle viewRect, int tileSize, Point viewCentre, IMapViewport viewport)
     : base(viewRect, tileSize, viewCentre)
 {
     Viewport = viewport;
 }
Exemple #12
0
 public DungeonGameItemLocationResolver(IItemService itemService,
                                        IMapViewport viewPort)
 {
     this.itemService = itemService ?? throw new ArgumentNullException(nameof(itemService));
     this.viewPort    = viewPort ?? throw new ArgumentNullException(nameof(viewPort));
 }
Exemple #13
0
 public void OnSelect(IMapViewport viewport)
 {
     viewport.AddRenderer(this.renderer);
 }
Exemple #14
0
 public void OnDeselect(IMapViewport viewport)
 {
     viewport.RemoveRenderer(this.renderer);
 }
Exemple #15
0
 public virtual void OnSelect(IMapViewport viewport)
 {
 }
Exemple #16
0
 public void BindViewport(IMapViewport viewport)
 {
 }
Exemple #17
0
 public void OnDeselect(IMapViewport viewport)
 {
     selectionRenderer.TileOffset = Point.Empty;
 }
Exemple #18
0
 public void UnbindViewport(IMapViewport viewport)
 {
 }
Exemple #19
0
 public void OnSelect(IMapViewport viewport)
 {
 }
 public override void BindViewport(IMapViewport viewport)
 {
     viewport.AddRenderer(renderer);
 }
 public static void ZoomOut(this IMapViewport viewport, Point zoomCentre)
 => viewport.Zoom(viewport.ZoomLevel - 1, zoomCentre);
 public virtual void UnbindViewport(IMapViewport viewport)
 {
 }