|
1 |
|
2 /* |
|
3 * Copyright 2010 The Android Open Source Project |
|
4 * |
|
5 * Use of this source code is governed by a BSD-style license that can be |
|
6 * found in the LICENSE file. |
|
7 */ |
|
8 |
|
9 |
|
10 #ifndef SkJpegUtility_DEFINED |
|
11 #define SkJpegUtility_DEFINED |
|
12 |
|
13 #include "SkImageDecoder.h" |
|
14 #include "SkStream.h" |
|
15 |
|
16 extern "C" { |
|
17 #include "jpeglib.h" |
|
18 #include "jerror.h" |
|
19 } |
|
20 |
|
21 #include <setjmp.h> |
|
22 |
|
23 /* Our error-handling struct. |
|
24 * |
|
25 */ |
|
26 struct skjpeg_error_mgr : jpeg_error_mgr { |
|
27 jmp_buf fJmpBuf; |
|
28 }; |
|
29 |
|
30 |
|
31 void skjpeg_error_exit(j_common_ptr cinfo); |
|
32 |
|
33 /////////////////////////////////////////////////////////////////////////// |
|
34 /* Our source struct for directing jpeg to our stream object. |
|
35 */ |
|
36 struct skjpeg_source_mgr : jpeg_source_mgr { |
|
37 skjpeg_source_mgr(SkStream* stream, SkImageDecoder* decoder); |
|
38 ~skjpeg_source_mgr(); |
|
39 |
|
40 // 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. |
|
44 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 */ |
|
55 struct 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 |