8 #ifndef SkPicture_DEFINED
9 #define SkPicture_DEFINED
28 class SkTypefacePlayback;
53 typedef bool (*InstallPixelRefProc)(
const void* src,
size_t length,
SkBitmap* dst);
55 #ifdef SK_SUPPORT_LEGACY_PICTUREINSTALLPIXELREF
66 return MakeFromStream(stream);
103 virtual bool abort() = 0;
118 virtual SkRect cullRect()
const = 0;
121 uint32_t uniqueID()
const;
138 virtual bool willPlayBackBitmaps()
const = 0;
145 virtual int approximateOpCount()
const = 0;
148 virtual size_t approximateBytesUsed()
const = 0;
158 static bool InternalOnly_StreamIsSKP(
SkStream*, SkPictInfo*);
159 static bool InternalOnly_BufferIsSKP(SkReadBuffer*, SkPictInfo*);
161 #ifdef SK_SUPPORT_LEGACY_PICTURE_GPUVETO
163 bool suitableForGpuRasterization(
GrContext*,
const char** whyNot = NULL)
const;
170 virtual const SkBigPicture* asSkBigPicture()
const {
return NULL; }
173 static void SetPictureIOSecurityPrecautionsEnabled_Dangerous(
bool set);
174 static bool PictureIOSecurityPrecautionsEnabled();
176 #ifdef SK_SUPPORT_LEGACY_PICTURE_PTR
178 return MakeFromStream(stream, proc).release();
181 return MakeFromStream(stream).release();
183 static SkPicture* CreateFromBuffer(SkReadBuffer& rbuf) {
184 return MakeFromBuffer(rbuf).release();
191 friend class SkBigPicture;
192 friend class SkEmptyPicture;
193 template <
typename>
friend class SkMiniPicture;
197 friend class SkPictureData;
199 virtual int numSlowPaths()
const = 0;
201 friend struct SkPathCounter;
218 static const uint32_t MIN_PICTURE_VERSION = 35;
219 static const uint32_t CURRENT_PICTURE_VERSION = 47;
221 static_assert(MIN_PICTURE_VERSION <= 41,
222 "Remove kFontFileName and related code from SkFontDescriptor.cpp.");
224 static_assert(MIN_PICTURE_VERSION <= 42,
225 "Remove COMMENT API handlers from SkPicturePlayback.cpp");
227 static_assert(MIN_PICTURE_VERSION <= 43,
228 "Remove SkBitmapSourceDeserializer.");
230 static_assert(MIN_PICTURE_VERSION <= 45,
231 "Remove decoding of old SkTypeface::Style from SkFontDescriptor.cpp.");
233 static bool IsValidPictInfo(
const SkPictInfo& info);
235 const SkPictureData*,
236 const SkReadBuffer* buffer);
238 SkPictInfo createHeader()
const;
239 SkPictureData* backport()
const;
241 mutable uint32_t fUniqueID;
A Canvas encapsulates all of the state about drawing into a device (bitmap).
Definition: SkCanvas.h:58
The SkPath class encapsulates compound (multiple contour) geometric paths consisting of straight line...
Definition: SkPath.h:27
Definition: SkRefCnt.h:135
An SkPicture records drawing commands made to a canvas to be played back at a later time...
Definition: SkPicture.h:38
Subclasses of this can be passed to playback().
Definition: SkPicture.h:99
Definition: SkPicture.h:167
SkData holds an immutable data buffer.
Definition: SkData.h:22
The SkBitmap class specifies a raster bitmap.
Definition: SkBitmap.h:41
Definition: GrContext.h:48
Interface for serializing pixels, e.g.
Definition: SkPixelSerializer.h:19
SkStream – abstraction for a source of bytes.
Definition: SkStream.h:38
Definition: SkStream.h:182
Definition: SkWriteBuffer.h:26
Definition: SkImageDeserializer.h:17
SkImage is an abstraction for drawing a rectagle of pixels, though the particular type of image could...
Definition: SkImage.h:45
Gathers GPU-related statistics for one or more SkPictures.
Definition: SkPictureAnalyzer.h:25