public PathShape ToFillPathShape(IToolContext context, IBaseShape shape) { using (var geometry = ToPath(context, shape)) { if (geometry != null) { var style = context.DocumentContainer?.StyleLibrary?.Get(shape.StyleId); if (style == null) { style = context.DocumentContainer?.StyleLibrary?.CurrentItem; } var path = SkiaHelper.ToFillPath(context, style, geometry); if (path != null) { var union = SkiaHelper.Op(SKPathOp.Union, new[] { path, path }); if (union != null && !union.IsEmpty) { return(SkiaHelper.ToPathShape(context, union, context.DocumentContainer?.StyleLibrary?.CurrentItem, context?.DocumentContainer?.PointTemplate)); } } } } return(null); }
public PathShape Op(IToolContext context, PathOp op, ICollection <IBaseShape> selected) { var path = default(PathShape); var shapes = GetShapes(selected); if (shapes != null && shapes.Count > 0) { var paths = ToPaths(context, shapes); if (paths != null && paths.Count > 0) { var result = SkiaHelper.Op(SkiaHelper.ToSKPathOp(op), paths); if (result != null) { if (!result.IsEmpty) { var style = context.DocumentContainer?.StyleLibrary?.Get(shapes[0].StyleId); if (style == null) { style = context.DocumentContainer?.StyleLibrary?.CurrentItem; } path = SkiaHelper.ToPathShape(context, result, style, context?.DocumentContainer?.PointTemplate); } result.Dispose(); } for (int i = 0; i < paths.Count; i++) { paths[i].Dispose(); } } } return(path); }
public PathShape ToFillPathShape(IToolContext context, IBaseShape shape) { using (var geometry = ToPath(context, shape)) { if (geometry != null) { var style = context.DocumentContainer?.StyleLibrary?.Get(shape.StyleId); if (style == null) { style = context.DocumentContainer?.StyleLibrary?.CurrentItem; } using (var disposable = new CompositeDisposable()) { var path = SkiaHelper.ToFillPath(context, style.FillPaint, shape.Effects, geometry, disposable.Disposables); if (path != null) { disposable.Disposables.Add(path); var union = SkiaHelper.Op(SKPathOp.Union, new[] { path, path }); if (union != null && !union.IsEmpty) { disposable.Disposables.Add(union); return(SkiaHelper.ToPathShape(context, union, context.DocumentContainer?.StyleLibrary?.CurrentItem, context?.DocumentContainer?.PointTemplate)); } } } } } return(null); }