SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { bool hasModes = buffer.readBool(); if (hasModes) { this->initAllocModes(); SkASSERT(buffer.getArrayCount() == countInputs() * sizeof(fModes[0])); buffer.readByteArray(fModes); } else { fModes = 0; } }
SkImageRef::SkImageRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, &gImageRefMutex), fErrorInDecoding(false) { fConfig = (SkBitmap::Config)buffer.readUInt(); fSampleSize = buffer.readInt(); fDoDither = buffer.readBool(); size_t length = buffer.getArrayCount(); fStream = SkNEW_ARGS(SkMemoryStream, (length)); buffer.readByteArray((void*)fStream->getMemoryBase()); fPrev = fNext = NULL; fFactory = NULL; }
SkMallocPixelRef::SkMallocPixelRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, NULL) { fSize = buffer.getArrayCount(); fStorage = sk_malloc_throw(fSize); buffer.readByteArray(fStorage); if (buffer.readBool()) { fCTable = buffer.readFlattenableT<SkColorTable>(); } else { fCTable = NULL; } fOwnPixels = true; this->setPreLocked(fStorage, fCTable); }
SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { int storedCount = buffer.readInt(); this->initAlloc(SkAbs32(storedCount), storedCount < 0); for (int i = 0; i < fCount; ++i) { fFilters[i] = buffer.readFlattenableT<SkImageFilter>(); } if (fModes) { SkASSERT(storedCount < 0); SkASSERT(buffer.getArrayCount() == fCount * sizeof(fModes[0])); buffer.readByteArray(fModes); } else { SkASSERT(storedCount >= 0); } }
SkMallocPixelRef::SkMallocPixelRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, NULL) , fOwnPixels(true) { fRB = buffer.read32(); size_t size = buffer.isValid() ? this->info().getSafeSize(fRB) : 0; fStorage = sk_malloc_throw(size); buffer.readByteArray(fStorage, size); if (buffer.readBool()) { fCTable = SkNEW_ARGS(SkColorTable, (buffer)); } else { fCTable = NULL; } this->setPreLocked(fStorage, fCTable); }
SkEmbossMaskFilter::SkEmbossMaskFilter(SkFlattenableReadBuffer& buffer) : SkMaskFilter(buffer) { SkASSERT(buffer.getArrayCount() == sizeof(Light)); buffer.readByteArray(&fLight); SkASSERT(fLight.fPad == 0); // for the font-cache lookup to be clean fBlurSigma = buffer.readScalar(); #ifndef DELETE_THIS_CODE_WHEN_SKPS_ARE_REBUILT_AT_V13_AND_ALL_OTHER_INSTANCES_TOO // Fixing this must be done in two stages. When the skps are recaptured in V13, // remove the ConvertRadiusToSigma but retain the absolute value. // At the same time, switch the code in flatten to write a positive value. // When the skps are captured in V14 the absolute value can be removed. if (fBlurSigma > 0) { fBlurSigma = SkBlurMask::ConvertRadiusToSigma(fBlurSigma); } else { fBlurSigma = -fBlurSigma; } #endif }
SkTableMaskFilter::SkTableMaskFilter(SkFlattenableReadBuffer& rb) : INHERITED(rb) { SkASSERT(256 == rb.getArrayCount()); rb.readByteArray(fTable); }