DAVID4 SDK  1.8.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
d4lib_helpers.h
1 //=============================================================================
2 // See License in Related Pages
3 //=============================================================================
4 
5 #pragma once
6 
7 #ifndef DAVID_SDK_D4LIB_HELPERS_H
8 #define DAVID_SDK_D4LIB_HELPERS_H
9 
10 #include "davidSDK/d4lib.h"
11 //#include "davidSDK/Exceptions.h"
12 #include <memory>
13 
14 /// C++ helper functions for d4lib.
15 namespace d4 {
16 
17 //*****************************************************************************
18 /// @addtogroup LowLevelGroup
19 /// @{
20 /// @defgroup d4lib_helpers Helpers for DAVID Low Level Library (d4lib)
21 /// Provides C++ helper functions for the DAVID Low Level Library (d4lib).
22 /// @{
23 //*****************************************************************************
24 
25 /// Encapsulates a native d4lib pointer into a shared_ptr object.
26 /// @param[in] ptr Valid pointer of a d4lib object.
27 /// @return Shared pointer.
28 template <class T>
29 //std::shared_ptr<T> MakeShared(T* ptr, bool checkPtr=true)
30 std::shared_ptr<T> MakeShared(T* ptr)
31 {
32  //if (checkPtr && ptr == nullptr) ThrowException(david::Error_InvalidArgument, "Pointer is nullptr.", "MakeShared");
33  return std::shared_ptr<T>(ptr, d4mem_decRefCount);
34 }
35 
36 
37 /// C++ functions related to d4img.
38 namespace img {
39 
40 /// Create new image object (#d4img_newImage).
41 /// @return shared_ptr.
42 inline std::shared_ptr<d4img> newImage()
43 {
44  return MakeShared(d4img_newImage());
45 }
46 
47 } // img
48 
49 
50 /// C++ functions related to d4fimg.
51 namespace fimg {
52 
53 /// Create new float image object (#d4fimg_newImage).
54 /// @return shared_ptr.
55 inline std::shared_ptr<d4fimg> newImage()
56 {
57  return MakeShared(d4fimg_newImage());
58 }
59 
60 } // fimg
61 
62 
63 /// C++ functions related to d4projector.
64 namespace projector {
65 
66 /// Create new extended display projector (#d4projector_newExtendedDisplayProjector).
67 /// @return shared_ptr.
68 inline std::shared_ptr<d4projector> newExtendedDisplayProjector()
69 {
71 }
72 
73 } // projector
74 
75 
76 /// C++ functions related to d4cam.
77 namespace cam {
78 
79 /// Create new direct show camera object (#d4cam_newDirectShowCamera).
80 /// @return shared_ptr.
81 inline std::shared_ptr<d4cam> newDirectShowCamera()
82 {
84 }
85 
86 } // d4cam
87 
88 
89 /// C++ functions related to d4calib.
90 namespace calib {
91 
92 /// Create new camera calibration object (#d4calib_newCameraCalibration).
93 /// @return shared_ptr.
94 inline std::shared_ptr<d4calib> newCameraCalibration()
95 {
97 }
98 
99 } // calib
100 
101 
102 /// C++ functions related to d4calib.
103 namespace calib {
104 
105 /// Create new projector calibration object (#d4calib_newProjectorCalibration).
106 /// @return shared_ptr.
107 inline std::shared_ptr<d4calib> newProjectorCalibration()
108 {
110 }
111 
112 } // calib
113 
114 
115 /// C++ functions related to d4sls.
116 namespace sls {
117 
118 /// Create new structured light scanner object (#d4sls_newStructuredLightScanner).
119 /// @return shared_ptr.
120 inline std::shared_ptr<d4sls> newStructuredLightScanner()
121 {
123 }
124 
125 } // sls
126 
127 
128 /// C++ functions related to d4mesh.
129 namespace mesh {
130 
131 /// Create new mesh object (#d4mesh_newMesh).
132 /// @return shared_ptr.
133 inline std::shared_ptr<d4mesh> newMesh()
134 {
135  return MakeShared(d4mesh_newMesh());
136 }
137 
138 } // mesh
139 
140 
141 /// @} d4lib
142 /// @} LowLevelGroup
143 
144 } // d4
145 
146 #endif // DAVID_SDK_D4LIB_HELPERS_H