示例#1
0
// 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 );
	}
}
示例#2
0
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 );
}