public async Task GeometryCombineMode(GeometryCombineMode mode) { var target = new Border { Width = 200, Height = 200, Background = Brushes.White, Child = new Path { Data = new CombinedGeometry { GeometryCombineMode = mode, Geometry1 = new RectangleGeometry(new Rect(25, 25, 100, 100)), Geometry2 = new EllipseGeometry { Center = new Point(125, 125), RadiusX = 50, RadiusY = 50, } }, Fill = Brushes.Blue, Stroke = Brushes.Red, StrokeThickness = 1, } }; var testName = $"{nameof(GeometryCombineMode)}_{mode}"; await RenderToFile(target, testName); CompareImages(testName); }
public CombinedGeometry(GeometryCombineMode mode, Geometry geometry1, Geometry geometry2, Transform transform) { _mode = mode; _geometry1 = geometry1; _geometry2 = geometry2; _transform = transform; }
public CombinedGeometry(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode) : this(NoesisGUI_PINVOKE.new_CombinedGeometry__SWIG_1(Geometry.getCPtr(geometry1), Geometry.getCPtr(geometry2), (int)mode), true) { if (NoesisGUI_PINVOKE.SWIGPendingException.Pending) { throw NoesisGUI_PINVOKE.SWIGPendingException.Retrieve(); } }
/// <summary> /// Returns whether or not an enumeration instance a valid value. /// This method is designed to be used with ValidateValueCallback, and thus /// matches it's prototype. /// </summary> /// <param name="valueObject"> /// Enumeration value to validate. /// </param> /// <returns> 'true' if the enumeration contains a valid value, 'false' otherwise. </returns> public static bool IsGeometryCombineModeValid(object valueObject) { GeometryCombineMode value = (GeometryCombineMode)valueObject; return((value == GeometryCombineMode.Union) || (value == GeometryCombineMode.Intersect) || (value == GeometryCombineMode.Xor) || (value == GeometryCombineMode.Exclude)); }
/// <summary> /// Constructor from combine mode and 2 operands /// </summary> /// <param name="geometryCombineMode"> /// Combine mode - Union, Intersect, Exclude or Xor /// </param> /// <param name="geometry1"> /// First geometry to combine /// </param> /// <param name="geometry2"> /// Second geometry to combine /// </param> public CombinedGeometry( GeometryCombineMode geometryCombineMode, Geometry geometry1, Geometry geometry2 ) { GeometryCombineMode = geometryCombineMode; Geometry1 = geometry1; Geometry2 = geometry2; }
//方法3 //GeometryのCombineを使う方法 //整数のRectでも組み合わせる順番によって、小数点以下(誤差)が発生したりしなかったりする、という欠点があるけど //領域の重なった部分の処理は柔軟なGeometryCombineModeが使える private Geometry CombineGeometry3(List <Geometry> geometries, GeometryCombineMode mode = GeometryCombineMode.Union) { PathGeometry pg = Geometry.Combine(geometries[0], geometries[1], mode, null); for (int i = 2; i < geometries.Count; i++) { pg = Geometry.Combine(pg, geometries[i], mode, null); } return(pg); }
/// <summary> /// Returns the result of a Boolean combination of two Geometry objects. /// </summary> /// <param name="geometry1">The first Geometry object</param> /// <param name="geometry2">The second Geometry object</param> /// <param name="mode">The mode in which the objects will be combined</param> /// <param name="transform">A transformation to apply to the result, or null</param> /// <param name="tolerance">The computational error tolerance</param> /// <param name="type">The way the error tolerance will be interpreted - relative or absolute</param> public static PathGeometry Combine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { return(PathGeometry.InternalCombine(geometry1, geometry2, mode, transform, tolerance, type)); }
/// <summary> /// Constructor from combine mode and 2 operands /// </summary> /// <param name="geometryCombineMode"> /// Combine mode - Union, Intersect, Exclude or Xor /// </param> /// <param name="geometry1"> /// First geometry to combine /// </param> /// <param name="geometry2"> /// Second geometry to combine /// </param> internal CombinedGeometry( GeometryCombineMode geometryCombineMode, Geometry geometry1, Geometry geometry2 ) { this.geometryCombineMode = geometryCombineMode; Geometry1 = geometry1; Geometry2 = geometry2; }
private static Geometry Combine(Geometry origin, List <Geometry> geometries, GeometryCombineMode combineMode) { Geometry output = origin; foreach (Geometry g in geometries) { output = Geometry.Combine(output, g, combineMode, null); } return(output); }
public CombinedGeometry( GeometryCombineMode combineMode, Geometry?geometry1, Geometry?geometry2, Transform?transform) { Geometry1 = geometry1; Geometry2 = geometry2; GeometryCombineMode = combineMode; Transform = transform; }
/// <summary> /// Constructor from combine mode, 2 operands and a transformation /// </summary> /// <param name="geometryCombineMode"> /// Combine mode - Union, Intersect, Exclude or Xor /// </param> /// <param name="geometry1"> /// First geometry to combine /// </param> /// <param name="geometry2"> /// Second geometry to combine /// </param> /// <param name="transform"> /// Transformation to apply to the result /// </param> public CombinedGeometry( GeometryCombineMode geometryCombineMode, Geometry geometry1, Geometry geometry2, Transform transform) { GeometryCombineMode = geometryCombineMode; Geometry1 = geometry1; Geometry2 = geometry2; Transform = transform; }
/// <summary> /// Returns the result of a Boolean combination of two Geometry objects. /// </summary> /// <param name="geometry1">The first Geometry object</param> /// <param name="geometry2">The second Geometry object</param> /// <param name="mode">The mode in which the objects will be combined</param> /// <param name="transform">A transformation to apply to the result, or null</param> public static PathGeometry Combine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform) { return(PathGeometry.InternalCombine( geometry1, geometry2, mode, transform, Geometry.StandardFlatteningTolerance, ToleranceType.Absolute)); }
public CombinedGeometryImpl(GeometryCombineMode combineMode, Geometry g1, Geometry g2) { var path1 = ((GeometryImpl)g1.PlatformImpl).EffectivePath; var path2 = ((GeometryImpl)g2.PlatformImpl).EffectivePath; var op = combineMode switch { GeometryCombineMode.Intersect => SKPathOp.Intersect, GeometryCombineMode.Xor => SKPathOp.Xor, GeometryCombineMode.Exclude => SKPathOp.Difference, _ => SKPathOp.Union, }; var path = path1.Op(path2, op); EffectivePath = path; Bounds = path.Bounds.ToAvaloniaRect(); }
public static void CombineGeometries(DrawingGroup drawingGroup, GeometryCombineMode combineMode, ref CombinedGeometry combinedGeometry) { if (combinedGeometry == null) { combinedGeometry = new CombinedGeometry(); } DrawingCollection drawingCollection = drawingGroup.Children; foreach (Drawing drawing in drawingCollection) { if (drawing is DrawingGroup) { CombineGeometries((DrawingGroup)drawing, combineMode, ref combinedGeometry); } else if (drawing is GeometryDrawing) { GeometryDrawing geoDrawing = drawing as GeometryDrawing; combinedGeometry = new CombinedGeometry(combineMode, combinedGeometry, geoDrawing.Geometry); } } }
internal static PathGeometry InternalCombine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { PathGeometry resultGeometry = null; unsafe { MilMatrix3x2D matrix = CompositionResourceManager.TransformToMilMatrix3x2D(transform); PathGeometryData data1 = geometry1.GetPathGeometryData(); PathGeometryData data2 = geometry2.GetPathGeometryData(); fixed (byte* pPathData1 = data1.SerializedData) { Debug.Assert(pPathData1 != (byte*)0); fixed (byte* pPathData2 = data2.SerializedData) { Debug.Assert(pPathData2 != (byte*)0); FillRule fillRule = FillRule.Nonzero; FigureList list = new FigureList(); int hr = UnsafeNativeMethods.MilCoreApi.MilUtility_PathGeometryCombine( &matrix, &data1.Matrix, data1.FillRule, pPathData1, data1.Size, &data2.Matrix, data2.FillRule, pPathData2, data2.Size, tolerance, type == ToleranceType.Relative, new AddFigureToListDelegate(list.AddFigureToList), mode, out fillRule); if (hr == (int)MILErrors.WGXERR_BADNUMBER) { // When we encounter NaNs in the renderer, we absorb the error and draw // nothing. To be consistent, we return an empty geometry. resultGeometry = new PathGeometry(); } else { HRESULT.Check(hr); resultGeometry = new PathGeometry(list.Figures, fillRule, null); } } } } return resultGeometry; }
public void CombineWithGeometry(ISimplifiedGeometrySink geometrySink, IGeometry inputGeometry, GeometryCombineMode combineMode, Matrix3x2Float?inputGeometryTransform, float?flatteningTolerance) { base.innerRefT.CombineWithGeometry(geometrySink, inputGeometry, combineMode, inputGeometryTransform, flatteningTolerance); }
public IGeometryImpl CreateCombinedGeometry(GeometryCombineMode combineMode, Geometry g1, Geometry g2) { return(new CombinedGeometryImpl(combineMode, g1, g2)); }
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { return default(PathGeometry); }
public CombinedGeometry(GeometryCombineMode geometryCombineMode, Geometry geometry1, Geometry geometry2, Transform transform) { }
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode combineMode, Transform transform, double flatteningTolerance, ToleranceType tolerance) { throw new NotImplementedException(); }
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { return(default(PathGeometry)); }
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform) { return(default(PathGeometry)); }
public static PathGeometry Combine (Geometry geometry1, Geometry geometry2, GeometryCombineMode combineMode, Transform transform) { throw new NotImplementedException (); }
public static GeometryCombineMode Unbox_GeometryCombineMode(IntPtr val) { GeometryCombineMode ret = (GeometryCombineMode)NoesisGUI_PINVOKE.Unbox_GeometryCombineMode(val); return(ret); }
public static IntPtr Box_GeometryCombineMode(GeometryCombineMode val) { IntPtr ret = NoesisGUI_PINVOKE.Box_GeometryCombineMode((int)val); return(ret); }
public IGeometryImpl CreateCombinedGeometry(GeometryCombineMode combineMode, Geometry g1, Geometry g2) { return(Mock.Of <IGeometryImpl>()); }
public IGeometryImpl CreateCombinedGeometry(GeometryCombineMode combineMode, Geometry g1, Geometry g2) => new CombinedGeometryImpl(combineMode, g1, g2);
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode combineMode, Transform transform) { throw new NotImplementedException(); }
/// <summary> /// Returns the result of a Boolean combination of two Geometry objects. /// </summary> /// <param name="geometry1">The first Geometry object</param> /// <param name="geometry2">The second Geometry object</param> /// <param name="mode">The mode in which the objects will be combined</param> /// <param name="transform">A transformation to apply to the result, or null</param> public static PathGeometry Combine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform) { return PathGeometry.InternalCombine( geometry1, geometry2, mode, transform, Geometry.StandardFlatteningTolerance, ToleranceType.Absolute); }
internal static PathGeometry InternalCombine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { PathGeometry resultGeometry = null; unsafe { MilMatrix3x2D matrix = CompositionResourceManager.TransformToMilMatrix3x2D(transform); PathGeometryData data1 = geometry1.GetPathGeometryData(); PathGeometryData data2 = geometry2.GetPathGeometryData(); fixed(byte *pPathData1 = data1.SerializedData) { Debug.Assert(pPathData1 != (byte *)0); fixed(byte *pPathData2 = data2.SerializedData) { Debug.Assert(pPathData2 != (byte *)0); FillRule fillRule = FillRule.Nonzero; FigureList list = new FigureList(); int hr = UnsafeNativeMethods.MilCoreApi.MilUtility_PathGeometryCombine( &matrix, &data1.Matrix, data1.FillRule, pPathData1, data1.Size, &data2.Matrix, data2.FillRule, pPathData2, data2.Size, tolerance, type == ToleranceType.Relative, new AddFigureToListDelegate(list.AddFigureToList), mode, out fillRule); if (hr == (int)MILErrors.WGXERR_BADNUMBER) { // When we encounter NaNs in the renderer, we absorb the error and draw // nothing. To be consistent, we return an empty geometry. resultGeometry = new PathGeometry(); } else { HRESULT.Check(hr); resultGeometry = new PathGeometry(list.Figures, fillRule, null); } } } } return(resultGeometry); }
/// <summary> /// Returns the result of a Boolean combination of two Geometry objects. /// </summary> /// <param name="geometry1">The first Geometry object</param> /// <param name="geometry2">The second Geometry object</param> /// <param name="mode">The mode in which the objects will be combined</param> /// <param name="transform">A transformation to apply to the result, or null</param> /// <param name="tolerance">The computational error tolerance</param> /// <param name="type">The way the error tolerance will be interpreted - relative or absolute</param> public static PathGeometry Combine( Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform, double tolerance, ToleranceType type) { return PathGeometry.InternalCombine(geometry1, geometry2, mode, transform, tolerance, type); }
public CombinedGeometry(GeometryCombineMode geometryCombineMode, Geometry geometry1, Geometry geometry2) { }
public CombinedGeometry(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode) : this(NoesisGUI_PINVOKE.new_CombinedGeometry__SWIG_1(Geometry.getCPtr(geometry1), Geometry.getCPtr(geometry2), (int)mode), true) { }
public CombinedGeometry(GeometryCombineMode combineMode, Geometry?geometry1, Geometry?geometry2) { Geometry1 = geometry1; Geometry2 = geometry2; GeometryCombineMode = combineMode; }
public BooleanCombineCommand(SceneViewModel viewModel, string undoDescription, GeometryCombineMode geometryCombineMode) : base(viewModel, undoDescription) { this.geometryCombineMode = geometryCombineMode; }
public static PathGeometry Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform) { return default(PathGeometry); }
internal unsafe static extern int MilUtility_PathGeometryCombine( MilMatrix3x2D* pMatrix, MilMatrix3x2D* pMatrix1, FillRule fillRule1, byte* pPathData1, UInt32 nSize1, MilMatrix3x2D* pMatrix2, FillRule fillRule2, byte* pPathData2, UInt32 nSize2, double rTolerance, bool fRelative, Delegate addFigureCallback, GeometryCombineMode combineMode, out FillRule resultFillRule);
public CombinedGeometry(GeometryCombineMode mode, Geometry geometry1, Geometry geometry2) { _mode = mode; _geometry1 = geometry1; _geometry2 = geometry2; }
public IGeometryImpl CreateCombinedGeometry(GeometryCombineMode combineMode, Geometry g1, Geometry g2) => throw new NotImplementedException();
public static PathGeometry Combine (Geometry geometry1, Geometry geometry2, GeometryCombineMode combineMode, Transform transform, double flatteningTolerance, ToleranceType tolerance) { throw new NotImplementedException (); }