OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/karinto/karinto
[karinto/karinto.git] / Karinto / WindowFunction.cs
index 04079e5..fb05d81 100755 (executable)
@@ -38,8 +38,8 @@ namespace Karinto
 \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
@@ -73,31 +73,52 @@ namespace Karinto
         }\r
 \r
         public WindowFunction(FunctionType type, Range range)\r
+            : this(type, 0.0, range)\r
         {\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
+                    Window = Gaussian;\r
+                    break;\r
+                case FunctionType.Kaiser:\r
+                    Window = Kaiser;\r
+                    break;\r
+                case FunctionType.Lanczos:\r
+                    Window = Lanczos;\r
+                    break;\r
+                default:\r
+                    Window = library[(int)type];\r
+                    break;\r
+            }\r
         }\r
 \r
         public WindowFunction(Function function)\r
@@ -108,7 +129,7 @@ namespace Karinto
         public WindowFunction(Function function, Range range)\r
             : this(FunctionType.UserDefined, range)\r
         {\r
-            this.function = function;\r
+            Window = function;\r
         }\r
 \r
         #endregion\r
@@ -127,6 +148,23 @@ namespace Karinto
             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