SkFlipPixelRef::SkFlipPixelRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, NULL) { fSize = buffer.readU32(); fStorage = sk_malloc_throw(fSize << 1); fPage0 = fStorage; fPage1 = (char*)fStorage + fSize; buffer.read(fPage0, fSize); }
SkShader::SkShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer), fLocalMatrix(NULL) { if (buffer.readBool()) { SkMatrix matrix; buffer.read(&matrix, sizeof(matrix)); setLocalMatrix(matrix); } SkDEBUGCODE(fInSession = false;) }
SkImageRef::SkImageRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, &gImageRefMutex), fErrorInDecoding(false) { fConfig = (SkBitmap::Config)buffer.readU8(); fSampleSize = buffer.readU8(); size_t length = buffer.readU32(); fStream = SkNEW_ARGS(SkMemoryStream, (length)); buffer.read((void*)fStream->getMemoryBase(), length); fPrev = fNext = NULL; }
SkDashPathEffect::SkDashPathEffect(SkFlattenableReadBuffer& buffer) { fCount = buffer.readS32(); fInitialDashIndex = buffer.readS32(); fInitialDashLength = buffer.readScalar(); fIntervalLength = buffer.readScalar(); fScaleToFit = (buffer.readS32() != 0); fIntervals = (SkScalar*)sk_malloc_throw(sizeof(SkScalar) * fCount); buffer.read(fIntervals, fCount * sizeof(fIntervals[0])); }
SkMallocPixelRef::SkMallocPixelRef(SkFlattenableReadBuffer& buffer) : INHERITED(buffer, NULL) { fSize = buffer.readU32(); fStorage = sk_malloc_throw(fSize); buffer.read(fStorage, fSize); if (buffer.readBool()) { fCTable = SkNEW_ARGS(SkColorTable, (buffer)); } else { fCTable = NULL; } }
SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { int storedCount = buffer.readS32(); this->initAlloc(SkAbs32(storedCount), storedCount < 0); for (int i = 0; i < fCount; ++i) { fFilters[i] = (SkImageFilter*)buffer.readFlattenable(); } if (fModes) { SkASSERT(storedCount < 0); buffer.read(fModes, fCount * sizeof(fModes[0])); } else { SkASSERT(storedCount >= 0); } }
SkImageRef_ashmem::SkImageRef_ashmem(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fRec.fFD = -1; fRec.fAddr = NULL; fRec.fSize = 0; fRec.fPinned = false; fCT = NULL; size_t length = buffer.readU32(); if (length) { char* buf = (char*) malloc(length); buffer.read(buf, length); setURI(buf, length); } this->useDefaultMutex(); // we don't need/want the shared imageref mutex }
SkGroupShape::SkGroupShape(SkFlattenableReadBuffer& buffer) : INHERITED(buffer){ int count = buffer.readS32(); for (int i = 0; i < count; i++) { SkShape* shape = reinterpret_cast<SkShape*>(buffer.readFlattenable()); SkMatrixRef* mr = NULL; uint32_t size = buffer.readS32(); if (size) { char storage[SkMatrix::kMaxFlattenSize]; buffer.read(storage, SkAlign4(size)); mr = SkNEW(SkMatrixRef); mr->unflatten(storage); } if (shape) { this->appendShape(shape, mr)->unref(); } SkSafeUnref(mr); } }
SkRectShape::SkRectShape(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { buffer.read(&fBounds, sizeof(fBounds)); buffer.read(&fRadii, sizeof(fRadii)); }
SkEmbossMaskFilter::SkEmbossMaskFilter(SkFlattenableReadBuffer& buffer) : SkMaskFilter(buffer) { buffer.read(&fLight, sizeof(fLight)); SkASSERT(fLight.fPad == 0); // for the font-cache lookup to be clean fBlurRadius = buffer.readScalar(); }