Add print_padding_table().

master
Fabien Freling 2014-08-05 22:23:46 +02:00
parent 8febb99bf9
commit b008cccb95
1 changed files with 42 additions and 1 deletions

View File

@ -199,7 +199,6 @@ uint16_t* generate_padding_table(Image const& src,
// TODO: we should be able to infer these values from qdx and qdy
DPoint const top_left_grid = get_mapped_point(src, Point(0, 0), padding_rotation);
Point const top_left = convert_img_coord(rotated, top_left_grid);
cout << "Padding top left: " << top_left << endl;
DPoint const top_right_grid = get_mapped_point(src, Point(src.width - 1, 0), padding_rotation);
DPoint const top_right = convert_img_coord_precision(rotated, top_right_grid);
@ -233,6 +232,44 @@ uint16_t* generate_padding_table(Image const& src,
return padding_table;
}
void print_padding_table(uint16_t const* padding_table,
unsigned int size)
{
cout << "Padding table:" << endl;
for (unsigned int i = 0; i < size; ++i)
{
int left_padding = padding_table[i];
int right_padding = padding_table[size - 1 - i];
int core_pixels = size - left_padding - right_padding;
if (core_pixels < 0)
{
cout << "Too much padding at line " << i << endl;
cout << " left padding = " << left_padding << endl;
cout << " right padding = " << right_padding << endl;
cout << " max size = " << size << endl;
abort();
}
cout << " [";
for (int j = 0; j < left_padding; ++j)
cout << " ";
for (int j = 0; j < core_pixels; ++j)
cout << "x";
for (int j = 0; j < right_padding; ++j)
cout << " ";
cout << "]" << endl;
}
}
//
//
// Image rotation
//
inline
void rotate_pixel(Image const& src,
Point const& src_rotated_point,
@ -343,6 +380,10 @@ Image* rotate(Image const& src, double angle)
Point src_rotated_origin(rot_origin_in_src.x * q_pos,
rot_origin_in_src.y * q_pos);
// Padding
uint16_t* padding_table = generate_padding_table(src, *rotated, rotation, q_pos);
//print_padding_table(padding_table, border_table, height, true);
for (int y = 0; y < height; ++y)
{
Point src_rotated_point = src_rotated_origin;