Mercurial > hg > orthanc
diff Core/ImageFormats/JpegWriter.cpp @ 1604:1f5d6a2f9638
JpegReader
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 01 Sep 2015 14:57:13 +0200 |
parents | 292bce3f54ed |
children |
line wrap: on
line diff
--- a/Core/ImageFormats/JpegWriter.cpp Tue Sep 01 13:08:41 2015 +0200 +++ b/Core/ImageFormats/JpegWriter.cpp Tue Sep 01 14:57:13 2015 +0200 @@ -30,77 +30,18 @@ **/ +#include "../PrecompiledHeaders.h" #include "JpegWriter.h" #include "../OrthancException.h" #include "../Logging.h" -#include <jpeglib.h> -#include <setjmp.h> -#include <stdio.h> +#include "JpegErrorManager.h" + #include <vector> -#include <string.h> -#include <stdlib.h> namespace Orthanc { - namespace - { - class ErrorManager - { - private: - struct jpeg_error_mgr pub; /* "public" fields */ - jmp_buf setjmp_buffer; /* for return to caller */ - std::string message; - - static void OutputMessage(j_common_ptr cinfo) - { - char message[JMSG_LENGTH_MAX]; - (*cinfo->err->format_message) (cinfo, message); - - ErrorManager* that = reinterpret_cast<ErrorManager*>(cinfo->err); - that->message = std::string(message); - } - - - static void ErrorExit(j_common_ptr cinfo) - { - (*cinfo->err->output_message) (cinfo); - - ErrorManager* that = reinterpret_cast<ErrorManager*>(cinfo->err); - longjmp(that->setjmp_buffer, 1); - } - - - public: - ErrorManager() - { - memset(&pub, 0, sizeof(struct jpeg_error_mgr)); - memset(&setjmp_buffer, 0, sizeof(jmp_buf)); - - jpeg_std_error(&pub); - pub.error_exit = ErrorExit; - pub.output_message = OutputMessage; - } - - struct jpeg_error_mgr* GetPublic() - { - return &pub; - } - - jmp_buf& GetJumpBuffer() - { - return setjmp_buffer; - } - - const std::string& GetMessage() const - { - return message; - } - }; - } - - static void GetLines(std::vector<uint8_t*>& lines, unsigned int height, unsigned int pitch, @@ -188,7 +129,7 @@ struct jpeg_compress_struct cinfo; memset(&cinfo, 0, sizeof(struct jpeg_compress_struct)); - ErrorManager jerr; + Internals::JpegErrorManager jerr; cinfo.err = jerr.GetPublic(); if (setjmp(jerr.GetJumpBuffer())) @@ -227,7 +168,7 @@ struct jpeg_compress_struct cinfo; memset(&cinfo, 0, sizeof(struct jpeg_compress_struct)); - ErrorManager jerr; + Internals::JpegErrorManager jerr; unsigned char* data = NULL; unsigned long size;