include/voreen/core/animation/serializationfactories.h
00001 /********************************************************************** 00002 * * 00003 * Voreen - The Volume Rendering Engine * 00004 * * 00005 * Copyright (C) 2005-2010 The Voreen Team. <http://www.voreen.org> * 00006 * * 00007 * This file is part of the Voreen software package. Voreen is free * 00008 * software: you can redistribute it and/or modify it under the terms * 00009 * of the GNU General Public License version 2 as published by the * 00010 * Free Software Foundation. * 00011 * * 00012 * Voreen is distributed in the hope that it will be useful, * 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00015 * GNU General Public License for more details. * 00016 * * 00017 * You should have received a copy of the GNU General Public License * 00018 * in the file "LICENSE.txt" along with this program. * 00019 * If not, see <http://www.gnu.org/licenses/>. * 00020 * * 00021 * The authors reserve all rights not expressly granted herein. For * 00022 * non-commercial academic use see the license exception specified in * 00023 * the file "LICENSE-academic.txt". To get information about * 00024 * commercial licensing please contact the authors. * 00025 * * 00026 **********************************************************************/ 00027 00028 #ifndef VRN_SERIALIZATIONFACTORIES_H 00029 #define VRN_SERIALIZATIONFACTORIES_H 00030 00031 #include "voreen/core/io/serialization/serialization.h" 00032 00033 namespace voreen { 00034 00035 template <class T> class InterpolationFunction; 00036 00037 class PropertyTimelineFactory : public SerializableFactory { 00038 public: 00042 virtual const std::string getTypeString(const std::type_info& type) const; 00043 00047 virtual Serializable* createType(const std::string& typeString); 00048 00049 static PropertyTimelineFactory* getInstance(); 00050 00051 private: 00052 static PropertyTimelineFactory* instance_; 00053 }; 00054 00055 class KeyValueFactory : public SerializableFactory { 00056 public: 00057 00058 virtual const std::string getTypeString(const std::type_info& type) const; 00059 00060 virtual Serializable* createType(const std::string& typeString); 00061 00062 static KeyValueFactory* getInstance(); 00063 00064 private: 00065 static KeyValueFactory* instance_; 00066 }; 00067 00068 class TemplatePropertyTimelineStateFactory : public SerializableFactory { 00069 public: 00070 00071 virtual const std::string getTypeString(const std::type_info& type) const; 00072 00073 virtual Serializable* createType(const std::string& typeString); 00074 00075 static TemplatePropertyTimelineStateFactory* getInstance(); 00076 00077 private: 00078 static TemplatePropertyTimelineStateFactory* instance_; 00079 }; 00080 00081 } // namespace voreen 00082 00083 #endif