#include "SkCanvas.h"
#include "SkFlattenable.h"
-#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
-#include "SkMatrixClipStateMgr.h"
-#endif
#include "SkPathHeap.h"
#include "SkPicture.h"
-#include "SkPicturePlayback.h"
+#include "SkPictureData.h"
#include "SkPictureFlat.h"
#include "SkTemplates.h"
#include "SkWriter32.h"
size_t recordRestoreOffsetPlaceholder(SkRegion::Op);
void fillRestoreOffsetPlaceholdersForCurrentStackLevel(uint32_t restoreOffset);
-#ifndef SK_COLLAPSE_MATRIX_CLIP_STATE
SkTDArray<int32_t> fRestoreOffsetStack;
int fFirstSavedLayerIndex;
enum {
kNoSavedLayerIndex = -1
};
-#endif
SkTDArray<uint32_t> fCullOffsetStack;
size_t offset = fWriter.bytesWritten();
this->predrawNotify();
-
- #ifdef SK_DEBUG_TRACE
- SkDebugf("add %s\n", DrawTypeToString(drawType));
- #endif
+ fContentInfo.addOperation();
SkASSERT(0 != *size);
SkASSERT(((uint8_t) drawType) == drawType);
const SkFlatData* addPaint(const SkPaint& paint) { return this->addPaintPtr(&paint); }
const SkFlatData* addPaintPtr(const SkPaint* paint);
void addFlatPaint(const SkFlatData* flatPaint);
+ void addPatch(const SkPoint cubics[12]);
void addPath(const SkPath& path);
void addPicture(const SkPicture* picture);
void addPoint(const SkPoint& point);
int find(const SkBitmap& bitmap);
-#ifdef SK_DEBUG_DUMP
-public:
- void dumpMatrices();
- void dumpPaints();
-#endif
-
-#ifdef SK_DEBUG_SIZE
-public:
- size_t size() const;
- int bitmaps(size_t* size) const;
- int matrices(size_t* size) const;
- int paints(size_t* size) const;
- int paths(size_t* size) const;
- int regions(size_t* size) const;
- size_t streamlen() const;
-
- size_t fPointBytes, fRectBytes, fTextBytes;
- int fPointWrites, fRectWrites, fTextWrites;
-#endif
-
-#ifdef SK_DEBUG_VALIDATE
-public:
- void validate(size_t initialOffset, uint32_t size) const;
-private:
- void validateBitmaps() const;
- void validateMatrices() const;
- void validatePaints() const;
- void validatePaths() const;
- void validateRegions() const;
-#else
-public:
+protected:
void validate(size_t initialOffset, size_t size) const {
SkASSERT(fWriter.bytesWritten() == initialOffset + size);
}
-#endif
-protected:
virtual SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE;
const void* onPeekPixels(SkImageInfo*, size_t*) SK_OVERRIDE {
return NULL;
}
- virtual void willSave(SaveFlags) SK_OVERRIDE;
+ virtual void willSave() SK_OVERRIDE;
virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveFlags) SK_OVERRIDE;
virtual void willRestore() SK_OVERRIDE;
SkScalar constY, const SkPaint&) SK_OVERRIDE;
virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
const SkMatrix* matrix, const SkPaint&) SK_OVERRIDE;
+
+ virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
+ const SkPoint texCoords[4], SkXfermode* xmode,
+ const SkPaint& paint) SK_OVERRIDE;
virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE;
- virtual void onDrawPicture(const SkPicture* picture) SK_OVERRIDE;
+ virtual void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) SK_OVERRIDE;
// Return fontmetrics.fTop,fBottom in topbot[0,1], after they have been
// tweaked by paint.computeFastBounds().
size_t recordClipRRect(const SkRRect& rrect, SkRegion::Op op, bool doAA);
size_t recordClipPath(int pathID, SkRegion::Op op, bool doAA);
size_t recordClipRegion(const SkRegion& region, SkRegion::Op op);
- void recordSave(SaveFlags flags);
+ void recordSave();
void recordSaveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags);
void recordRestore(bool fillInSkips = true);
SkBitmapHeap* fBitmapHeap;
private:
- friend class MatrixClipState; // for access to *Impl methods
- friend class SkMatrixClipStateMgr; // for access to *Impl methods
-
SkPictureContentInfo fContentInfo;
SkAutoTUnref<SkPathHeap> fPathHeap;
bool fOptsEnabled;
int fInitialSaveCount;
- friend class SkPicturePlayback;
+ friend class SkPictureData; // for SkPictureData's SkPictureRecord-based constructor
friend class SkPictureTester; // for unit testing
-#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
- SkMatrixClipStateMgr fMCMgr;
-#endif
-
typedef SkCanvas INHERITED;
};