diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-05-08 13:09:15 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2021-11-26 15:45:27 +0100 |
commit | 99241de47266acb50135bb5f20d0875b2adb2600 (patch) | |
tree | 8544610a96976ae191a1c88e93e3a2693f36f7f3 /src/3rdparty/assimp/code/ObjTools.h | |
parent | b4d6e1b6bd7cd6a9a0e87b4ea278f2e93407c15b (diff) | |
download | qt3d-99241de47266acb50135bb5f20d0875b2adb2600.tar.gz |
Build Assimp using submodule
Use same submodule as QtQuick3D
Change-Id: I0c138d1cbf5ff545438a7673ccb71a2236729377
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit ad238237b73a70867554d84b3c1762da637c210d)
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/3rdparty/assimp/code/ObjTools.h')
-rw-r--r-- | src/3rdparty/assimp/code/ObjTools.h | 307 |
1 files changed, 0 insertions, 307 deletions
diff --git a/src/3rdparty/assimp/code/ObjTools.h b/src/3rdparty/assimp/code/ObjTools.h deleted file mode 100644 index 7236cedc0..000000000 --- a/src/3rdparty/assimp/code/ObjTools.h +++ /dev/null @@ -1,307 +0,0 @@ -/* -Open Asset Import Library (assimp) ----------------------------------------------------------------------- - -Copyright (c) 2006-2017, assimp team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------- -*/ - -/** @file ObjTools.h - * @brief Some helpful templates for text parsing - */ -#ifndef OBJ_TOOLS_H_INC -#define OBJ_TOOLS_H_INC - -#include "fast_atof.h" -#include "ParsingUtils.h" -#include <vector> - -namespace Assimp { - -/** @brief Returns true, if the last entry of the buffer is reached. - * @param it Iterator of current position. - * @param end Iterator with end of buffer. - * @return true, if the end of the buffer is reached. - */ -template<class char_t> -inline bool isEndOfBuffer( char_t it, char_t end ) { - if ( it == end ) - { - return true; - } - else - { - --end; - } - return ( it == end ); -} - -/** @brief Returns next word separated by a space - * @param pBuffer Pointer to data buffer - * @param pEnd Pointer to end of buffer - * @return Pointer to next space - */ -template<class Char_T> -inline Char_T getNextWord( Char_T pBuffer, Char_T pEnd ) -{ - while ( !isEndOfBuffer( pBuffer, pEnd ) ) - { - if ( !IsSpaceOrNewLine( *pBuffer ) || IsLineEnd( *pBuffer ) ) { - //if ( *pBuffer != '\\' ) - break; - } - pBuffer++; - } - return pBuffer; -} - -/** @brief Returns pointer a next token - * @param pBuffer Pointer to data buffer - * @param pEnd Pointer to end of buffer - * @return Pointer to next token - */ -template<class Char_T> -inline Char_T getNextToken( Char_T pBuffer, Char_T pEnd ) -{ - while ( !isEndOfBuffer( pBuffer, pEnd ) ) - { - if( IsSpaceOrNewLine( *pBuffer ) ) - break; - pBuffer++; - } - return getNextWord( pBuffer, pEnd ); -} - -/** @brief Skips a line - * @param it Iterator set to current position - * @param end Iterator set to end of scratch buffer for readout - * @param uiLine Current line number in format - * @return Current-iterator with new position - */ -template<class char_t> -inline char_t skipLine( char_t it, char_t end, unsigned int &uiLine ) { - while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it ) ) { - ++it; - } - - if ( it != end ) { - ++it; - ++uiLine; - } - // fix .. from time to time there are spaces at the beginning of a material line - while ( it != end && ( *it == '\t' || *it == ' ' ) ) { - ++it; - } - - return it; -} - -/** @brief Get a name from the current line. Preserve space in the middle, - * but trim it at the end. - * @param it set to current position - * @param end set to end of scratch buffer for readout - * @param name Separated name - * @return Current-iterator with new position - */ -template<class char_t> -inline char_t getName( char_t it, char_t end, std::string &name ) -{ - name = ""; - if( isEndOfBuffer( it, end ) ) { - return end; - } - - char *pStart = &( *it ); - while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it )) { - ++it; - } - - while(IsSpace( *it ) ) { - --it; - } - // Get name - // if there is no name, and the previous char is a separator, come back to start - while (&(*it) < pStart) { - ++it; - } - std::string strName( pStart, &(*it) ); - if ( strName.empty() ) - return it; - else - name = strName; - - return it; -} - -/** @brief Get a name from the current line. Do not preserve space - * in the middle, but trim it at the end. - * @param it set to current position - * @param end set to end of scratch buffer for readout - * @param name Separated name - * @return Current-iterator with new position - */ -template<class char_t> -inline char_t getNameNoSpace( char_t it, char_t end, std::string &name ) -{ - name = ""; - if( isEndOfBuffer( it, end ) ) { - return end; - } - - char *pStart = &( *it ); - while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it ) - && !IsSpaceOrNewLine( *it ) ) { - ++it; - } - - while( isEndOfBuffer( it, end ) || IsLineEnd( *it ) - || IsSpaceOrNewLine( *it ) ) { - --it; - } - ++it; - - // Get name - // if there is no name, and the previous char is a separator, come back to start - while (&(*it) < pStart) { - ++it; - } - std::string strName( pStart, &(*it) ); - if ( strName.empty() ) - return it; - else - name = strName; - - return it; -} - -/** @brief Get next word from given line - * @param it set to current position - * @param end set to end of scratch buffer for readout - * @param pBuffer Buffer for next word - * @param length Buffer length - * @return Current-iterator with new position - */ -template<class char_t> -inline char_t CopyNextWord( char_t it, char_t end, char *pBuffer, size_t length ) -{ - size_t index = 0; - it = getNextWord<char_t>( it, end ); - while( !IsSpaceOrNewLine( *it ) && !isEndOfBuffer( it, end ) ) - { - pBuffer[index] = *it ; - index++; - if (index == length-1) - break; - ++it; - } - pBuffer[ index ] = '\0'; - return it; -} - -/** @brief Get next float from given line - * @param it set to current position - * @param end set to end of scratch buffer for readout - * @param value Separated float value. - * @return Current-iterator with new position - */ -template<class char_t> -inline char_t getFloat( char_t it, char_t end, ai_real &value ) -{ - static const size_t BUFFERSIZE = 1024; - char buffer[ BUFFERSIZE ]; - it = CopyNextWord<char_t>( it, end, buffer, BUFFERSIZE ); - value = (ai_real) fast_atof( buffer ); - - return it; -} - -/** @brief Will perform a simple tokenize. - * @param str String to tokenize. - * @param tokens Array with tokens, will be empty if no token was found. - * @param delimiters Delimiter for tokenize. - * @return Number of found token. - */ -template<class string_type> -unsigned int tokenize( const string_type& str, std::vector<string_type>& tokens, - const string_type& delimiters ) -{ - // Skip delimiters at beginning. - typename string_type::size_type lastPos = str.find_first_not_of( delimiters, 0 ); - - // Find first "non-delimiter". - typename string_type::size_type pos = str.find_first_of( delimiters, lastPos ); - while ( string_type::npos != pos || string_type::npos != lastPos ) - { - // Found a token, add it to the vector. - string_type tmp = str.substr(lastPos, pos - lastPos); - if ( !tmp.empty() && ' ' != tmp[ 0 ] ) - tokens.push_back( tmp ); - - // Skip delimiters. Note the "not_of" - lastPos = str.find_first_not_of( delimiters, pos ); - - // Find next "non-delimiter" - pos = str.find_first_of( delimiters, lastPos ); - } - - return static_cast<unsigned int>( tokens.size() ); -} - -template <class string_type> -string_type trim_whitespaces(string_type str) -{ - while (!str.empty() && IsSpace(str[0])) str.erase(0); - while (!str.empty() && IsSpace(str[str.length() - 1])) str.erase(str.length() - 1); - return str; -} - -template<class T> -bool hasLineEnd( T it, T end ) { - bool hasLineEnd( false ); - while ( !isEndOfBuffer( it, end ) ) { - it++; - if ( IsLineEnd( it ) ) { - hasLineEnd = true; - break; - } - } - - return hasLineEnd; -} - -} // Namespace Assimp - -#endif // OBJ_TOOLS_H_INC |