GradientInfo.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /////////////////////////////////////////////////////////////////////////////////
  2. // Paint.NET //
  3. // Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
  4. // Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
  5. // See src/Resources/Files/License.txt for full licensing and attribution //
  6. // details. //
  7. // . //
  8. /////////////////////////////////////////////////////////////////////////////////
  9. using PaintDotNet.Measurement.Enum;
  10. using System;
  11. using System.ComponentModel;
  12. namespace PaintDotNet.Measurement.ObjInfo
  13. {
  14. [Serializable]
  15. public sealed class GradientInfo
  16. : ICloneable
  17. {
  18. private GradientType gradientType;
  19. private bool alphaOnly;
  20. public GradientType GradientType
  21. {
  22. get
  23. {
  24. return this.gradientType;
  25. }
  26. }
  27. public bool AlphaOnly
  28. {
  29. get
  30. {
  31. return this.alphaOnly;
  32. }
  33. }
  34. public GradientRenderer CreateGradientRenderer()
  35. {
  36. UserBlendOps.NormalBlendOp normalBlendOp = new UserBlendOps.NormalBlendOp();
  37. switch (this.gradientType)
  38. {
  39. case GradientType.LinearClamped:
  40. return new GradientRenderers.LinearClamped(this.alphaOnly, normalBlendOp);
  41. case GradientType.LinearReflected:
  42. return new GradientRenderers.LinearReflected(this.alphaOnly, normalBlendOp);
  43. case GradientType.LinearDiamond:
  44. return new GradientRenderers.LinearDiamond(this.alphaOnly, normalBlendOp);
  45. case GradientType.Radial:
  46. return new GradientRenderers.Radial(this.alphaOnly, normalBlendOp);
  47. case GradientType.Conical:
  48. return new GradientRenderers.Conical(this.alphaOnly, normalBlendOp);
  49. default:
  50. throw new InvalidEnumArgumentException();
  51. }
  52. }
  53. public override bool Equals(object obj)
  54. {
  55. GradientInfo asGI = obj as GradientInfo;
  56. if (asGI == null)
  57. {
  58. return false;
  59. }
  60. return (asGI.GradientType == this.GradientType && asGI.AlphaOnly == this.AlphaOnly);
  61. }
  62. public override int GetHashCode()
  63. {
  64. return unchecked(this.gradientType.GetHashCode() + this.alphaOnly.GetHashCode());
  65. }
  66. public GradientInfo(GradientType gradientType, bool alphaOnly)
  67. {
  68. this.gradientType = gradientType;
  69. this.alphaOnly = alphaOnly;
  70. }
  71. public GradientInfo Clone()
  72. {
  73. return new GradientInfo(this.gradientType, this.alphaOnly);
  74. }
  75. object ICloneable.Clone()
  76. {
  77. return Clone();
  78. }
  79. }
  80. }