| /* | |
| * Copyright 2015 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkJpegDecoderMgr_DEFINED | |
| #define SkJpegDecoderMgr_DEFINED | |
| #include "SkCodec.h" | |
| #include "SkCodecPriv.h" | |
| #include <stdio.h> | |
| #include "SkJpegUtility.h" | |
| extern "C" { | |
| #include "jpeglib.h" | |
| } | |
| class JpegDecoderMgr : SkNoncopyable { | |
| public: | |
| /* | |
| * Print a useful error message and return false | |
| */ | |
| bool returnFalse(const char caller[]); | |
| /* | |
| * Print a useful error message and return a decode failure | |
| */ | |
| SkCodec::Result returnFailure(const char caller[], SkCodec::Result result); | |
| /* | |
| * Create the decode manager | |
| * Does not take ownership of stream | |
| */ | |
| JpegDecoderMgr(SkStream* stream); | |
| /* | |
| * Initialize decompress struct | |
| * Initialize the source manager | |
| */ | |
| void init(); | |
| /* | |
| * Returns true if it successfully sets outColor to the encoded color, | |
| * and false otherwise. | |
| */ | |
| bool getEncodedColor(SkEncodedInfo::Color* outColor); | |
| /* | |
| * Free memory used by the decode manager | |
| */ | |
| ~JpegDecoderMgr(); | |
| /* | |
| * Get the skjpeg_error_mgr in order to set an error return jmp_buf | |
| */ | |
| skjpeg_error_mgr* errorMgr() { return &fErrorMgr; } | |
| /* | |
| * Get function for the decompress info struct | |
| */ | |
| jpeg_decompress_struct* dinfo() { return &fDInfo; } | |
| private: | |
| jpeg_decompress_struct fDInfo; | |
| skjpeg_source_mgr fSrcMgr; | |
| skjpeg_error_mgr fErrorMgr; | |
| jpeg_progress_mgr fProgressMgr; | |
| bool fInit; | |
| }; | |
| #endif |