vrshoot
diff libs/assimp/assimp/color4.inl @ 0:b2f14e535253
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 01 Feb 2014 19:58:19 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/libs/assimp/assimp/color4.inl Sat Feb 01 19:58:19 2014 +0200 1.3 @@ -0,0 +1,165 @@ 1.4 +/* 1.5 +--------------------------------------------------------------------------- 1.6 +Open Asset Import Library (assimp) 1.7 +--------------------------------------------------------------------------- 1.8 + 1.9 +Copyright (c) 2006-2012, assimp team 1.10 + 1.11 +All rights reserved. 1.12 + 1.13 +Redistribution and use of this software in source and binary forms, 1.14 +with or without modification, are permitted provided that the following 1.15 +conditions are met: 1.16 + 1.17 +* Redistributions of source code must retain the above 1.18 + copyright notice, this list of conditions and the 1.19 + following disclaimer. 1.20 + 1.21 +* Redistributions in binary form must reproduce the above 1.22 + copyright notice, this list of conditions and the 1.23 + following disclaimer in the documentation and/or other 1.24 + materials provided with the distribution. 1.25 + 1.26 +* Neither the name of the assimp team, nor the names of its 1.27 + contributors may be used to endorse or promote products 1.28 + derived from this software without specific prior 1.29 + written permission of the assimp team. 1.30 + 1.31 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1.32 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1.33 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1.34 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1.35 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.36 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.37 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1.38 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1.39 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1.40 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.41 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.42 +--------------------------------------------------------------------------- 1.43 +*/ 1.44 + 1.45 +/** @file aiColor4D.inl 1.46 + * @brief Inline implementation of aiColor4t<TReal> operators 1.47 + */ 1.48 +#ifndef AI_COLOR4D_INL_INC 1.49 +#define AI_COLOR4D_INL_INC 1.50 + 1.51 +#ifdef __cplusplus 1.52 +#include "color4.h" 1.53 + 1.54 +// ------------------------------------------------------------------------------------------------ 1.55 +template <typename TReal> 1.56 +AI_FORCE_INLINE const aiColor4t<TReal>& aiColor4t<TReal>::operator += (const aiColor4t<TReal>& o) { 1.57 + r += o.r; g += o.g; b += o.b; a += o.a; 1.58 + return *this; 1.59 +} 1.60 +// ------------------------------------------------------------------------------------------------ 1.61 +template <typename TReal> 1.62 +AI_FORCE_INLINE const aiColor4t<TReal>& aiColor4t<TReal>::operator -= (const aiColor4t<TReal>& o) { 1.63 + r -= o.r; g -= o.g; b -= o.b; a -= o.a; 1.64 + return *this; 1.65 +} 1.66 +// ------------------------------------------------------------------------------------------------ 1.67 +template <typename TReal> 1.68 +AI_FORCE_INLINE const aiColor4t<TReal>& aiColor4t<TReal>::operator *= (TReal f) { 1.69 + r *= f; g *= f; b *= f; a *= f; 1.70 + return *this; 1.71 +} 1.72 +// ------------------------------------------------------------------------------------------------ 1.73 +template <typename TReal> 1.74 +AI_FORCE_INLINE const aiColor4t<TReal>& aiColor4t<TReal>::operator /= (TReal f) { 1.75 + r /= f; g /= f; b /= f; a /= f; 1.76 + return *this; 1.77 +} 1.78 +// ------------------------------------------------------------------------------------------------ 1.79 +template <typename TReal> 1.80 +AI_FORCE_INLINE TReal aiColor4t<TReal>::operator[](unsigned int i) const { 1.81 + return *(&r + i); 1.82 +} 1.83 +// ------------------------------------------------------------------------------------------------ 1.84 +template <typename TReal> 1.85 +AI_FORCE_INLINE TReal& aiColor4t<TReal>::operator[](unsigned int i) { 1.86 + return *(&r + i); 1.87 +} 1.88 +// ------------------------------------------------------------------------------------------------ 1.89 +template <typename TReal> 1.90 +AI_FORCE_INLINE bool aiColor4t<TReal>::operator== (const aiColor4t<TReal>& other) const { 1.91 + return r == other.r && g == other.g && b == other.b && a == other.a; 1.92 +} 1.93 +// ------------------------------------------------------------------------------------------------ 1.94 +template <typename TReal> 1.95 +AI_FORCE_INLINE bool aiColor4t<TReal>::operator!= (const aiColor4t<TReal>& other) const { 1.96 + return r != other.r || g != other.g || b != other.b || a != other.a; 1.97 +} 1.98 +// ------------------------------------------------------------------------------------------------ 1.99 +template <typename TReal> 1.100 +AI_FORCE_INLINE aiColor4t<TReal> operator + (const aiColor4t<TReal>& v1, const aiColor4t<TReal>& v2) { 1.101 + return aiColor4t<TReal>( v1.r + v2.r, v1.g + v2.g, v1.b + v2.b, v1.a + v2.a); 1.102 +} 1.103 +// ------------------------------------------------------------------------------------------------ 1.104 +template <typename TReal> 1.105 +AI_FORCE_INLINE aiColor4t<TReal> operator - (const aiColor4t<TReal>& v1, const aiColor4t<TReal>& v2) { 1.106 + return aiColor4t<TReal>( v1.r - v2.r, v1.g - v2.g, v1.b - v2.b, v1.a - v2.a); 1.107 +} 1.108 +// ------------------------------------------------------------------------------------------------ 1.109 +template <typename TReal> 1.110 +AI_FORCE_INLINE aiColor4t<TReal> operator * (const aiColor4t<TReal>& v1, const aiColor4t<TReal>& v2) { 1.111 + return aiColor4t<TReal>( v1.r * v2.r, v1.g * v2.g, v1.b * v2.b, v1.a * v2.a); 1.112 +} 1.113 +// ------------------------------------------------------------------------------------------------ 1.114 +template <typename TReal> 1.115 +AI_FORCE_INLINE aiColor4t<TReal> operator / (const aiColor4t<TReal>& v1, const aiColor4t<TReal>& v2) { 1.116 + return aiColor4t<TReal>( v1.r / v2.r, v1.g / v2.g, v1.b / v2.b, v1.a / v2.a); 1.117 +} 1.118 +// ------------------------------------------------------------------------------------------------ 1.119 +template <typename TReal> 1.120 +AI_FORCE_INLINE aiColor4t<TReal> operator * ( TReal f, const aiColor4t<TReal>& v) { 1.121 + return aiColor4t<TReal>( f*v.r, f*v.g, f*v.b, f*v.a); 1.122 +} 1.123 +// ------------------------------------------------------------------------------------------------ 1.124 +template <typename TReal> 1.125 +AI_FORCE_INLINE aiColor4t<TReal> operator * ( const aiColor4t<TReal>& v, TReal f) { 1.126 + return aiColor4t<TReal>( f*v.r, f*v.g, f*v.b, f*v.a); 1.127 +} 1.128 +// ------------------------------------------------------------------------------------------------ 1.129 +template <typename TReal> 1.130 +AI_FORCE_INLINE aiColor4t<TReal> operator / ( const aiColor4t<TReal>& v, TReal f) { 1.131 + return v * (1/f); 1.132 +} 1.133 +// ------------------------------------------------------------------------------------------------ 1.134 +template <typename TReal> 1.135 +AI_FORCE_INLINE aiColor4t<TReal> operator / ( TReal f,const aiColor4t<TReal>& v) { 1.136 + return aiColor4t<TReal>(f,f,f,f)/v; 1.137 +} 1.138 +// ------------------------------------------------------------------------------------------------ 1.139 +template <typename TReal> 1.140 +AI_FORCE_INLINE aiColor4t<TReal> operator + ( const aiColor4t<TReal>& v, TReal f) { 1.141 + return aiColor4t<TReal>( f+v.r, f+v.g, f+v.b, f+v.a); 1.142 +} 1.143 +// ------------------------------------------------------------------------------------------------ 1.144 +template <typename TReal> 1.145 +AI_FORCE_INLINE aiColor4t<TReal> operator - ( const aiColor4t<TReal>& v, TReal f) { 1.146 + return aiColor4t<TReal>( v.r-f, v.g-f, v.b-f, v.a-f); 1.147 +} 1.148 +// ------------------------------------------------------------------------------------------------ 1.149 +template <typename TReal> 1.150 +AI_FORCE_INLINE aiColor4t<TReal> operator + ( TReal f, const aiColor4t<TReal>& v) { 1.151 + return aiColor4t<TReal>( f+v.r, f+v.g, f+v.b, f+v.a); 1.152 +} 1.153 +// ------------------------------------------------------------------------------------------------ 1.154 +template <typename TReal> 1.155 +AI_FORCE_INLINE aiColor4t<TReal> operator - ( TReal f, const aiColor4t<TReal>& v) { 1.156 + return aiColor4t<TReal>( f-v.r, f-v.g, f-v.b, f-v.a); 1.157 +} 1.158 + 1.159 +// ------------------------------------------------------------------------------------------------ 1.160 +template <typename TReal> 1.161 +inline bool aiColor4t<TReal> :: IsBlack() const { 1.162 + // The alpha component doesn't care here. black is black. 1.163 + static const TReal epsilon = 10e-3f; 1.164 + return fabs( r ) < epsilon && fabs( g ) < epsilon && fabs( b ) < epsilon; 1.165 +} 1.166 + 1.167 +#endif // __cplusplus 1.168 +#endif // AI_VECTOR3D_INL_INC