AcceptEnd
Contents
[
Hide
]Shape.AcceptEnd method
Accepts a visitor for visiting the end of the shape.
public override VisitorAction AcceptEnd(DocumentVisitor visitor)
| Parameter | Type | Description | 
|---|---|---|
| visitor | DocumentVisitor | The document visitor. | 
Return Value
The action to be taken by the visitor.
Examples
Shows how to iterate over all the shapes in a document.
public void VisitShapes()
{
    Document doc = new Document(MyDir + "Revision shape.docx");
    ShapeAppearancePrinter visitor = new ShapeAppearancePrinter();
    doc.Accept(visitor);
    Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Logs appearance-related information about visited shapes.
/// </summary>
private class ShapeAppearancePrinter : DocumentVisitor
{
    public ShapeAppearancePrinter()
    {
        mShapesVisited = 0;
        mTextIndentLevel = 0;
        mStringBuilder = new StringBuilder();
    }
    /// <summary>
    /// Appends a line to the StringBuilder with one prepended tab character for each indent level.
    /// </summary>
    private void AppendLine(string text)
    {
        for (int i = 0; i < mTextIndentLevel; i++) mStringBuilder.Append('\t');
        mStringBuilder.AppendLine(text);
    }
    /// <summary>
    /// Return all the text that the StringBuilder has accumulated.
    /// </summary>
    public string GetText()
    {
        return $"Shapes visited: {mShapesVisited}\n{mStringBuilder}";
    }
    /// <summary>
    /// Called when this visitor visits the start of a Shape node.
    /// </summary>
    public override VisitorAction VisitShapeStart(Shape shape)
    {
        AppendLine($"Shape found: {shape.ShapeType}");
        mTextIndentLevel++;
        if (shape.HasChart)
            AppendLine($"Has chart: {shape.Chart.Title.Text}");
        AppendLine($"Extrusion enabled: {shape.ExtrusionEnabled}");
        AppendLine($"Shadow enabled: {shape.ShadowEnabled}");
        AppendLine($"StoryType: {shape.StoryType}");
        if (shape.Stroked)
        {
            Assert.That(shape.StrokeColor, Is.EqualTo(shape.Stroke.Color));
            AppendLine($"Stroke colors: {shape.Stroke.Color}, {shape.Stroke.Color2}");
            AppendLine($"Stroke weight: {shape.StrokeWeight}");
        }
        if (shape.Filled)
            AppendLine($"Filled: {shape.FillColor}");
        if (shape.OleFormat != null)
            AppendLine($"Ole found of type: {shape.OleFormat.ProgId}");
        if (shape.SignatureLine != null)
            AppendLine($"Found signature line for: {shape.SignatureLine.Signer}, {shape.SignatureLine.SignerTitle}");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// Called when this visitor visits the end of a Shape node.
    /// </summary>
    public override VisitorAction VisitShapeEnd(Shape shape)
    {
        mTextIndentLevel--;
        mShapesVisited++;
        AppendLine($"End of {shape.ShapeType}");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// Called when this visitor visits the start of a GroupShape node.
    /// </summary>
    public override VisitorAction VisitGroupShapeStart(GroupShape groupShape)
    {
        AppendLine($"Shape group found: {groupShape.ShapeType}");
        mTextIndentLevel++;
        return VisitorAction.Continue;
    }
    /// <summary>
    /// Called when this visitor visits the end of a GroupShape node.
    /// </summary>
    public override VisitorAction VisitGroupShapeEnd(GroupShape groupShape)
    {
        mTextIndentLevel--;
        AppendLine($"End of {groupShape.ShapeType}");
        return VisitorAction.Continue;
    }
    private int mShapesVisited;
    private int mTextIndentLevel;
    private readonly StringBuilder mStringBuilder;
}
See Also
- enum VisitorAction
 - class DocumentVisitor
 - class Shape
 - namespace Aspose.Words.Drawing
 - assembly Aspose.Words