public MapToolContext(Rectangle viewRect, int tileSize, Point viewCentre, IMapViewport viewport, IMapEditingService mapEditingService) : base(viewRect, tileSize, viewCentre) { this.MapEditingService = mapEditingService; Viewport = viewport; }
/// <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)); }
public ViewportRenderer(IMapViewport viewport) { this.viewport = viewport ?? throw new ArgumentNullException(); this.viewport.PropertyChanged += ViewportChanged; ViewportChanged(this.viewport, null); }
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); }
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; } }
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); }
static ViewportRenderer <TTargetTile, TTargetContext> CreateViewportRenderer(IMapViewport viewport) { return(new ViewportRenderer <TTargetTile, TTargetContext>(viewport)); }
public ViewportPlotOperation(IRenderPlotOperation <TTargetTile, TTargetContext> op, IMapViewport viewport) : base(op, CreateViewportRenderer(viewport)) { }
public override void UnbindViewport(IMapViewport viewport) { viewport.RemoveRenderer(renderer); }
public MapToolContext(Rectangle viewRect, int tileSize, Point viewCentre, IMapViewport viewport) : base(viewRect, tileSize, viewCentre) { Viewport = viewport; }
public DungeonGameItemLocationResolver(IItemService itemService, IMapViewport viewPort) { this.itemService = itemService ?? throw new ArgumentNullException(nameof(itemService)); this.viewPort = viewPort ?? throw new ArgumentNullException(nameof(viewPort)); }
public void OnSelect(IMapViewport viewport) { viewport.AddRenderer(this.renderer); }
public void OnDeselect(IMapViewport viewport) { viewport.RemoveRenderer(this.renderer); }
public virtual void OnSelect(IMapViewport viewport) { }
public void BindViewport(IMapViewport viewport) { }
public void OnDeselect(IMapViewport viewport) { selectionRenderer.TileOffset = Point.Empty; }
public void UnbindViewport(IMapViewport viewport) { }
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) { }