public virtual void ParsePath(PathRenderInfo data) { var shapeOperation = (ShapeOperation)data.GetOperation(); if (shapeOperation == ShapeOperation.None) { return; } bool evenOddRule = data.GetRule() == PdfCanvasConstants.FillingRule.EVEN_ODD; var fillColor = ColorManager.Instance.GetColor(data.GetFillColor(), data.GetGraphicsState().GetFillOpacity()); if (shapeOperation != ShapeOperation.Stroke && (fillColor == null || fillColor == Color.Black)) { return; } var strokeColor = ColorManager.Instance.GetColor(data.GetStrokeColor(), data.GetGraphicsState().GetStrokeOpacity()); var lineWidth = data.GetLineWidth(); var lineCap = data.GetLineCapStyle(); var ctm = data.GetCtm(); var lines = ConvertLines(data.GetPath(), ctm).ToArray(); if (lines.Length == 0) { return; } var shapeDetails = new ShapeDetails { ShapeOperation = shapeOperation, StrokeColor = strokeColor, FillColor = fillColor, LineWidth = lineWidth, EvenOddRule = evenOddRule, Lines = lines }; if (Log.DebugSupported) { Log.Debug($"shape: {shapeDetails}"); } shapes.Add(shapeDetails); }
/// <summary>Filter a PathRenderInfo object</summary> /// <param name="path">the PathRenderInfo object to be filtered</param> public virtual Path FilterStrokePath(PathRenderInfo path) { PdfArray dashPattern = path.GetLineDashPattern(); LineDashPattern lineDashPattern = new LineDashPattern(dashPattern.GetAsArray(0), dashPattern.GetAsNumber(1 ).FloatValue()); return(FilterStrokePath(path.GetPath(), path.GetCtm(), path.GetLineWidth(), path.GetLineCapStyle(), path.GetLineJoinStyle (), path.GetMiterLimit(), lineDashPattern)); }