Exemple #1
0
 /// <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;
 }
Exemple #2
0
 /// <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;
 }
Exemple #3
0
 /// <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;
 }
Exemple #4
0
 /// <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;
 }
Exemple #5
0
 /// <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;
 }
Exemple #6
0
 /// <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;
 }
Exemple #7
0
 /// <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;
 }
Exemple #8
0
 /// <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;
 }
Exemple #9
0
        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);
        }
Exemple #10
0
 /// <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;
 }
Exemple #11
0
        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;
 }
Exemple #13
0
 private void DeInitialize()
 {
     if (_layer != null)
     {
         _layer.InvalidateLayer -= Invalidate;
         _layer = default(XLayer);
     }
 }
Exemple #14
0
 /// <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);
         }
     }
 }
Exemple #15
0
 /// <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;
     }
 }
Exemple #16
0
 /// <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;
     }
 }
Exemple #17
0
 /// <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;
     }
 }
Exemple #18
0
 /// <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;
     }
 }
Exemple #19
0
        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);
        }
Exemple #20
0
        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);
        }
Exemple #21
0
        /// <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;
            }
        }
Exemple #22
0
        /// <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);
                }
            }
        }
Exemple #23
0
        /// <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;
            }
        }
Exemple #24
0
        /// <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;
            }
        }
Exemple #25
0
        /// <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;
            }
        }
Exemple #26
0
        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);
        }
Exemple #27
0
        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);
        }
Exemple #28
0
        private void Initialize()
        {
            if (_layer != null)
            {
                DeInitialize();
            }

            var layer = DataContext as XLayer;

            if (layer != null)
            {
                _layer = layer;
                _layer.InvalidateLayer += Invalidate;
            }
        }
Exemple #29
0
        private void Remove(XLayer layer)
        {
            if (layer == null)
            {
                return;
            }

            layer.PropertyChanged -= ObserveLayer;

            if (layer.Shapes != null)
            {
                Remove(layer.Shapes);
            }

            layer.InvalidateLayer -= ObserveInvalidateLayer;
        }
Exemple #30
0
        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);
        }