OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2007 The Android Open Source Project | 3 * Copyright 2007 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 SkPicture_DEFINED | 10 #ifndef SkPicture_DEFINED |
11 #define SkPicture_DEFINED | 11 #define SkPicture_DEFINED |
12 | 12 |
13 #include "SkBitmap.h" | 13 #include "SkBitmap.h" |
14 #include "SkDrawPictureCallback.h" | 14 #include "SkDrawPictureCallback.h" |
15 #include "SkImageDecoder.h" | 15 #include "SkImageDecoder.h" |
16 #include "SkRefCnt.h" | 16 #include "SkRefCnt.h" |
17 #include "SkTDArray.h" | 17 #include "SkTDArray.h" |
18 | 18 |
19 #if SK_SUPPORT_GPU | 19 #if SK_SUPPORT_GPU |
20 class GrContext; | 20 class GrContext; |
21 #endif | 21 #endif |
22 | 22 |
23 class SkBBoxHierarchy; | 23 class SkBBoxHierarchy; |
24 class SkCanvas; | 24 class SkCanvas; |
25 class SkData; | 25 class SkData; |
26 class SkPictureData; | 26 class SkPictureData; |
| 27 class SkPixelSerializer; |
27 class SkStream; | 28 class SkStream; |
28 class SkWStream; | 29 class SkWStream; |
29 | 30 |
30 struct SkPictInfo; | 31 struct SkPictInfo; |
31 | 32 |
32 class SkRecord; | 33 class SkRecord; |
33 | 34 |
34 namespace SkRecords { | 35 namespace SkRecords { |
35 class CollectLayers; | 36 class CollectLayers; |
36 }; | 37 }; |
37 | 38 |
| 39 //#define SK_LEGACY_ENCODE_BITMAP |
| 40 |
38 /** \class SkPicture | 41 /** \class SkPicture |
39 | 42 |
40 The SkPicture class records the drawing commands made to a canvas, to | 43 The SkPicture class records the drawing commands made to a canvas, to |
41 be played back at a later time. | 44 be played back at a later time. |
42 */ | 45 */ |
43 class SK_API SkPicture : public SkNVRefCnt<SkPicture> { | 46 class SK_API SkPicture : public SkNVRefCnt<SkPicture> { |
44 public: | 47 public: |
45 // AccelData provides a base class for device-specific acceleration | 48 // AccelData provides a base class for device-specific acceleration |
46 // data. It is added to the picture via EXPERIMENTAL_addAccelData. | 49 // data. It is added to the picture via EXPERIMENTAL_addAccelData. |
47 class AccelData : public SkRefCnt { | 50 class AccelData : public SkRefCnt { |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 137 |
135 /** | 138 /** |
136 * Function to encode an SkBitmap to an SkData. A function with this | 139 * Function to encode an SkBitmap to an SkData. A function with this |
137 * signature can be passed to serialize() and SkWriteBuffer. | 140 * signature can be passed to serialize() and SkWriteBuffer. |
138 * Returning NULL will tell the SkWriteBuffer to use | 141 * Returning NULL will tell the SkWriteBuffer to use |
139 * SkBitmap::flatten() to store the bitmap. | 142 * SkBitmap::flatten() to store the bitmap. |
140 * | 143 * |
141 * @param pixelRefOffset DEPRECATED -- caller assumes it will return 0. | 144 * @param pixelRefOffset DEPRECATED -- caller assumes it will return 0. |
142 * @return SkData If non-NULL, holds encoded data representing the passed | 145 * @return SkData If non-NULL, holds encoded data representing the passed |
143 * in bitmap. The caller is responsible for calling unref(). | 146 * in bitmap. The caller is responsible for calling unref(). |
| 147 * |
| 148 * TODO: No longer used by SkPicture (except when SK_LEGACY_ENCODE_BITMAP |
| 149 * is defined. Still used by PDF though. Move into PDF. |
144 */ | 150 */ |
145 typedef SkData* (*EncodeBitmap)(size_t* pixelRefOffset, const SkBitmap& bm); | 151 typedef SkData* (*EncodeBitmap)(size_t* pixelRefOffset, const SkBitmap& bm); |
146 | 152 |
| 153 #ifdef SK_LEGACY_ENCODE_BITMAP |
147 /** | 154 /** |
148 * Serialize to a stream. If non NULL, encoder will be used to encode | 155 * Serialize to a stream. If non NULL, encoder will be used to encode |
149 * any bitmaps in the picture. | 156 * any bitmaps in the picture. |
150 * encoder will never be called with a NULL pixelRefOffset. | 157 * encoder will never be called with a NULL pixelRefOffset. |
| 158 * DEPRECATED - use serialize(SkWStream*, SkPixelSerializer* serializer) |
| 159 * instead. |
151 */ | 160 */ |
152 void serialize(SkWStream*, EncodeBitmap encoder = NULL) const; | 161 void serialize(SkWStream* wStream, EncodeBitmap encoder) const; |
| 162 #endif |
| 163 |
| 164 /** |
| 165 * Serialize to a stream. If non NULL, serializer will be used to serialize |
| 166 * any bitmaps in the picture. |
| 167 * |
| 168 * TODO: Use serializer to serialize SkImages as well. |
| 169 */ |
| 170 void serialize(SkWStream*, SkPixelSerializer* serializer = NULL) const; |
153 | 171 |
154 /** | 172 /** |
155 * Serialize to a buffer. | 173 * Serialize to a buffer. |
156 */ | 174 */ |
157 void flatten(SkWriteBuffer&) const; | 175 void flatten(SkWriteBuffer&) const; |
158 | 176 |
159 /** | 177 /** |
160 * Returns true if any bitmaps may be produced when this SkPicture | 178 * Returns true if any bitmaps may be produced when this SkPicture |
161 * is replayed. | 179 * is replayed. |
162 */ | 180 */ |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 | 316 |
299 friend class SkPictureRecorder; // SkRecord-based constructor. | 317 friend class SkPictureRecorder; // SkRecord-based constructor. |
300 friend class GrLayerHoister; // access to fRecord | 318 friend class GrLayerHoister; // access to fRecord |
301 friend class ReplaceDraw; | 319 friend class ReplaceDraw; |
302 friend class SkPictureUtils; | 320 friend class SkPictureUtils; |
303 friend class SkRecordedDrawable; | 321 friend class SkRecordedDrawable; |
304 }; | 322 }; |
305 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 96, SkPictureSize); | 323 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 96, SkPictureSize); |
306 | 324 |
307 #endif | 325 #endif |
OLD | NEW |