diff options
Diffstat (limited to 'src/core/SkShadowShader.cpp')
-rw-r--r-- | src/core/SkShadowShader.cpp | 50 |
1 files changed, 2 insertions, 48 deletions
diff --git a/src/core/SkShadowShader.cpp b/src/core/SkShadowShader.cpp index 5fc992acc1..804258321a 100644 --- a/src/core/SkShadowShader.cpp +++ b/src/core/SkShadowShader.cpp @@ -592,39 +592,7 @@ sk_sp<SkFlattenable> SkShadowShaderImpl::CreateProc(SkReadBuffer& buf) { bool hasLocalMatrix = buf.readBool(); SkAssertResult(!hasLocalMatrix); - int numLights = buf.readInt(); - - SkLights::Builder builder; - - for (int l = 0; l < numLights; ++l) { - bool isAmbient = buf.readBool(); - - SkColor3f color; - if (!buf.readScalarArray(&color.fX, 3)) { - return nullptr; - } - - if (isAmbient) { - builder.add(SkLights::Light(color)); - } else { - SkVector3 dir; - if (!buf.readScalarArray(&dir.fX, 3)) { - return nullptr; - } - - sk_sp<SkImage> depthMap; - if (!(depthMap = sk_ref_sp<SkImage>(buf.readImage()))) { - return nullptr; - } - - SkLights::Light light = SkLights::Light(color, dir); - light.setShadowMap(depthMap); - - builder.add(light); - } - } - - sk_sp<SkLights> lights(builder.finish()); + sk_sp<SkLights> lights = SkLights::MakeFromBuffer(buf); int diffuseWidth = buf.readInt(); int diffuseHeight = buf.readInt(); @@ -641,21 +609,7 @@ sk_sp<SkFlattenable> SkShadowShaderImpl::CreateProc(SkReadBuffer& buf) { void SkShadowShaderImpl::flatten(SkWriteBuffer& buf) const { this->INHERITED::flatten(buf); - buf.writeInt(fLights->numLights()); - - for (int l = 0; l < fLights->numLights(); ++l) { - const SkLights::Light& light = fLights->light(l); - - bool isAmbient = SkLights::Light::kAmbient_LightType == light.type(); - - buf.writeBool(isAmbient); - buf.writeScalarArray(&light.color().fX, 3); - if (!isAmbient) { - buf.writeScalarArray(&light.dir().fX, 3); - } - - buf.writeImage(light.getShadowMap()); - } + fLights->flatten(buf); buf.writeInt(fDiffuseWidth); buf.writeInt(fDiffuseHeight); |