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])); }
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); }
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); } }
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); } }
SkLayerRasterizer::SkLayerRasterizer(SkFlattenableReadBuffer& buffer) : SkRasterizer(buffer), fLayers(sizeof(SkLayerRasterizer_Rec)) { int count = buffer.readS32(); for (int i = 0; i < count; i++) { SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers.push_back(); #if 0 new (&rec->fPaint) SkPaint(buffer); #else new (&rec->fPaint) SkPaint; paint_read(&rec->fPaint, buffer); #endif rec->fOffset.fX = buffer.readScalar(); rec->fOffset.fY = buffer.readScalar(); } }
SkPowerMode(SkFlattenableReadBuffer& b) : SkXfermode(b) { // read the exponent this->init(SkFixedToScalar(b.readS32())); }