Exemplo n.º 1
0
        public RadialGradientBrushImpl(
            Perspex.Media.RadialGradientBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Size destinationSize)
        {
            var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop {
                Color = s.Color.ToDirect2D(), Position = (float)s.Offset
            }).ToArray();

            Point centerPoint          = brush.Center.ToPixels(destinationSize);
            Point GradientOriginOffset = brush.GradientOrigin.ToPixels(destinationSize);
            // Note: Direct2D supports RadiusX and RadiusY but Cairo backend supports only Radius property
            double radiusX = brush.Radius;
            double radiusY = brush.Radius;

            PlatformBrush = new SharpDX.Direct2D1.RadialGradientBrush(
                target,
                new SharpDX.Direct2D1.RadialGradientBrushProperties {
                Center = centerPoint.ToSharpDX(), GradientOriginOffset = GradientOriginOffset.ToSharpDX(), RadiusX = (float)radiusX, RadiusY = (float)radiusY
            },
                new SharpDX.Direct2D1.BrushProperties {
                Opacity = (float)brush.Opacity, Transform = target.Transform
            },
                new SharpDX.Direct2D1.GradientStopCollection(target, gradientStops, brush.SpreadMethod.ToDirect2D())
                );
        }
Exemplo n.º 2
0
 public void QuadraticBezierTo(Point control, Point dest)
 {
     _sink.AddQuadraticBezier(new QuadraticBezierSegment
     {
         Point1 = control.ToSharpDX(),
         Point2 = dest.ToSharpDX()
     });
 }
Exemplo n.º 3
0
        public override void BeginFigure(Point startPoint, bool isFilled, bool isClosed)
        {
            this.figureEnd = isClosed ? FigureEnd.Closed : FigureEnd.Open;

            this.sink.BeginFigure(
                startPoint.ToSharpDX(),
                isFilled ? FigureBegin.Filled : FigureBegin.Hollow);
        }
Exemplo n.º 4
0
 public void QuadraticBezierTo(Point control, Point dest)
 {
     _sink.AddQuadraticBezier(new QuadraticBezierSegment
     {
         Point1 = control.ToSharpDX(),
         Point2 = dest.ToSharpDX()
     });
 }
Exemplo n.º 5
0
        /// <summary>
        /// Draws a glyph run.
        /// </summary>
        /// <param name="foreground">The foreground.</param>
        /// <param name="glyphRun">The glyph run.</param>
        /// <param name="baselineOrigin"></param>
        public void DrawGlyphRun(IBrush foreground, GlyphRun glyphRun, Point baselineOrigin)
        {
            using (var brush = CreateBrush(foreground, glyphRun.Bounds.Size))
            {
                var glyphRunImpl = (GlyphRunImpl)glyphRun.GlyphRunImpl;

                _renderTarget.DrawGlyphRun(baselineOrigin.ToSharpDX(), glyphRunImpl.GlyphRun, brush.PlatformBrush, MeasuringMode.Natural);
            }
        }
Exemplo n.º 6
0
 public void CubicBezierTo(Point point1, Point point2, Point point3)
 {
     _sink.AddBezier(new BezierSegment
     {
         Point1 = point1.ToSharpDX(),
         Point2 = point2.ToSharpDX(),
         Point3 = point3.ToSharpDX(),
     });
 }
Exemplo n.º 7
0
 public void CubicBezierTo(Point point1, Point point2, Point point3)
 {
     _sink.AddBezier(new BezierSegment
     {
         Point1 = point1.ToSharpDX(),
         Point2 = point2.ToSharpDX(),
         Point3 = point3.ToSharpDX(),
     });
 }
Exemplo n.º 8
0
 public override void BezierTo(Point point1, Point point2, Point point3, bool isStroked, bool isSmoothJoin)
 {
     this.sink.AddBezier(new BezierSegment
     {
         Point1 = point1.ToSharpDX(),
         Point2 = point2.ToSharpDX(),
         Point3 = point3.ToSharpDX(),
     });
 }
Exemplo n.º 9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StreamGeometryImpl"/> class.
 /// </summary>
 public LineGeometryImpl(Point p1, Point p2)
 {
     using (var sink = ((PathGeometry)Geometry).Open())
     {
         sink.BeginFigure(p1.ToSharpDX(), FigureBegin.Hollow);
         sink.AddLine(p2.ToSharpDX());
         sink.EndFigure(FigureEnd.Open);
         sink.Close();
     }
 }
Exemplo n.º 10
0
 public void ArcTo(
     Point point,
     Size size,
     double rotationAngle,
     bool isLargeArc,
     Perspex.Media.SweepDirection sweepDirection)
 {
     _sink.AddArc(new ArcSegment
     {
         Point = point.ToSharpDX(),
         Size = size.ToSharpDX(),
         RotationAngle = (float)rotationAngle,
         ArcSize = isLargeArc ? ArcSize.Large : ArcSize.Small,
         SweepDirection = (SweepDirection)sweepDirection,
     });
 }
Exemplo n.º 11
0
 public void ArcTo(
     Point point,
     Size size,
     double rotationAngle,
     bool isLargeArc,
     Perspex.Media.SweepDirection sweepDirection)
 {
     _sink.AddArc(new ArcSegment
     {
         Point          = point.ToSharpDX(),
         Size           = size.ToSharpDX(),
         RotationAngle  = (float)rotationAngle,
         ArcSize        = isLargeArc ? ArcSize.Large : ArcSize.Small,
         SweepDirection = (SweepDirection)sweepDirection,
     });
 }
Exemplo n.º 12
0
        /// <summary>
        /// Draws a line.
        /// </summary>
        /// <param name="pen">The stroke pen.</param>
        /// <param name="p1">The first point of the line.</param>
        /// <param name="p2">The second point of the line.</param>
        public void DrawLine(Pen pen, Point p1, Point p2)
        {
            if (pen != null)
            {
                var size = new Rect(p1, p2).Size;

                using (var d2dBrush = CreateBrush(pen.Brush, size))
                    using (var d2dStroke = pen.ToDirect2DStrokeStyle(_renderTarget))
                    {
                        _renderTarget.DrawLine(
                            p1.ToSharpDX(),
                            p2.ToSharpDX(),
                            d2dBrush.PlatformBrush,
                            (float)pen.Thickness,
                            d2dStroke);
                    }
            }
        }
Exemplo n.º 13
0
 /// <summary>
 /// Draws a line.
 /// </summary>
 /// <param name="pen">The stroke pen.</param>
 /// <param name="p1">The first point of the line.</param>
 /// <param name="p2">The second point of the line.</param>
 public void DrawLine(IPen pen, Point p1, Point p2)
 {
     if (pen != null)
     {
         using (var d2dBrush = CreateBrush(pen.Brush, new Rect(p1, p2).Normalize()))
             using (var d2dStroke = pen.ToDirect2DStrokeStyle(_deviceContext))
             {
                 if (d2dBrush.PlatformBrush != null)
                 {
                     _deviceContext.DrawLine(
                         p1.ToSharpDX(),
                         p2.ToSharpDX(),
                         d2dBrush.PlatformBrush,
                         (float)pen.Thickness,
                         d2dStroke);
                 }
             }
     }
 }
Exemplo n.º 14
0
        public LinearGradientBrushImpl(
            Perspex.Media.LinearGradientBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Size destinationSize)
        {
            if (brush != null)
            {
                var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop {
                    Color = s.Color.ToDirect2D(), Position = (float)s.Offset
                }).ToArray();

                Point startPoint = new Point(0, 0);
                Point endPoint   = new Point(0, 0);

                switch (brush.MappingMode)
                {
                case Perspex.Media.BrushMappingMode.Absolute:
                    // TODO:

                    break;

                case Perspex.Media.BrushMappingMode.RelativeToBoundingBox:
                    startPoint = new Point(brush.StartPoint.X * destinationSize.Width, brush.StartPoint.Y * destinationSize.Height);
                    endPoint   = new Point(brush.EndPoint.X * destinationSize.Width, brush.EndPoint.Y * destinationSize.Height);

                    break;
                }

                PlatformBrush = new SharpDX.Direct2D1.LinearGradientBrush(
                    target,
                    new SharpDX.Direct2D1.LinearGradientBrushProperties {
                    StartPoint = startPoint.ToSharpDX(), EndPoint = endPoint.ToSharpDX()
                },
                    new SharpDX.Direct2D1.BrushProperties {
                    Opacity = (float)brush.Opacity, Transform = target.Transform
                },
                    new SharpDX.Direct2D1.GradientStopCollection(target, gradientStops, brush.SpreadMethod.ToDirect2D())
                    );
            }
        }
Exemplo n.º 15
0
        public LinearGradientBrushImpl(
            Perspex.Media.LinearGradientBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Size destinationSize)
        {
            var gradientStops = brush.GradientStops.Select(s => new SharpDX.Direct2D1.GradientStop {
                Color = s.Color.ToDirect2D(), Position = (float)s.Offset
            }).ToArray();

            Point startPoint = brush.StartPoint.ToPixels(destinationSize);
            Point endPoint   = brush.EndPoint.ToPixels(destinationSize);

            PlatformBrush = new SharpDX.Direct2D1.LinearGradientBrush(
                target,
                new SharpDX.Direct2D1.LinearGradientBrushProperties {
                StartPoint = startPoint.ToSharpDX(), EndPoint = endPoint.ToSharpDX()
            },
                new SharpDX.Direct2D1.BrushProperties {
                Opacity = (float)brush.Opacity, Transform = target.Transform
            },
                new SharpDX.Direct2D1.GradientStopCollection(target, gradientStops, brush.SpreadMethod.ToDirect2D())
                );
        }
Exemplo n.º 16
0
 /// <inheritdoc/>
 public bool StrokeContains(Avalonia.Media.IPen pen, Point point)
 {
     return(Geometry.StrokeContainsPoint(point.ToSharpDX(), (float)(pen?.Thickness ?? 0)));
 }
Exemplo n.º 17
0
 public void LineTo(Point point)
 {
     _sink.AddLine(point.ToSharpDX());
 }
Exemplo n.º 18
0
 /// <inheritdoc/>
 public bool FillContains(Point point)
 {
     return(Geometry.FillContainsPoint(point.ToSharpDX()));
 }
Exemplo n.º 19
0
 public override void LineTo(Point point, bool isStroked, bool isSmoothJoin)
 {
     this.sink.AddLine(point.ToSharpDX());
 }
Exemplo n.º 20
0
 public bool FillContains(Point point)
 {
     return Geometry.FillContainsPoint(point.ToSharpDX());
 }
Exemplo n.º 21
0
 public void BeginFigure(Point startPoint, bool isFilled)
 {
     _sink.BeginFigure(startPoint.ToSharpDX(), isFilled ? FigureBegin.Filled : FigureBegin.Hollow);
 }
Exemplo n.º 22
0
 public void BeginFigure(Point startPoint, bool isFilled)
 {
     _sink.BeginFigure(startPoint.ToSharpDX(), isFilled ? FigureBegin.Filled : FigureBegin.Hollow);
 }
Exemplo n.º 23
0
 public void LineTo(Point point)
 {
     _sink.AddLine(point.ToSharpDX());
 }