void SkRecordedDrawable::flatten(SkWriteBuffer& buffer) const { // Write the bounds. buffer.writeRect(fBounds); // Create an SkPictureRecord to record the draw commands. SkPictInfo info; SkPictureRecord pictureRecord(SkISize::Make(fBounds.width(), fBounds.height()), 0); // If the query contains the whole picture, don't bother with the bounding box hierarchy. SkRect clipBounds; pictureRecord.getClipBounds(&clipBounds); SkBBoxHierarchy* bbh; if (clipBounds.contains(fBounds)) { bbh = nullptr; } else { bbh = fBBH.get(); } // Record the draw commands. pictureRecord.beginRecording(); SkRecordDraw(*fRecord, &pictureRecord, nullptr, fDrawableList->begin(), fDrawableList->count(), bbh, nullptr); pictureRecord.endRecording(); // Flatten the recorded commands and drawables. SkPictureData pictureData(pictureRecord, info); pictureData.flatten(buffer); }
void SkPictureShader::flatten(SkWriteBuffer& buffer) const { buffer.writeMatrix(this->getLocalMatrix()); buffer.write32(fTmx); buffer.write32(fTmy); buffer.writeRect(fTile); fPicture->flatten(buffer); }
void SkImageFilter::flatten(SkWriteBuffer& buffer) const { buffer.writeInt(fInputCount); for (int i = 0; i < fInputCount; i++) { SkImageFilter* input = this->getInput(i); buffer.writeBool(input != nullptr); if (input != nullptr) { buffer.writeFlattenable(input); } } buffer.writeRect(fCropRect.rect()); buffer.writeUInt(fCropRect.flags()); }
void SkPictureImageFilter::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); if (!buffer.isCrossProcess()) { bool hasPicture = (fPicture != NULL); buffer.writeBool(hasPicture); if (hasPicture) { fPicture->flatten(buffer); } } else { buffer.writeBool(false); } buffer.writeRect(fCropRect); }
void SkPicture::flatten(SkWriteBuffer& buffer) const { SkPictInfo info = this->createHeader(); SkAutoTDelete<SkPictureData> data(this->backport()); buffer.writeByteArray(&info.fMagic, sizeof(info.fMagic)); buffer.writeUInt(info.fVersion); buffer.writeRect(info.fCullRect); buffer.writeUInt(info.fFlags); if (data) { buffer.writeBool(true); data->flatten(buffer); } else { buffer.writeBool(false); } }
void SkPictureImageFilter::flatten(SkWriteBuffer& buffer) const { if (buffer.isCrossProcess() && SkPicture::PictureIOSecurityPrecautionsEnabled()) { buffer.writeBool(false); } else { bool hasPicture = (fPicture != NULL); buffer.writeBool(hasPicture); if (hasPicture) { fPicture->flatten(buffer); } } buffer.writeRect(fCropRect); buffer.writeInt(fPictureResolution); if (kLocalSpace_PictureResolution == fPictureResolution) { buffer.writeInt(fFilterQuality); } }
void SkTileImageFilter::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeRect(fSrcRect); buffer.writeRect(fDstRect); }
void SkMagnifierImageFilter::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeRect(fSrcRect); buffer.writeScalar(fInset); }
void SkImageSource::flatten(SkWriteBuffer& buffer) const { buffer.writeInt(fFilterQuality); buffer.writeRect(fSrcRect); buffer.writeRect(fDstRect); buffer.writeImage(fImage); }