Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / graphics / filters / FELighting.h
1 /*
2  * Copyright (C) 2010 University of Szeged
3  * Copyright (C) 2010 Zoltan Herczeg
4  * Copyright (C) 2013 Google Inc. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef FELighting_h
29 #define FELighting_h
30
31 #include "platform/graphics/Color.h"
32 #include "platform/graphics/filters/FilterEffect.h"
33
34 // Common base class for FEDiffuseLighting and FESpecularLighting
35
36 namespace blink {
37
38 class LightSource;
39
40 class PLATFORM_EXPORT FELighting : public FilterEffect {
41 public:
42     virtual PassRefPtr<SkImageFilter> createImageFilter(SkiaImageFilterBuilder*) override;
43
44 protected:
45     enum LightingType {
46         DiffuseLighting,
47         SpecularLighting
48     };
49
50     virtual FloatRect mapPaintRect(const FloatRect&, bool forward = true) override final;
51     virtual bool affectsTransparentPixels() override { return true; }
52
53     FELighting(Filter*, LightingType, const Color&, float, float, float, float, float, float, PassRefPtr<LightSource>);
54
55     LightingType m_lightingType;
56     RefPtr<LightSource> m_lightSource;
57
58     Color m_lightingColor;
59     float m_surfaceScale;
60     float m_diffuseConstant;
61     float m_specularConstant;
62     float m_specularExponent;
63     float m_kernelUnitLengthX;
64     float m_kernelUnitLengthY;
65 };
66
67 } // namespace blink
68
69 #endif // FELighting_h