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

namespace GcWordWeb.Samples
{
    // This sample demonstrates how to create, specify and apply
    // character styles.
    // It creates a paragraph of text, splits it into two runs,
    // then creates and applies two different character styles
    // to the two runs.
    // The part creating and splitting the paragraph is based
    // on the CharacterFormatting sample.
    public class CharacterStyles
    {
        public GcWordDocument CreateDocx()
        {
            // Get a sample paragraph of text:
            var lorem = Util.LoremIpsumPar();
            // The code below is similar to FormatChars code that creates and splits a paragraph:
            GcWordDocument doc = new GcWordDocument();
            Paragraph p = doc.Body.Sections.First.GetRange().Paragraphs.Add(lorem);
            Range r = p.GetRange();
            Run run = r.Runs.First;
            Text text = run.GetRange().Texts.First;
            Text tIpsum = text.Split(lorem.Length / 2);
            Run rIpsum = run.Split(tIpsum, InsertLocation.Before);
            // We now have two runs, create and apply different styles to each:
            //
            // Create a new char style "Lorem" for the first half:
            Style sLorem = doc.Styles.Add("Lorem", StyleType.Character);
            sLorem.Font.Name = "Times New Roman";
            sLorem.Font.Size = 16;
            sLorem.Font.Bold = true;
            sLorem.Font.Italic = true;
            sLorem.Font.Underline = Underline.Thick;
            // 'text' was split into 2 halves, but the head can be still
            // accessed via the 'text' variable. We set its style to the
            // newly created style (the style of the 2nd half remains default):
            text.ParentRun.Style = sLorem;
            // Create a new char style "Ipsum" for the 2nd half:
            Style sIpsum = doc.Styles.Add("Ipsum", StyleType.Character);
            sIpsum.Font.Name = "Gabriola";
            sIpsum.Font.Size = 18;
            sIpsum.Font.Color.RGB = Color.BlueViolet;
            rIpsum.Style = sIpsum;
            // Done:
            return doc;
        }
    }
}