/// <summary> /// Initialize new instance of <see cref="LineSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public LineSelection(XLayer layer, ILine shape, ShapeStyle style, BaseShape point) { _layer = layer; _line = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="ImageSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public ImageSelection(XLayer layer, XImage shape, ShapeStyle style, BaseShape point) { _layer = layer; _image = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="PathSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public PathSelection(XLayer layer, XPath shape, ShapeStyle style, BaseShape point) { _layer = layer; _path = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="RectangleSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public RectangleSelection(XLayer layer, XRectangle shape, ShapeStyle style, BaseShape point) { _layer = layer; _rectangle = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="ArcSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public ArcSelection(XLayer layer, IArc shape, ShapeStyle style, BaseShape point) { _layer = layer; _arc = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="PointSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public PointSelection(XLayer layer, XPoint shape, ShapeStyle style, BaseShape point) { _layer = layer; _shape = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="TextSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public TextSelection(XLayer layer, XText shape, ShapeStyle style, BaseShape point) { _layer = layer; _text = shape; _style = style; _point = point; }
/// <summary> /// Initialize new instance of <see cref="QuadraticBezierSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public QuadraticBezierSelection(XLayer layer, IQuadraticBezier shape, ShapeStyle style, BaseShape point) { _layer = layer; _quadraticBezier = shape; _style = style; _point = point; }
public void Invalidate_Should_Invalidate_All_Layers() { var target = new Class1(); var layer1 = XLayer.Create("Layer1", target); var layer2 = XLayer.Create("Layer2", target); target.Layers = target.Layers.Add(layer1); target.Layers = target.Layers.Add(layer2); var workingLayer = XLayer.Create("WorkingLayer", target); var helperLayer = XLayer.Create("HelperLayer", target); target.WorkingLayer = workingLayer; target.HelperLayer = helperLayer; int count = 0; layer1.InvalidateLayer += (sender, e) => count++; layer2.InvalidateLayer += (sender, e) => count++; workingLayer.InvalidateLayer += (sender, e) => count++; helperLayer.InvalidateLayer += (sender, e) => count++; target.Invalidate(); Assert.Equal(4, count); }
/// <summary> /// Initialize new instance of <see cref="EllipseSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public EllipseSelection(XLayer layer, XEllipse shape, ShapeStyle style, BaseShape point) { _layer = layer; _ellipse = shape; _style = style; _point = point; }
public void SetSelected_Container() { var target = new XProject(); var document = XDocument.Create(); target.Documents = target.Documents.Add(document); var page = XContainer.CreatePage(); document.Pages = document.Pages.Add(page); var layer = XLayer.Create("Layer1", page); page.Layers = page.Layers.Add(layer); bool raised = false; layer.InvalidateLayer += (sender, e) => { raised = true; }; target.SetSelected(page); Assert.Equal(document, target.CurrentDocument); Assert.Equal(page, target.CurrentContainer); Assert.True(raised); }
/// <summary> /// Initialize new instance of <see cref="CubicBezierSelection"/> class. /// </summary> /// <param name="layer">The selection shapes layer.</param> /// <param name="shape">The selected shape.</param> /// <param name="style">The selection shapes style.</param> /// <param name="point">The selection point shape.</param> public CubicBezierSelection(XLayer layer, ICubicBezier shape, ShapeStyle style, BaseShape point) { _layer = layer; _cubicBezier = shape; _style = style; _point = point; }
private void DeInitialize() { if (_layer != null) { _layer.InvalidateLayer -= Invalidate; _layer = default(XLayer); } }
/// <summary> /// Draws a <see cref="XLayer"/> using drawing context. /// </summary> /// <param name="dc">The native drawing context.</param> /// <param name="layer">The <see cref="XLayer"/> object.</param> /// <param name="db">The properties database.</param> /// <param name="r">The data record.</param> public virtual void Draw(object dc, XLayer layer, ImmutableArray <XProperty> db, XRecord r) { foreach (var shape in layer.Shapes) { if (shape.State.Flags.HasFlag(State.DrawShapeState.Flags)) { shape.Draw(dc, this, 0, 0, db, r); } } }
/// <summary> /// Clear layer. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> public static void ClearLayer(this XProject project, XLayer layer) { if (layer != null) { var previous = layer.Shapes; var next = ImmutableArray.Create <BaseShape>(); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
/// <summary> /// Remove shape. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> /// <param name="shape">The shape instance.</param> public static void RemoveShape(this XProject project, XLayer layer, BaseShape shape) { if (layer?.Shapes != null && shape != null) { var previous = layer.Shapes; var next = layer.Shapes.Remove(shape); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
/// <summary> /// Add shape at specified index. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> /// <param name="shape">The shape instance.</param> /// <param name="index">The shape index.</param> public static void AddShapeAt(this XProject project, XLayer layer, BaseShape shape, int index) { if (layer?.Shapes != null && shape != null) { var previous = layer.Shapes; var next = layer.Shapes.Insert(index, shape); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
/// <summary> /// Add layer. /// </summary> /// <param name="project">The project instance.</param> /// <param name="container">The container instance.</param> /// <param name="layer">The layer instance.</param> public static void AddLayer(this XProject project, XContainer container, XLayer layer) { if (container != null && container.Layers != null && layer != null) { var previous = container.Layers; var next = container.Layers.Add(layer); project?.History?.Snapshot(previous, next, (p) => container.Layers = p); container.Layers = next; } }
public void SetSelected_Layer() { var target = new XProject(); var page = new XContainer(); var layer = XLayer.Create("Layer1", page); target.SetSelected(layer); Assert.Equal(layer, page.CurrentLayer); }
public void SetCurrentLayer_Sets_CurrentLayer() { var target = new Class1(); var layer = XLayer.Create("Layer1", target); target.Layers = target.Layers.Add(layer); target.SetCurrentLayer(layer); Assert.Equal(layer, target.CurrentLayer); }
/// <summary> /// Remove layer. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> public static void RemoveLayer(this XProject project, XLayer layer) { var container = layer?.Owner; if (container != null && container.Layers != null) { var previous = container.Layers; var next = container.Layers.Remove(layer); project?.History?.Snapshot(previous, next, (p) => container.Layers = p); container.Layers = next; } }
/// <inheritdoc/> public override void Draw(object dc, XLayer layer, ImmutableArray <XProperty> db, XRecord r) { var _dc = dc as DrawingContext; foreach (var shape in layer.Shapes) { if (shape.State.Flags.HasFlag(_state.DrawShapeState.Flags)) { shape.Draw(_dc, this, 0, 0, db, r); } } }
/// <summary> /// Replace shape at specified index. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> /// <param name="shape">The shape instance.</param> /// <param name="index">The shape index.</param> public static void ReplaceShape(this XProject project, XLayer layer, BaseShape shape, int index) { if (layer != null && shape != null && index >= 0) { var builder = layer.Shapes.ToBuilder(); builder[index] = shape; var previous = layer.Shapes; var next = builder.ToImmutable(); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
/// <summary> /// Add shapes. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> /// <param name="shapes">The shapes collection.</param> public static void AddShapes(this XProject project, XLayer layer, IEnumerable <BaseShape> shapes) { if (layer?.Shapes != null && shapes != null) { var builder = layer.Shapes.ToBuilder(); builder.AddRange(shapes); var previous = layer.Shapes; var next = builder.ToImmutable(); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
/// <summary> /// Swap shape at specified indexes. /// </summary> /// <param name="project">The project instance.</param> /// <param name="layer">The layer instance.</param> /// <param name="shape">The shape instance.</param> /// <param name="insertIndex">The shape insert index.</param> /// <param name="removeIndex">The shape remove index.</param> public static void SwapShape(this XProject project, XLayer layer, BaseShape shape, int insertIndex, int removeIndex) { if (layer != null && shape != null && insertIndex >= 0 && removeIndex >= 0) { var builder = layer.Shapes.ToBuilder(); builder.Insert(insertIndex, shape); builder.RemoveAt(removeIndex); var previous = layer.Shapes; var next = builder.ToImmutable(); project?.History?.Snapshot(previous, next, (p) => layer.Shapes = p); layer.Shapes = next; } }
public void Invalidate_Raises_InvalidateLayer_Event() { var target = XLayer.Create("Layer1"); bool raised = false; target.InvalidateLayer += (sender, e) => { raised = true; }; target.Invalidate(); Assert.True(raised); }
public void Setting_IsVisible_Should_Invalidate_Layer() { var target = XLayer.Create("Layer1"); bool raised = false; target.InvalidateLayer += (sender, e) => { raised = true; }; target.IsVisible = false; Assert.True(raised); }
private void Initialize() { if (_layer != null) { DeInitialize(); } var layer = DataContext as XLayer; if (layer != null) { _layer = layer; _layer.InvalidateLayer += Invalidate; } }
private void Remove(XLayer layer) { if (layer == null) { return; } layer.PropertyChanged -= ObserveLayer; if (layer.Shapes != null) { Remove(layer.Shapes); } layer.InvalidateLayer -= ObserveInvalidateLayer; }
public void Invalidate_Sets_EventArgs() { var target = XLayer.Create("Layer1"); InvalidateLayerEventArgs args = null; target.InvalidateLayer += (sender, e) => { args = e; }; target.Invalidate(); Assert.NotNull(args); Assert.True(args is InvalidateLayerEventArgs); }