| Index: include/core/SkLights.h | 
| diff --git a/include/core/SkLights.h b/include/core/SkLights.h | 
| index 1371e441d4894a9d1060012e54fab0aa236f117c..954168de4d1ede3838f312e203b5bf1e192debab 100644 | 
| --- a/include/core/SkLights.h | 
| +++ b/include/core/SkLights.h | 
| @@ -31,7 +31,8 @@ public: | 
| , fColor(other.fColor) | 
| , fDirOrPos(other.fDirOrPos) | 
| , fIntensity(other.fIntensity) | 
| -            , fShadowMap(other.fShadowMap) { | 
| +            , fShadowMap(other.fShadowMap) | 
| +            , fIsRadial(other.fIsRadial) { | 
| } | 
|  | 
| Light(Light&& other) | 
| @@ -39,19 +40,22 @@ public: | 
| , fColor(other.fColor) | 
| , fDirOrPos(other.fDirOrPos) | 
| , fIntensity(other.fIntensity) | 
| -            , fShadowMap(std::move(other.fShadowMap)) { | 
| +            , fShadowMap(std::move(other.fShadowMap)) | 
| +            , fIsRadial(other.fIsRadial)  { | 
| } | 
|  | 
| -        static Light MakeDirectional(const SkColor3f& color, const SkVector3& dir) { | 
| -            Light light(kDirectional_LightType, color, dir); | 
| +        static Light MakeDirectional(const SkColor3f& color, const SkVector3& dir, | 
| +                                     bool isRadial = false) { | 
| +            Light light(kDirectional_LightType, color, dir, isRadial); | 
| if (!light.fDirOrPos.normalize()) { | 
| light.fDirOrPos.set(0.0f, 0.0f, 1.0f); | 
| } | 
| return light; | 
| } | 
|  | 
| -        static Light MakePoint(const SkColor3f& color, const SkPoint3& pos, SkScalar intensity) { | 
| -            return Light(kPoint_LightType, color, pos, intensity); | 
| +        static Light MakePoint(const SkColor3f& color, const SkPoint3& pos, SkScalar intensity, | 
| +                               bool isRadial = false) { | 
| +            return Light(kPoint_LightType, color, pos, intensity, isRadial); | 
| } | 
|  | 
| LightType type() const { return fType; } | 
| @@ -77,6 +81,8 @@ public: | 
| return fShadowMap.get(); | 
| } | 
|  | 
| +        bool isRadial() const { return fIsRadial; } | 
| + | 
| Light& operator= (const Light& b) { | 
| if (this == &b) { | 
| return *this; | 
| @@ -87,6 +93,7 @@ public: | 
| fDirOrPos = b.fDirOrPos; | 
| fIntensity = b.fIntensity; | 
| fShadowMap = b.fShadowMap; | 
| +            fIsRadial = b.fIsRadial; | 
| return *this; | 
| } | 
|  | 
| @@ -99,7 +106,8 @@ public: | 
| (fType      == b.fType) && | 
| (fDirOrPos  == b.fDirOrPos) && | 
| (fShadowMap == b.fShadowMap) && | 
| -                   (fIntensity == b.fIntensity); | 
| +                   (fIntensity == b.fIntensity) && | 
| +                   (fIsRadial  == b.fIsRadial); | 
| } | 
|  | 
| bool operator!= (const Light& b) { return !(this->operator==(b)); } | 
| @@ -116,13 +124,16 @@ public: | 
| SkScalar    fIntensity;       // For point lights, dictates the light intensity. | 
| // Simply a multiplier to the final light output value. | 
| sk_sp<SkImage> fShadowMap; | 
| +        bool        fIsRadial;        // Whether the light is radial or not. Radial lights will | 
| +                                      // cast shadows and lights radially outwards. | 
|  | 
| -        Light(LightType type, const SkColor3f& color, | 
| -              const SkVector3& dirOrPos, SkScalar intensity = 0.0f) { | 
| +        Light(LightType type, const SkColor3f& color, const SkVector3& dirOrPos, | 
| +              SkScalar intensity = 0.0f, bool isRadial = false) { | 
| fType = type; | 
| fColor = color; | 
| fDirOrPos = dirOrPos; | 
| fIntensity = intensity; | 
| +            fIsRadial = isRadial; | 
| } | 
| }; | 
|  | 
|  |