\r
#region private or protected fields\r
\r
-- private Function function;\r
private static Function[] library;\r
++ private Function function;\r
private double parameter;\r
+ private double powerCorrectionFactor;\r
+ private double amplitudeCorrectionFactor;\r
\r
#endregion\r
\r
}\r
\r
public WindowFunction(FunctionType type, Range range)\r
++ : this(type, 0.0, range)\r
{\r
- Type = type;\r
-- Range = range;\r
switch (type)\r
{\r
- case FunctionType.UserDefined:\r
- function = null;\r
- break;\r
case FunctionType.Gaussian:\r
-- function = Gaussian;\r
parameter = 0.4;\r
break;\r
case FunctionType.Kaiser:\r
-- function = Kaiser;\r
parameter = 2.0;\r
break;\r
case FunctionType.Lanczos:\r
-- function = Lanczos;\r
parameter = 1.0;\r
break;\r
default:\r
-- function = library[(int)type];\r
break;\r
}\r
- powerCorrectionFactor = CalculatePowerCorrectionFactor();\r
- amplitudeCorrectionFactor = CalculateAmplitudeCorrectionFactor();\r
+ }\r
+ \r
+ public WindowFunction(FunctionType type, double parameter)\r
+ : this(type, parameter, null)\r
+ {\r
+ }\r
+ \r
+ public WindowFunction(FunctionType type, double parameter, Range range)\r
+ {\r
+ Type = type;\r
+ Range = range;\r
+ this.parameter = parameter;\r
+ switch (type)\r
+ {\r
++ case FunctionType.UserDefined:\r
++ Window = null;\r
++ break;\r
+ case FunctionType.Gaussian:\r
- function = Gaussian;\r
++ Window = Gaussian;\r
+ break;\r
+ case FunctionType.Kaiser:\r
- function = Kaiser;\r
++ Window = Kaiser;\r
+ break;\r
+ case FunctionType.Lanczos:\r
- function = Lanczos;\r
++ Window = Lanczos;\r
+ break;\r
+ default:\r
- function = library[(int)type];\r
++ Window = library[(int)type];\r
+ break;\r
+ }\r
}\r
\r
public WindowFunction(Function function)\r
}\r
\r
public WindowFunction(Function function, Range range)\r
+ : this(FunctionType.UserDefined, range)\r
{\r
- Range = range;\r
- Type = FunctionType.UserDefined;\r
-- this.function = function;\r
++ Window = function;\r
}\r
\r
#endregion\r
set;\r
}\r
\r
++ public Function Window\r
++ {\r
++ get\r
++ {\r
++ return function;\r
++ }\r
++ private set\r
++ {\r
++ function = value;\r
++ if (function != null)\r
++ {\r
++ powerCorrectionFactor = CalculatePowerCorrectionFactor();\r
++ amplitudeCorrectionFactor = CalculateAmplitudeCorrectionFactor();\r
++ }\r
++ }\r
++ }\r
++\r
+ public double PowerCorrectionFactor\r
+ {\r
+ get\r
+ {\r
+ if (powerCorrectionFactor > 0.0)\r
+ {\r
+ return powerCorrectionFactor;\r
+ }\r
+ return CalculatePowerCorrectionFactor();\r
+ }\r
+ }\r
+\r
+ public double AmplitudeCorrectionFactor\r
+ {\r
+ get\r
+ {\r
+ if (amplitudeCorrectionFactor > 0.0)\r
+ {\r
+ return amplitudeCorrectionFactor;\r
+ }\r
+ return CalculateAmplitudeCorrectionFactor();\r
+ }\r
+ }\r
+\r
#endregion\r
\r
#region public methods\r