OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010 The Android Open Source Project | 2 * Copyright 2010 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 SkDevice_DEFINED | 8 #ifndef SkDevice_DEFINED |
9 #define SkDevice_DEFINED | 9 #define SkDevice_DEFINED |
10 | 10 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 /** Return the bitmap associated with this device. Call this each time you n
eed | 75 /** Return the bitmap associated with this device. Call this each time you n
eed |
76 to access the bitmap, as it notifies the subclass to perform any flushin
g | 76 to access the bitmap, as it notifies the subclass to perform any flushin
g |
77 etc. before you examine the pixels. | 77 etc. before you examine the pixels. |
78 @param changePixels set to true if the caller plans to change the pixels | 78 @param changePixels set to true if the caller plans to change the pixels |
79 @return the device's bitmap | 79 @return the device's bitmap |
80 */ | 80 */ |
81 const SkBitmap& accessBitmap(bool changePixels); | 81 const SkBitmap& accessBitmap(bool changePixels); |
82 | 82 |
83 bool writePixels(const SkImageInfo&, const void*, size_t rowBytes, int x, in
t y); | 83 bool writePixels(const SkImageInfo&, const void*, size_t rowBytes, int x, in
t y); |
84 | 84 |
85 void* accessPixels(SkImageInfo* info, size_t* rowBytes); | 85 bool accessPixels(SkPixmap* pmap); |
86 | 86 |
87 /** | 87 /** |
88 * Return the device's associated gpu render target, or NULL. | 88 * Return the device's associated gpu render target, or NULL. |
89 */ | 89 */ |
90 virtual GrRenderTarget* accessRenderTarget() { return NULL; } | 90 virtual GrRenderTarget* accessRenderTarget() { return NULL; } |
91 | 91 |
92 | 92 |
93 /** | 93 /** |
94 * Return the device's origin: its offset in device coordinates from | 94 * Return the device's origin: its offset in device coordinates from |
95 * the default origin in its canvas' matrix/clip | 95 * the default origin in its canvas' matrix/clip |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 virtual void drawPatch(const SkDraw&, const SkPoint cubics[12], const SkColo
r colors[4], | 232 virtual void drawPatch(const SkDraw&, const SkPoint cubics[12], const SkColo
r colors[4], |
233 const SkPoint texCoords[4], SkXfermode* xmode, const
SkPaint& paint); | 233 const SkPoint texCoords[4], SkXfermode* xmode, const
SkPaint& paint); |
234 /** The SkDevice passed will be an SkDevice which was returned by a call to | 234 /** The SkDevice passed will be an SkDevice which was returned by a call to |
235 onCreateDevice on this device with kNeverTile_TileExpectation. | 235 onCreateDevice on this device with kNeverTile_TileExpectation. |
236 */ | 236 */ |
237 virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, | 237 virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, |
238 const SkPaint&) = 0; | 238 const SkPaint&) = 0; |
239 | 239 |
240 virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len, con
st SkPath&, | 240 virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len, con
st SkPath&, |
241 const SkMatrix*, const SkPaint&); | 241 const SkMatrix*, const SkPaint&); |
| 242 |
242 bool readPixels(const SkImageInfo&, void* dst, size_t rowBytes, int x, int y
); | 243 bool readPixels(const SkImageInfo&, void* dst, size_t rowBytes, int x, int y
); |
| 244 bool peekPixels(SkPixmap*); |
243 | 245 |
244 /////////////////////////////////////////////////////////////////////////// | 246 /////////////////////////////////////////////////////////////////////////// |
245 | 247 |
246 /** Update as needed the pixel value in the bitmap, so that the caller can | 248 /** Update as needed the pixel value in the bitmap, so that the caller can |
247 access the pixels directly. | 249 access the pixels directly. |
248 @return The device contents as a bitmap | 250 @return The device contents as a bitmap |
249 */ | 251 */ |
250 virtual const SkBitmap& onAccessBitmap() = 0; | 252 virtual const SkBitmap& onAccessBitmap() = 0; |
251 | 253 |
252 /** | 254 /** |
(...skipping 12 matching lines...) Expand all Loading... |
265 * If the device does not recognize or support this filter, | 267 * If the device does not recognize or support this filter, |
266 * it just returns false and leaves result and offset unchanged. | 268 * it just returns false and leaves result and offset unchanged. |
267 */ | 269 */ |
268 virtual bool filterImage(const SkImageFilter*, const SkBitmap&, | 270 virtual bool filterImage(const SkImageFilter*, const SkBitmap&, |
269 const SkImageFilter::Context&, | 271 const SkImageFilter::Context&, |
270 SkBitmap* /*result*/, SkIPoint* /*offset*/) { | 272 SkBitmap* /*result*/, SkIPoint* /*offset*/) { |
271 return false; | 273 return false; |
272 } | 274 } |
273 | 275 |
274 protected: | 276 protected: |
275 // default impl returns NULL | 277 virtual SkSurface* newSurface(const SkImageInfo&, const SkSurfaceProps&) { r
eturn NULL; } |
276 virtual SkSurface* newSurface(const SkImageInfo&, const SkSurfaceProps&); | 278 virtual bool onPeekPixels(SkPixmap*) { return false; } |
277 | |
278 // default impl returns NULL | |
279 virtual const void* peekPixels(SkImageInfo*, size_t* rowBytes); | |
280 | 279 |
281 /** | 280 /** |
282 * The caller is responsible for "pre-clipping" the dst. The impl can assum
e that the dst | 281 * The caller is responsible for "pre-clipping" the dst. The impl can assum
e that the dst |
283 * image at the specified x,y offset will fit within the device's bounds. | 282 * image at the specified x,y offset will fit within the device's bounds. |
284 * | 283 * |
285 * This is explicitly asserted in readPixels(), the public way to call this
. | 284 * This is explicitly asserted in readPixels(), the public way to call this
. |
286 */ | 285 */ |
287 virtual bool onReadPixels(const SkImageInfo&, void*, size_t, int x, int y); | 286 virtual bool onReadPixels(const SkImageInfo&, void*, size_t, int x, int y); |
288 | 287 |
289 /** | 288 /** |
290 * The caller is responsible for "pre-clipping" the src. The impl can assum
e that the src | 289 * The caller is responsible for "pre-clipping" the src. The impl can assum
e that the src |
291 * image at the specified x,y offset will fit within the device's bounds. | 290 * image at the specified x,y offset will fit within the device's bounds. |
292 * | 291 * |
293 * This is explicitly asserted in writePixelsDirect(), the public way to ca
ll this. | 292 * This is explicitly asserted in writePixelsDirect(), the public way to ca
ll this. |
294 */ | 293 */ |
295 virtual bool onWritePixels(const SkImageInfo&, const void*, size_t, int x, i
nt y); | 294 virtual bool onWritePixels(const SkImageInfo&, const void*, size_t, int x, i
nt y); |
296 | 295 |
297 /** | 296 virtual bool onAccessPixels(SkPixmap*) { return false; } |
298 * Default impl returns NULL. | |
299 */ | |
300 virtual void* onAccessPixels(SkImageInfo* info, size_t* rowBytes); | |
301 | 297 |
302 /** | 298 /** |
303 * Leaky properties are those which the device should be applying but it is
n't. | 299 * Leaky properties are those which the device should be applying but it is
n't. |
304 * These properties will be applied by the draw, when and as it can. | 300 * These properties will be applied by the draw, when and as it can. |
305 * If the device does handle a property, that property should be set to the
identity value | 301 * If the device does handle a property, that property should be set to the
identity value |
306 * for that property, effectively making it non-leaky. | 302 * for that property, effectively making it non-leaky. |
307 */ | 303 */ |
308 const SkDeviceProperties& getLeakyProperties() const { | 304 const SkDeviceProperties& getLeakyProperties() const { |
309 return *fLeakyProperties; | 305 return *fLeakyProperties; |
310 } | 306 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 SkDeviceProperties* fLeakyProperties; // will always exist. | 388 SkDeviceProperties* fLeakyProperties; // will always exist. |
393 | 389 |
394 #ifdef SK_DEBUG | 390 #ifdef SK_DEBUG |
395 bool fAttachedToCanvas; | 391 bool fAttachedToCanvas; |
396 #endif | 392 #endif |
397 | 393 |
398 typedef SkRefCnt INHERITED; | 394 typedef SkRefCnt INHERITED; |
399 }; | 395 }; |
400 | 396 |
401 #endif | 397 #endif |
OLD | NEW |