SvgSkew.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Drawing.Drawing2D;
  3. using System.Globalization;
  4. #pragma warning disable
  5. namespace Svg.Transforms
  6. {
  7. /// <summary>
  8. /// The class which applies the specified skew vector to this Matrix.
  9. /// </summary>
  10. public sealed class SvgSkew : SvgTransform
  11. {
  12. public float AngleX { get; set; }
  13. public float AngleY { get; set; }
  14. public override Matrix Matrix
  15. {
  16. get
  17. {
  18. var matrix = new Matrix();
  19. matrix.Shear(
  20. (float)Math.Tan(AngleX / 180 * Math.PI),
  21. (float)Math.Tan(AngleY / 180 * Math.PI));
  22. return matrix;
  23. }
  24. }
  25. public override string WriteToString()
  26. {
  27. if (this.AngleY == 0)
  28. {
  29. return string.Format(CultureInfo.InvariantCulture, "skewX({0})", this.AngleX);
  30. }
  31. else
  32. {
  33. return string.Format(CultureInfo.InvariantCulture, "skewY({0})", this.AngleY);
  34. }
  35. }
  36. public SvgSkew(float x, float y)
  37. {
  38. AngleX = x;
  39. AngleY = y;
  40. }
  41. public override object Clone()
  42. {
  43. return new SvgSkew(this.AngleX, this.AngleY);
  44. }
  45. }
  46. }
  47. #pragma warning restore