/* * 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 "SkJpegUtility.h" #include "SkSwizzler.h" #include "SkTemplates.h" // stdio is needed for jpeglib #include <stdio.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(); /* * Recommend a color type based on the encoded format */ SkColorType getColorType(); /* * Free memory used by the decode manager */ ~JpegDecoderMgr(); /* * Get the jump buffer in order to set an error return point */ jmp_buf& getJmpBuf(); /* * Get function for the decompress info struct */ jpeg_decompress_struct* dinfo(); private: jpeg_decompress_struct fDInfo; skjpeg_source_mgr fSrcMgr; skjpeg_error_mgr fErrorMgr; bool fInit; }; #endif