2
0
mirror of https://github.com/boostorg/gil.git synced 2026-02-18 14:12:10 +00:00

Adopted test code and documentation to scanline_read_iterator interface changes.

[SVN r82990]
This commit is contained in:
Christian Henning
2013-02-19 01:05:50 +00:00
committed by Stefan Seefeld
parent e8da58de6f
commit 9e8c13832c
2 changed files with 33 additions and 34 deletions

View File

@@ -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.

View File

@@ -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() );