closure.cc 945 B

1234567891011121314151617181920212223242526
  1. #include "closure.h"
  2. #ifdef HAVE_JPEG
  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. boolean JpegClosure::empty_output_buffer(j_compress_ptr cinfo) {
  10. JpegClosure* closure = (JpegClosure*)cinfo->client_data;
  11. size_t currentSize = closure->vec.size();
  12. closure->vec.resize(currentSize * 1.5);
  13. closure->jpeg_dest_mgr->next_output_byte = &closure->vec[currentSize];
  14. closure->jpeg_dest_mgr->free_in_buffer = closure->vec.size() - currentSize;
  15. return true;
  16. }
  17. void JpegClosure::term_destination(j_compress_ptr cinfo) {
  18. JpegClosure* closure = (JpegClosure*)cinfo->client_data;
  19. size_t finalSize = closure->vec.size() - closure->jpeg_dest_mgr->free_in_buffer;
  20. closure->vec.resize(finalSize);
  21. }
  22. #endif