SkComposeShader::SkComposeShader(SkReadBuffer& buffer) : INHERITED(buffer) { fShaderA = buffer.readShader(); if (NULL == fShaderA) { fShaderA = SkNEW_ARGS(SkColorShader, ((SkColor)0)); } fShaderB = buffer.readShader(); if (NULL == fShaderB) { fShaderB = SkNEW_ARGS(SkColorShader, ((SkColor)0)); } fMode = buffer.readXfermode(); }
sk_sp<SkFlattenable> SkColorFilterShader::CreateProc(SkReadBuffer& buffer) { auto shader = buffer.readShader(); auto filter = buffer.readColorFilter(); if (!shader || !filter) { return nullptr; } return sk_make_sp<SkColorFilterShader>(shader, filter); }
sk_sp<SkFlattenable> SkLocalMatrixShader::CreateProc(SkReadBuffer& buffer) { SkMatrix lm; buffer.readMatrix(&lm); auto baseShader(buffer.readShader()); if (!baseShader) { return nullptr; } return baseShader->makeWithLocalMatrix(lm); }
SkLocalMatrixShader::SkLocalMatrixShader(SkReadBuffer& buffer) : INHERITED(buffer) { if (buffer.isVersionLT(SkReadBuffer::kSimplifyLocalMatrix_Version)) { buffer.readMatrix(&(INHERITED::fLocalMatrix)); } fProxyShader.reset(buffer.readShader()); if (NULL == fProxyShader.get()) { sk_throw(); } }
sk_sp<SkFlattenable> SkComposeShader::CreateProc(SkReadBuffer& buffer) { sk_sp<SkShader> shaderA(buffer.readShader()); sk_sp<SkShader> shaderB(buffer.readShader()); sk_sp<SkXfermode> mode(buffer.readXfermode()); if (!shaderA || !shaderB) { return nullptr; } return sk_make_sp<SkComposeShader>(std::move(shaderA), std::move(shaderB), std::move(mode)); }
sk_sp<SkFlattenable> SkComposeShader::CreateProc(SkReadBuffer& buffer) { sk_sp<SkShader> dst(buffer.readShader()); sk_sp<SkShader> src(buffer.readShader()); unsigned mode = buffer.read32(); float lerp = buffer.readScalar(); // check for valid mode before we cast to the enum type if (!buffer.validate(mode <= (unsigned)SkBlendMode::kLastMode)) { return nullptr; } return MakeCompose(std::move(dst), std::move(src), static_cast<SkBlendMode>(mode), lerp); }
sk_sp<SkFlattenable> SkComposeShader::CreateProc(SkReadBuffer& buffer) { sk_sp<SkShader> shaderA(buffer.readShader()); sk_sp<SkShader> shaderB(buffer.readShader()); SkBlendMode mode; if (buffer.isVersionLT(SkReadBuffer::kXfermodeToBlendMode2_Version)) { sk_sp<SkXfermode> xfer = buffer.readXfermode(); mode = xfer ? xfer->blend() : SkBlendMode::kSrcOver; } else { mode = (SkBlendMode)buffer.read32(); } if (!shaderA || !shaderB) { return nullptr; } return sk_make_sp<SkComposeShader>(std::move(shaderA), std::move(shaderB), mode); }
SkRectShaderImageFilter::SkRectShaderImageFilter(SkReadBuffer& buffer) : INHERITED(0, buffer) { fShader = buffer.readShader(); }
SkFilterShader::SkFilterShader(SkReadBuffer& buffer) : INHERITED(buffer) { fShader = buffer.readShader(); fFilter = buffer.readColorFilter(); }