latest version v1.9 - last update 10 Apr 2010 |
00001 /* 00002 * Copyright (C) 2002, 2003, 2004, 2005, 2006 00003 * Lehrstuhl fuer Technische Informatik, RWTH-Aachen, Germany 00004 * 00005 * This file is part of the LTI-Computer Vision Library (LTI-Lib) 00006 * 00007 * The LTI-Lib is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public License (LGPL) 00009 * as published by the Free Software Foundation; either version 2.1 of 00010 * the License, or (at your option) any later version. 00011 * 00012 * The LTI-Lib is distributed in the hope that it will be 00013 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty 00014 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with the LTI-Lib; see the file LICENSE. If 00019 * not, write to the Free Software Foundation, Inc., 59 Temple Place - 00020 * Suite 330, Boston, MA 02111-1307, USA. 00021 */ 00022 00023 00024 /*---------------------------------------------------------------- 00025 * project ....: LTI Digital Image/Signal Processing Library 00026 * file .......: ltiCornerDetectorFactory.h 00027 * authors ....: Pablo Alvarado 00028 * organization: LTI, RWTH Aachen 00029 * creation ...: 30.10.2002 00030 * revisions ..: $Id: ltiCornerDetectorFactory.h,v 1.2 2006/02/07 18:42:25 ltilib Exp $ 00031 */ 00032 00033 #ifndef _LTI_CORNER_DETECTOR_FACTORY 00034 #define _LTI_CORNER_DETECTOR_FACTORY 00035 00036 #include "ltiCornerDetector.h" 00037 #include "ltiObjectFactory.h" 00038 00039 namespace lti { 00040 00041 /** 00042 * This class defines a factory for corner detector functors. 00043 * 00044 * Depending on the way the library was compiled, the susanCorners functor 00045 * will be included or not. The applications should check if this functor 00046 * returns a valid instance (not null pointer). 00047 */ 00048 class cornerDetectorFactory: public object { 00049 00050 public: 00051 /** 00052 * Constructor. 00053 */ 00054 cornerDetectorFactory(); 00055 00056 /** 00057 * Destructor. 00058 */ 00059 virtual ~cornerDetectorFactory(); 00060 00061 /** 00062 * returns the name of this type ("cornerDetectorFactory") 00063 */ 00064 virtual const char* getTypeName() const; 00065 00066 /** 00067 * Creates a new instance of the class whose name is given 00068 * as parameter, if this class is known to the factory. 00069 * Otherwise, it returns null. 00070 * @param name name of the to-be instantiated class. 00071 * @return a new instance. 00072 */ 00073 virtual cornerDetector* newInstance(const char *name) const; 00074 00075 /** 00076 * Creates a new instance of the class whose name is given 00077 * as parameter, if this class is known to the factory. 00078 * Otherwise, it returns null. 00079 * @param name name of the to-be instantiated class. 00080 * @return a new instance. 00081 */ 00082 virtual cornerDetector* newInstance(const std::string& name) const { 00083 return newInstance(name.c_str()); 00084 } 00085 00086 private: 00087 00088 /** 00089 * corner detectors used in the factory 00090 */ 00091 static const cornerDetector *const cornerDetectors[]; 00092 00093 /** 00094 * the real object factory 00095 */ 00096 static objectFactory<cornerDetector> factory; 00097 00098 }; 00099 00100 00101 } 00102 00103 #endif