public void Remove() { MarkedShapes.ForEach(e => Elements.Remove(e)); SelectedShapes.Clear(); UpdateInput(); RerenderAll(); }
private void Move(PointerEventArgs eventArgs) { if (TranslatePanner.HasValue) { (double x, double y)newPanner = (x : eventArgs.OffsetX, y : eventArgs.OffsetY); Translate = (Translate.x + newPanner.x - TranslatePanner.Value.x, Translate.y + newPanner.y - TranslatePanner.Value.y); TranslatePanner = newPanner; } else { (double x, double y) = LocalDetransform((eventArgs.OffsetX, eventArgs.OffsetY)); if (CurrentAnchorShape is Shape shape) { shape.HandlePointerMove(eventArgs); } else { if (MarkedShapes.Count == 0 && SelectionBox is not null) { SelectionBox.Width = x - SelectionBox.X; SelectionBox.Height = y - SelectionBox.Y; BoxSelectionShapes = SelectionMode switch { SelectionMode.WindowSelection => WindowSelection(SelectionBox), _ => CrossingSelection(SelectionBox) }; } else { MarkedShapes.ForEach(e => e.HandlePointerMove(eventArgs)); MovePanner = (x, y); } } } }
protected void PlayAnimation() { MarkedShapes .Where(e => e is Shape) .ToList() .ForEach(s => { s.AnimationElements.ForEach(a => { a.Playing = true; }); }); }
public void Group(Shape shape) { List <string> elementsAsHtml = Elements.Select(e => e.StoredHtml).ToList(); if (MarkedShapes.Count == 1) { int pos = Elements.IndexOf(shape); elementsAsHtml[pos] = "<g>" + shape.StoredHtml + "</g>"; } else { ISVGElement frontElement = MarkedShapes.MaxBy(e => Elements.IndexOf(e)); elementsAsHtml[Elements.IndexOf(frontElement)] = "<g>\n" + string.Join("\n", MarkedShapes.OrderBy(e => Elements.IndexOf(e)).Select(e => e.StoredHtml)) + "\n</g>"; foreach (ISVGElement element in MarkedShapes.Where(e => e != frontElement)) { int pos = Elements.IndexOf(element); Elements.RemoveAt(pos); elementsAsHtml.RemoveAt(pos); } } SelectedShapes.Clear(); InputUpdated(string.Join("\n", elementsAsHtml)); }
private void OpenColorPicker(AttributeNames attribute) { ColorPickerShapes = MarkedShapes.Where(e => e is Shape).ToList(); ColorPickerAttribute = attribute; }
public async Task CopyElementsAsync() { await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", string.Join("\n", MarkedShapes.Select(e => e.StoredHtml))); }