My Project
CaptureFactory.h
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #ifndef CAPTUREFACTORY_H
25 #define CAPTUREFACTORY_H
26 
35 #include "Alvar.h"
36 #include "Capture.h"
37 #include "CaptureDevice.h"
38 #include "Platform.h"
39 #include "Util.h"
40 
41 namespace alvar {
42 
43 class CaptureFactoryPrivate;
44 
52 class ALVAR_EXPORT CaptureFactory
53 {
54 public:
59 
63  typedef std::vector<std::string> CapturePluginVector;
64 
73 
77  typedef std::vector<CaptureDevice> CaptureDeviceVector;
78 
89  CaptureDeviceVector enumerateDevices(const std::string &captureType = "");
90 
100  Capture *createCapture(const CaptureDevice captureDevice);
101 
102 protected:
107 
108 private:
112  class CaptureFactoryDestroyer
113  {
114  public:
115  CaptureFactoryDestroyer(CaptureFactory *instance = NULL) : mInstance(instance)
116  {
117  }
118  ~CaptureFactoryDestroyer()
119  {
120  delete mInstance;
121  }
122  void
123  set(CaptureFactory *instance)
124  {
125  mInstance = instance;
126  }
127 
128  private:
129  CaptureFactory *mInstance;
130  };
131 
132  // private constructors and assignment operator for singleton implementation
133  CaptureFactory();
134  CaptureFactory(const CaptureFactory &);
135  CaptureFactory &operator=(const CaptureFactory &);
136 
137  // static members for singleton implementation
138  static CaptureFactory * mInstance;
139  static Mutex mMutex;
140  static CaptureFactoryDestroyer mDestroyer;
141 
142  // members
143  CaptureFactoryPrivate *d;
144 };
145 
146 } // namespace alvar
147 
148 #endif
This file defines library export definitions, version numbers and build information.
This file implements a capture interface.
This file implements a capture device to hold camera information.
This file implements generic platform specific methods.
This file implements generic utility functions and a serialization interface.
CaptureDevice holder for camera information.
Definition: CaptureDevice.h:45
CaptureFactory for creating Capture classes.
static CaptureFactory * instance()
The singleton instance of CaptureFactory.
CapturePluginVector enumeratePlugins()
Enumerate capture plugins currently available.
std::vector< CaptureDevice > CaptureDeviceVector
Vector of CaptureDevices.
Capture * createCapture(const CaptureDevice captureDevice)
Create Capture class. Transfers onwership to the caller.
~CaptureFactory()
Destructor.
std::vector< std::string > CapturePluginVector
Vector of strings.
CaptureDeviceVector enumerateDevices(const std::string &captureType="")
Enumerate capture devices currently available.
Capture interface that plugins must implement.
Definition: Capture.h:47
Main ALVAR namespace.
Definition: Alvar.h:174