summaryrefslogtreecommitdiffstats
path: root/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnQueries.h
blob: a78ebc1d012797733e76a66290f11a31e23e20fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/****************************************************************************
*                                                                           *
*  OpenNI 1.x Alpha                                                         *
*  Copyright (C) 2011 PrimeSense Ltd.                                       *
*                                                                           *
*  This file is part of OpenNI.                                             *
*                                                                           *
*  OpenNI is free software: you can redistribute it and/or modify           *
*  it under the terms of the GNU Lesser General Public License as published *
*  by the Free Software Foundation, either version 3 of the License, or     *
*  (at your option) any later version.                                      *
*                                                                           *
*  OpenNI is distributed in the hope that it will be useful,                *
*  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the             *
*  GNU Lesser General Public License for more details.                      *
*                                                                           *
*  You should have received a copy of the GNU Lesser General Public License *
*  along with OpenNI. If not, see <http://www.gnu.org/licenses/>.           *
*                                                                           *
****************************************************************************/
#ifndef __XN_QUERIES_H__
#define __XN_QUERIES_H__

//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
#include "XnTypes.h"

//---------------------------------------------------------------------------
// Exported Functions
//---------------------------------------------------------------------------
/**
 * @ingroup cref
 * @defgroup queries Queries
 * This page details functions for building queries. Queries can be used during enumeration, and provide
 * an easy way for filtering results before they return to user.
 * @{
 */

/**
 * Allocates a new query object. This object must be freed using @ref xnNodeQueryFree().
 *
 * @param	ppQuery		[out]	Created query object.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQueryAllocate(XnNodeQuery** ppQuery);

/**
 * Frees a query object previously created using @ref xnNodeQueryAllocate().
 *
 * @param	pQuery		[in]	Query object.
 */
XN_C_API void XN_C_DECL xnNodeQueryFree(XnNodeQuery* pQuery);

/**
 * Sets the requested vendor.
 *
 * @param	pQuery		[in]	Query object.
 * @param	strVendor	[in]	Vendor Name.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetVendor(XnNodeQuery* pQuery, const XnChar* strVendor);

/**
 * Sets the requested name.
 *
 * @param	pQuery		[in]	Query object.
 * @param	strName		[in]	Product Name.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetName(XnNodeQuery* pQuery, const XnChar* strName);

/**
 * Sets the minimum required version.
 *
 * @param	pQuery		[in]	Query object.
 * @param	pMinVersion	[in]	Min Version. 
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetMinVersion(XnNodeQuery* pQuery, const XnVersion* pMinVersion);

/**
 * Sets the maximum required version. 
 *
 * @param	pQuery		[in]	Query object.
 * @param	pMaxVersion	[in]	Max Version. 
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetMaxVersion(XnNodeQuery* pQuery, const XnVersion* pMaxVersion);

/**
 * Adds a capability that the node must support. Note that for checking if a capability is supported, 
 * the node must be created (if it's not an existing one). This operation might take a bit longer...
 *
 * @param	pQuery				[in]	Query object.
 * @param	strNeededCapability	[in]	A needed capability name.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQueryAddSupportedCapability(XnNodeQuery* pQuery, const XnChar* strNeededCapability);

/**
 * Adds a MapOutputMode that the node must support. Note that for checking if a capability is supported, 
 * the node must be created (if it's not an existing one). This operation might take a bit longer...
 *
 * @param	pQuery			[in]	Query object.
 * @param	pMapOutputMode	[in]	A map output mode. Each field of the mode can be set to (-1), meaning 
 * results will not be filtered by this field. 
 */
XN_C_API XnStatus XN_C_DECL xnNodeQueryAddSupportedMapOutputMode(XnNodeQuery* pQuery, const XnMapOutputMode* pMapOutputMode);

/**
 * Sets the minimum required user positions this node supports. Note that for checking if a capability is supported, 
 * the node must be created (if it's not an existing one). This operation might take a bit longer...
 *
 * @param	pQuery		[in]	Query object.
 * @param	nCount		[in]	The number of required positions.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetSupportedMinUserPositions(XnNodeQuery* pQuery, const XnUInt32 nCount);

/**
 * Filter results so that only existing nodes will be returned.
 *
 * @param	pQuery			[in]	Query object.
 * @param	bExistingNode	[in]	TRUE to return only existing ones, FALSE otherwise.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetExistingNodeOnly(XnNodeQuery* pQuery, XnBool bExistingNode);

/**
 * Filter results so that only non-existing nodes will be returned.
 *
 * @param	pQuery			 [in]	Query object.
 * @param	bNonExistingNode [in]	TRUE to return only non-existing ones, FALSE otherwise.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetNonExistingNodeOnly(XnNodeQuery* pQuery, XnBool bNonExistingNode);

/**
 * Adds a needed node.
 *
 * @param	pQuery			[in]	Query object.
 * @param	strInstanceName	[in]	The name of the needed instance.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQueryAddNeededNode(XnNodeQuery* pQuery, const XnChar* strInstanceName);

/**
 * Sets the creation info field of a query object.
 *
 * @param	pQuery			[in]	Query object.
 * @param	strCreationInfo	[in]	The creation info to set in the query.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQuerySetCreationInfo(XnNodeQuery* pQuery, const XnChar* strCreationInfo);

/**
 * Filters a list of nodes according to query. The list will contain only nodes that match all query terms.
 * Note that some query terms might require creation of a node, and thus may take longer.
 *
 * @param	pContext	[in]		OpenNI Context object.
 * @param	pQuery		[in]		Query object.
 * @param	pList		[in]		The list to be filtered.
 */
XN_C_API XnStatus XN_C_DECL xnNodeQueryFilterList(XnContext* pContext, const XnNodeQuery* pQuery, XnNodeInfoList* pList);

/** @} */

#endif // __XN_QUERIES_H__