| File: System\Windows\Media\GeometryGroup.cs | Web Access |
| Project: src\wpf\src\Microsoft.DotNet.Wpf\src\PresentationCore\PresentationCore.csproj (PresentationCore) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // Description: Implementation of GeometryGroup // using System.Windows.Markup; namespace System.Windows.Media { #region GeometryGroup /// <summary> /// GeometryGroup /// </summary> [ContentProperty("Children")] public sealed partial class GeometryGroup : Geometry { #region Constructors /// <summary> /// Default constructor /// </summary> public GeometryGroup() { } #endregion #region Overrides /// <summary> /// GetPathGeometryData - returns a struct which contains this Geometry represented /// as a path geometry's serialized format. /// </summary> internal override PathGeometryData GetPathGeometryData() { PathGeometry pathGeometry = GetAsPathGeometry(); return pathGeometry.GetPathGeometryData(); } internal override PathGeometry GetAsPathGeometry() { PathGeometry pg = new PathGeometry(); pg.AddGeometry(this); pg.FillRule = FillRule; Debug.Assert(pg.CanFreeze); return pg; } #endregion #region GetPathFigureCollection internal override PathFigureCollection GetTransformedFigureCollection(Transform transform) { // Combine the transform argument with the internal transform Transform combined = new MatrixTransform(GetCombinedMatrix(transform)); PathFigureCollection result = new PathFigureCollection(); GeometryCollection children = Children; if (children != null) { for (int i = 0; i < children.Count; i++) { PathFigureCollection pathFigures = children.Internal_GetItem(i).GetTransformedFigureCollection(combined); if (pathFigures != null) { int count = pathFigures.Count; for (int j = 0; j < count; ++j) { result.Add(pathFigures[j]); } } } } return result; } #endregion #region IsEmpty /// <summary> /// Returns true if this geometry is empty /// </summary> public override bool IsEmpty() { GeometryCollection children = Children; if (children == null) { return true; } for (int i=0; i<children.Count; i++) { if (!((Geometry)children[i]).IsEmpty()) { return false; } } return true; } internal override bool IsObviouslyEmpty() { GeometryCollection children = Children; return (children == null) || (children.Count == 0); } #endregion IsEmpty /// <summary> /// Returns true if this geometry may have curved segments /// </summary> public override bool MayHaveCurves() { GeometryCollection children = Children; if (children == null) { return false; } for (int i = 0; i < children.Count; i++) { if (((Geometry)children[i]).MayHaveCurves()) { return true; } } return false; } } #endregion }