コード例 #1
0
        public void TestOnTouchDown()
        {
            var view      = new Mock <IEntry>();
            var drawable  = new EntryDrawable(view.Object);
            var exception = Record.Exception(() =>
            {
                var point = new GPoint(10, 10);
                drawable.OnTouchDown(point);
            });

            Assert.Null(exception);
        }
コード例 #2
0
        public void TestOnTouchUpMoveDown()
        {
            var view      = new Mock <IStepper>();
            var drawable  = new StepperDrawable(view.Object);
            var exception = Record.Exception(() =>
            {
                var point = new GPoint(10, 10);
                drawable.OnTouchDown(point);
                drawable.OnTouchMove(point);
                drawable.OnTouchUp(point);
            });

            Assert.Null(exception);
        }
コード例 #3
0
        public void TestOnTouchUpDown(float x, float y, float w, float h, float pointX, float pointY)
        {
            var rect     = new RectF(x, y, w, h);
            var point    = new PointF(pointX, pointY);
            var drawable = new RippleEffectDrawable
            {
                ClipRectangle = rect,
                TouchPoint    = point
            };
            var exception = Record.Exception(() =>
            {
                var point = new GPoint(10, 10);
                drawable.OnTouchDown(point);
                drawable.OnTouchUp(point);
            });

            Assert.Null(exception);
        }
コード例 #4
0
        public void TestOnTouchUpMoveDown(float x, float y, float w, float h, float pointX, float pointY)
        {
            var view     = new Mock <ISlider>();
            var drawable = new SliderDrawable(view.Object);
            var rect     = new RectF(x, y, w, h);

            drawable.ThumbRect = rect;
            Assert.Equal(rect, drawable.ThumbRect);

            var exception = Record.Exception(() =>
            {
                var point = new GPoint(pointX, pointY);
                drawable.OnTouchDown(point);
                drawable.OnTouchMove(point);
                drawable.OnTouchUp(point);
            });

            Assert.Null(exception);
        }
コード例 #5
0
        static SKPath MakePath(PathGeometry pathGeometry)
        {
            var path = new SKPath();

            path.FillType = pathGeometry.FillRule == FillRule.Nonzero ? SKPathFillType.Winding : SKPathFillType.EvenOdd;

            foreach (PathFigure pathFigure in pathGeometry.Figures)
            {
                path.MoveTo(
                    Forms.ConvertToScaledPixel(pathFigure.StartPoint.X),
                    Forms.ConvertToScaledPixel(pathFigure.StartPoint.Y));

                Point lastPoint = pathFigure.StartPoint;

                foreach (PathSegment pathSegment in pathFigure.Segments)
                {
                    // LineSegment
                    if (pathSegment is LineSegment)
                    {
                        LineSegment lineSegment = pathSegment as LineSegment;

                        path.LineTo(
                            Forms.ConvertToScaledPixel(lineSegment.Point.X),
                            Forms.ConvertToScaledPixel(lineSegment.Point.Y));
                        lastPoint = lineSegment.Point;
                    }
                    // PolylineSegment
                    else if (pathSegment is PolyLineSegment)
                    {
                        PolyLineSegment polylineSegment = pathSegment as PolyLineSegment;
                        PointCollection points          = polylineSegment.Points;

                        for (int i = 0; i < points.Count; i++)
                        {
                            path.LineTo(
                                Forms.ConvertToScaledPixel(points[i].X),
                                Forms.ConvertToScaledPixel(points[i].Y));
                        }
                        lastPoint = points[points.Count - 1];
                    }
                    // BezierSegment
                    else if (pathSegment is BezierSegment)
                    {
                        BezierSegment bezierSegment = pathSegment as BezierSegment;

                        path.CubicTo(
                            Forms.ConvertToScaledPixel(bezierSegment.Point1.X), Forms.ConvertToScaledPixel(bezierSegment.Point1.Y),
                            Forms.ConvertToScaledPixel(bezierSegment.Point2.X), Forms.ConvertToScaledPixel(bezierSegment.Point2.Y),
                            Forms.ConvertToScaledPixel(bezierSegment.Point3.X), Forms.ConvertToScaledPixel(bezierSegment.Point3.Y));

                        lastPoint = bezierSegment.Point3;
                    }
                    // PolyBezierSegment
                    else if (pathSegment is PolyBezierSegment)
                    {
                        PolyBezierSegment polyBezierSegment = pathSegment as PolyBezierSegment;
                        PointCollection   points            = polyBezierSegment.Points;

                        for (int i = 0; i < points.Count; i += 3)
                        {
                            path.CubicTo(
                                Forms.ConvertToScaledPixel(points[i + 0].X), Forms.ConvertToScaledPixel(points[i + 0].Y),
                                Forms.ConvertToScaledPixel(points[i + 1].X), Forms.ConvertToScaledPixel(points[i + 1].Y),
                                Forms.ConvertToScaledPixel(points[i + 2].X), Forms.ConvertToScaledPixel(points[i + 2].Y));
                        }

                        lastPoint = points[points.Count - 1];
                    }
                    // QuadraticBezierSegment
                    else if (pathSegment is QuadraticBezierSegment)
                    {
                        QuadraticBezierSegment bezierSegment = pathSegment as QuadraticBezierSegment;

                        path.QuadTo(
                            Forms.ConvertToScaledPixel(bezierSegment.Point1.X), Forms.ConvertToScaledPixel(bezierSegment.Point1.Y),
                            Forms.ConvertToScaledPixel(bezierSegment.Point2.X), Forms.ConvertToScaledPixel(bezierSegment.Point2.Y));

                        lastPoint = bezierSegment.Point2;
                    }
                    // PolyQuadraticBezierSegment
                    else if (pathSegment is PolyQuadraticBezierSegment)
                    {
                        PolyQuadraticBezierSegment polyBezierSegment = pathSegment as PolyQuadraticBezierSegment;
                        PointCollection            points            = polyBezierSegment.Points;

                        for (int i = 0; i < points.Count; i += 2)
                        {
                            path.QuadTo(
                                Forms.ConvertToScaledPixel(points[i + 0].X), Forms.ConvertToScaledPixel(points[i + 0].Y),
                                Forms.ConvertToScaledPixel(points[i + 1].X), Forms.ConvertToScaledPixel(points[i + 1].Y));
                        }

                        lastPoint = points[points.Count - 1];
                    }
                    // ArcSegment
                    else if (pathSegment is ArcSegment)
                    {
                        ArcSegment arcSegment = pathSegment as ArcSegment;

                        List <Point> points = new List <Point>();

                        GeometryHelper.FlattenArc(points,
                                                  lastPoint,
                                                  arcSegment.Point,
                                                  arcSegment.Size.Width,
                                                  arcSegment.Size.Height,
                                                  arcSegment.RotationAngle,
                                                  arcSegment.IsLargeArc,
                                                  arcSegment.SweepDirection == SweepDirection.CounterClockwise,
                                                  1);

                        for (int i = 0; i < points.Count; i++)
                        {
                            path.LineTo(
                                Forms.ConvertToScaledPixel(points[i].X),
                                Forms.ConvertToScaledPixel(points[i].Y));
                        }

                        if (points.Count > 0)
                        {
                            lastPoint = points[points.Count - 1];
                        }
                    }
                }

                if (pathFigure.IsClosed)
                {
                    path.Close();
                }
            }

            return(path);
        }