int SkPictureRecord::saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags) { // record the offset to us, making it non-positive to distinguish a save // from a clip entry. fRestoreOffsetStack.push(-(int32_t)fWriter.size()); addDraw(SAVE_LAYER); addRectPtr(bounds); addPaintPtr(paint); addInt(flags); if (kNoSavedLayerIndex == fFirstSavedLayerIndex) { fFirstSavedLayerIndex = fRestoreOffsetStack.count(); } validate(); /* Don't actually call saveLayer, because that will try to allocate an offscreen device (potentially very big) which we don't actually need at this time (and may not be able to afford since during record our clip starts out the size of the picture, which is often much larger than the size of the actual device we'll use during playback). */ int count = this->INHERITED::save(flags); this->clipRectBounds(bounds, flags, NULL); return count; }
void SkPictureRecord::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, const SkPaint* paint) { addDraw(DRAW_BITMAP_MATRIX); addPaintPtr(paint); addBitmap(bitmap); addMatrix(matrix); validate(); }
void SkPictureRecord::drawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint = NULL) { addDraw(DRAW_SPRITE); addPaintPtr(paint); addBitmap(bitmap); addInt(left); addInt(top); validate(); }
void SkPictureRecord::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { addDraw(DRAW_BITMAP_NINE); addPaintPtr(paint); addBitmap(bitmap); addIRect(center); addRect(dst); validate(); }
void SkPictureRecord::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src, const SkRect& dst, const SkPaint* paint) { addDraw(DRAW_BITMAP_RECT); addPaintPtr(paint); addBitmap(bitmap); addIRectPtr(src); // may be null addRect(dst); validate(); }
void SkPictureRecord::drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint = NULL) { addDraw(DRAW_BITMAP); addPaintPtr(paint); addBitmap(bitmap); addScalar(left); addScalar(top); validate(); }
int SkPictureRecord::saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags) { addDraw(SAVE_LAYER); addRectPtr(bounds); addPaintPtr(paint); addInt(flags); fRestoreOffsetStack.push(0); validate(); /* Don't actually call saveLayer, because that will try to allocate an offscreen device (potentially very big) which we don't actually need at this time (and may not be able to afford since during record our clip starts out the size of the picture, which is often much larger than the size of the actual device we'll use during playback). */ return this->INHERITED::save(flags); }
void SkPictureRecord::addPaint(const SkPaint& paint) { addPaintPtr(&paint); }