SvgSkew.cs 1.28 KB
Newer Older
1
using System;
2
using System.Drawing.Drawing2D;
3
using System.Globalization;
4
5
6
7
8
9
10
11

namespace Svg.Transforms
{
    /// <summary>
    /// The class which applies the specified skew vector to this Matrix.
    /// </summary>
    public sealed class SvgSkew : SvgTransform
    {
12
        public float AngleX { get; set; }
13

14
        public float AngleY { get; set; }
15
16
17
18
19

        public override Matrix Matrix
        {
            get
            {
20
21
22
23
                var matrix = new Matrix();
                matrix.Shear(
                    (float)Math.Tan(AngleX/180*Math.PI),
                    (float)Math.Tan(AngleY/180*Math.PI));
24
25
26
27
                return matrix;
            }
        }

28
29
        public override string WriteToString()
        {
Eric Domke's avatar
Eric Domke committed
30
31
32
33
34
35
36
37
            if (this.AngleY == 0)
            {
                return string.Format(CultureInfo.InvariantCulture, "skewX({0})", this.AngleX);
            }
            else
            {
                return string.Format(CultureInfo.InvariantCulture, "skewY({0})", this.AngleY);
            }
38
39
        }

40
41
        public SvgSkew(float x, float y)
        {
42
43
            AngleX = x;
            AngleY = y;
44
        }
45
46
47
48
49
50


		public override object Clone()
		{
			return new SvgSkew(this.AngleX, this.AngleY);
		}
51
52
    }
}