SkFlattenable* SkSweepGradient::CreateProc(SkReadBuffer& buffer) { DescriptorScope desc; if (!desc.unflatten(buffer)) { return NULL; } const SkPoint center = buffer.readPoint(); return SkGradientShader::CreateSweep(center.x(), center.y(), desc.fColors, desc.fPos, desc.fCount, desc.fGradFlags, desc.fLocalMatrix); }
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); }
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::CreateLinear(pts, desc.fColors, desc.fPos, desc.fCount, desc.fTileMode, desc.fGradFlags, desc.fLocalMatrix); }