$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Christian Henning (chhenning_at_[hidden])
Date: 2006-11-10 10:05:26
Hi there, I'm playing around with indexed images in GIL. My starting
point was an email from Lubomir during the review.
Here is what I have:
struct indexed_pixel_deref_fn
{
typedef pixel_traits<rgb8_pixel_t>::reference reference;
typedef pixel_traits<rgb8_pixel_t>::const_reference const_reference;
typedef const_reference const_t;
typedef reference result_type;
typedef rgb8_pixel_t value_type;
static const bool is_mutable = false;
indexed_pixel_deref_fn( rgb8_pixel_t* table ) : _table( table ) {}
rgb8_pixel_t operator()( const gray8_pixel_t& index ) const
{
return _table[index[0]];
}
rgb8_pixel_t* _table;
};
typedef gray8_view_t::add_deref<indexed_pixel_deref_fn> indexed_factory_t;
typedef indexed_factory_t::type rgb8_indexed_view_t;
int _tmain(int argc, _TCHAR* argv[])
{
// create color lookup table
rgb8_pixel_t rgb_black( 0, 0, 0 );
rgb8_pixel_t rgb_red( 255, 0, 0 );
rgb8_pixel_t my_index_table[2];
my_index_table[0] = rgb_red;
my_index_table[1] = rgb_black;
// create indexed image
gray8_image_t indexed_img( 10,10 );
fill_pixels( view( indexed_img ), unsigned char( 0 ) );
rgb8_indexed_view_t indexed_view= indexed_factory_t::make( view(
indexed_img )
,
indexed_pixel_deref_fn( &my_index_table[0] ));
// color convert the indexed image into an rgb8 image
rgb8_image_t rgb_img( indexed_img.dimensions() );
copy_pixels( color_converted_view<rgb8_pixel_t>( view( indexed_img ))
, view( rgb_img ) );
// save image - it should be all red
jpeg_write_view( "test.jpg", const_view( rgb_img ));
return 0;
}
I'm not sure if all these typedefs in the deref functor class are
correct. Esspecially, I don't know what the const_t is for.
So, my problem is the operator() in my deref isn't called at all. That
shows me there is something wrong.
Anyone, any idea why?
Thanks,
Christian