diff options
Diffstat (limited to 'gfx/vr/osvr/Util/MatrixConventionsC.h')
-rw-r--r-- | gfx/vr/osvr/Util/MatrixConventionsC.h | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/gfx/vr/osvr/Util/MatrixConventionsC.h b/gfx/vr/osvr/Util/MatrixConventionsC.h deleted file mode 100644 index b1f2c2797..000000000 --- a/gfx/vr/osvr/Util/MatrixConventionsC.h +++ /dev/null @@ -1,190 +0,0 @@ -/** @file - @brief Header - - Must be c-safe! - - @date 2015 - - @author - Sensics, Inc. - <http://sensics.com/osvr> -*/ - -/* -// Copyright 2015 Sensics, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -*/ - -#ifndef INCLUDED_MatrixConventionsC_h_GUID_6FC7A4C6_E6C5_4A96_1C28_C3D21B909681 -#define INCLUDED_MatrixConventionsC_h_GUID_6FC7A4C6_E6C5_4A96_1C28_C3D21B909681 - -/* Internal Includes */ -#include <osvr/Util/Export.h> -#include <osvr/Util/APIBaseC.h> -#include <osvr/Util/StdInt.h> -#include <osvr/Util/Pose3C.h> -#include <osvr/Util/ReturnCodesC.h> - -/* Library/third-party includes */ -/* none */ - -/* Standard includes */ -/* none */ - -OSVR_EXTERN_C_BEGIN - -/** @defgroup MatrixConvention Matrix conventions and bit flags - @ingroup UtilMath -*/ - -/** @brief Type for passing matrix convention flags. - @ingroup MatrixConvention -*/ -typedef uint16_t OSVR_MatrixConventions; - -#ifndef OSVR_DOXYGEN_EXTERNAL -/** @brief Bitmasks for testing matrix conventions. - @ingroup MatrixConvention -*/ -typedef enum OSVR_MatrixMasks { - OSVR_MATRIX_MASK_ROWMAJOR = 0x1, - OSVR_MATRIX_MASK_ROWVECTORS = 0x2, - OSVR_MATRIX_MASK_LHINPUT = 0x4, - OSVR_MATRIX_MASK_UNSIGNEDZ = 0x8 -} OSVR_MatrixMasks; -#endif - -/** @defgroup MatrixFlags Matrix flags - @ingroup MatrixConvention - - Bit flags for specifying matrix options. Only one option may be specified - per enum, with all the specified options combined with bitwise-or `|`. - - Most methods that take matrix flags only obey ::OSVR_MatrixOrderingFlags and - ::OSVR_MatrixVectorFlags - the flags that affect memory order. The remaining - flags are for use with projection matrix generation API methods. - - @{ -*/ -/** @brief Flag bit controlling output memory order */ -typedef enum OSVR_MatrixOrderingFlags { - /** @brief Column-major memory order (default) */ - OSVR_MATRIX_COLMAJOR = 0x0, - /** @brief Row-major memory order */ - OSVR_MATRIX_ROWMAJOR = OSVR_MATRIX_MASK_ROWMAJOR -} OSVR_MatrixOrderingFlags; - -/** @brief Flag bit controlling expected input to matrices. - (Related to ::OSVR_MatrixOrderingFlags - setting one to non-default results - in an output change, but setting both to non-default results in effectively - no change in the output. If this blows your mind, just ignore this aside and - carry on.) -*/ -typedef enum OSVR_MatrixVectorFlags { - /** @brief Matrix transforms column vectors (default) */ - OSVR_MATRIX_COLVECTORS = 0x0, - /** @brief Matrix transforms row vectors */ - OSVR_MATRIX_ROWVECTORS = OSVR_MATRIX_MASK_ROWVECTORS -} OSVR_MatrixVectorFlags; - -/** @brief Flag bit to indicate coordinate system input to projection matrix */ -typedef enum OSVR_ProjectionMatrixInputFlags { - /** @brief Matrix takes vectors from a right-handed coordinate system - (default) */ - OSVR_MATRIX_RHINPUT = 0x0, - /** @brief Matrix takes vectors from a left-handed coordinate system */ - OSVR_MATRIX_LHINPUT = OSVR_MATRIX_MASK_LHINPUT - -} OSVR_ProjectionMatrixInputFlags; - -/** @brief Flag bit to indicate the desired post-projection Z value convention - */ -typedef enum OSVR_ProjectionMatrixZFlags { - /** @brief Matrix maps the near and far planes to signed Z values (in the - range [-1, 1]) (default)*/ - OSVR_MATRIX_SIGNEDZ = 0x0, - /** @brief Matrix maps the near and far planes to unsigned Z values (in the - range [0, 1]) */ - OSVR_MATRIX_UNSIGNEDZ = OSVR_MATRIX_MASK_UNSIGNEDZ -} OSVR_ProjectionMatrixZFlags; -/** @} */ /* end of matrix flags group */ - -enum { - /** @brief Constant for the number of elements in the matrices we use - 4x4. - @ingroup MatrixConvention - */ - OSVR_MATRIX_SIZE = 16 -}; - -/** @addtogroup UtilMath - @{ -*/ -/** @brief Set a matrix of doubles based on a Pose3. - @param pose The Pose3 to convert - @param flags Memory ordering flag - see @ref MatrixFlags - @param[out] mat an array of 16 doubles -*/ -OSVR_UTIL_EXPORT OSVR_ReturnCode osvrPose3ToMatrixd( - OSVR_Pose3 const *pose, OSVR_MatrixConventions flags, double *mat); - -/** @brief Set a matrix of floats based on a Pose3. - @param pose The Pose3 to convert - @param flags Memory ordering flag - see @ref MatrixFlags - @param[out] mat an array of 16 floats -*/ -OSVR_UTIL_EXPORT OSVR_ReturnCode osvrPose3ToMatrixf( - OSVR_Pose3 const *pose, OSVR_MatrixConventions flags, float *mat); -/** @} */ - -OSVR_EXTERN_C_END - -#ifdef __cplusplus -/** @brief Set a matrix based on a Pose3. (C++-only overload - detecting scalar - * type) */ -inline OSVR_ReturnCode osvrPose3ToMatrix(OSVR_Pose3 const *pose, - OSVR_MatrixConventions flags, - double *mat) { - return osvrPose3ToMatrixd(pose, flags, mat); -} - -/** @brief Set a matrix based on a Pose3. (C++-only overload - detecting scalar - * type) */ -inline OSVR_ReturnCode osvrPose3ToMatrix(OSVR_Pose3 const *pose, - OSVR_MatrixConventions flags, - float *mat) { - return osvrPose3ToMatrixf(pose, flags, mat); -} - -/** @brief Set a matrix based on a Pose3. (C++-only overload - detects scalar - * and takes array rather than pointer) */ -template <typename Scalar> -inline OSVR_ReturnCode osvrPose3ToMatrix(OSVR_Pose3 const *pose, - OSVR_MatrixConventions flags, - Scalar mat[OSVR_MATRIX_SIZE]) { - return osvrPose3ToMatrix(pose, flags, &(mat[0])); -} -/** @brief Set a matrix based on a Pose3. (C++-only overload - detects scalar, - * takes array, takes pose by reference) */ -template <typename Scalar> -inline OSVR_ReturnCode osvrPose3ToMatrix(OSVR_Pose3 const &pose, - OSVR_MatrixConventions flags, - Scalar mat[OSVR_MATRIX_SIZE]) { - return osvrPose3ToMatrix(&pose, flags, &(mat[0])); -} - -#endif - -/** @} */ - -#endif |