OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 SkSurface_DEFINED | 8 #ifndef SkSurface_DEFINED |
9 #define SkSurface_DEFINED | 9 #define SkSurface_DEFINED |
10 | 10 |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 * the surface object is in scope, and no API call is made on the surface | 207 * the surface object is in scope, and no API call is made on the surface |
208 * or its canvas. | 208 * or its canvas. |
209 * | 209 * |
210 * On failure, returns NULL and the info and rowBytes parameters are | 210 * On failure, returns NULL and the info and rowBytes parameters are |
211 * ignored. | 211 * ignored. |
212 */ | 212 */ |
213 const void* peekPixels(SkImageInfo* info, size_t* rowBytes); | 213 const void* peekPixels(SkImageInfo* info, size_t* rowBytes); |
214 | 214 |
215 /** | 215 /** |
216 * Copy the pixels from the surface into the specified buffer (pixels + row
Bytes), | 216 * Copy the pixels from the surface into the specified buffer (pixels + row
Bytes), |
217 * converting them into the requested format (dstInfo). The base-layer pixe
ls are read | 217 * converting them into the requested format (dstInfo). The surface pixels
are read |
218 * starting at the specified (srcX,srcY) location in the coordinate system
of the base-layer. | 218 * starting at the specified (srcX,srcY) location. |
219 * | 219 * |
220 * The specified ImageInfo and (srcX,srcY) offset specifies a source rectan
gle | 220 * The specified ImageInfo and (srcX,srcY) offset specifies a source rectan
gle |
221 * | 221 * |
222 * srcR.setXYWH(srcX, srcY, dstInfo.width(), dstInfo.height()); | 222 * srcR.setXYWH(srcX, srcY, dstInfo.width(), dstInfo.height()); |
223 * | 223 * |
224 * srcR is intersected with the bounds of the base-layer. If this intersect
ion is not empty, | 224 * srcR is intersected with the bounds of the base-layer. If this intersect
ion is not empty, |
225 * then we have two sets of pixels (of equal size). Replace the dst pixels
with the | 225 * then we have two sets of pixels (of equal size). Replace the dst pixels
with the |
226 * corresponding src pixels, performing any colortype/alphatype transformat
ions needed | 226 * corresponding src pixels, performing any colortype/alphatype transformat
ions needed |
227 * (in the case where the src and dst have different colortypes or alphatyp
es). | 227 * (in the case where the src and dst have different colortypes or alphatyp
es). |
228 * | 228 * |
229 * This call can fail, returning false, for several reasons: | 229 * This call can fail, returning false, for several reasons: |
230 * - If srcR does not intersect the surface bounds. | 230 * - If srcR does not intersect the surface bounds. |
231 * - If the requested colortype/alphatype cannot be converted from the base
-layer's types. | 231 * - If the requested colortype/alphatype cannot be converted from the surf
ace's types. |
232 */ | 232 */ |
233 bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBy
tes, | 233 bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBy
tes, |
234 int srcX, int srcY); | 234 int srcX, int srcY); |
235 | 235 |
236 /** | |
237 * Helper for allocating pixels and then calling readPixels(info, ...). The
bitmap is resized | |
238 * to the intersection of srcRect and the surface bounds (if srcRect is non
-null). | |
239 * On success, pixels will be allocated in bitmap and true returned. On fai
lure, | |
240 * false is returned and bitmap will be set to empty. | |
241 */ | |
242 bool readPixels(SkBitmap* dst, const SkIRect* srcRect = NULL); | |
243 | |
244 const SkSurfaceProps& props() const { return fProps; } | 236 const SkSurfaceProps& props() const { return fProps; } |
245 | 237 |
246 protected: | 238 protected: |
247 SkSurface(int width, int height, const SkSurfaceProps*); | 239 SkSurface(int width, int height, const SkSurfaceProps*); |
248 SkSurface(const SkImageInfo&, const SkSurfaceProps*); | 240 SkSurface(const SkImageInfo&, const SkSurfaceProps*); |
249 | 241 |
250 // called by subclass if their contents have changed | 242 // called by subclass if their contents have changed |
251 void dirtyGenerationID() { | 243 void dirtyGenerationID() { |
252 fGenerationID = 0; | 244 fGenerationID = 0; |
253 } | 245 } |
254 | 246 |
255 private: | 247 private: |
256 const SkSurfaceProps fProps; | 248 const SkSurfaceProps fProps; |
257 const int fWidth; | 249 const int fWidth; |
258 const int fHeight; | 250 const int fHeight; |
259 uint32_t fGenerationID; | 251 uint32_t fGenerationID; |
260 | 252 |
261 typedef SkRefCnt INHERITED; | 253 typedef SkRefCnt INHERITED; |
262 }; | 254 }; |
263 | 255 |
264 #endif | 256 #endif |
OLD | NEW |