[Hdrflow-svn] SF.net SVN: hdrflow: [362] trunk/lib/openlibraries/src/openimagelib/il
Status: Pre-Alpha
Brought to you by:
glslang
From: <gl...@us...> - 2007-10-20 20:35:42
|
Revision: 362 http://hdrflow.svn.sourceforge.net/hdrflow/?rev=362&view=rev Author: glslang Date: 2007-10-20 13:35:32 -0700 (Sat, 20 Oct 2007) Log Message: ----------- + adds initial code for swizzling and lut-based conversion. Modified Paths: -------------- trunk/lib/openlibraries/src/openimagelib/il/il.hpp trunk/lib/openlibraries/src/openimagelib/il/il_vc8.vcproj trunk/lib/openlibraries/src/openimagelib/il/utility.cpp Added Paths: ----------- trunk/lib/openlibraries/src/openimagelib/il/lut_converter.hpp Modified: trunk/lib/openlibraries/src/openimagelib/il/il.hpp =================================================================== --- trunk/lib/openlibraries/src/openimagelib/il/il.hpp 2007-10-18 21:58:43 UTC (rev 361) +++ trunk/lib/openlibraries/src/openimagelib/il/il.hpp 2007-10-20 20:35:32 UTC (rev 362) @@ -14,6 +14,7 @@ #include <openimagelib/il/basic_image.hpp> #include <openimagelib/il/traits.hpp> #include <openimagelib/il/utility.hpp> +#include <openimagelib/il/lut_converter.hpp> namespace olib { namespace openimagelib { Modified: trunk/lib/openlibraries/src/openimagelib/il/il_vc8.vcproj =================================================================== --- trunk/lib/openlibraries/src/openimagelib/il/il_vc8.vcproj 2007-10-18 21:58:43 UTC (rev 361) +++ trunk/lib/openlibraries/src/openimagelib/il/il_vc8.vcproj 2007-10-20 20:35:32 UTC (rev 362) @@ -227,6 +227,10 @@ > </File> <File + RelativePath=".\lut_converter.hpp" + > + </File> + <File RelativePath=".\openimagelib_plugin.hpp" > </File> Added: trunk/lib/openlibraries/src/openimagelib/il/lut_converter.hpp =================================================================== --- trunk/lib/openlibraries/src/openimagelib/il/lut_converter.hpp (rev 0) +++ trunk/lib/openlibraries/src/openimagelib/il/lut_converter.hpp 2007-10-20 20:35:32 UTC (rev 362) @@ -0,0 +1,44 @@ + +// il - An image library representation. + +// Copyright (C) 2007 Goncalo Nuno M. de Carvalho +// Released under the LGPL. +// For more information, see http://www.hdrflow.com. + +#ifndef LUT_CONVERTER_INC_ +#define LUT_CONVERTER_INC_ + +#include <functional> + +namespace olib { namespace openimagelib { namespace il { + +struct byte_to_byte : public std::unary_function<unsigned char, unsigned char> +{ + typedef unsigned char value_type; + typedef unsigned char convert_type; + + convert_type operator( )( value_type v ) const + { return v; } +}; + +struct byte_to_float : public std::unary_function<unsigned char, float> +{ + typedef unsigned char value_type; + typedef float convert_type; + + convert_type operator( )( value_type v ) const + { return v / 255.0f; } +}; + +struct float_to_float : public std::unary_function<float, float> +{ + typedef float value_type; + typedef float convert_type; + + convert_type operator( )( value_type v ) const + { return v; } +}; + +} } } + +#endif Property changes on: trunk/lib/openlibraries/src/openimagelib/il/lut_converter.hpp ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/lib/openlibraries/src/openimagelib/il/utility.cpp =================================================================== --- trunk/lib/openlibraries/src/openimagelib/il/utility.cpp 2007-10-18 21:58:43 UTC (rev 361) +++ trunk/lib/openlibraries/src/openimagelib/il/utility.cpp 2007-10-20 20:35:32 UTC (rev 362) @@ -1112,7 +1112,8 @@ { L"", L"", 0, { 0, 0, 0, 0 }, 0, { 0, 0, 0, 0 } } }; -static image_type_ptr rgb_to_rgb( const image_type_ptr &src_img, const std::wstring &format ) +template<typename const_pointer, typename pointer> +image_type_ptr rgb_to_rgb( const image_type_ptr &src_img, const std::wstring &format ) { size_type width = src_img->width( ); size_type height = src_img->height( ); @@ -1802,11 +1803,11 @@ else if ( src_pf == L"r8g8b8" ) { if ( dst_pf == L"b8g8r8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"r8g8b8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"b8g8r8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 3, 0, 1, 2 ); else if ( dst_pf == L"yuv422" ) @@ -1822,11 +1823,11 @@ else if ( src_pf == L"b8g8r8" ) { if ( dst_pf == L"r8g8b8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"r8g8b8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"b8g8r8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 3, 2, 1, 0 ); else if ( dst_pf == L"yuv422" ) @@ -1837,11 +1838,11 @@ else if ( src_pf == L"r8g8b8a8" ) { if ( dst_pf == L"r8g8b8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"b8g8r8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"b8g8r8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 4, 0, 1, 2 ); else if ( dst_pf == L"yuv422" ) @@ -1857,11 +1858,11 @@ else if ( src_pf == L"b8g8r8a8" ) { if ( dst_pf == L"r8g8b8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"r8g8b8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"b8g8r8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 4, 2, 1, 0 ); else if ( dst_pf == L"yuv422" ) @@ -1874,11 +1875,11 @@ else if ( src_pf == L"a8r8g8b8" ) { if( dst_pf == L"a8b8g8r8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"b8g8r8") - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"b8g8r8a8") - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 4, 1, 2, 3 ); else if ( dst_pf == L"yuv422" ) @@ -1889,11 +1890,11 @@ else if( src_pf == L"a8b8g8r8" ) { if( dst_pf == L"b8g8r8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"r8g8b8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"r8g8b8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if ( dst_pf == L"yuv444" ) return rgb_to_yuv444( src, dst_pf, 4, 3, 2, 1 ); else if ( dst_pf == L"yuv422" ) @@ -1904,12 +1905,12 @@ else if( src_pf == L"r8g8b8log" ) { if( dst_pf == L"b8g8r8a8" ) - return convert_log_to_linear( rgb_to_rgb( src, dst_pf ) ); + return convert_log_to_linear( rgb_to_rgb<const_pointer, pointer>( src, dst_pf ) ); } else if( src_pf == L"r8g8b8a8log" ) { if( dst_pf == L"b8g8r8a8" ) - return convert_log_to_linear( rgb_to_rgb( src, dst_pf ) ); + return convert_log_to_linear( rgb_to_rgb<const_pointer, pointer>( src, dst_pf ) ); } else if( src_pf == L"r10g10b10" ) { @@ -2057,11 +2058,11 @@ else if( src_pf == L"l8a8" ) { if( dst_pf == L"b8g8r8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"b8g8r8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); else if( dst_pf == L"r8g8b8a8" ) - return rgb_to_rgb( src, dst_pf ); + return rgb_to_rgb<const_pointer, pointer>( src, dst_pf ); } else if( src_pf == L"l8a8p" ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |