1 | #include "closure.h"
|
2 |
|
3 | void JpegClosure::init_destination(j_compress_ptr cinfo) {
|
4 | JpegClosure* closure = (JpegClosure*)cinfo->client_data;
|
5 | closure->vec.resize(PAGE_SIZE);
|
6 | closure->jpeg_dest_mgr->next_output_byte = &closure->vec[0];
|
7 | closure->jpeg_dest_mgr->free_in_buffer = closure->vec.size();
|
8 | }
|
9 |
|
10 | boolean JpegClosure::empty_output_buffer(j_compress_ptr cinfo) {
|
11 | JpegClosure* closure = (JpegClosure*)cinfo->client_data;
|
12 | size_t currentSize = closure->vec.size();
|
13 | closure->vec.resize(currentSize * 1.5);
|
14 | closure->jpeg_dest_mgr->next_output_byte = &closure->vec[currentSize];
|
15 | closure->jpeg_dest_mgr->free_in_buffer = closure->vec.size() - currentSize;
|
16 | return true;
|
17 | }
|
18 |
|
19 | void JpegClosure::term_destination(j_compress_ptr cinfo) {
|
20 | JpegClosure* closure = (JpegClosure*)cinfo->client_data;
|
21 | size_t finalSize = closure->vec.size() - closure->jpeg_dest_mgr->free_in_buffer;
|
22 | closure->vec.resize(finalSize);
|
23 | }
|