text: /*
   * 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 "include/core/SkShader.h"
  #include "src/shaders/SkLights.h"
  
  class SkBitmap;
  class SkMatrix;
  class SkNormalSource;
  
  class SkLightingShader {
  public:
      /** Returns a shader that lights the shape, colored by the diffuseShader, using the
          normals from normalSource, with the set of lights provided.
  
          @param  diffuseShader     the shader that provides the colors. If nullptr, uses the paint's
                                    color.
          @param  normalSource      the source for the shape's normals. If nullptr, assumes straight
                                    up normals (<0,0,1>).
          @param  lights            the lights applied to the normals
  
          The lighting equation is currently:
              result = (LightColor * dot(Normal, LightDir) + AmbientColor) * DiffuseColor
  
      */
      static sk_sp<SkShader> Make(sk_sp<SkShader> diffuseShader, sk_sp<SkNormalSource> normalSource,
                                  sk_sp<SkLights> lights);
  
      static void RegisterFlattenables();
  };
  
  #endif
  