aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkLightingShader.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/SkLightingShader.cpp
parente1a3bc67690886dbc72271f447dec073363fe84c (diff)
Added PointLights to SkLights::Light
Diffstat (limited to 'src/core/SkLightingShader.cpp')
-rw-r--r--src/core/SkLightingShader.cpp38
1 files changed, 2 insertions, 36 deletions
diff --git a/src/core/SkLightingShader.cpp b/src/core/SkLightingShader.cpp
index e8280b1267..6f3c23399d 100644
--- a/src/core/SkLightingShader.cpp
+++ b/src/core/SkLightingShader.cpp
@@ -416,30 +416,7 @@ sk_sp<SkFlattenable> SkLightingShaderImpl::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;
- }
- builder.add(SkLights::Light(color, dir));
- }
- }
-
- sk_sp<SkLights> lights(builder.finish());
+ sk_sp<SkLights> lights = SkLights::MakeFromBuffer(buf);
sk_sp<SkNormalSource> normalSource(buf.readFlattenable<SkNormalSource>());
@@ -456,18 +433,7 @@ sk_sp<SkFlattenable> SkLightingShaderImpl::CreateProc(SkReadBuffer& buf) {
void SkLightingShaderImpl::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);
- }
- }
+ fLights->flatten(buf);
buf.writeFlattenable(fNormalSource.get());
buf.writeBool(fDiffuseShader);