aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/utils/SkShadowUtils.h
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2017-01-13 14:37:37 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-13 20:09:02 +0000
commit43475ad9dc43c4cbe13d924d8caff8916dcbbc06 (patch)
tree7d88d02b2e5992771832ee73604ed023ed9361f1 /include/utils/SkShadowUtils.h
parentd4652ca1b7989af5ef4e81b0de4eba529f804618 (diff)
Move Android shadow rendering interface to util library.
BUG=skia:6119 Change-Id: I8318cf2758042ffd0c81c5fa74240acbf7bea61f Reviewed-on: https://skia-review.googlesource.com/6999 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'include/utils/SkShadowUtils.h')
-rwxr-xr-xinclude/utils/SkShadowUtils.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/utils/SkShadowUtils.h b/include/utils/SkShadowUtils.h
new file mode 100755
index 0000000000..c3809295fb
--- /dev/null
+++ b/include/utils/SkShadowUtils.h
@@ -0,0 +1,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