OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
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 SkDecodingImageGenerator_DEFINED | 8 #ifndef SkDecodingImageGenerator_DEFINED |
9 #define SkDecodingImageGenerator_DEFINED | 9 #define SkDecodingImageGenerator_DEFINED |
10 | 10 |
11 #include "SkBitmap.h" | 11 #include "SkBitmap.h" |
12 #include "SkImageGenerator.h" | 12 #include "SkImageGenerator.h" |
13 | 13 |
14 class SkData; | 14 class SkData; |
15 class SkStreamRewindable; | 15 class SkStreamRewindable; |
16 | 16 |
17 /** | 17 /** |
18 * An implementation of SkImageGenerator that calls into | 18 * An implementation of SkImageGenerator that calls into |
19 * SkImageDecoder. | 19 * SkImageDecoder. |
20 */ | 20 */ |
21 class SkDecodingImageGenerator : public SkImageGenerator { | 21 namespace SkDecodingImageGenerator { |
reed2
2014/04/04 20:59:51
Why namespace instead of class? Other examples in
| |
22 public: | |
23 virtual ~SkDecodingImageGenerator(); | |
24 virtual SkData* refEncodedData() SK_OVERRIDE; | |
25 // This implementaion of getInfo() always returns true. | |
26 virtual bool getInfo(SkImageInfo* info) SK_OVERRIDE; | |
27 virtual bool getPixels(const SkImageInfo& info, | |
28 void* pixels, | |
29 size_t rowBytes) SK_OVERRIDE; | |
30 /** | 22 /** |
31 * These options will be passed on to the image decoder. The | 23 * These options will be passed on to the image decoder. The |
32 * defaults are sensible. | 24 * defaults are sensible. |
33 * | 25 * |
34 * @param fSampleSize If set to > 1, tells the decoder to return a | 26 * @param fSampleSize If set to > 1, tells the decoder to return a |
35 * smaller than original bitmap, sampling 1 pixel for | 27 * smaller than original bitmap, sampling 1 pixel for |
36 * every size pixels. e.g. if sample size is set to 3, | 28 * every size pixels. e.g. if sample size is set to 3, |
37 * then the returned bitmap will be 1/3 as wide and high, | 29 * then the returned bitmap will be 1/3 as wide and high, |
38 * and will contain 1/9 as many pixels as the original. | 30 * and will contain 1/9 as many pixels as the original. |
39 * Note: this is a hint, and the codec may choose to | 31 * Note: this is a hint, and the codec may choose to |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 * SkImageGenerator* gen | 82 * SkImageGenerator* gen |
91 * = SkDecodingImageGenerator::Create( | 83 * = SkDecodingImageGenerator::Create( |
92 * stream->duplicate(), SkDecodingImageGenerator::Options()); | 84 * stream->duplicate(), SkDecodingImageGenerator::Options()); |
93 * ... | 85 * ... |
94 * SkDELETE(gen); | 86 * SkDELETE(gen); |
95 * | 87 * |
96 * @param Options (see above) | 88 * @param Options (see above) |
97 * | 89 * |
98 * @return NULL on failure, a new SkImageGenerator on success. | 90 * @return NULL on failure, a new SkImageGenerator on success. |
99 */ | 91 */ |
100 static SkImageGenerator* Create(SkStreamRewindable* stream, | 92 SkImageGenerator* Create(SkStreamRewindable* stream, |
101 const Options& opt); | 93 const Options& opt); |
102 | 94 |
103 /** | 95 /** |
104 * @param data Contains the encoded image data that will be used by | 96 * @param data Contains the encoded image data that will be used by |
105 * the SkDecodingImageGenerator. Will be ref()ed by the | 97 * the SkDecodingImageGenerator. Will be ref()ed by the |
106 * SkImageGenerator constructor and and unref()ed on deletion. | 98 * SkImageGenerator constructor and and unref()ed on deletion. |
107 */ | 99 */ |
108 static SkImageGenerator* Create(SkData* data, const Options& opt); | 100 SkImageGenerator* Create(SkData* data, const Options& opt); |
109 | |
110 private: | |
111 SkData* fData; | |
112 SkStreamRewindable* fStream; | |
113 const SkImageInfo fInfo; | |
114 const int fSampleSize; | |
115 const bool fDitherImage; | |
116 | |
117 SkDecodingImageGenerator(SkData* data, | |
118 SkStreamRewindable* stream, | |
119 const SkImageInfo& info, | |
120 int sampleSize, | |
121 bool ditherImage); | |
122 static SkImageGenerator* Create(SkData*, SkStreamRewindable*, | |
123 const Options&); | |
124 typedef SkImageGenerator INHERITED; | |
125 }; | 101 }; |
126 | 102 |
127 // // Example of most basic use case: | 103 // // Example of most basic use case: |
128 // | 104 // |
129 // bool install_data(SkData* data, SkBitmap* dst) { | 105 // bool install_data(SkData* data, SkBitmap* dst) { |
130 // return SkInstallDiscardablePixelRef( | 106 // return SkInstallDiscardablePixelRef( |
131 // SkDecodingImageGenerator::Create( | 107 // SkDecodingImageGenerator::Create( |
132 // data, SkDecodingImageGenerator::Options()), dst, NULL); | 108 // data, SkDecodingImageGenerator::Options()), dst, NULL); |
133 // } | 109 // } |
134 // bool install_stream(SkStreamRewindable* stream, SkBitmap* dst) { | 110 // bool install_stream(SkStreamRewindable* stream, SkBitmap* dst) { |
135 // return SkInstallDiscardablePixelRef( | 111 // return SkInstallDiscardablePixelRef( |
136 // SkDecodingImageGenerator::Create( | 112 // SkDecodingImageGenerator::Create( |
137 // stream, SkDecodingImageGenerator::Options()), dst, NULL); | 113 // stream, SkDecodingImageGenerator::Options()), dst, NULL); |
138 // } | 114 // } |
139 | 115 |
140 #endif // SkDecodingImageGenerator_DEFINED | 116 #endif // SkDecodingImageGenerator_DEFINED |
OLD | NEW |