| Index: src/effects/SkLightingShader.h
|
| diff --git a/src/core/SkLightingShader.h b/src/effects/SkLightingShader.h
|
| similarity index 55%
|
| rename from src/core/SkLightingShader.h
|
| rename to src/effects/SkLightingShader.h
|
| index 499e358238090dbc4ce817b5154b21f0f7441076..64d41a291e7bd8d90d402e1b33954bd3cd78a1dc 100644
|
| --- a/src/core/SkLightingShader.h
|
| +++ b/src/effects/SkLightingShader.h
|
| @@ -10,57 +10,15 @@
|
| #ifndef SkLightingShader_DEFINED
|
| #define SkLightingShader_DEFINED
|
|
|
| -#include "SkFlattenable.h"
|
| -#include "SkLight.h"
|
| +#include "SkPoint3.h"
|
| #include "SkShader.h"
|
| -#include "SkTDArray.h"
|
| -
|
| -class SkBitmap;
|
| -class SkMatrix;
|
|
|
| class SK_API SkLightingShader {
|
| public:
|
| - class Lights : public SkRefCnt {
|
| - public:
|
| - class Builder {
|
| - public:
|
| - Builder(const SkLight lights[], int numLights)
|
| - : fLights(SkNEW_ARGS(Lights, (lights, numLights))) {
|
| - }
|
| -
|
| - Builder() : fLights(SkNEW(Lights)) { }
|
| -
|
| - // TODO: limit the number of lights here or just ignore those
|
| - // above some maximum?
|
| - void add(const SkLight& light) {
|
| - if (fLights) {
|
| - *fLights->fLights.push() = light;
|
| - }
|
| - }
|
| -
|
| - const Lights* finish() {
|
| - return fLights.detach();
|
| - }
|
| -
|
| - private:
|
| - SkAutoTUnref<Lights> fLights;
|
| - };
|
| -
|
| - int numLights() const {
|
| - return fLights.count();
|
| - }
|
| -
|
| - const SkLight& light(int index) const {
|
| - return fLights[index];
|
| - }
|
| -
|
| - private:
|
| - Lights() {}
|
| - Lights(const SkLight lights[], int numLights) : fLights(lights, numLights) {}
|
| -
|
| - SkTDArray<SkLight> fLights;
|
| -
|
| - typedef SkRefCnt INHERITED;
|
| + struct Light {
|
| + SkVector3 fDirection; // direction towards the light (+Z is out of the screen).
|
| + // If degenerate, it will be replaced with (0, 0, 1).
|
| + SkColor3f fColor; // linear (unpremul) color. Range is 0..1 in each channel.
|
| };
|
|
|
| /** Returns a shader that lights the diffuse and normal maps with a single light.
|
| @@ -92,8 +50,8 @@ public:
|
| (127, 127, 0).
|
| */
|
| static SkShader* Create(const SkBitmap& diffuse, const SkBitmap& normal,
|
| - const Lights* lights, const SkVector& invNormRotation,
|
| - const SkMatrix* diffLocalMatrix, const SkMatrix* normLocalMatrix);
|
| + const SkLightingShader::Light& light, const SkColor3f& ambient,
|
| + const SkMatrix* localMatrix);
|
|
|
| SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
|
| };
|
|
|