Boost logo

Boost :

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?


Boost list run by bdawes at, gregod at, cpdaniel at, john at