CLAM-Development
1.1
|
00001 /* 00002 * Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG) 00003 * UNIVERSITAT POMPEU FABRA 00004 * 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 2 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 * 00020 */ 00021 00022 #ifndef _WindowGeneratorConfig_ 00023 #define _WindowGeneratorConfig_ 00024 #include <typeinfo> 00025 00026 #include "ProcessingConfig.hxx" 00027 #include "Enum.hxx" 00028 #include "GlobalEnums.hxx" 00029 #include "DataTypes.hxx" 00030 00031 namespace CLAM { 00032 00033 class Component; 00034 00035 class EWindowNormalize : public Enum { 00036 public: 00037 EWindowNormalize() : Enum(ValueTable(), eAnalysis) {} 00038 EWindowNormalize(tValue v) : Enum(ValueTable(), v) {}; 00039 EWindowNormalize(std::string s) : Enum(ValueTable(), s) {}; 00040 00041 typedef enum { 00042 eNone, 00043 eAnalysis, 00044 eEnergy, 00045 eMax 00046 } tEnum; 00047 00048 virtual Component* Species() const 00049 { 00050 return new EWindowNormalize(eAnalysis); 00051 }; 00052 static tEnumValue * ValueTable() 00053 { 00054 static tEnumValue sEnumValues[] = { 00055 {eNone,"NoNormalization"}, 00056 {eAnalysis,"NormalizationForAnalysis"}, 00057 {eEnergy,"NormalizationForConstantEnergy"}, 00058 {eMax,"NormalizationForMaximizingMagnitude"}, 00059 {0,NULL} 00060 }; 00061 return sEnumValues; 00062 } 00063 }; 00064 00065 class WindowGeneratorConfig: public ProcessingConfig 00066 { 00067 public: 00068 DYNAMIC_TYPE_USING_INTERFACE (WindowGeneratorConfig, 6,ProcessingConfig); 00069 DYN_ATTRIBUTE (0, public, EWindowType, Type); 00070 DYN_ATTRIBUTE (1, public, TSize, Size); 00071 DYN_ATTRIBUTE (2, public, TSize, MaxSize); 00072 DYN_ATTRIBUTE (3, public, bool, UseTable); 00073 DYN_ATTRIBUTE (4, public, EWindowNormalize, Normalize); 00074 DYN_ATTRIBUTE (5, public, bool, Invert); 00075 public: 00076 void DefaultValues(); 00077 protected: 00078 void DefaultInit(); 00079 00080 }; 00081 00082 } 00083 00084 #endif 00085