OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #ifndef SkImageDecoder_DEFINED | 10 #ifndef SkImageDecoder_DEFINED |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 will cause the decoder to not return the image. | 130 will cause the decoder to not return the image. |
131 */ | 131 */ |
132 virtual bool peek(const char tag[], const void* data, size_t length) = 0
; | 132 virtual bool peek(const char tag[], const void* data, size_t length) = 0
; |
133 private: | 133 private: |
134 typedef SkRefCnt INHERITED; | 134 typedef SkRefCnt INHERITED; |
135 }; | 135 }; |
136 | 136 |
137 Peeker* getPeeker() const { return fPeeker; } | 137 Peeker* getPeeker() const { return fPeeker; } |
138 Peeker* setPeeker(Peeker*); | 138 Peeker* setPeeker(Peeker*); |
139 | 139 |
| 140 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
140 /** \class Chooser | 141 /** \class Chooser |
141 | 142 |
142 Base class for optional callbacks to choose an image from a format that | 143 Base class for optional callbacks to choose an image from a format that |
143 contains multiple images. | 144 contains multiple images. |
144 */ | 145 */ |
145 class Chooser : public SkRefCnt { | 146 class Chooser : public SkRefCnt { |
146 public: | 147 public: |
147 SK_DECLARE_INST_COUNT(Chooser) | 148 SK_DECLARE_INST_COUNT(Chooser) |
148 | 149 |
149 virtual void begin(int count) {} | 150 virtual void begin(int count) {} |
150 virtual void inspect(int index, SkBitmap::Config config, int width, int
height) {} | 151 virtual void inspect(int index, SkBitmap::Config config, int width, int
height) {} |
151 /** Return the index of the subimage you want, or -1 to choose none of t
hem. | 152 /** Return the index of the subimage you want, or -1 to choose none of t
hem. |
152 */ | 153 */ |
153 virtual int choose() = 0; | 154 virtual int choose() = 0; |
154 | 155 |
155 private: | 156 private: |
156 typedef SkRefCnt INHERITED; | 157 typedef SkRefCnt INHERITED; |
157 }; | 158 }; |
158 | 159 |
159 Chooser* getChooser() const { return fChooser; } | 160 Chooser* getChooser() const { return fChooser; } |
160 Chooser* setChooser(Chooser*); | 161 Chooser* setChooser(Chooser*); |
| 162 #endif |
161 | 163 |
162 /** | 164 /** |
163 * Optional table describing the caller's preferred config based on | 165 * Optional table describing the caller's preferred config based on |
164 * information about the src data. Each field should be set to the | 166 * information about the src data. Each field should be set to the |
165 * preferred config for a src described in the name of the field. The | 167 * preferred config for a src described in the name of the field. The |
166 * src attributes are described in terms of depth (8-index, | 168 * src attributes are described in terms of depth (8-index, |
167 * 8bit-grayscale, or 8-bits/component) and whether there is per-pixel | 169 * 8bit-grayscale, or 8-bits/component) and whether there is per-pixel |
168 * alpha (does not apply to grayscale). If the caller has no preference | 170 * alpha (does not apply to grayscale). If the caller has no preference |
169 * for a particular src type, its slot should be set to kNo_Config. | 171 * for a particular src type, its slot should be set to kNo_Config. |
170 * | 172 * |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 | 431 |
430 Calling this outside of onDecode() may return undefined values. | 432 Calling this outside of onDecode() may return undefined values. |
431 */ | 433 */ |
432 | 434 |
433 public: | 435 public: |
434 bool shouldCancelDecode() const { return fShouldCancelDecode; } | 436 bool shouldCancelDecode() const { return fShouldCancelDecode; } |
435 | 437 |
436 protected: | 438 protected: |
437 SkImageDecoder(); | 439 SkImageDecoder(); |
438 | 440 |
| 441 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
439 // helper function for decoders to handle the (common) case where there is o
nly | 442 // helper function for decoders to handle the (common) case where there is o
nly |
440 // once choice available in the image file. | 443 // once choice available in the image file. |
441 bool chooseFromOneChoice(SkColorType, int width, int height) const; | 444 bool chooseFromOneChoice(SkColorType, int width, int height) const; |
| 445 #endif |
442 | 446 |
443 /* Helper for subclasses. Call this to allocate the pixel memory given the
bitmap's | 447 /* Helper for subclasses. Call this to allocate the pixel memory given the
bitmap's |
444 width/height/rowbytes/config. Returns true on success. This method handl
es checking | 448 width/height/rowbytes/config. Returns true on success. This method handl
es checking |
445 for an optional Allocator. | 449 for an optional Allocator. |
446 */ | 450 */ |
447 bool allocPixelRef(SkBitmap*, SkColorTable*) const; | 451 bool allocPixelRef(SkBitmap*, SkColorTable*) const; |
448 | 452 |
449 /** | 453 /** |
450 * The raw data of the src image. | 454 * The raw data of the src image. |
451 */ | 455 */ |
(...skipping 10 matching lines...) Expand all Loading... |
462 src image. This routine returns the caller's preference given | 466 src image. This routine returns the caller's preference given |
463 srcDepth and hasAlpha, or kUnknown_SkColorType if there is no preference
. | 467 srcDepth and hasAlpha, or kUnknown_SkColorType if there is no preference
. |
464 | 468 |
465 Note: this also takes into account GetDeviceConfig(), so the subclass | 469 Note: this also takes into account GetDeviceConfig(), so the subclass |
466 need not call that. | 470 need not call that. |
467 */ | 471 */ |
468 SkColorType getPrefColorType(SrcDepth, bool hasAlpha) const; | 472 SkColorType getPrefColorType(SrcDepth, bool hasAlpha) const; |
469 | 473 |
470 private: | 474 private: |
471 Peeker* fPeeker; | 475 Peeker* fPeeker; |
| 476 #ifdef SK_SUPPORT_LEGACY_IMAGEDECODER_CHOOSER |
472 Chooser* fChooser; | 477 Chooser* fChooser; |
| 478 #endif |
473 SkBitmap::Allocator* fAllocator; | 479 SkBitmap::Allocator* fAllocator; |
474 int fSampleSize; | 480 int fSampleSize; |
475 SkBitmap::Config fDefaultPref; // use if fUsePrefTable is false | 481 SkBitmap::Config fDefaultPref; // use if fUsePrefTable is false |
476 PrefConfigTable fPrefTable; // use if fUsePrefTable is true | 482 PrefConfigTable fPrefTable; // use if fUsePrefTable is true |
477 bool fDitherImage; | 483 bool fDitherImage; |
478 bool fUsePrefTable; | 484 bool fUsePrefTable; |
479 bool fSkipWritingZeroes; | 485 bool fSkipWritingZeroes; |
480 mutable bool fShouldCancelDecode; | 486 mutable bool fShouldCancelDecode; |
481 bool fPreferQualityOverSpeed; | 487 bool fPreferQualityOverSpeed; |
482 bool fRequireUnpremultipliedColors; | 488 bool fRequireUnpremultipliedColors; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 DECLARE_DECODER_CREATOR(WEBPImageDecoder); | 535 DECLARE_DECODER_CREATOR(WEBPImageDecoder); |
530 DECLARE_DECODER_CREATOR(PKMImageDecoder); | 536 DECLARE_DECODER_CREATOR(PKMImageDecoder); |
531 DECLARE_DECODER_CREATOR(KTXImageDecoder); | 537 DECLARE_DECODER_CREATOR(KTXImageDecoder); |
532 | 538 |
533 // Typedefs to make registering decoder and formatter callbacks easier. | 539 // Typedefs to make registering decoder and formatter callbacks easier. |
534 // These have to be defined outside SkImageDecoder. :( | 540 // These have to be defined outside SkImageDecoder. :( |
535 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod
er_DecodeReg; | 541 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod
er_DecodeReg; |
536 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod
er_FormatReg; | 542 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod
er_FormatReg; |
537 | 543 |
538 #endif | 544 #endif |
OLD | NEW |