private void StartSelectTilesSequence(PointerEventInfo info, ILevelGeometry viewport) { bool controlKey = Control.ModifierKeys.HasFlag(Keys.Control); bool shiftKey = Control.ModifierKeys.HasFlag(Keys.Shift); if (shiftKey) { StartDragAdd(info, viewport); return; } if (controlKey) { StartDragRemove(info, viewport); return; } TileCoord location = TileLocation(info); if (!_selectLayer.TileSelectionCoverageAt(location)) { StartDragNew(info, viewport); } else { StartMove(info, viewport); } }
protected override void RenderContent(SpriteBatch spriteBatch) { if (_pattern == null) { _pattern = BuildCanvasPattern(spriteBatch.GraphicsDevice); } if (_borderPen == null) { _borderPen = new Pen(new SolidColorBrush(Model.BorderColor.ToXnaColor())); } if (_guidePen == null) { _guidePen = new Pen(new SolidColorBrush(Model.OriginGuideColor.ToXnaColor())); } ILevelGeometry geometry = LevelGeometry; Rectangle bounds = geometry.VisibleBounds.ToXnaRectangle(); Rectangle dest = new Rectangle( (int)Math.Ceiling(bounds.X * geometry.ZoomFactor), (int)Math.Ceiling(bounds.Y * geometry.ZoomFactor), (int)(bounds.Width * geometry.ZoomFactor), (int)(bounds.Height * geometry.ZoomFactor) ); spriteBatch.Draw(_pattern, dest, dest, Color.White); }
public override ToolState StartPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { InitialLocation = new Point((int)info.X, (int)info.Y); Timeout = DateTime.Now; return(this); }
protected override void PointerPositionCore(PointerEventInfo info, ILevelGeometry viewport) { if (_snapManager == null) { _snapManager = new SnappingManager(GetSnappingSourceOrigin(), GetSnappingSourceBounds(), GridSize); } }
private ToolState StartTimeoutSequence(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj) { return(new SelectionTimeoutToolState(Tool) { HitObject = obj }.StartPointerSequence(info, viewport)); }
private void EndEraseAreaSequence(PointerEventInfo info, ILevelGeometry viewport) { Rectangle selection = _band.Selection; int xmin = Math.Max(Layer.TileOriginX, selection.Left); int ymin = Math.Max(Layer.TileOriginY, selection.Top); int xmax = Math.Min(Layer.TileOriginX + Layer.TilesWide, selection.Right); int ymax = Math.Min(Layer.TileOriginY + Layer.TilesHigh, selection.Bottom); TileReplace2DCommand command = new TileReplace2DCommand(Layer); for (int x = xmin; x < xmax; x++) { for (int y = ymin; y < ymax; y++) { command.QueueReplacement(new TileCoord(x, y), (TileStack)null); Layer[new TileCoord(x, y)] = null; } } History.Execute(command); _annots.Remove(_selection); _inAreaSequence = false; EndAutoScroll(info, viewport); }
public override ToolState StartPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { Tool._selectionManager.ClearSelection(); Tool.UpdatePropertyProvider(); return(this); }
public void PointerPosition(PointerEventInfo info, ILevelGeometry viewport) { if (IsCancelled) { return; } PointerPositionCore(info, viewport); }
protected override void EndPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: EndSelectTilesSequence(info, viewport); break; } }
public void EndPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if (IsCancelled) { return; } EndPointerSequenceCore(info, viewport); }
public override ToolState EndPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if ((DateTime.Now - Timeout).TotalMilliseconds < _timeoutThreshold) { return new RotationStandbyToolState(Tool) { HitObject = HitObject } }
private ToolState StartClickRemove(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj) { Tool._selectionManager.RemoveObjectFromSelection(obj); Tool.StartAutoScroll(info, viewport); Tool.UpdatePropertyProvider(); return(new SelectionStandbyToolState(Tool).StartPointerSequence(info, viewport)); }
private void StartDragRemove(PointerEventInfo info, ILevelGeometry viewport) { if (!_selectLayer.HasSelection) { return; } StartDrag(info, viewport, MergeAction.Remove); }
protected override void EndPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { _state = _state.EndPointerSequence(info, viewport); /*switch (info.Type) { case PointerEventType.Primary: EndSelectObjectSequence(info, viewport); break; }*/ }
private void EndMove(PointerEventInfo info, ILevelGeometry viewport) { Command command = new MoveTileSelectionCommand(_selectLayer, _initialOffset, _selectLayer.TileSelectionOffset); History.Execute(command); _action = UpdateAction.None; EndAutoScroll(info, viewport); }
protected override void PointerPositionCore(PointerEventInfo info, ILevelGeometry viewport) { TileCoord location = TileLocation(info); if (!TileInRange(location) || _inAreaSequence) { HidePreviewMarker(); return; } ShowPreviewMarker(location); }
private void UpdateDragCommon(PointerEventInfo info, ILevelGeometry viewport) { TileCoord location = TileLocation(info); _band.End = new Point(location.X, location.Y); Rectangle selection = _band.Selection; _selectionAnnot.Start = new Point(selection.Left * Layer.TileWidth, selection.Top * Layer.TileHeight); _selectionAnnot.End = new Point(selection.Right * Layer.TileWidth, selection.Bottom * Layer.TileHeight); }
protected override void StartPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: StartFillSequence(info); break; } UpdatePointerSequence(info, viewport); }
protected override void EndPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { _state = _state.EndPointerSequence(info, viewport); /*switch (info.Type) { * case PointerEventType.Primary: * EndSelectObjectSequence(info, viewport); * break; * }*/ }
public override ToolState EndPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { ClearAnnot(); Tool._selectionManager.AddObjectsToSelection(Tool.ObjectsInArea(Band.Selection)); Tool.EndAutoScroll(info, viewport); Tool.UpdatePropertyProvider(); return(new ReleaseToolState(Tool).EndPointerSequence(info, viewport)); }
protected override void EndPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: EndErasePathSequence(info); break; case PointerEventType.Secondary: EndEraseAreaSequence(info, viewport); break; } }
public ObjectSelectTool(ILayerContext layerContext, ObjectLayer layer, Size gridSize, ObjectSelectionManager selectionManager) : base(layerContext, layer, gridSize) { _annots = layerContext.Annotations; _viewport = layerContext.Geometry; _selectionManager = selectionManager; _layerContext = layerContext; InitializeCommandManager(); _state = new SelectionStandbyToolState(this); }
public override ToolState UpdatePointerSequence(PointerEventInfo info, ILevelGeometry viewport) { Band.End = new Point((int)info.X, (int)info.Y); Rectangle selection = Band.Selection; Annot.Start = new Point(selection.Left, selection.Top); Annot.End = new Point(selection.Right, selection.Bottom); Tool.UpdateAutoScroll(info, viewport); return(this); }
protected void StartAutoScroll(PointerEventInfo info, ILevelGeometry viewport) { _prevX = info.X; _prevY = info.Y; _scrollViewport = viewport; if (_scrollTimer.Interval != 50) { _scrollTimer.Interval = 50; _scrollTimer.Tick += new System.EventHandler(ScrollTick); } _scrollTimer.Enabled = true; }
protected override void StartPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: StartDrawObjectSequence(info); break; case PointerEventType.Secondary: Cancel(); break; } UpdatePointerSequence(info, viewport); }
private void UpdateEraseAreaSequenceCommon(PointerEventInfo info, ILevelGeometry viewport) { TileCoord location = TileLocation(info); int x = Math.Max(0, Math.Min(Layer.TilesWide - 1, location.X)) * Layer.TileWidth; int y = Math.Max(0, Math.Min(Layer.TilesHigh - 1, location.Y)) * Layer.TileHeight; _band.End = new Point(location.X, location.Y); Rectangle selection = _band.Selection; _selection.Start = new Point(selection.Left * Layer.TileWidth, selection.Top * Layer.TileHeight); _selection.End = new Point(selection.Right * Layer.TileWidth, selection.Bottom * Layer.TileHeight); }
protected override void StartPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: StartSelectTilesSequence(info, viewport); break; case PointerEventType.Secondary: DefloatSelection(); break; } UpdatePointerSequence(info, viewport); }
public override ToolState EndPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if (Annot == null) { float radius = Tool.MaxBoundingDiagonal(HitObject) / 2 + 5; Annot = new CircleAnnot(HitObject.ImageBounds.Center, radius); Annot.Outline = Outline; Annot.OutlineGlow = OutlineGlow; Tool._annots.Add(Annot); } return(this); }
protected override void UpdatePointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: UpdateDrawPathSequence(info); break; case PointerEventType.Secondary: UpdateDrag(info, viewport); break; } }
private void EndSelectTilesSequence(PointerEventInfo info, ILevelGeometry viewport) { switch (_action) { case UpdateAction.Move: EndMove(info, viewport); break; case UpdateAction.Box: EndDrag(info, viewport); break; } }
public override ToolState StartPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { switch (info.Type) { case PointerEventType.Primary: return(StartPrimaryPointerSequence(info, viewport)); case PointerEventType.Secondary: return(StartSecondaryPointerSequence(info, viewport)); default: return(base.StartPointerSequence(info, viewport)); } }
public override ToolState UpdatePointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if (info.X == InitialLocation.X && info.Y == InitialLocation.Y) { return(this); } return(new SelectionMovingToolState(Tool) { InitialLocation = InitialLocation, InitialSnapLocation = new Point(HitObject.X, HitObject.Y), SnapManager = Tool.GetSnappingManager(HitObject.ObjectClass), }.UpdatePointerSequence(info, viewport)); }
public override ToolState StartPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { Band = new RubberBand(new Point((int)info.X, (int)info.Y)); Annot = new SelectionAnnot(new Point((int)info.X, (int)info.Y)) { Fill = SelectionAnnotFill, Outline = SelectionAnnotOutline, }; Tool._annots.Add(Annot); Tool.StartAutoScroll(info, viewport); return(this); }
protected override void StartPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { _state = _state.StartPointerSequence(info, viewport); /*switch (info.Type) { case PointerEventType.Primary: StartSelectObjectSequence(info, viewport); break; case PointerEventType.Secondary: _selectionManager.ClearSelection(); if (_rotationAnnot != null) { _annots.Remove(_rotationAnnot); _rotationAnnot = null; } UpdatePropertyProvider(); break; }*/ UpdatePointerSequence(info, viewport); }
private ToolState StartClickRemove(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj) { Tool._selectionManager.RemoveObjectFromSelection(obj); Tool.StartAutoScroll(info, viewport); Tool.UpdatePropertyProvider(); return new SelectionStandbyToolState(Tool).StartPointerSequence(info, viewport); }
private ToolState StartDrag(PointerEventInfo info, ILevelGeometry viewport) { Tool._selectionManager.ClearSelection(); return StartDragAdd(info, viewport); }
protected override void PointerPositionCore(PointerEventInfo info, ILevelGeometry viewport) { SelectObjectPosition(info, viewport); }
private ToolState StartSecondaryPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { ObjectInstance hitObject = Tool.TopObject(Tool.CoarseHitTest((int)info.X, (int)info.Y)); if (hitObject == null) return new ReleaseToolState(Tool).StartPointerSequence(info, viewport); Tool.ActivateObjectMenu(info); if (Tool._selectionManager.IsObjectSelected(hitObject)) return this; else return StartClickNew(info, viewport, hitObject); }
private ToolState StartTimeoutSequence(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj) { return new SelectionTimeoutToolState(Tool) { HitObject = obj }.StartPointerSequence(info, viewport); }
private void UpdateDrag(PointerEventInfo info, ILevelGeometry viewport) { TileCoord location = TileLocation(info); _band.End = new Point(location.X, location.Y); Rectangle selection = _band.Selection; _selectionAnnot.Start = new Point(selection.Left * Layer.TileWidth, selection.Top * Layer.TileHeight); _selectionAnnot.End = new Point(selection.Right * Layer.TileWidth, selection.Bottom * Layer.TileHeight); //UpdateAutoScroll(info, viewport); }
private void StartDrag(PointerEventInfo info, ILevelGeometry viewport) { ClearPreviewMarker(); _activeBrush = null; TileCoord location = TileLocation(info); int x = (int)(location.X * Layer.TileWidth); int y = (int)(location.Y * Layer.TileHeight); _band = new RubberBand(new Point(location.X, location.Y)); _selectionAnnot = new SelectionAnnot(new Point((int)info.X, (int)info.Y)) { Fill = new SolidColorBrush(new Color(76, 178, 255, 128)), }; _annots.Add(_selectionAnnot); //StartAutoScroll(info, viewport); }
private void EndDrag(PointerEventInfo info, ILevelGeometry viewport) { Rectangle selection = ClampSelection(_band.Selection); StaticTileBrush anonBrush = new StaticTileBrush("User Selected", Layer.TileWidth, Layer.TileHeight); foreach (LocatedTile tile in Layer.TilesAt(_band.Selection)) anonBrush.AddTile(new TileCoord(tile.X - _band.Selection.Left, tile.Y - _band.Selection.Top), tile.Tile); anonBrush.Normalize(); _activeBrush = anonBrush; _annots.Remove(_selectionAnnot); _selectionAnnot = null; //EndAutoScroll(info, viewport); }
public virtual ToolState UpdatePointerSequence(PointerEventInfo info, ILevelGeometry viewport) { return this; }
private void StartEraseAreaSequence(PointerEventInfo info, ILevelGeometry viewport) { HidePreviewMarker(); TileCoord location = TileLocation(info); int x = (int)(location.X * Layer.TileWidth); int y = (int)(location.Y * Layer.TileHeight); _band = new RubberBand(new Point(location.X, location.Y)); _selection = new SelectionAnnot(new Point(x, y)) { Fill = new SolidColorBrush(new Color(192, 0, 0, 128)), //Outline = new Pen(new SolidColorBrush(new Color(192, 0, 0, 200))), }; _annots.Add(_selection); _inAreaSequence = true; StartAutoScroll(info, viewport); }
private void UpdateEraseAreaSequence(PointerEventInfo info, ILevelGeometry viewport) { UpdateEraseAreaSequenceCommon(info, viewport); UpdateAutoScroll(info, viewport); }
public override ToolState StartPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { InitialLocation = new Point((int)info.X, (int)info.Y); Timeout = DateTime.Now; return this; }
protected override void PointerPositionCore(PointerEventInfo info, ILevelGeometry viewport) { if (_snapManager == null) _snapManager = new SnappingManager(GetSnappingSourceOrigin(), GetSnappingSourceBounds(), GridSize); }
public override ToolState UpdatePointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if (info.X == InitialLocation.X && info.Y == InitialLocation.Y) return this; return new SelectionMovingToolState(Tool) { InitialLocation = InitialLocation, InitialSnapLocation = new Point(HitObject.X, HitObject.Y), SnapManager = Tool.GetSnappingManager(HitObject.ObjectClass), }.UpdatePointerSequence(info, viewport); }
private ToolState StartDragAdd(PointerEventInfo info, ILevelGeometry viewport) { return new SelectionAreaToolState(Tool).StartPointerSequence(info, viewport); }
public override ToolState EndPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { if ((DateTime.Now - Timeout).TotalMilliseconds < _timeoutThreshold) return new RotationStandbyToolState(Tool) { HitObject = HitObject }.EndPointerSequence(info, viewport); else return new SelectionStandbyToolState(Tool).EndPointerSequence(info, viewport); }
protected override void StartPointerSequenceCore(PointerEventInfo info, ILevelGeometry viewport) { _snapManager = new SnappingManager(GetSnappingSourceOrigin(), GetSnappingSourceBounds(), GridSize); }
private ToolState StartPrimaryPointerSequence(PointerEventInfo info, ILevelGeometry viewport) { ObjectInstance hitObject = Tool.TopObject(Tool.CoarseHitTest((int)info.X, (int)info.Y)); bool controlKey = Control.ModifierKeys.HasFlag(Keys.Control); if (hitObject == null) { if (controlKey) return StartDragAdd(info, viewport); else return StartDrag(info, viewport); } if (Tool._selectionManager.IsObjectSelected(hitObject)) { if (controlKey) return StartClickRemove(info, viewport, hitObject); else return StartTimeoutSequence(info, viewport, hitObject); } else { if (controlKey) return StartClickAdd(info, viewport, hitObject); else return StartClickNew(info, viewport, hitObject); } }