GetStyleSource.cs
//
// This code is part of GrapeCity Documents for Word samples.
// Copyright (c) GrapeCity, Inc. All rights reserved.
//
using System.IO;
using GrapeCity.Documents.Word;

namespace GcWordWeb.Samples
{
    // The actual formatting of a specific content object in an MS Word document
    // is determined by a combination of several factors, such as direct formatting
    // that may be applied to the object, the style associated with the object,
    // as well as direct formatting and styles of the containing objects.
    // 
    // This sample demonstrates the use of the GcWordDocument.GetPropertyValueSource()
    // method that allows to find the object that provides the actual current value
    // of a style property (in this sample, the size of a font).
    //
    // This sample uses the document from the SampleParagraphs sample.
    public class GetStyleSource
    {
        public GcWordDocument CreateDocx()
        {
            GcWordDocument doc = new GcWordDocument();
            doc.Load(Path.Combine("Resources", "WordDocs", "SampleParagraphs.docx"));

            // Find the object that provides formatting for the first text run in this document:
            object source = GcWordDocument.GetPropertyValueSource(() => doc.Body.Runs.First.Font.Size);

            // Add the info that we found to the document:
            doc.Body.Paragraphs.Add($">>> The object that determines the font size of the first text run in this document is '{source}'.");
            // If the property source is a style, add its name:
            if (source is Style s)
                doc.Body.Paragraphs.Add($">>> The object is the style '{s.WordName}'.");

            return doc;
        }
    }
}