Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(460)

Side by Side Diff: include/codec/SkAndroidCodec.h

Issue 1647153002: Add SkAndroidCodec::getPixels (Closed) Base URL: https://skia.googlesource.com/skia.git@opaque
Patch Set: Preemptive rebase Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tests/CodexTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 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 SkAndroidCodec_DEFINED 8 #ifndef SkAndroidCodec_DEFINED
9 #define SkAndroidCodec_DEFINED 9 #define SkAndroidCodec_DEFINED
10 10
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 AndroidOptions() 136 AndroidOptions()
137 : fZeroInitialized(SkCodec::kNo_ZeroInitialized) 137 : fZeroInitialized(SkCodec::kNo_ZeroInitialized)
138 , fSubset(nullptr) 138 , fSubset(nullptr)
139 , fColorPtr(nullptr) 139 , fColorPtr(nullptr)
140 , fColorCount(nullptr) 140 , fColorCount(nullptr)
141 , fSampleSize(1) 141 , fSampleSize(1)
142 {} 142 {}
143 143
144 /** 144 /**
145 * Indicates is destination pixel memory is zero initialized. 145 * Indicates is destination pixel memory is zero initialized.
146 *
147 * The default is SkCodec::kNo_ZeroInitialized.
146 */ 148 */
147 SkCodec::ZeroInitialized fZeroInitialized; 149 SkCodec::ZeroInitialized fZeroInitialized;
148 150
149 /** 151 /**
150 * If not NULL, represents a subset of the original image to decode. 152 * If not NULL, represents a subset of the original image to decode.
151 * 153 *
152 * Must be within the bounds returned by getInfo(). 154 * Must be within the bounds returned by getInfo().
153 * 155 *
154 * If the EncodedFormat is kWEBP_SkEncodedFormat, the top and left 156 * If the EncodedFormat is kWEBP_SkEncodedFormat, the top and left
155 * values must be even. 157 * values must be even.
158 *
159 * The default is NULL, meaning a decode of the entire image.
156 */ 160 */
157 SkIRect* fSubset; 161 SkIRect* fSubset;
158 162
159 /** 163 /**
160 * If the client has requested a decode to kIndex8_SkColorType 164 * If the client has requested a decode to kIndex8_SkColorType
161 * (specified in the SkImageInfo), then the caller must provide 165 * (specified in the SkImageInfo), then the caller must provide
162 * storage for up to 256 SkPMColor values in fColorPtr. On success, 166 * storage for up to 256 SkPMColor values in fColorPtr. On success,
163 * the codec must copy N colors into that storage, (where N is the 167 * the codec must copy N colors into that storage, (where N is the
164 * logical number of table entries) and set fColorCount to N. 168 * logical number of table entries) and set fColorCount to N.
165 * 169 *
166 * If the client does not request kIndex8_SkColorType, then the last 170 * If the client does not request kIndex8_SkColorType, then the last
167 * two parameters may be NULL. If fColorCount is not null, it will be 171 * two parameters may be NULL. If fColorCount is not null, it will be
168 * set to 0. 172 * set to 0.
173 *
174 * The default is NULL for both pointers.
169 */ 175 */
170 SkPMColor* fColorPtr; 176 SkPMColor* fColorPtr;
171 int* fColorCount; 177 int* fColorCount;
172 178
173 /** 179 /**
174 * The client may provide an integer downscale factor for the decode. 180 * The client may provide an integer downscale factor for the decode.
175 * The codec may implement this downscaling by sampling or another 181 * The codec may implement this downscaling by sampling or another
176 * method if it is more efficient. 182 * method if it is more efficient.
183 *
184 * The default is 1, representing no downscaling.
177 */ 185 */
178 int fSampleSize; 186 int fSampleSize;
179 }; 187 };
180 188
181 /** 189 /**
182 * Decode into the given pixels, a block of memory of size at 190 * Decode into the given pixels, a block of memory of size at
183 * least (info.fHeight - 1) * rowBytes + (info.fWidth * 191 * least (info.fHeight - 1) * rowBytes + (info.fWidth *
184 * bytesPerPixel) 192 * bytesPerPixel)
185 * 193 *
186 * Repeated calls to this function should give the same results, 194 * Repeated calls to this function should give the same results,
(...skipping 13 matching lines...) Expand all
200 * 208 *
201 * If info is kIndex8_SkColorType, then the caller must provide storage for up to 256 209 * If info is kIndex8_SkColorType, then the caller must provide storage for up to 256
202 * SkPMColor values in options->fColorPtr. On success the codec must copy N colors into 210 * SkPMColor values in options->fColorPtr. On success the codec must copy N colors into
203 * that storage, (where N is the logical number of table entries) and set 211 * that storage, (where N is the logical number of table entries) and set
204 * options->fColorCount to N. 212 * options->fColorCount to N.
205 * 213 *
206 * If info is not kIndex8_SkColorType, options->fColorPtr and options->fCol orCount may 214 * If info is not kIndex8_SkColorType, options->fColorPtr and options->fCol orCount may
207 * be nullptr. 215 * be nullptr.
208 * 216 *
209 * The AndroidOptions object is also used to specify any requested scaling or subsetting 217 * The AndroidOptions object is also used to specify any requested scaling or subsetting
210 * using options->fSampleSize and options->fSubset. 218 * using options->fSampleSize and options->fSubset. If NULL, the defaults ( as specified above
219 * for AndroidOptions) are used.
211 * 220 *
212 * @return Result kSuccess, or another value explaining the type of failure . 221 * @return Result kSuccess, or another value explaining the type of failure .
213 */ 222 */
214 // FIXME: It's a bit redundant to name this getAndroidPixels() when this cla ss is already 223 // FIXME: It's a bit redundant to name this getAndroidPixels() when this cla ss is already
215 // called SkAndroidCodec. On the other hand, it's may be a bit confu sing to call 224 // called SkAndroidCodec. On the other hand, it's may be a bit confu sing to call
216 // this getPixels() when it is a slightly different API than SkCodec' s getPixels(). 225 // this getPixels() when it is a slightly different API than SkCodec' s getPixels().
217 // Maybe this should be decode() or decodeSubset()? 226 // Maybe this should be decode() or decodeSubset()?
218 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size _t rowBytes, 227 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size _t rowBytes,
219 const AndroidOptions* options); 228 const AndroidOptions* options);
220 229
221 /** 230 /**
222 * Simplified version of getAndroidPixels() where we supply the default And roidOptions. 231 * Simplified version of getAndroidPixels() where we supply the default And roidOptions as
232 * specified above for AndroidOptions.
223 * 233 *
224 * This will return an error if the info is kIndex_8_SkColorType and also w ill not perform 234 * This will return an error if the info is kIndex_8_SkColorType and also w ill not perform
225 * any scaling or subsetting. 235 * any scaling or subsetting.
226 */ 236 */
227 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size _t rowBytes); 237 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size _t rowBytes);
228 238
239 SkCodec::Result getPixels(const SkImageInfo& info, void* pixels, size_t rowB ytes) {
240 return this->getAndroidPixels(info, pixels, rowBytes);
241 }
242
229 protected: 243 protected:
230 244
231 SkAndroidCodec(SkCodec*); 245 SkAndroidCodec(SkCodec*);
232 246
233 SkCodec* codec() const { return fCodec.get(); } 247 SkCodec* codec() const { return fCodec.get(); }
234 248
235 virtual SkISize onGetSampledDimensions(int sampleSize) const = 0; 249 virtual SkISize onGetSampledDimensions(int sampleSize) const = 0;
236 250
237 virtual bool onGetSupportedSubset(SkIRect* desiredSubset) const = 0; 251 virtual bool onGetSupportedSubset(SkIRect* desiredSubset) const = 0;
238 252
239 virtual SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pi xels, 253 virtual SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pi xels,
240 size_t rowBytes, const AndroidOptions& options) = 0; 254 size_t rowBytes, const AndroidOptions& options) = 0;
241 255
242 private: 256 private:
243 257
244 // This will always be a reference to the info that is contained by the 258 // This will always be a reference to the info that is contained by the
245 // embedded SkCodec. 259 // embedded SkCodec.
246 const SkImageInfo& fInfo; 260 const SkImageInfo& fInfo;
247 261
248 SkAutoTDelete<SkCodec> fCodec; 262 SkAutoTDelete<SkCodec> fCodec;
249 }; 263 };
250 #endif // SkAndroidCodec_DEFINED 264 #endif // SkAndroidCodec_DEFINED
OLDNEW
« no previous file with comments | « no previous file | tests/CodexTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698