OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 | 8 |
9 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" |
10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 void SkImageDecoder::SetDeviceConfig(SkBitmap::Config config) | 24 void SkImageDecoder::SetDeviceConfig(SkBitmap::Config config) |
25 { | 25 { |
26 gDeviceConfig = config; | 26 gDeviceConfig = config; |
27 } | 27 } |
28 | 28 |
29 /////////////////////////////////////////////////////////////////////////////// | 29 /////////////////////////////////////////////////////////////////////////////// |
30 | 30 |
31 SkImageDecoder::SkImageDecoder() | 31 SkImageDecoder::SkImageDecoder() |
32 : fPeeker(NULL) | 32 : fPeeker(NULL) |
| 33 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
33 , fChooser(NULL) | 34 , fChooser(NULL) |
| 35 #endif |
34 , fAllocator(NULL) | 36 , fAllocator(NULL) |
35 , fSampleSize(1) | 37 , fSampleSize(1) |
36 , fDefaultPref(SkBitmap::kNo_Config) | 38 , fDefaultPref(SkBitmap::kNo_Config) |
37 , fDitherImage(true) | 39 , fDitherImage(true) |
38 , fUsePrefTable(false) | 40 , fUsePrefTable(false) |
39 , fSkipWritingZeroes(false) | 41 , fSkipWritingZeroes(false) |
40 , fPreferQualityOverSpeed(false) | 42 , fPreferQualityOverSpeed(false) |
41 , fRequireUnpremultipliedColors(false) { | 43 , fRequireUnpremultipliedColors(false) { |
42 } | 44 } |
43 | 45 |
44 SkImageDecoder::~SkImageDecoder() { | 46 SkImageDecoder::~SkImageDecoder() { |
45 SkSafeUnref(fPeeker); | 47 SkSafeUnref(fPeeker); |
| 48 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
46 SkSafeUnref(fChooser); | 49 SkSafeUnref(fChooser); |
| 50 #endif |
47 SkSafeUnref(fAllocator); | 51 SkSafeUnref(fAllocator); |
48 } | 52 } |
49 | 53 |
50 void SkImageDecoder::copyFieldsToOther(SkImageDecoder* other) { | 54 void SkImageDecoder::copyFieldsToOther(SkImageDecoder* other) { |
51 if (NULL == other) { | 55 if (NULL == other) { |
52 return; | 56 return; |
53 } | 57 } |
54 other->setPeeker(fPeeker); | 58 other->setPeeker(fPeeker); |
| 59 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
55 other->setChooser(fChooser); | 60 other->setChooser(fChooser); |
| 61 #endif |
56 other->setAllocator(fAllocator); | 62 other->setAllocator(fAllocator); |
57 other->setSampleSize(fSampleSize); | 63 other->setSampleSize(fSampleSize); |
58 if (fUsePrefTable) { | 64 if (fUsePrefTable) { |
59 other->setPrefConfigTable(fPrefTable); | 65 other->setPrefConfigTable(fPrefTable); |
60 } else { | 66 } else { |
61 other->fDefaultPref = fDefaultPref; | 67 other->fDefaultPref = fDefaultPref; |
62 } | 68 } |
63 other->setDitherImage(fDitherImage); | 69 other->setDitherImage(fDitherImage); |
64 other->setSkipWritingZeroes(fSkipWritingZeroes); | 70 other->setSkipWritingZeroes(fSkipWritingZeroes); |
65 other->setPreferQualityOverSpeed(fPreferQualityOverSpeed); | 71 other->setPreferQualityOverSpeed(fPreferQualityOverSpeed); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 SkDEBUGFAIL("Invalid format type!"); | 106 SkDEBUGFAIL("Invalid format type!"); |
101 } | 107 } |
102 return "Unknown Format"; | 108 return "Unknown Format"; |
103 } | 109 } |
104 | 110 |
105 SkImageDecoder::Peeker* SkImageDecoder::setPeeker(Peeker* peeker) { | 111 SkImageDecoder::Peeker* SkImageDecoder::setPeeker(Peeker* peeker) { |
106 SkRefCnt_SafeAssign(fPeeker, peeker); | 112 SkRefCnt_SafeAssign(fPeeker, peeker); |
107 return peeker; | 113 return peeker; |
108 } | 114 } |
109 | 115 |
| 116 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
110 SkImageDecoder::Chooser* SkImageDecoder::setChooser(Chooser* chooser) { | 117 SkImageDecoder::Chooser* SkImageDecoder::setChooser(Chooser* chooser) { |
111 SkRefCnt_SafeAssign(fChooser, chooser); | 118 SkRefCnt_SafeAssign(fChooser, chooser); |
112 return chooser; | 119 return chooser; |
113 } | 120 } |
| 121 #endif |
114 | 122 |
115 SkBitmap::Allocator* SkImageDecoder::setAllocator(SkBitmap::Allocator* alloc) { | 123 SkBitmap::Allocator* SkImageDecoder::setAllocator(SkBitmap::Allocator* alloc) { |
116 SkRefCnt_SafeAssign(fAllocator, alloc); | 124 SkRefCnt_SafeAssign(fAllocator, alloc); |
117 return alloc; | 125 return alloc; |
118 } | 126 } |
119 | 127 |
120 void SkImageDecoder::setSampleSize(int size) { | 128 void SkImageDecoder::setSampleSize(int size) { |
121 if (size < 1) { | 129 if (size < 1) { |
122 size = 1; | 130 size = 1; |
123 } | 131 } |
124 fSampleSize = size; | 132 fSampleSize = size; |
125 } | 133 } |
126 | 134 |
| 135 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
127 // TODO: change Chooser virtual to take colorType, so we can stop calling SkColo
rTypeToBitmapConfig | 136 // TODO: change Chooser virtual to take colorType, so we can stop calling SkColo
rTypeToBitmapConfig |
128 // | 137 // |
129 bool SkImageDecoder::chooseFromOneChoice(SkColorType colorType, int width, int h
eight) const { | 138 bool SkImageDecoder::chooseFromOneChoice(SkColorType colorType, int width, int h
eight) const { |
130 Chooser* chooser = fChooser; | 139 Chooser* chooser = fChooser; |
131 | 140 |
132 if (NULL == chooser) { // no chooser, we just say YES to decoding :) | 141 if (NULL == chooser) { // no chooser, we just say YES to decoding :) |
133 return true; | 142 return true; |
134 } | 143 } |
135 chooser->begin(1); | 144 chooser->begin(1); |
136 chooser->inspect(0, SkColorTypeToBitmapConfig(colorType), width, height); | 145 chooser->inspect(0, SkColorTypeToBitmapConfig(colorType), width, height); |
137 return chooser->choose() == 0; | 146 return chooser->choose() == 0; |
138 } | 147 } |
| 148 #endif |
139 | 149 |
140 bool SkImageDecoder::allocPixelRef(SkBitmap* bitmap, | 150 bool SkImageDecoder::allocPixelRef(SkBitmap* bitmap, |
141 SkColorTable* ctable) const { | 151 SkColorTable* ctable) const { |
142 return bitmap->allocPixels(fAllocator, ctable); | 152 return bitmap->allocPixels(fAllocator, ctable); |
143 } | 153 } |
144 | 154 |
145 /////////////////////////////////////////////////////////////////////////////// | 155 /////////////////////////////////////////////////////////////////////////////// |
146 | 156 |
147 void SkImageDecoder::setPrefConfigTable(const PrefConfigTable& prefTable) { | 157 void SkImageDecoder::setPrefConfigTable(const PrefConfigTable& prefTable) { |
148 fUsePrefTable = true; | 158 fUsePrefTable = true; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 if (kUnknown_Format == *format) { | 315 if (kUnknown_Format == *format) { |
306 if (stream->rewind()) { | 316 if (stream->rewind()) { |
307 *format = GetStreamFormat(stream); | 317 *format = GetStreamFormat(stream); |
308 } | 318 } |
309 } | 319 } |
310 } | 320 } |
311 delete codec; | 321 delete codec; |
312 } | 322 } |
313 return success; | 323 return success; |
314 } | 324 } |
OLD | NEW |