diff --git a/rotation.cpp b/rotation.cpp index 0a169f5..f00c02e 100644 --- a/rotation.cpp +++ b/rotation.cpp @@ -869,6 +869,36 @@ bool check_trigo() return true; } +bool check_00(string const& path) +{ + Image const src(path); + Image const* rotated = rotate(src, 0); + + for (unsigned int y = 0; y < rotated->height; ++y) + { + for (unsigned int x = 0; x < rotated->width; ++x) + { + unsigned rot_index = (y * rotated->width + x) * rotated->pixel_size; + unsigned src_index = (y * src.width + x) * src.pixel_size; + if (memcmp(&rotated->buffer[rot_index], &src.buffer[src_index], src.pixel_size * sizeof (pvalue_t)) != 0) + { + Point r(x, y); + Point s(x, y); + LOG << "R" << r << " != S" << s << endl; + LOG << "R: " << rot_index << " != S: " << src_index << endl; + LOG << rotated->buffer[rot_index] << " != " << src.buffer[src_index] << endl; + LOG << "R dim: " << rotated->width << " x " << rotated->height << endl; + LOG << "S dim: " << src.width << " x " << src.height << endl; + return false; + } + } + } + + delete rotated; + + return true; +} + bool check_90(string const& path) { Image const src(path); @@ -926,7 +956,7 @@ int main(int argc, char* argv[]) return 1; } - bool perform_check = false; + bool perform_check = true; if (perform_check) { @@ -936,6 +966,12 @@ int main(int argc, char* argv[]) if (!check_trigo()) return 1; + if (!check_00(argv[1])) + { + ERRLOG << "0 degree check failed" << endl << endl; + return 1; + } + if (!check_90(argv[1])) { ERRLOG << "90 degrees check failed" << endl << endl;