/* * 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 Make(sk_sp diffuseShader, sk_sp normalSource, sk_sp lights); static void RegisterFlattenables(); }; #endif