00001 00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) 00004 // Created : 2007-06-21 00005 // Updated : 2009-06-05 00006 // Licence : This source is under MIT License 00007 // File : glm/gtx/color_cast.hpp 00009 // Dependency: 00010 // - GLM core 00011 // - GLM_GTX_number_precision 00013 00014 #ifndef glm_gtx_color_cast 00015 #define glm_gtx_color_cast 00016 00017 // Dependency: 00018 #include "../glm.hpp" 00019 #include "../gtx/number_precision.hpp" 00020 00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) 00022 # pragma message("GLM: GLM_GTX_color_cast extension included") 00023 #endif 00024 00025 namespace glm{ 00026 namespace gtx{ 00027 namespace color_cast 00028 { 00029 using namespace gtx::number_precision; 00030 00033 00036 template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a); 00037 00040 template <typename valType> gtc::type_precision::uint16 u16channel_cast(valType a); 00041 00042 template <typename T> gtc::type_precision::uint32 u32_rgbx_cast(const detail::tvec3<T>& c); 00043 template <typename T> gtc::type_precision::uint32 u32_xrgb_cast(const detail::tvec3<T>& c); 00044 template <typename T> gtc::type_precision::uint32 u32_bgrx_cast(const detail::tvec3<T>& c); 00045 template <typename T> gtc::type_precision::uint32 u32_xbgr_cast(const detail::tvec3<T>& c); 00046 00047 template <typename T> gtc::type_precision::uint32 u32_rgba_cast(const detail::tvec4<T>& c); 00048 template <typename T> gtc::type_precision::uint32 u32_argb_cast(const detail::tvec4<T>& c); 00049 template <typename T> gtc::type_precision::uint32 u32_bgra_cast(const detail::tvec4<T>& c); 00050 template <typename T> gtc::type_precision::uint32 u32_abgr_cast(const detail::tvec4<T>& c); 00051 00052 template <typename T> gtc::type_precision::uint64 u64_rgbx_cast(const detail::tvec3<T>& c); 00053 template <typename T> gtc::type_precision::uint64 u64_xrgb_cast(const detail::tvec3<T>& c); 00054 template <typename T> gtc::type_precision::uint64 u64_bgrx_cast(const detail::tvec3<T>& c); 00055 template <typename T> gtc::type_precision::uint64 u64_xbgr_cast(const detail::tvec3<T>& c); 00056 00057 template <typename T> gtc::type_precision::uint64 u64_rgba_cast(const detail::tvec4<T>& c); 00058 template <typename T> gtc::type_precision::uint64 u64_argb_cast(const detail::tvec4<T>& c); 00059 template <typename T> gtc::type_precision::uint64 u64_bgra_cast(const detail::tvec4<T>& c); 00060 template <typename T> gtc::type_precision::uint64 u64_abgr_cast(const detail::tvec4<T>& c); 00061 00062 template <typename T> gtx::number_precision::f16vec1 f16_channel_cast(T a); 00063 00064 template <typename T> gtc::type_precision::f16vec3 f16_rgbx_cast(T c); 00065 template <typename T> gtc::type_precision::f16vec3 f16_xrgb_cast(T c); 00066 template <typename T> gtc::type_precision::f16vec3 f16_bgrx_cast(T c); 00067 template <typename T> gtc::type_precision::f16vec3 f16_xbgr_cast(T c); 00068 00069 template <typename T> gtc::type_precision::f16vec4 f16_rgba_cast(T c); 00070 template <typename T> gtc::type_precision::f16vec4 f16_argb_cast(T c); 00071 template <typename T> gtc::type_precision::f16vec4 f16_bgra_cast(T c); 00072 template <typename T> gtc::type_precision::f16vec4 f16_abgr_cast(T c); 00073 00074 template <typename T> gtx::number_precision::f32vec1 f32_channel_cast(T a); 00075 00076 template <typename T> gtc::type_precision::f32vec3 f32_rgbx_cast(T c); 00077 template <typename T> gtc::type_precision::f32vec3 f32_xrgb_cast(T c); 00078 template <typename T> gtc::type_precision::f32vec3 f32_bgrx_cast(T c); 00079 template <typename T> gtc::type_precision::f32vec3 f32_xbgr_cast(T c); 00080 00081 template <typename T> gtc::type_precision::f32vec4 f32_rgba_cast(T c); 00082 template <typename T> gtc::type_precision::f32vec4 f32_argb_cast(T c); 00083 template <typename T> gtc::type_precision::f32vec4 f32_bgra_cast(T c); 00084 template <typename T> gtc::type_precision::f32vec4 f32_abgr_cast(T c); 00085 00086 template <typename T> gtx::number_precision::f64vec1 f64_channel_cast(T a); 00087 00088 template <typename T> gtc::type_precision::f64vec3 f64_rgbx_cast(T c); 00089 template <typename T> gtc::type_precision::f64vec3 f64_xrgb_cast(T c); 00090 template <typename T> gtc::type_precision::f64vec3 f64_bgrx_cast(T c); 00091 template <typename T> gtc::type_precision::f64vec3 f64_xbgr_cast(T c); 00092 00093 template <typename T> gtc::type_precision::f64vec4 f64_rgba_cast(T c); 00094 template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c); 00095 template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c); 00096 template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c); 00097 00099 }//namespace color_space 00100 }//namespace gtx 00101 }//namespace glm 00102 00103 #include "color_cast.inl" 00104 00105 namespace glm{using namespace gtx::color_cast;} 00106 00107 #endif//glm_gtx_color_cast