OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2010 The Android Open Source Project | 3 * Copyright 2010 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 SkDevice_DEFINED | 10 #ifndef SkDevice_DEFINED |
11 #define SkDevice_DEFINED | 11 #define SkDevice_DEFINED |
12 | 12 |
13 #include "SkRefCnt.h" | 13 #include "SkRefCnt.h" |
14 #include "SkBitmap.h" | 14 #include "SkBitmap.h" |
15 #include "SkCanvas.h" | 15 #include "SkCanvas.h" |
16 #include "SkColor.h" | 16 #include "SkColor.h" |
17 #include "SkDeviceProperties.h" | 17 #include "SkDeviceProperties.h" |
18 | 18 |
| 19 //#define SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG |
| 20 |
19 class SkClipStack; | 21 class SkClipStack; |
20 class SkDraw; | 22 class SkDraw; |
21 struct SkIRect; | 23 struct SkIRect; |
22 class SkMatrix; | 24 class SkMatrix; |
23 class SkMetaData; | 25 class SkMetaData; |
24 class SkRegion; | 26 class SkRegion; |
25 | 27 |
26 class GrRenderTarget; | 28 class GrRenderTarget; |
27 | 29 |
28 class SK_API SkBaseDevice : public SkRefCnt { | 30 class SK_API SkBaseDevice : public SkRefCnt { |
29 public: | 31 public: |
30 SK_DECLARE_INST_COUNT(SkBaseDevice) | 32 SK_DECLARE_INST_COUNT(SkBaseDevice) |
31 | 33 |
32 /** | 34 /** |
33 * Construct a new device. | 35 * Construct a new device. |
34 */ | 36 */ |
35 SkBaseDevice(); | 37 SkBaseDevice(); |
36 | 38 |
37 /** | 39 /** |
38 * Construct a new device. | 40 * Construct a new device. |
39 */ | 41 */ |
40 SkBaseDevice(const SkDeviceProperties& deviceProperties); | 42 SkBaseDevice(const SkDeviceProperties& deviceProperties); |
41 | 43 |
42 virtual ~SkBaseDevice(); | 44 virtual ~SkBaseDevice(); |
43 | 45 |
| 46 #ifdef SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG |
44 /** | 47 /** |
45 * Creates a device that is of the same type as this device (e.g. SW-raster
, | 48 * Creates a device that is of the same type as this device (e.g. SW-raster
, |
46 * GPU, or PDF). The backing store for this device is created automatically | 49 * GPU, or PDF). The backing store for this device is created automatically |
47 * (e.g. offscreen pixels or FBO or whatever is appropriate). | 50 * (e.g. offscreen pixels or FBO or whatever is appropriate). |
48 * | 51 * |
49 * @param width width of the device to create | 52 * @param width width of the device to create |
50 * @param height height of the device to create | 53 * @param height height of the device to create |
51 * @param isOpaque performance hint, set to true if you know that you will | 54 * @param isOpaque performance hint, set to true if you know that you will |
52 * draw into this device such that all of the pixels will | 55 * draw into this device such that all of the pixels will |
53 * be opaque. | 56 * be opaque. |
54 */ | 57 */ |
55 SkBaseDevice* createCompatibleDevice(SkBitmap::Config config, | 58 SkBaseDevice* createCompatibleDevice(SkBitmap::Config config, |
56 int width, int height, | 59 int width, int height, |
57 bool isOpaque); | 60 bool isOpaque); |
| 61 #endif |
| 62 SkBaseDevice* createCompatibleDevice(const SkImageInfo&); |
58 | 63 |
59 SkMetaData& getMetaData(); | 64 SkMetaData& getMetaData(); |
60 | 65 |
61 enum Capabilities { | 66 enum Capabilities { |
62 kVector_Capability = 0x1, //!< mask indicating a vector representation | 67 kVector_Capability = 0x1, //!< mask indicating a vector representation |
63 }; | 68 }; |
64 virtual uint32_t getDeviceCapabilities() = 0; | 69 virtual uint32_t getDeviceCapabilities() = 0; |
65 | 70 |
66 /** Return the width of the device (in pixels). | 71 /** Return the width of the device (in pixels). |
67 */ | 72 */ |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 int scalarsPerPos, const SkPaint& paint) = 0; | 277 int scalarsPerPos, const SkPaint& paint) = 0; |
273 virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len, | 278 virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len, |
274 const SkPath& path, const SkMatrix* matrix, | 279 const SkPath& path, const SkMatrix* matrix, |
275 const SkPaint& paint) = 0; | 280 const SkPaint& paint) = 0; |
276 virtual void drawVertices(const SkDraw&, SkCanvas::VertexMode, int vertexCou
nt, | 281 virtual void drawVertices(const SkDraw&, SkCanvas::VertexMode, int vertexCou
nt, |
277 const SkPoint verts[], const SkPoint texs[], | 282 const SkPoint verts[], const SkPoint texs[], |
278 const SkColor colors[], SkXfermode* xmode, | 283 const SkColor colors[], SkXfermode* xmode, |
279 const uint16_t indices[], int indexCount, | 284 const uint16_t indices[], int indexCount, |
280 const SkPaint& paint) = 0; | 285 const SkPaint& paint) = 0; |
281 /** The SkDevice passed will be an SkDevice which was returned by a call to | 286 /** The SkDevice passed will be an SkDevice which was returned by a call to |
282 onCreateCompatibleDevice on this device with kSaveLayer_Usage. | 287 onCreateDevice on this device with kSaveLayer_Usage. |
283 */ | 288 */ |
284 virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, | 289 virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, |
285 const SkPaint&) = 0; | 290 const SkPaint&) = 0; |
286 | 291 |
287 /** | 292 /** |
288 * On success (returns true), copy the device pixels into the bitmap. | 293 * On success (returns true), copy the device pixels into the bitmap. |
289 * On failure, the bitmap parameter is left unchanged and false is | 294 * On failure, the bitmap parameter is left unchanged and false is |
290 * returned. | 295 * returned. |
291 * | 296 * |
292 * The device's pixels are converted to the bitmap's config. The only | 297 * The device's pixels are converted to the bitmap's config. The only |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 | 404 |
400 // used to change the backend's pixels (and possibly config/rowbytes) | 405 // used to change the backend's pixels (and possibly config/rowbytes) |
401 // but cannot change the width/height, so there should be no change to | 406 // but cannot change the width/height, so there should be no change to |
402 // any clip information. | 407 // any clip information. |
403 // TODO: move to SkBitmapDevice | 408 // TODO: move to SkBitmapDevice |
404 virtual void replaceBitmapBackendForRasterSurface(const SkBitmap&) = 0; | 409 virtual void replaceBitmapBackendForRasterSurface(const SkBitmap&) = 0; |
405 | 410 |
406 // just called by SkCanvas when built as a layer | 411 // just called by SkCanvas when built as a layer |
407 void setOrigin(int x, int y) { fOrigin.set(x, y); } | 412 void setOrigin(int x, int y) { fOrigin.set(x, y); } |
408 // just called by SkCanvas for saveLayer | 413 // just called by SkCanvas for saveLayer |
409 SkBaseDevice* createCompatibleDeviceForSaveLayer(SkBitmap::Config config, | 414 SkBaseDevice* createCompatibleDeviceForSaveLayer(const SkImageInfo&); |
410 int width, int height, | |
411 bool isOpaque); | |
412 | 415 |
| 416 #ifdef SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG |
413 /** | 417 /** |
414 * Subclasses should override this to implement createCompatibleDevice. | 418 * Justs exists during the period where clients still "override" this |
| 419 * signature. They are supported by our base-impl calling this old |
| 420 * signature from the new one (using ImageInfo). |
415 */ | 421 */ |
416 virtual SkBaseDevice* onCreateCompatibleDevice(SkBitmap::Config config, | 422 virtual SkBaseDevice* onCreateCompatibleDevice(SkBitmap::Config config, |
417 int width, int height, | 423 int width, int height, |
418 bool isOpaque, | 424 bool isOpaque, Usage) { |
419 Usage usage) = 0; | 425 return NULL; |
| 426 } |
| 427 #endif |
| 428 virtual SkBaseDevice* onCreateDevice(const SkImageInfo&, Usage) { |
| 429 return NULL; |
| 430 } |
420 | 431 |
421 /** Causes any deferred drawing to the device to be completed. | 432 /** Causes any deferred drawing to the device to be completed. |
422 */ | 433 */ |
423 virtual void flush() = 0; | 434 virtual void flush() = 0; |
424 | 435 |
425 SkIPoint fOrigin; | 436 SkIPoint fOrigin; |
426 SkMetaData* fMetaData; | 437 SkMetaData* fMetaData; |
427 | 438 |
428 #ifdef SK_DEBUG | 439 #ifdef SK_DEBUG |
429 bool fAttachedToCanvas; | 440 bool fAttachedToCanvas; |
430 #endif | 441 #endif |
431 | 442 |
432 typedef SkRefCnt INHERITED; | 443 typedef SkRefCnt INHERITED; |
433 }; | 444 }; |
434 | 445 |
435 #endif | 446 #endif |
OLD | NEW |