Home | History | Annotate | Download | only in codec
      1 /*
      2  * Copyright 2015 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkJpegDecoderMgr_DEFINED
      9 #define SkJpegDecoderMgr_DEFINED
     10 
     11 #include "SkCodec.h"
     12 #include "SkCodecPriv.h"
     13 #include "SkJpegUtility_codec.h"
     14 
     15 // stdio is needed for jpeglib
     16 #include <stdio.h>
     17 
     18 extern "C" {
     19     #include "jpeglib.h"
     20 }
     21 
     22 class JpegDecoderMgr : SkNoncopyable {
     23 public:
     24 
     25     /*
     26      * Print a useful error message and return false
     27      */
     28     bool returnFalse(const char caller[]);
     29 
     30     /*
     31      * Print a useful error message and return a decode failure
     32      */
     33     SkCodec::Result returnFailure(const char caller[], SkCodec::Result result);
     34 
     35     /*
     36      * Create the decode manager
     37      * Does not take ownership of stream
     38      */
     39     JpegDecoderMgr(SkStream* stream);
     40 
     41     /*
     42      * Initialize decompress struct
     43      * Initialize the source manager
     44      */
     45     void  init();
     46 
     47     /*
     48      * Recommend a color type based on the encoded format
     49      */
     50     SkColorType getColorType();
     51 
     52     /*
     53      * Free memory used by the decode manager
     54      */
     55     ~JpegDecoderMgr();
     56 
     57     /*
     58      * Get the jump buffer in order to set an error return point
     59      */
     60     jmp_buf& getJmpBuf();
     61 
     62     /*
     63      * Get function for the decompress info struct
     64      */
     65     jpeg_decompress_struct* dinfo();
     66 
     67 private:
     68 
     69     jpeg_decompress_struct fDInfo;
     70     skjpeg_source_mgr      fSrcMgr;
     71     skjpeg_error_mgr       fErrorMgr;
     72     bool                   fInit;
     73 };
     74 
     75 #endif
     76