InkXml.cs
//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using GrapeCity.Documents.Word;

namespace DsWordWeb.Demos
{
    // This sample shows how to load an existing ink XML
    // and create an InkShape with the loaded ink as content.
    public class InkXml
    {
        public GcWordDocument CreateDocx()
        {
            GcWordDocument doc = new GcWordDocument();

            // Load the ink XML and add it as an ink shape to the DOCX:
            var inkXml = new XmlDocument();
            inkXml.Load(Path.Combine("Resources", "Misc", "ink.xml"));
            var ink = doc.Body.Paragraphs.Add("Paragraph containing the ink shape.").GetRange().Runs.Add().GetRange().InkShapes.Add(inkXml);
            // Modify the ink's size and angle:
            ink.WrapFormat.Type = WrapType.Square;
            ink.Size.Width.Relative = 40;
            ink.Size.Width.RelativeTo = SizeRelativeHorizontally.Margin;
            ink.Size.Height.Relative = 30;
            ink.Size.Height.RelativeTo = SizeRelativeVertically.Margin;
            ink.Rotation.Angle = 30;

            // Add a paragraph after the one containing the ink:
            doc.Body.Paragraphs.Add(
                "This paragraph is added after the ink shape loaded from an XML. " +
                $"The ink shape's wrap type is set to {ink.WrapFormat.Type} " +
                $"and the shape is rotated {ink.Rotation.Angle} degrees clockwise. " +
                $"The width is {ink.Size.Width.Relative}% relative to page width sans the margins, " +
                $"and the height is {ink.Size.Height.Relative}% relative to page height sans the margins.");

            // Done:
            return doc;
        }
    }
}