aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkShadowShader.cpp
diff options
context:
space:
mode:
authorGravatar vjiaoblack <vjiaoblack@google.com>2016-08-12 11:38:47 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-12 11:38:47 -0700
commit772b5ee446d7545eec4ca7d6dc9d75461e2a9c38 (patch)
tree1470d1bb00cbf863ccee98a328799eb84dd31856 /src/core/SkShadowShader.cpp
parente1a3bc67690886dbc72271f447dec073363fe84c (diff)
Added PointLights to SkLights::Light
Diffstat (limited to 'src/core/SkShadowShader.cpp')
-rw-r--r--src/core/SkShadowShader.cpp50
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);