|
- /**
- * projectM -- Milkdrop-esque visualisation SDK
- * Copyright (C)2003-2007 projectM Team
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * See 'LICENSE.txt' included within this release
- *
- */
-
-
- /** BuiltinParams.hpp :: a class to encapsulate and centralize
- * all projectm builtin parameter methods and state. Used primarily
- * by preset class
- **/
- #ifndef _BUILTIN_PARAMS_HPP
- #define _BUILTIN_PARAMS_HPP
-
- #include <string>
- #include "PresetFrameIO.hpp"
- #include "Param.hpp"
- #include <map>
- #include <cstdio>
-
- class BuiltinParams
- {
-
- public:
- typedef std::map<std::string, std::string> AliasMap;
-
- /** Default constructor leaves database in an uninitialized state. */
- BuiltinParams();
-
- /** Construct a new builtin parameter database with variables references given by
- * the preset input and output structures */
- BuiltinParams(PresetInputs& presetInputs, PresetOutputs* presetOutputs);
-
- ~BuiltinParams();
-
- int insert_param_alt_name(Param* param, const std::string& salt_name);
-
- Param* find_builtin_param(const std::string& name);
-
- int load_builtin_param_float(const std::string& name, void* engine_val, void* matrix,
- short int flags,
- float init_val, float upper_bound,
- float lower_bound, const std::string& alt_name);
-
- int load_builtin_param_int(const std::string& name, void* engine_val, short int flags,
- int init_val, int upper_bound,
- int lower_bound, const std::string& alt_name);
-
- int load_builtin_param_bool(const std::string& name, void* engine_val, short int flags,
- int init_val, const std::string& alt_name);
-
- int load_builtin_param_string(const std::string& name, std::string* engine_val, short int flags);
-
- int insert_builtin_param(Param* param);
-
- template<class Fun>
- void apply(Fun& fun)
- {
- traverse(builtin_param_tree, fun);
- }
-
-
- protected:
- /** Param database initalizer / destructor functions */
- int init_builtin_param_db(const PresetInputs& presetInputs, PresetOutputs* presetOutputs);
-
- int load_all_builtin_param(const PresetInputs& presetInputs, PresetOutputs* presetOutputs);
-
- int destroy_builtin_param_db();
-
- private:
- static const bool BUILTIN_PARAMS_DEBUG = false;
-
- // Used to associate multiple string names to one parameter
- AliasMap aliasMap;
-
- // Internal datastructure to store the parameters
- std::map<std::string, Param*> builtin_param_tree;
- };
-
- #endif
|