public void ProcessPath(Path path, Matrix transform) { if (path == null) { throw new ArgumentNullException("path"); } Geometry geom = path.Data; bool fill = path.Fill != null; bool stroke = path.Stroke != null; if ((geom == null) || (!fill && !stroke)) { return; } Transform transPath = path.RenderTransform; if (transPath != null) { transform *= transPath.Value; } // When filling, we may be able to determine from bounding box only if (fill && _ProcessFilledRect(transform, geom.Bounds)) { fill = false; if (!stroke) { return; } } StreamGeometry sgeo = geom as StreamGeometry; // Avoiding convert to PathGeometry if it's StreamGeometry, which can be walked if (sgeo != null) { if (_geometryWalker == null) { _geometryWalker = new GeometryWalker(this); } _geometryWalker.FindLines(sgeo, stroke, fill, transform); } else { PathGeometry pathGeom = PathGeometry.CreateFromGeometry(geom); if (pathGeom != null) { if (fill) { _ProcessSolidPath(transform, pathGeom); } if (stroke) { _ProcessOutlinePath(transform, pathGeom); } } } }
public void ProcessPath(Path path, Matrix transform) { if (path == null) { throw new ArgumentNullException("path"); } Geometry geom = path.Data; bool fill = path.Fill != null; bool stroke = path.Stroke != null; if ((geom == null) || (! fill && ! stroke)) { return; } Transform transPath = path.RenderTransform; if (transPath != null) { transform *= transPath.Value; } // When filling, we may be able to determine from bounding box only if (fill && _ProcessFilledRect(transform, geom.Bounds)) { fill = false; if (! stroke) { return; } } StreamGeometry sgeo = geom as StreamGeometry; // Avoiding convert to PathGeometry if it's StreamGeometry, which can be walked if (sgeo != null) { if (_geometryWalker == null) { _geometryWalker = new GeometryWalker(this); } _geometryWalker.FindLines(sgeo, stroke, fill, transform); } else { PathGeometry pathGeom = PathGeometry.CreateFromGeometry(geom); if (pathGeom != null) { if (fill) { _ProcessSolidPath(transform, pathGeom); } if (stroke) { _ProcessOutlinePath(transform, pathGeom); } } } }