blob: 69092ef1c38111a28a1496b16c4afb6ddd2ec642 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com6f598152010-01-21 15:34:19 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2010 The Android Open Source Project
reed@android.com6f598152010-01-21 15:34:19 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com6f598152010-01-21 15:34:19 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com6f598152010-01-21 15:34:19 +000010#ifndef SkJpegUtility_DEFINED
11#define SkJpegUtility_DEFINED
12
13#include "SkImageDecoder.h"
14#include "SkStream.h"
15
16extern "C" {
17 #include "jpeglib.h"
18 #include "jerror.h"
19}
20
21#include <setjmp.h>
22
23/* Our error-handling struct.
24 *
25*/
26struct skjpeg_error_mgr : jpeg_error_mgr {
27 jmp_buf fJmpBuf;
28};
29
30
31void skjpeg_error_exit(j_common_ptr cinfo);
32
33///////////////////////////////////////////////////////////////////////////
34/* Our source struct for directing jpeg to our stream object.
35*/
36struct skjpeg_source_mgr : jpeg_source_mgr {
scroggo@google.comd4c35652013-08-01 15:03:42 +000037 skjpeg_source_mgr(SkStream* stream, SkImageDecoder* decoder);
djsollen@google.com57f49692011-02-23 20:46:31 +000038 ~skjpeg_source_mgr();
reed@android.com6f598152010-01-21 15:34:19 +000039
scroggo@google.comd4c35652013-08-01 15:03:42 +000040 // fStream is ref'ed and unref'ed
41 SkStream* fStream;
42 // Unowned pointer to the decoder, used to check if the decoding process
43 // has been cancelled.
reed@android.com6f598152010-01-21 15:34:19 +000044 SkImageDecoder* fDecoder;
45 enum {
46 kBufferSize = 1024
47 };
48 char fBuffer[kBufferSize];
49};
50
51/////////////////////////////////////////////////////////////////////////////
52/* Our destination struct for directing decompressed pixels to our stream
53 * object.
54 */
55struct skjpeg_destination_mgr : jpeg_destination_mgr {
56 skjpeg_destination_mgr(SkWStream* stream);
57
58 SkWStream* fStream;
59
60 enum {
61 kBufferSize = 1024
62 };
63 uint8_t fBuffer[kBufferSize];
64};
65
66#endif