Shape3DRotationEffect.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 GrapeCity.Documents.Word;

namespace DsWordWeb.Demos
{
    // This example shows how to add a 3D rotation effect to a shape.
    public class Shape3DRotationEffect
    {
        public GcWordDocument CreateDocx()
        {
            var doc = new GcWordDocument();

            Paragraph paragraph = doc.Body.Paragraphs.Add();
            Run run = paragraph.GetRange().Runs.Add();
            Shape shape = run.GetRange().Shapes.Add(200, 200, GeometryType.Rectangle);
            shape.Fill.Type = FillType.Solid;
            shape.Fill.SolidFill.ThemeColor = ThemeColorId.Accent1;

            shape.Line.Fill.Type = FillType.NoFill;

            OuterShadow shadow = shape.Effects.Shadow;
            shadow.Alignment = RectangleAlignment.Center;
            shadow.Angle = 87f;
            shadow.Blur = 17.75f;
            shadow.Distance = 4f;
            shadow.Color.RGB = Color.FromArgb(255, 0, 0, 0);
            shadow.Color.Transparency = 0.67f;

            // apply 3D format
            ThreeDFormat threeDFormat = shape.Effects.ThreeDFormat;
            threeDFormat.Depth.Width = 20f;
            threeDFormat.Contour.Width = 1.5f;
            threeDFormat.Contour.Color.RGB = Color.FromArgb(255, 255, 255, 255);

            Bevel topbevel = threeDFormat.TopBevel;
            topbevel.Type = BevelType.Angle;
            topbevel.Width = 6.5f;
            topbevel.Height = 3.5f;

            Bevel bottomBevel = threeDFormat.BottomBevel;
            bottomBevel.Type = BevelType.Angle;
            bottomBevel.Width = 6.5f;
            bottomBevel.Height = 3.5f;

            // apply 3D scene
            Lighting lighting = shape.Effects.ThreeDScene.Lighting;
            lighting.Type = LightRigType.Harsh;
            lighting.Direction = LightRigDirection.Top;
            lighting.Rotation.Latitude = 0f;
            lighting.Rotation.Longitude = 0f;
            lighting.Rotation.Revolution = 50f;

            Camera camera = shape.Effects.ThreeDScene.Camera;
            camera.Preset = CameraPreset.PerspectiveFront;
            camera.Perspective = 55f;
            camera.Rotation.Latitude = 8.1f;
            camera.Rotation.Longitude = 325.5f;
            camera.Rotation.Revolution = 2.9f;

            // Done:
            return doc;
        }
    }
}