/// <summary> /// Initialize new instance of <see cref="ToolQuadraticBezierSelection"/> 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 ToolQuadraticBezierSelection(LayerContainer layer, IQuadraticBezier shape, ShapeStyle style, BaseShape point) { _layer = layer; _quadraticBezier = shape; _style = style; _point = point; }
private void Process(IQuadraticBezier quadraticBezier) { quadraticBezier.Id = NextId(); Process(quadraticBezier.Start); Process(quadraticBezier.Point1); Process(quadraticBezier.Point2); }
public WpfQuadraticBezier(IQuadraticBezier qb) { _xqb = qb; _fillBrush = new SolidColorBrush(_xqb.Fill.ToNativeColor()); _fillBrush.Freeze(); _strokeBrush = new SolidColorBrush(_xqb.Stroke.ToNativeColor()); _strokeBrush.Freeze(); _path = new Path(); _path.Tag = this; _path.Fill = _fillBrush; _path.Stroke = _strokeBrush; _path.StrokeThickness = qb.StrokeThickness; _pg = new PathGeometry(); _pf = new PathFigure(); _pf.StartPoint = new Point(qb.Start.X, qb.Start.Y); _pf.IsFilled = qb.IsFilled; _pf.IsClosed = qb.IsClosed; _qbs = new QuadraticBezierSegment(); _qbs.Point1 = new Point(qb.Point1.X, qb.Point1.Y); _qbs.Point2 = new Point(qb.Point2.X, qb.Point2.Y); _pf.Segments.Add(_qbs); _pg.Figures.Add(_pf); _path.Data = _pg; Native = _path; }
private void Render(Canvas canvas, IQuadraticBezier quadraticBezier) { var paint = new Paint() { Color = ToNativeColor(quadraticBezier.Stroke), StrokeWidth = (float)quadraticBezier.StrokeThickness, AntiAlias = true, StrokeCap = Paint.Cap.Butt }; paint.SetStyle(Paint.Style.Stroke); var path = new Path(); path.SetLastPoint( (float)quadraticBezier.Start.X, (float)quadraticBezier.Start.Y); path.QuadTo( (float)quadraticBezier.Point1.X, (float)quadraticBezier.Point1.Y, (float)quadraticBezier.Point2.X, (float)quadraticBezier.Point2.Y); canvas.DrawPath(path, paint); path.Dispose(); paint.Dispose(); }
private void Reset(IQuadraticBezier quadraticBezier) { quadraticBezier.Id = 0; Reset(quadraticBezier.Start); Reset(quadraticBezier.Point1); Reset(quadraticBezier.Point2); }
/// <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; }
private void Write(IQuadraticBezier quadraticBezier) { Write(NativeType.QuadraticBezier); _writer.Write(quadraticBezier.Id); Write(quadraticBezier.Start); Write(quadraticBezier.Point1); Write(quadraticBezier.Point2); Write(quadraticBezier.Stroke); _writer.Write(quadraticBezier.StrokeThickness); Write(quadraticBezier.Fill); _writer.Write(quadraticBezier.IsFilled); _writer.Write(quadraticBezier.IsClosed); }
public IQuadraticBezier Convert(IQuadraticBezier quadraticBezier) { return(new XQuadraticBezier() { Start = Convert(quadraticBezier.Start), Point1 = Convert(quadraticBezier.Point1), Point2 = Convert(quadraticBezier.Point2), Stroke = Convert(quadraticBezier.Stroke), StrokeThickness = quadraticBezier.StrokeThickness, Fill = Convert(quadraticBezier.Fill), IsFilled = quadraticBezier.IsFilled, IsClosed = quadraticBezier.IsClosed }); }
public IQuadraticBezier Convert(IQuadraticBezier quadraticBezier) { return quadraticBezier; }
public IQuadraticBezier Convert(IQuadraticBezier quadraticBezier) { return(quadraticBezier); }
public IQuadraticBezier Convert(IQuadraticBezier quadraticBezier) { return(new WpfQuadraticBezier(quadraticBezier)); }
public XQuadraticBezierEditor( INativeConverter nativeConverter, ICanvasFactory canvasFactory, IBoundsFactory boundsFactory, ICanvas canvas) { _canvas = canvas; Name = "Quadratic Bézier"; Key = "Q"; Modifiers = ""; var moves = _canvas.Moves.Where(_ => _canvas.IsCaptured); var drags = Observable.Merge(_canvas.Downs, _canvas.Ups, moves); _downs = _canvas.Downs.Where(_ => IsEnabled).Subscribe(p => { if (_canvas.IsCaptured) { switch (_state) { case State.Start: { //_xqb.Point2.X = p.X; //_xqb.Point2.Y = p.Y; //_nqb.Point2 = _xqb.Point2; #if CONNECTORS ConnectPoint2(p); #endif _nqb.Bounds.Update(); _canvas.Render(null); _state = State.Point1; } break; case State.Point1: { //_xqb.Point1.X = p.X; //_xqb.Point1.Y = p.Y; //_nqb.Point1 = _xqb.Point1; #if CONNECTORS ConnectPoint1(p); #endif _nqb.Bounds.Hide(); _canvas.Render(null); _state = State.None; _canvas.ReleaseCapture(); } break; } } else { _xqb = canvasFactory.CreateQuadraticBezier(); _xqb.Start.X = p.X; _xqb.Start.Y = p.Y; _xqb.Point1.X = p.X; _xqb.Point1.Y = p.Y; _xqb.Point2.X = p.X; _xqb.Point2.Y = p.Y; _nqb = nativeConverter.Convert(_xqb); _canvas.History.Snapshot(_canvas); #if CONNECTORS ConnectStart(p); #endif _canvas.Add(_nqb); _nqb.Bounds = boundsFactory.Create(_canvas, _nqb); _nqb.Bounds.Update(); _nqb.Bounds.Show(); _canvas.Render(null); _canvas.Capture(); _state = State.Start; } }); _drags = drags.Where(_ => IsEnabled).Subscribe(p => { switch (_state) { case State.Start: { _xqb.Point2.X = p.X; _xqb.Point2.Y = p.Y; _nqb.Point2 = _xqb.Point2; _nqb.Bounds.Update(); _canvas.Render(null); } break; case State.Point1: { _xqb.Point1.X = p.X; _xqb.Point1.Y = p.Y; _nqb.Point1 = _xqb.Point1; _nqb.Bounds.Update(); _canvas.Render(null); } break; } }); }
private void DrawQuadraticBezier(XGraphics gfx, IQuadraticBezier quadraticBezier) { double x1 = quadraticBezier.Start.X; double y1 = quadraticBezier.Start.Y; double x2 = quadraticBezier.Start.X + (2.0 * (quadraticBezier.Point1.X - quadraticBezier.Start.X)) / 3.0; double y2 = quadraticBezier.Start.Y + (2.0 * (quadraticBezier.Point1.Y - quadraticBezier.Start.Y)) / 3.0; double x3 = x2 + (quadraticBezier.Point2.X - quadraticBezier.Start.X) / 3.0; double y3 = y2 + (quadraticBezier.Point2.Y - quadraticBezier.Start.Y) / 3.0; double x4 = quadraticBezier.Point2.X; double y4 = quadraticBezier.Point2.Y; var pen = new XPen( ToXColor(quadraticBezier.Stroke), X(quadraticBezier.StrokeThickness)); gfx.DrawBezier(pen, X(x1), Y(y1), X(x2), Y(y2), X(x3), Y(y3), X(x4), Y(y4)); }
public IQuadraticBezier Convert(IQuadraticBezier quadraticBezier) { return new WpfQuadraticBezier(quadraticBezier); }
public QuadraticBezierBounds( INativeConverter nativeConverter, ICanvasFactory canvasFactory, ICanvas canvas, IQuadraticBezier quadraticBezier, double size, double offset) { _quadraticBezier = quadraticBezier; _size = size; _offset = offset; _canvas = canvas; InitBounds(nativeConverter, canvasFactory); }
public IBounds Create(ICanvas canvas, IQuadraticBezier quadraticBezier) { return new QuadraticBezierBounds( _nativeConverter, _canvasFactory, canvas, quadraticBezier, 15.0, 0.0); }