sk_sp<SkFlattenable> SkRadialGradient::CreateProc(SkReadBuffer& buffer) { DescriptorScope desc; if (!desc.unflatten(buffer)) { return nullptr; } const SkPoint center = buffer.readPoint(); const SkScalar radius = buffer.readScalar(); return SkGradientShader::MakeRadial(center, radius, desc.fColors, desc.fPos, desc.fCount, desc.fTileMode, desc.fGradFlags, desc.fLocalMatrix); }
sk_sp<SkFlattenable> SkLinearGradient::CreateProc(SkReadBuffer& buffer) { DescriptorScope desc; if (!desc.unflatten(buffer)) { return nullptr; } SkPoint pts[2]; pts[0] = buffer.readPoint(); pts[1] = buffer.readPoint(); return SkGradientShader::MakeLinear(pts, desc.fColors, desc.fPos, desc.fCount, desc.fTileMode, desc.fGradFlags, desc.fLocalMatrix); }
sk_sp<SkFlattenable> SkLayerDrawLooper::CreateProc(SkReadBuffer& buffer) { int count = buffer.readInt(); Builder builder; for (int i = 0; i < count; i++) { LayerInfo info; // Legacy "flagsmask" field -- now ignored, remove when we bump version (void)buffer.readInt(); info.fPaintBits = buffer.readInt(); info.fColorMode = (SkBlendMode)buffer.readInt(); buffer.readPoint(&info.fOffset); info.fPostTranslate = buffer.readBool(); buffer.readPaint(builder.addLayerOnTop(info)); if (!buffer.isValid()) { return nullptr; } } return builder.detach(); }
SkLinearGradient::SkLinearGradient(SkReadBuffer& buffer) : INHERITED(buffer) , fStart(buffer.readPoint()) , fEnd(buffer.readPoint()) { }
sk_sp<SkFlattenable> SkOffsetImageFilter::CreateProc(SkReadBuffer& buffer) { SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); SkPoint offset; buffer.readPoint(&offset); return Make(offset.x(), offset.y(), common.getInput(0), &common.cropRect()); }
SkOffsetImageFilter::SkOffsetImageFilter(SkReadBuffer& buffer) : INHERITED(1, buffer) { buffer.readPoint(&fOffset); buffer.validate(SkScalarIsFinite(fOffset.fX) && SkScalarIsFinite(fOffset.fY)); }
SkSweepGradient::SkSweepGradient(SkReadBuffer& buffer) : INHERITED(buffer), fCenter(buffer.readPoint()) { }