SkMorphologyImageFilter::SkMorphologyImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(1, buffer) { fRadius.fWidth = buffer.readInt(); fRadius.fHeight = buffer.readInt(); buffer.validate((fRadius.fWidth >= 0) && (fRadius.fHeight >= 0)); }
SkColorShader::SkColorShader(SkFlattenableReadBuffer& b) : INHERITED(b) { fInheritColor = b.readU8(); if (fInheritColor) { return; } fColor = b.readU32(); }
SkBitmapProcShader::SkBitmapProcShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { buffer.readBitmap(&fRawBitmap); fState.fTileModeX = buffer.readUInt(); fState.fTileModeY = buffer.readUInt(); fFlags = 0; // computed in setContext }
SkLayerDrawLooper::SkLayerDrawLooper(SkFlattenableReadBuffer& buffer) : INHERITED(buffer), fRecs(NULL), fCount(0), fCurrRec(NULL) { int count = buffer.readInt(); for (int i = 0; i < count; i++) { LayerInfo info; info.fPaintBits = buffer.readInt(); info.fColorMode = (SkXfermode::Mode)buffer.readInt(); info.fOffset.fX = buffer.readScalar(); info.fOffset.fY = buffer.readScalar(); info.fPostTranslate = buffer.readBool(); this->addLayer(info)->unflatten(buffer); } SkASSERT(count == fCount); // we're in reverse order, so fix it now fRecs = Rec::Reverse(fRecs); #ifdef SK_DEBUG { Rec* rec = fRecs; int n = 0; while (rec) { rec = rec->fNext; n += 1; } SkASSERT(count == n); } #endif }
SkDisplacementMapEffect::SkDisplacementMapEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.readInt(); fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.readInt(); fScale = buffer.readScalar(); }
SkAvoidXfermode::SkAvoidXfermode(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fOpColor = buffer.readU32(); fDistMul = buffer.readU32(); fMode = (Mode)buffer.readU8(); }
SkColorShader::SkColorShader(SkFlattenableReadBuffer& b) : INHERITED(b) { fFlags = 0; // computed in setContext fInheritColor = b.readU8(); if (fInheritColor) { return; } fColor = b.readU32(); }
SkStrokePathEffect::SkStrokePathEffect(SkFlattenableReadBuffer& buffer) { fWidth = buffer.readScalar(); fMiter = buffer.readScalar(); fStyle = buffer.readU8(); fJoin = buffer.readU8(); fCap = buffer.readU8(); }
SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkFlattenableReadBuffer& buffer) : SkMaskFilter(buffer) { fRadius = buffer.readScalar(); fBlurStyle = (SkBlurMaskFilter::BlurStyle)buffer.readS32(); fBlurFlags = buffer.readU32() & SkBlurMaskFilter::kAll_BlurFlag; SkASSERT(fRadius >= 0); SkASSERT((unsigned)fBlurStyle < SkBlurMaskFilter::kBlurStyleCount); }
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); }
SkBlurDrawLooper::SkBlurDrawLooper(SkFlattenableReadBuffer& buffer) { fDx = buffer.readScalar(); fDy = buffer.readScalar(); fBlurColor = buffer.readU32(); fBlur = static_cast<SkMaskFilter*>(buffer.readFlattenable()); fColorFilter = static_cast<SkColorFilter*>(buffer.readFlattenable()); fBlurFlags = buffer.readU32() & kAll_BlurFlag; }
SkShader::SkShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer), fLocalMatrix(NULL) { if (buffer.readBool()) { SkMatrix matrix; buffer.read(&matrix, sizeof(matrix)); setLocalMatrix(matrix); } SkDEBUGCODE(fInSession = false;) }
SkBlurDrawLooper::SkBlurDrawLooper(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fDx = buffer.readScalar(); fDy = buffer.readScalar(); fBlurColor = buffer.readColor(); fBlur = buffer.readMaskFilter(); fColorFilter = buffer.readColorFilter(); fBlurFlags = buffer.readUInt() & kAll_BlurFlag; }
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; } }
SkPixelRef::SkPixelRef(SkFlattenableReadBuffer& buffer, SkBaseMutex* mutex) : INHERITED(buffer) { this->setMutex(mutex); fPixels = NULL; fColorTable = NULL; // we do not track ownership of this fLockCount = 0; fIsImmutable = buffer.readBool(); fGenerationID = buffer.readUInt(); fPreLocked = false; }
SkBicubicImageFilter::SkBicubicImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { SkDEBUGCODE(bool success =) buffer.readScalarArray(fCoefficients, 16); SkASSERT(success); fScale.fWidth = buffer.readScalar(); fScale.fHeight = buffer.readScalar(); buffer.validate(SkScalarIsFinite(fScale.fWidth) && SkScalarIsFinite(fScale.fHeight) && (fScale.fWidth >= 0) && (fScale.fHeight >= 0)); }
SkImageFilter::SkImageFilter(SkFlattenableReadBuffer& buffer) : fInputCount(buffer.readInt()), fInputs(new SkImageFilter*[fInputCount]) { for (int i = 0; i < fInputCount; i++) { if (buffer.readBool()) { fInputs[i] = static_cast<SkImageFilter*>(buffer.readFlattenable()); } else { fInputs[i] = NULL; } } }
SkShader::SkShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { if (buffer.readBool()) { buffer.readMatrix(&fLocalMatrix); } else { fLocalMatrix.reset(); } SkDEBUGCODE(fInSetContext = 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; }
SkImageFilter::SkImageFilter(int inputCount, SkFlattenableReadBuffer& buffer) { fInputCount = buffer.readInt(); if (buffer.validate((fInputCount >= 0) && ((inputCount < 0) || (fInputCount == inputCount)))) { fInputs = new SkImageFilter*[fInputCount]; for (int i = 0; i < fInputCount; i++) { if (buffer.readBool()) { fInputs[i] = buffer.readImageFilter(); } else { fInputs[i] = NULL; } if (!buffer.isValid()) { fInputCount = i; // Do not use fInputs past that point in the destructor break; } } SkRect rect; buffer.readRect(&rect); if (buffer.isValid() && buffer.validate(SkIsValidRect(rect))) { uint32_t flags = buffer.readUInt(); fCropRect = CropRect(rect, flags); } } else { fInputCount = 0; fInputs = NULL; } }
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; } }
SkBlendImageFilter::SkBlendImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fMode = (SkBlendImageFilter::Mode) buffer.readInt(); fBackground = buffer.readFlattenableT<SkImageFilter>(); if (buffer.readBool()) { fForeground = buffer.readFlattenableT<SkImageFilter>(); } else { fForeground = NULL; } }
SkComposeShader::SkComposeShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { fShaderA = static_cast<SkShader*>(buffer.readFlattenable()); if (NULL == fShaderA) { fShaderA = SkNEW_ARGS(SkColorShader, (0)); } fShaderB = static_cast<SkShader*>(buffer.readFlattenable()); if (NULL == fShaderB) { fShaderB = SkNEW_ARGS(SkColorShader, (0)); } fMode = static_cast<SkXfermode*>(buffer.readFlattenable()); }
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; }
SkPath1DPathEffect::SkPath1DPathEffect(SkFlattenableReadBuffer& buffer) { fAdvance = buffer.readScalar(); if (fAdvance > 0) { fPath.unflatten(buffer); fInitialOffset = buffer.readScalar(); fStyle = (Style) buffer.readU8(); } else { SkDEBUGF(("SkPath1DPathEffect can't use advance <= 0\n")); // Make Coverity happy. fInitialOffset = 0; fStyle = kStyleCount; } }
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); }
SkPathHeap::SkPathHeap(SkFlattenableReadBuffer& buffer) : fHeap(kPathCount * sizeof(SkPath)) { const int count = buffer.readInt(); fPaths.setCount(count); SkPath** ptr = fPaths.begin(); SkPath* p = (SkPath*)fHeap.allocThrow(count * sizeof(SkPath)); for (int i = 0; i < count; i++) { new (p) SkPath; buffer.readPath(p); *ptr++ = p; // record the pointer p++; // move to the next storage location } }
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 }
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); } }
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); } }