blob: c3809295fb77cf0454eb928d9a1fa2e01811b0f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkShadowUtils_DEFINED
#define SkShadowUtils_DEFINED
#include "SkColor.h"
#include "SkScalar.h"
class SkCanvas;
class SkPath;
class SkShadowUtils {
public:
enum ShadowFlags {
kNone_ShadowFlag = 0x00,
/** The occluding object is not opaque. Knowing that the occluder is opaque allows
* us to cull shadow geometry behind it and improve performance. */
kTransparentOccluder_ShadowFlag = 0x01,
/** Use a larger umbra for a darker shadow */
kLargerUmbra_ShadowFlag = 0x02,
/** Use a Gaussian for the edge function rather than smoothstep */
kGaussianEdge_ShadowFlag = 0x04,
/** mask for all shadow flags */
kAll_ShadowFlag = 0x07
};
// Draw an offset spot shadow and outlining ambient shadow for the given path.
static void DrawShadow(SkCanvas*, const SkPath& path, SkScalar occluderHeight,
const SkPoint3& lightPos, SkScalar lightRadius,
SkScalar ambientAlpha, SkScalar spotAlpha, SkColor color,
uint32_t flags = kNone_ShadowFlag);
};
#endif
|