diff --git a/io/doc/io.qbk b/io/doc/io.qbk index 603698701..603d91336 100644 --- a/io/doc/io.qbk +++ b/io/doc/io.qbk @@ -266,37 +266,32 @@ through the image. The following code sample shows the usage: , FormatTag > reader_t; - // create the reader object and read the image's header information reader_t reader = make_scanline_reader( file_name, FormatTag() ); - // create an image Image dst( reader._info._width, reader._info._height ); + vector< byte_t > buffer( reader._scanline_length ); - // create a scanline - byte_t* buffer = new byte_t[ reader._scanline_length ]; + typedef scanline_read_iterator< reader_t > iterator_t; - // setup two iterators - auto it = scanline_read_iterator< reader_t >( reader, buffer ); - auto end = scanline_read_iterator< reader_t >(); + iterator_t it = iterator_t( reader, &buffer.front() ); + iterator_t end = iterator_t(); - int row = 0; - - // loop through the image - while( it != end ) + for( int row = 0; it != end; ++it, ++row ) { - // read the next scanline - *it; - - // copy scanline into image - copy_pixels( interleaved_view( reader._info._width, 1, ( typename Image::view_t::x_iterator ) buffer, reader._scanline_length ) - , subimage_view( view( dst ), 0, row, reader._info._width, 1 ) + copy_pixels( interleaved_view( reader._info._width + , 1 + , ( typename Image::view_t::x_iterator ) *it + , reader._scanline_length + ) + , subimage_view( view( dst ) + , 0 + , row + , reader._info._width + , 1 + ) ); - - ++row; } - delete[] buffer; - There are many ways to travese an image but for as of now only by scanline is supported. diff --git a/io/test/scanline_read_test.hpp b/io/test/scanline_read_test.hpp index 01c3923aa..21afee6bd 100644 --- a/io/test/scanline_read_test.hpp +++ b/io/test/scanline_read_test.hpp @@ -22,25 +22,29 @@ void test_scanline_reader( const char* file_name ) reader_t reader = make_scanline_reader( file_name, FormatTag() ); Image dst( reader._info._width, reader._info._height ); - byte_t* buffer = new byte_t[ reader._scanline_length ]; + vector< byte_t > buffer( reader._scanline_length ); - scanline_read_iterator< reader_t > it = scanline_read_iterator< reader_t >( reader, buffer ); - scanline_read_iterator< reader_t > end = scanline_read_iterator< reader_t >(); + typedef scanline_read_iterator< reader_t > iterator_t; - int row = 0; - while( it != end ) + iterator_t it = iterator_t( reader, &buffer.front() ); + iterator_t end = iterator_t(); + + for( int row = 0; it != end; ++it, ++row ) { - *it; - - copy_pixels( interleaved_view( reader._info._width, 1, ( typename Image::view_t::x_iterator ) buffer, reader._scanline_length ) - , subimage_view( view( dst ), 0, row, reader._info._width, 1 ) + copy_pixels( interleaved_view( reader._info._width + , 1 + , ( typename Image::view_t::x_iterator ) *it + , reader._scanline_length + ) + , subimage_view( view( dst ) + , 0 + , row + , reader._info._width + , 1 + ) ); - - ++row; } - delete[] buffer; - //compare Image img; read_image( file_name, img, FormatTag() );