Index: src/core/SkLightingShader.h |
diff --git a/src/core/SkLightingShader.h b/src/core/SkLightingShader.h |
deleted file mode 100644 |
index 499e358238090dbc4ce817b5154b21f0f7441076..0000000000000000000000000000000000000000 |
--- a/src/core/SkLightingShader.h |
+++ /dev/null |
@@ -1,101 +0,0 @@ |
- |
-/* |
- * Copyright 2015 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
- |
-#ifndef SkLightingShader_DEFINED |
-#define SkLightingShader_DEFINED |
- |
-#include "SkFlattenable.h" |
-#include "SkLight.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; |
- }; |
- |
- /** Returns a shader that lights the diffuse and normal maps with a single light. |
- |
- It returns a shader with a reference count of 1. |
- The caller should decrement the shader's reference count when done with the shader. |
- It is an error for count to be < 2. |
- @param diffuse the diffuse bitmap |
- @param normal the normal map |
- @param light the light applied to the normal map |
- @param ambient the linear (unpremul) ambient light color. Range is 0..1/channel. |
- @param localMatrix the matrix mapping the textures to the dest rect |
- |
- NULL will be returned if: |
- either 'diffuse' or 'normal' are empty |
- either 'diffuse' or 'normal' are too big (> 65535 on a side) |
- 'diffuse' and 'normal' aren't the same size |
- |
- The lighting equation is currently: |
- result = LightColor * DiffuseColor * (Normal * LightDir) + AmbientColor |
- |
- The normal map is currently assumed to be an 8888 image where the normal at a texel |
- is retrieved by: |
- N.x = R-127; |
- N.y = G-127; |
- N.z = B-127; |
- N.normalize(); |
- The +Z axis is thus encoded in RGB as (127, 127, 255) while the -Z axis is |
- (127, 127, 0). |
- */ |
- static SkShader* Create(const SkBitmap& diffuse, const SkBitmap& normal, |
- const Lights* lights, const SkVector& invNormRotation, |
- const SkMatrix* diffLocalMatrix, const SkMatrix* normLocalMatrix); |
- |
- SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() |
-}; |
- |
-#endif |