Index: include/core/SkLights.h |
diff --git a/include/core/SkLights.h b/include/core/SkLights.h |
index 0b23cc14aa01fa742133e5dfdf332f24d8e6a334..52e60c71a07a5fe3cae5f441f58e858617490251 100644 |
--- a/include/core/SkLights.h |
+++ b/include/core/SkLights.h |
@@ -11,7 +11,7 @@ |
#include "SkPoint3.h" |
#include "SkRefCnt.h" |
-#include "../private/SkTDArray.h" |
+#include "../private/SkTArray.h" |
#include "SkImage.h" |
class SK_API SkLights : public SkRefCnt { |
@@ -23,11 +23,24 @@ public: |
kDirectional_LightType |
}; |
+ Light(const Light& other) |
+ : fType(other.fType) |
+ , fColor(other.fColor) |
+ , fDirection(other.fDirection) |
+ , fShadowMap(other.fShadowMap) { |
+ } |
+ |
+ Light(Light&& other) |
+ : fType(other.fType) |
+ , fColor(other.fColor) |
+ , fDirection(other.fDirection) |
+ , fShadowMap(std::move(other.fShadowMap)) { |
+ } |
+ |
Light(const SkColor3f& color) |
: fType(kAmbient_LightType) |
, fColor(color) { |
fDirection.set(0.0f, 0.0f, 1.0f); |
- fShadowMap.reset(nullptr); |
} |
Light(const SkColor3f& color, const SkVector3& dir) |
@@ -37,7 +50,6 @@ public: |
if (!fDirection.normalize()) { |
fDirection.set(0.0f, 0.0f, 1.0f); |
} |
- fShadowMap.reset(nullptr); |
} |
LightType type() const { return fType; } |
@@ -51,22 +63,19 @@ public: |
fShadowMap = std::move(shadowMap); |
} |
- sk_sp<SkImage> getShadowMap() const { |
- return fShadowMap; |
+ SkImage* getShadowMap() const { |
+ return fShadowMap.get(); |
} |
Light& operator= (const Light& b) { |
- if (this == &b) |
+ if (this == &b) { |
return *this; |
- |
- this->fColor = b.fColor; |
- this->fType = b.fType; |
- this->fDirection = b.fDirection; |
- |
- if (b.fShadowMap) { |
- this->fShadowMap = b.fShadowMap; |
} |
+ fColor = b.fColor; |
+ fType = b.fType; |
+ fDirection = b.fDirection; |
+ fShadowMap = b.fShadowMap; |
return *this; |
} |
@@ -84,12 +93,18 @@ public: |
void add(const Light& light) { |
if (fLights) { |
- (void) fLights->fLights.append(1, &light); |
+ fLights->fLights.push_back(light); |
+ } |
+ } |
+ |
+ void add(Light&& light) { |
+ if (fLights) { |
+ fLights->fLights.push_back(std::move(light)); |
} |
} |
sk_sp<SkLights> finish() { |
- return fLights; |
+ return std::move(fLights); |
} |
private: |
@@ -111,7 +126,9 @@ public: |
private: |
SkLights() {} |
- SkTDArray<Light> fLights; |
+ SkTArray<Light> fLights; |
+ |
+ typedef SkRefCnt INHERITED; |
}; |
#endif |