// Reverses the order of the rows in the image void LLImageRaw::verticalFlip() { S32 row_bytes = getWidth() * getComponents(); llassert(row_bytes > 0); std::vector<U8> line_buffer(row_bytes); S32 mid_row = getHeight() / 2; for( S32 row = 0; row < mid_row; row++ ) { U8* row_a_data = getData() + row * row_bytes; U8* row_b_data = getData() + (getHeight() - 1 - row) * row_bytes; memcpy( &line_buffer[0], row_a_data, row_bytes ); memcpy( row_a_data, row_b_data, row_bytes ); memcpy( row_b_data, &line_buffer[0], row_bytes ); } }
void linebuf_test ( void ) { struct line_buffer linebuf; const char *data = data1; size_t len = ( sizeof ( data1 ) - 1 /* be mean; strip the NUL */ ); ssize_t frag_len; char *line; memset ( &linebuf, 0, sizeof ( linebuf ) ); while ( len ) { frag_len = line_buffer ( &linebuf, data, len ); if ( frag_len < 0 ) { printf ( "line_buffer() failed: %s\n", strerror ( frag_len ) ); return; } data += frag_len; len -= frag_len; if ( ( line = buffered_line ( &linebuf ) ) ) printf ( "\"%s\"\n", line ); } empty_line_buffer ( &linebuf ); }