void SkPictureShader::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.write32(fTmx); buffer.write32(fTmy); fPicture->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 SkBlurDrawLooper::flatten(SkWriteBuffer& buffer) const { buffer.writeColor(fBlurColor); buffer.writeScalar(fSigma); buffer.writeScalar(fDx); buffer.writeScalar(fDy); buffer.write32(fBlurFlags); }
void SkGradientShaderBase::Descriptor::flatten(SkWriteBuffer& buffer) const { buffer.writeColorArray(fColors, fCount); if (fPos) { buffer.writeBool(true); buffer.writeScalarArray(fPos, fCount); } else { buffer.writeBool(false); } buffer.write32(fTileMode); buffer.write32(fGradFlags); if (fLocalMatrix) { buffer.writeBool(true); buffer.writeMatrix(*fLocalMatrix); } else { buffer.writeBool(false); } }
void SkImageInfo::flatten(SkWriteBuffer& buffer) const { buffer.write32(fWidth); buffer.write32(fHeight); SkASSERT(0 == (fAlphaType & ~kAlphaTypeMask)); SkASSERT(0 == (fColorType & ~kColorTypeMask)); uint32_t packed = (fAlphaType << 8) | live_to_stored(fColorType); buffer.write32(packed); if (fColorSpace) { sk_sp<SkData> data = fColorSpace->serialize(); if (data) { buffer.writeDataAsByteArray(data.get()); } else { buffer.writeByteArray(nullptr, 0); } } else { sk_sp<SkData> data = SkData::MakeEmpty(); buffer.writeDataAsByteArray(data.get()); } }
void SkMallocPixelRef::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.write32(SkToU32(fRB)); // TODO: replace this bulk write with a chunky one that can trim off any // trailing bytes on each scanline (in case rowbytes > width*size) size_t size = this->info().getSafeSize(fRB); buffer.writeByteArray(fStorage, size); buffer.writeBool(fCTable != NULL); if (fCTable) { fCTable->writeToBuffer(buffer); } }
/* * Header: * paint flags : 32 * non_def bits : 16 * xfermode enum : 8 * pad zeros : 8 */ static void write_paint(SkWriteBuffer& writer, const SkPaint& paint, unsigned usage) { uint32_t packedFlags = pack_paint_flags(paint.getFlags(), paint.getHinting(), paint.getTextAlign(), paint.getFilterQuality(), paint.getStyle(), paint.getStrokeCap(), paint.getStrokeJoin(), paint.getTextEncoding()); writer.write32(packedFlags); unsigned nondef = compute_nondef(paint, (PaintUsage)usage); const uint8_t pad = 0; writer.write32((nondef << 16) | ((unsigned)paint.getBlendMode() << 8) | pad); CHECK_WRITE_SCALAR(writer, nondef, paint, TextSize); CHECK_WRITE_SCALAR(writer, nondef, paint, TextScaleX); CHECK_WRITE_SCALAR(writer, nondef, paint, TextSkewX); CHECK_WRITE_SCALAR(writer, nondef, paint, StrokeWidth); CHECK_WRITE_SCALAR(writer, nondef, paint, StrokeMiter); if (nondef & kColor_NonDef) { writer.write32(paint.getColor()); } if (nondef & kTypeface_NonDef) { // TODO: explore idea of writing bits indicating "use the prev (or prev N) face" // e.g. 1-N bits is an index into a ring buffer of typefaces SkTypeface* tf = paint.getTypeface(); SkASSERT(tf); writer.writeTypeface(tf); } CHECK_WRITE_FLATTENABLE(writer, nondef, paint, PathEffect); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, Shader); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, MaskFilter); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, ColorFilter); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, Rasterizer); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, ImageFilter); CHECK_WRITE_FLATTENABLE(writer, nondef, paint, DrawLooper); }
void SkPictureData::flatten(SkWriteBuffer& buffer) const { write_tag_size(buffer, SK_PICT_READER_TAG, fOpData->size()); buffer.writeByteArray(fOpData->bytes(), fOpData->size()); if (fPictureCount > 0) { write_tag_size(buffer, SK_PICT_PICTURE_TAG, fPictureCount); for (int i = 0; i < fPictureCount; i++) { fPictureRefs[i]->flatten(buffer); } } // Write this picture playback's data into a writebuffer this->flattenToBuffer(buffer); buffer.write32(SK_PICT_EOF_TAG); }
void SkImageRef::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeInt(fSampleSize); buffer.writeBool(fDoDither); // FIXME: Consider moving this logic should go into writeStream itself. // writeStream currently has no other callers, so this may be fine for // now. if (!fStream->rewind()) { SkDEBUGF(("Failed to rewind SkImageRef stream!")); buffer.write32(0); } else { // FIXME: Handle getLength properly here. Perhaps this class should // take an SkStreamAsset. buffer.writeStream(fStream, fStream->getLength()); } }
void SkOpPE::flatten(SkWriteBuffer& buffer) const { buffer.writeFlattenable(fOne.get()); buffer.writeFlattenable(fTwo.get()); buffer.write32(fOp); }
void SkStrokePE::flatten(SkWriteBuffer& buffer) const { buffer.writeScalar(fWidth); buffer.writeScalar(fMiter); buffer.write32(fJoin); buffer.write32(fCap); }
void SkComposeShader::flatten(SkWriteBuffer& buffer) const { buffer.writeFlattenable(fShaderA.get()); buffer.writeFlattenable(fShaderB.get()); buffer.write32((int)fMode); }
void SkComposeShader::flatten(SkWriteBuffer& buffer) const { buffer.writeFlattenable(fDst.get()); buffer.writeFlattenable(fSrc.get()); buffer.write32((int)fMode); buffer.writeScalar(fLerpT); }