UNPKG

920 Btext/x-cView Raw
1#include "closure.h"
2
3void 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
10boolean 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
19void 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}