예제 #1
0
        public void SetFrameWithZeroHeightWidth()
        {
            var group = new GroupShape();
            var frame = new Rect(100, 0, 100, 0);

            Assert.ThrowsException <ArgumentException>(() => group.SetFrame(frame));
        }
예제 #2
0
        public void SetFrameToGroupWithoutShapes()
        {
            var group = new GroupShape();
            var frame = new Rect(-100, 450, -100, 250);

            group.SetFrame(frame);

            Assert.AreEqual(null, group.GetFrame());
        }
예제 #3
0
        public void SetFrameToGroupWithEmptyGroups()
        {
            var group         = new GroupShape();
            var emptyGroupOne = new GroupShape();
            var emptyGroupTwo = new GroupShape();

            group.InsertShape(emptyGroupOne, 0);
            group.InsertShape(emptyGroupTwo, 0);
            group.SetFrame(new Rect(10, 10, 10, 10));

            Assert.IsNull(group.GetFrame());
        }
예제 #4
0
        static void Main(string [] args)
        {
            var canvas = new Canvas.SkiaCanvas(1000, 1000);

            var slide = new Slide(1000, 1000);

            var sunFillStyle            = new Style.Style(Color.Yellow, true);
            var sunOutLineStyle         = new OutLineStyle(Color.Orange, true, 5);
            var firstFloorFillStyle     = new Style.Style(Color.Brown, true);
            var firstFloorOutLineStyle  = new OutLineStyle(Color.Red, true, 5);
            var secondFloorFillStyle    = new Style.Style(Color.Green, true);
            var secondFloorOutLineStyle = new OutLineStyle(Color.GreenYellow, true, 5);

            var roofFrame = new Rect(200, 200, 95, 100);
            var roof      = new Triangle(roofFrame, secondFloorFillStyle, secondFloorOutLineStyle);

            var porchFrame        = new Rect(100, 100, 250, 100);
            var porch             = new Rectangle(porchFrame, firstFloorFillStyle, firstFloorOutLineStyle);
            var rectangleFrameTwo = new Rect(200, 200, 200, 150);
            var rectangleTwo      = new Rectangle(rectangleFrameTwo, firstFloorFillStyle, firstFloorOutLineStyle);

            var ellipseFrame = new Rect(450, 100, 100, 100);
            var ellipse      = new Elipse(ellipseFrame, sunFillStyle, sunOutLineStyle);

            var home    = new GroupShape();
            var sky     = new GroupShape();
            var picture = new GroupShape();

            slide.SetBackgroundColor(Color.Black.ToArgb());
            home.InsertShape(porch, 0);
            home.InsertShape(rectangleTwo, 0);
            home.InsertShape(roof, 0);
            sky.InsertShape(ellipse, 0);
            picture.InsertShape(home, 0);
            picture.InsertShape(sky, 0);
            slide.GetShapes().InsertShape(picture, 0);
            slide.Draw(canvas);
            PrintFrame(picture.GetFrame().Value);
            canvas.Save("E:\\учёба\\test1.png");

            var newGroupFrame = new Rect(0, 900, 0, 510);

            picture.SetFrame(newGroupFrame);
            var pictureStyle = picture.GetFillStyle();

            pictureStyle.SetColor(Color.Azure);
            slide.Draw(canvas);
            PrintFrame(ellipse.GetFrame().Value);
            canvas.Save("E:\\учёба\\test2.png");
        }
예제 #5
0
        public void SetFrame_GroupShapeHasChild_ChangeChildFrameCorrectly()
        {
            // Arrange
            var groupShape = new GroupShape();
            var rectangle  = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));

            groupShape.InsertShape(rectangle, 0);
            var expectedChildFrame = new Rect(3, 3, 3, 3);

            // Act
            groupShape.SetFrame(new Rect(3, 3, 3, 3));
            Rect?result = groupShape.GetShapeAtIndex(0).GetFrame();

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(expectedChildFrame, result);
        }
예제 #6
0
        public void SetFrame_SetToSimpleShape_GetSettedFrame()
        {
            // Arrange
            var groupShape = new GroupShape();
            var rectangle  = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));

            groupShape.InsertShape(rectangle, 0);
            var expectedFrame = new Rect(3, 3, 3, 3);

            // Act
            groupShape.SetFrame(expectedFrame);
            Rect?result = groupShape.GetFrame();

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(expectedFrame, result);
        }
예제 #7
0
        public void SetFrame_GroupShapeHasTwoChilds_ChildsFrameChangedCorrectly()
        {
            // Arrange
            var groupShape = new GroupShape();
            var rectangle  = new Rectangle(new Rect(left: 0, top: 1, width: 2, height: 1));
            var ellipse    = new Rectangle(new Rect(left: 1, top: 2, width: 1.5f, height: 1));

            groupShape.InsertShape(rectangle, 0);
            groupShape.InsertShape(ellipse, 1);
            var expectedRectangleFrame = new Rect(0, 0.5f, 0.8f, 0.5f);
            var expectedEllipseFrame   = new Rect(0.4f, 1f, 0.6f, 0.5f);

            // Act
            groupShape.SetFrame(new Rect(0, 1, 1, 1));
            Rect?rectangleFrame = groupShape.GetShapeAtIndex(0).GetFrame();
            Rect?ellipseFrame   = groupShape.GetShapeAtIndex(1).GetFrame();

            // Assert
            Assert.True(rectangleFrame.HasValue && ellipseFrame.HasValue);
            Assert.Equal(expectedRectangleFrame, rectangleFrame);
            Assert.Equal(expectedEllipseFrame, ellipseFrame);
        }
예제 #8
0
        public void SetFrameToGroupWithShapesAndEmptyGroup()
        {
            var rectangleFrame = new Rect(0, 200, 0, 150);
            var ellipseFrame   = new Rect(250, 100, -100, 100);
            var resultFrame    = new Rect(0, 350, -100, 250);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);

            var group      = new GroupShape();
            var emptyGroup = new GroupShape();

            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(emptyGroup, 0);

            Assert.IsTrue(IsEqualFrame(resultFrame, group.GetFrame().Value));

            group.SetFrame(new Rect(0, 700, 0, 125));

            Assert.IsTrue(IsEqualFrame(new Rect(0, 700, 0, 125), group.GetFrame().Value));
        }
예제 #9
0
        public void SetFrameWithDoubleSmallerWidthAndHeightAndNegativeLeftTopToGroupWithShapes()
        {
            var rectangleFrame = new Rect(200, 200, 200, 150);
            var ellipseFrame   = new Rect(450, 100, 100, 100);
            var triangleFrame  = new Rect(100, 100, 250, 100);
            var groupFrame     = new Rect(100, 450, 100, 250);

            var newRectangleFrame = new Rect(-50, 100, -50, 75);
            var newEllipseFrame   = new Rect(75, 50, -100, 50);
            var newTriangleFrame  = new Rect(-100, 50, -25, 50);
            var newGroupFrame     = new Rect(-100, 225, -100, 125);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame, null, null);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            triangleGroup.InsertShape(triangle, 0);
            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);

            Assert.IsTrue(IsEqualFrame(rectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(ellipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(groupFrame, group.GetFrame().Value));

            group.SetFrame(newGroupFrame);

            Assert.IsTrue(IsEqualFrame(newRectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newTriangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newEllipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newGroupFrame, group.GetFrame().Value));
        }
예제 #10
0
        public void SetNewFrameWithDoubleBiggerWidthAndHeightToGroupWithShapes()
        {
            var rectangleFrame = new Rect(200, 200, 200, 150);
            var ellipseFrame   = new Rect(450, 100, 100, 100);
            var triangleFrame  = new Rect(100, 100, 250, 100);
            var groupFrame     = new Rect(100, 450, 100, 250);

            var newRectangleFrame = new Rect(300, 400, 300, 300);
            var newEllipseFrame   = new Rect(800, 200, 100, 200);
            var newTriangleFrame  = new Rect(100, 200, 400, 200);
            var newGroupFrame     = new Rect(100, 900, 100, 500);

            var rectangle = new Rectangle(rectangleFrame, null, null);
            var ellipse   = new Elipse(ellipseFrame, null, null);
            var triangle  = new Triangle(triangleFrame, null, null);

            var group         = new GroupShape();
            var triangleGroup = new GroupShape();

            triangleGroup.InsertShape(triangle, 0);
            group.InsertShape(rectangle, 0);
            group.InsertShape(ellipse, 0);
            group.InsertShape(triangleGroup, 0);

            Assert.IsTrue(IsEqualFrame(rectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(triangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(ellipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(groupFrame, group.GetFrame().Value));

            group.SetFrame(newGroupFrame);

            Assert.IsTrue(IsEqualFrame(newRectangleFrame, rectangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newTriangleFrame, triangle.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newEllipseFrame, ellipse.GetFrame().Value));
            Assert.IsTrue(IsEqualFrame(newGroupFrame, group.GetFrame().Value));
        }