| 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 #ifndef SkImageDecoder_DEFINED | 8 #ifndef SkImageDecoder_DEFINED |
| 9 #define SkImageDecoder_DEFINED | 9 #define SkImageDecoder_DEFINED |
| 10 | 10 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 virtual int choose() = 0; | 153 virtual int choose() = 0; |
| 154 | 154 |
| 155 private: | 155 private: |
| 156 typedef SkRefCnt INHERITED; | 156 typedef SkRefCnt INHERITED; |
| 157 }; | 157 }; |
| 158 | 158 |
| 159 Chooser* getChooser() const { return fChooser; } | 159 Chooser* getChooser() const { return fChooser; } |
| 160 Chooser* setChooser(Chooser*); | 160 Chooser* setChooser(Chooser*); |
| 161 #endif | 161 #endif |
| 162 | 162 |
| 163 #ifdef SK_SUPPORT_LEGACY_BITMAP_CONFIG | |
| 164 /** | |
| 165 * Optional table describing the caller's preferred config based on | |
| 166 * information about the src data. Each field should be set to the | |
| 167 * preferred config for a src described in the name of the field. The | |
| 168 * src attributes are described in terms of depth (8-index, | |
| 169 * 8bit-grayscale, or 8-bits/component) and whether there is per-pixel | |
| 170 * alpha (does not apply to grayscale). If the caller has no preference | |
| 171 * for a particular src type, its slot should be set to kNo_Config. | |
| 172 * | |
| 173 * NOTE ABOUT PREFERRED CONFIGS: | |
| 174 * If a config is preferred, either using a pref table or as a parameter | |
| 175 * to some flavor of decode, it is still at the discretion of the codec | |
| 176 * as to what output config is actually returned, as it may not be able | |
| 177 * to support the caller's preference. | |
| 178 * | |
| 179 * If a bitmap is decoded into SkBitmap::A8_Config, the resulting bitmap | |
| 180 * will either be a conversion of the grayscale in the case of a | |
| 181 * grayscale source or the alpha channel in the case of a source with | |
| 182 * an alpha channel. | |
| 183 */ | |
| 184 struct PrefConfigTable { | |
| 185 SkBitmap::Config fPrefFor_8Index_NoAlpha_src; | |
| 186 SkBitmap::Config fPrefFor_8Index_YesAlpha_src; | |
| 187 SkBitmap::Config fPrefFor_8Gray_src; | |
| 188 SkBitmap::Config fPrefFor_8bpc_NoAlpha_src; | |
| 189 SkBitmap::Config fPrefFor_8bpc_YesAlpha_src; | |
| 190 }; | |
| 191 | |
| 192 /** | |
| 193 * Set an optional table for specifying the caller's preferred config | |
| 194 * based on information about the src data. | |
| 195 * | |
| 196 * The default is no preference, which will assume the config set by | |
| 197 * decode is preferred. | |
| 198 */ | |
| 199 void setPrefConfigTable(const PrefConfigTable&); | |
| 200 | |
| 201 /** | |
| 202 * Do not use a PrefConfigTable to determine the output config. This | |
| 203 * is the default, so there is no need to call unless a PrefConfigTable | |
| 204 * was previously set. | |
| 205 */ | |
| 206 void resetPrefConfigTable() { fUsePrefTable = false; } | |
| 207 #endif | |
| 208 | |
| 209 /** | 163 /** |
| 210 * By default, the codec will try to comply with the "pref" colortype | 164 * By default, the codec will try to comply with the "pref" colortype |
| 211 * that is passed to decode() or decodeSubset(). However, this can be calle
d | 165 * that is passed to decode() or decodeSubset(). However, this can be calle
d |
| 212 * to override that, causing the codec to try to match the src depth instea
d | 166 * to override that, causing the codec to try to match the src depth instea
d |
| 213 * (as shown below). | 167 * (as shown below). |
| 214 * | 168 * |
| 215 * src_8Index -> kIndex_8_SkColorType | 169 * src_8Index -> kIndex_8_SkColorType |
| 216 * src_8Gray -> kN32_SkColorType | 170 * src_8Gray -> kN32_SkColorType |
| 217 * src_8bpc -> kN32_SkColorType | 171 * src_8bpc -> kN32_SkColorType |
| 218 */ | 172 */ |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 SkColorType getPrefColorType(SrcDepth, bool hasAlpha) const; | 414 SkColorType getPrefColorType(SrcDepth, bool hasAlpha) const; |
| 461 | 415 |
| 462 private: | 416 private: |
| 463 Peeker* fPeeker; | 417 Peeker* fPeeker; |
| 464 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER | 418 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
| 465 Chooser* fChooser; | 419 Chooser* fChooser; |
| 466 #endif | 420 #endif |
| 467 SkBitmap::Allocator* fAllocator; | 421 SkBitmap::Allocator* fAllocator; |
| 468 int fSampleSize; | 422 int fSampleSize; |
| 469 SkColorType fDefaultPref; // use if fUsePrefTable is false | 423 SkColorType fDefaultPref; // use if fUsePrefTable is false |
| 470 #ifdef SK_SUPPORT_LEGACY_BITMAP_CONFIG | |
| 471 PrefConfigTable fPrefTable; // use if fUsePrefTable is true | |
| 472 bool fUsePrefTable; | |
| 473 #endif | |
| 474 bool fPreserveSrcDepth; | 424 bool fPreserveSrcDepth; |
| 475 bool fDitherImage; | 425 bool fDitherImage; |
| 476 bool fSkipWritingZeroes; | 426 bool fSkipWritingZeroes; |
| 477 mutable bool fShouldCancelDecode; | 427 mutable bool fShouldCancelDecode; |
| 478 bool fPreferQualityOverSpeed; | 428 bool fPreferQualityOverSpeed; |
| 479 bool fRequireUnpremultipliedColors; | 429 bool fRequireUnpremultipliedColors; |
| 480 }; | 430 }; |
| 481 | 431 |
| 482 /** Calling newDecoder with a stream returns a new matching imagedecoder | 432 /** Calling newDecoder with a stream returns a new matching imagedecoder |
| 483 instance, or NULL if none can be found. The caller must manage its ownership | 433 instance, or NULL if none can be found. The caller must manage its ownership |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 DECLARE_DECODER_CREATOR(PKMImageDecoder); | 477 DECLARE_DECODER_CREATOR(PKMImageDecoder); |
| 528 DECLARE_DECODER_CREATOR(KTXImageDecoder); | 478 DECLARE_DECODER_CREATOR(KTXImageDecoder); |
| 529 DECLARE_DECODER_CREATOR(ASTCImageDecoder); | 479 DECLARE_DECODER_CREATOR(ASTCImageDecoder); |
| 530 | 480 |
| 531 // Typedefs to make registering decoder and formatter callbacks easier. | 481 // Typedefs to make registering decoder and formatter callbacks easier. |
| 532 // These have to be defined outside SkImageDecoder. :( | 482 // These have to be defined outside SkImageDecoder. :( |
| 533 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod
er_DecodeReg; | 483 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod
er_DecodeReg; |
| 534 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod
er_FormatReg; | 484 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod
er_FormatReg; |
| 535 | 485 |
| 536 #endif | 486 #endif |
| OLD | NEW |