1 /**************************************************************************** 2 * 3 * ViSP, open source Visual Servoing Platform software. 4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved. 5 * 6 * This software is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * See the file LICENSE.txt at the root directory of this source 11 * distribution for additional information about the GNU GPL. 12 * 13 * For using ViSP with software that can not be combined with the GNU 14 * GPL, please contact Inria about acquiring a ViSP Professional 15 * Edition License. 16 * 17 * See http://visp.inria.fr for more information. 18 * 19 * This software was developed at: 20 * Inria Rennes - Bretagne Atlantique 21 * Campus Universitaire de Beaulieu 22 * 35042 Rennes Cedex 23 * France 24 * 25 * If you have questions regarding the use of this file, please contact 26 * Inria at visp@inria.fr 27 * 28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 30 * 31 * Description: Factory class used to create vpPylonGrabber instances. 32 * 33 * Authors: 34 * Wenfeng CAI 35 * 36 *****************************************************************************/ 37 38 #ifndef _vpPylonFactory_h_ 39 #define _vpPylonFactory_h_ 40 41 #include <visp3/core/vpConfig.h> 42 43 #include <visp3/sensor/vpPylonGrabber.h> 44 45 #ifdef VISP_HAVE_PYLON 46 47 /*! 48 \file vpPylonFactory.h 49 \brief Description: Factory class used to create vpPylonGrabber 50 instances. 51 */ 52 53 /*! 54 \brief Factory singleton class to create vpPylonGrabber subclass 55 instances. 56 57 \ingroup group_sensor_camera 58 59 Use vpPylonFactory::instance() to get the singleton instance. This 60 class can also help to initialize and terminate pylon runtime system. 61 62 Example code. 63 \code 64 vpPylonFactory &factory = vpPylonFactory::instance(); 65 vpPylonGrabber *g = factory.createPylonGrabber(vpPylonFactory::BASLER_GIGE); 66 \endcode 67 */ 68 class VISP_EXPORT vpPylonFactory 69 { 70 public: 71 static vpPylonFactory &instance(); 72 73 /*! Device class of cameras. 74 */ 75 enum DeviceClass { 76 BASLER_GIGE, //!< Basler GigE camera. 77 BASLER_USB //!< Basler USB camera. 78 }; 79 80 vpPylonGrabber *createPylonGrabber(DeviceClass dev_class); 81 82 private: 83 //! Default constructor. vpPylonFactory()84 vpPylonFactory(){}; 85 vpPylonFactory(vpPylonFactory const &); 86 void operator=(vpPylonFactory const &); 87 88 Pylon::PylonAutoInitTerm m_autoInitTerm; //!< Auto initialize and terminate object for pylon SDK. 89 }; 90 91 #endif // #ifdef VISP_HAVE_PYLON 92 #endif // #ifndef _vpPylonFactory_h_ 93