public void Remove()
 {
     MarkedShapes.ForEach(e => Elements.Remove(e));
     SelectedShapes.Clear();
     UpdateInput();
     RerenderAll();
 }
Пример #2
0
 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)));
 }