8#ifndef SkPictureRecord_DEFINED
9#define SkPictureRecord_DEFINED
59#define MASK_24 0x00FFFFFF
60#define UNPACK_8_24(combined, small, large) \
61 small = (combined >> 24) & 0xFF; \
62 large = combined & MASK_24
63#define PACK_8_24(small, large) ((small << 24) | large)
106 fRecordFlags = recordFlags;
120 void handleOptimization(
int opt);
121 size_t recordRestoreOffsetPlaceholder();
122 void fillRestoreOffsetPlaceholdersForCurrentStackLevel(uint32_t restoreOffset);
140 size_t addDraw(
DrawType drawType,
size_t* size) {
146 SkASSERT(((uint8_t) drawType) == drawType);
159 void addInt(
int value) {
167 void addMatrix(
const SkMatrix& matrix);
170 void addPatch(
const SkPoint cubics[12]);
171 void addPath(
const SkPath& path);
172 void addPicture(
const SkPicture* picture);
174 void addPoint(
const SkPoint& point);
176 void addRect(
const SkRect& rect);
177 void addRectPtr(
const SkRect* rect);
178 void addIRect(
const SkIRect& rect);
179 void addIRectPtr(
const SkIRect* rect);
181 void addRegion(
const SkRegion& region);
183 void addText(
const void*
text,
size_t byteLength);
191 void validate(
size_t initialOffset,
size_t size)
const {
275 uint32_t operator()(
const SkPath& p) {
return p.getGenerationID(); }
288 uint32_t fRecordFlags;
289 int fInitialSaveCount;
#define SkASSERT_RELEASE(cond)
#define PACK_8_24(small, large)
constexpr uint32_t SkToU32(S x)
static sk_sp< SkData > MakeEmpty()
void onDrawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint) override
void onDrawImage2(const SkImage *, SkScalar, SkScalar, const SkSamplingOptions &, const SkPaint *) override
const skia_private::TArray< sk_sp< const SkPicture > > & getPictures() const
void onDrawSlug(const sktext::gpu::Slug *slug, const SkPaint &paint) override
void onDrawDrawable(SkDrawable *, const SkMatrix *) override
void onDrawRect(const SkRect &, const SkPaint &) override
void onDrawArc(const SkRect &, SkScalar, SkScalar, bool, const SkPaint &) override
void onDrawBehind(const SkPaint &) override
void onClipRect(const SkRect &, SkClipOp, ClipEdgeStyle) override
void validate(size_t initialOffset, size_t size) const
void onClipRRect(const SkRRect &, SkClipOp, ClipEdgeStyle) override
void recordSaveLayer(const SaveLayerRec &)
void recordScale(const SkMatrix &matrix)
size_t recordClipRRect(const SkRRect &rrect, SkClipOp op, bool doAA)
int addPathToHeap(const SkPath &path)
const skia_private::TArray< sk_sp< const SkTextBlob > > & getTextBlobs() const
void onDrawPaint(const SkPaint &) override
void onDrawPicture(const SkPicture *, const SkMatrix *, const SkPaint *) override
const skia_private::TArray< sk_sp< const SkImage > > & getImages() const
void recordRestore(bool fillInSkips=true)
void willRestore() override
const skia_private::TArray< sk_sp< const SkVertices > > & getVertices() const
void onDrawOval(const SkRect &, const SkPaint &) override
void onDrawAnnotation(const SkRect &, const char[], SkData *) override
void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint &) override
void onDrawEdgeAAQuad(const SkRect &, const SkPoint[4], QuadAAFlags, const SkColor4f &, SkBlendMode) override
sk_sp< SkData > opData() const
SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override
void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkBlendMode, const SkPaint &paint) override
void didScale(SkScalar, SkScalar) override
void onDrawAtlas2(const SkImage *, const SkRSXform[], const SkRect[], const SkColor[], int, SkBlendMode, const SkSamplingOptions &, const SkRect *, const SkPaint *) override
bool onDoSaveBehind(const SkRect *) override
void onDrawVerticesObject(const SkVertices *, SkBlendMode, const SkPaint &) override
void onDrawRegion(const SkRegion &, const SkPaint &) override
bool onPeekPixels(SkPixmap *) override
void recordTranslate(const SkMatrix &matrix)
const SkWriter32 & writeStream() const
const skia_private::TArray< sk_sp< SkDrawable > > & getDrawables() const
void onClipRegion(const SkRegion &, SkClipOp) override
void recordConcat(const SkMatrix &matrix)
void onDrawShadowRec(const SkPath &, const SkDrawShadowRec &) override
size_t recordClipPath(int pathID, SkClipOp op, bool doAA)
void onDrawPath(const SkPath &, const SkPaint &) override
const skia_private::TArray< sk_sp< const sktext::gpu::Slug > > & getSlugs() const
void didConcat44(const SkM44 &) override
size_t recordClipRect(const SkRect &rect, SkClipOp op, bool doAA)
void onDrawRRect(const SkRRect &, const SkPaint &) override
void onResetClip() override
void onClipPath(const SkPath &, SkClipOp, ClipEdgeStyle) override
size_t recordClipRegion(const SkRegion ®ion, SkClipOp op)
void onDrawEdgeAAImageSet2(const ImageSetEntry[], int count, const SkPoint[], const SkMatrix[], const SkSamplingOptions &, const SkPaint *, SrcRectConstraint) override
void onDrawDRRect(const SkRRect &, const SkRRect &, const SkPaint &) override
void onDrawImageRect2(const SkImage *, const SkRect &, const SkRect &, const SkSamplingOptions &, const SkPaint *, SrcRectConstraint) override
void onClipShader(sk_sp< SkShader >, SkClipOp) override
void didTranslate(SkScalar, SkScalar) override
sk_sp< SkSurface > onNewSurface(const SkImageInfo &, const SkSurfaceProps &) override
void didSetM44(const SkM44 &) override
void onDrawImageLattice2(const SkImage *, const Lattice &, const SkRect &, SkFilterMode, const SkPaint *) override
void setFlags(uint32_t recordFlags)
void writeInt(int32_t value)
void writeScalar(SkScalar value)
sk_sp< SkData > snapshotAsData() const
size_t bytesWritten() const