Tyler Chatow | e024145 | 2019-03-08 21:07:50 -0800 | [diff] [blame] | 1 | #include "flip_image.h" |
| 2 | |
Brian Silverman | 4c7235a | 2021-11-17 19:04:37 -0800 | [diff] [blame] | 3 | #ifdef __clang__ |
| 4 | // CImg has undefined behavior that Clang warns about. Just suppress the |
| 5 | // warnings, somebody should evaluate these more carefully if this code is used |
| 6 | // again. |
| 7 | #pragma clang diagnostic ignored "-Wvarargs" |
| 8 | #pragma clang diagnostic ignored "-Wnull-pointer-arithmetic" |
| 9 | #pragma clang diagnostic ignored "-Wchar-subscripts" |
| 10 | #pragma clang diagnostic ignored "-Wtautological-unsigned-char-zero-compare" |
| 11 | #endif |
| 12 | |
Tyler Chatow | e024145 | 2019-03-08 21:07:50 -0800 | [diff] [blame] | 13 | #define cimg_display 0 |
| 14 | #define cimg_use_jpeg |
| 15 | #define cimg_plugin "plugins/jpeg_buffer.h" |
| 16 | #include "third_party/cimg/CImg.h" |
| 17 | |
| 18 | void flip_image(const char *input, const int input_size, JOCTET *buffer, |
Austin Schuh | 9c03a53 | 2019-03-17 18:14:45 -0700 | [diff] [blame] | 19 | unsigned int *buffer_size, bool flip) { |
Tyler Chatow | e024145 | 2019-03-08 21:07:50 -0800 | [diff] [blame] | 20 | ::cimg_library::CImg<unsigned char> image; |
| 21 | image.load_jpeg_buffer((JOCTET *)(input), input_size); |
Austin Schuh | 9c03a53 | 2019-03-17 18:14:45 -0700 | [diff] [blame] | 22 | if (flip) { |
Tyler Chatow | d3384c2 | 2019-04-04 16:38:32 -0700 | [diff] [blame] | 23 | image.rotate(90); |
| 24 | } else { |
| 25 | image.rotate(270); |
Austin Schuh | 9c03a53 | 2019-03-17 18:14:45 -0700 | [diff] [blame] | 26 | } |
Tyler Chatow | e024145 | 2019-03-08 21:07:50 -0800 | [diff] [blame] | 27 | |
| 28 | image.save_jpeg_buffer(buffer, *buffer_size, 80); |
| 29 | } |