Index: include/core/SkLights.h |
diff --git a/include/core/SkLights.h b/include/core/SkLights.h |
index d8ec87d53271ed26a15f4d0c9e06ac60405e7759..1371e441d4894a9d1060012e54fab0aa236f117c 100644 |
--- a/include/core/SkLights.h |
+++ b/include/core/SkLights.h |
@@ -22,7 +22,6 @@ public: |
class Light { |
public: |
enum LightType { |
- kAmbient_LightType, // only 'fColor' is used |
kDirectional_LightType, |
kPoint_LightType |
}; |
@@ -43,10 +42,6 @@ public: |
, fShadowMap(std::move(other.fShadowMap)) { |
} |
- static Light MakeAmbient(const SkColor3f& color) { |
- return Light(kAmbient_LightType, color, SkVector3::Make(0.0f, 0.0f, 1.0f)); |
- } |
- |
static Light MakeDirectional(const SkColor3f& color, const SkVector3& dir) { |
Light light(kDirectional_LightType, color, dir); |
if (!light.fDirOrPos.normalize()) { |
@@ -123,17 +118,17 @@ public: |
sk_sp<SkImage> fShadowMap; |
Light(LightType type, const SkColor3f& color, |
- const SkVector3& dir, SkScalar intensity = 0.0f) { |
+ const SkVector3& dirOrPos, SkScalar intensity = 0.0f) { |
fType = type; |
fColor = color; |
- fDirOrPos = dir; |
+ fDirOrPos = dirOrPos; |
fIntensity = intensity; |
} |
}; |
class Builder { |
public: |
- Builder() : fLights(new SkLights) { } |
+ Builder() : fLights(new SkLights) {} |
void add(const Light& light) { |
if (fLights) { |
@@ -147,6 +142,12 @@ public: |
} |
} |
+ void setAmbientLightColor(const SkColor3f& color) { |
+ if (fLights) { |
+ fLights->fAmbientLightColor = color; |
+ } |
+ } |
+ |
sk_sp<SkLights> finish() { |
return std::move(fLights); |
} |
@@ -167,13 +168,20 @@ public: |
return fLights[index]; |
} |
+ const SkColor3f& ambientLightColor() const { |
+ return fAmbientLightColor; |
+ } |
+ |
static sk_sp<SkLights> MakeFromBuffer(SkReadBuffer& buf); |
void flatten(SkWriteBuffer& buf) const; |
private: |
- SkLights() {} |
+ SkLights() { |
+ fAmbientLightColor.set(0.0f, 0.0f, 0.0f); |
+ } |
SkTArray<Light> fLights; |
+ SkColor3f fAmbientLightColor; |
typedef SkRefCnt INHERITED; |
}; |