Added the C API for SkShadowMaskFilter
authorMatthew Leibowitz <mattleibow@live.com>
Tue, 22 Nov 2016 09:24:05 +0000 (11:24 +0200)
committerMatthew Leibowitz <mattleibow@live.com>
Tue, 22 Nov 2016 09:24:05 +0000 (11:24 +0200)
include/c/sk_maskfilter.h
include/c/sk_types.h
src/c/sk_enums.cpp
src/c/sk_maskfilter.cpp

index 5d4db82..975164a 100644 (file)
@@ -59,6 +59,8 @@ SK_API sk_maskfilter_t* sk_maskfilter_new_clip(
     uint8_t min,
     uint8_t max);
 
+SK_API sk_maskfilter_t* sk_maskfilter_new_shadow(float occluderHeight, const sk_point3_t* lightPos, float lightRadius, float ambientAlpha, float spotAlpha, sk_shadowmaskfilter_shadowflags_t flags);
+
 SK_C_PLUS_PLUS_END_GUARD
 
 #endif
index cc6edfa..27dfb61 100644 (file)
@@ -671,6 +671,14 @@ typedef enum {
 
 typedef void (*sk_bitmap_release_proc)(void* addr, void* context);
 
+typedef enum {
+    NONE_SK_SHADOWMASKFILTER_SHADOWFLAGS = 0x00,
+    TRANSPARENT_OCCLUDER_SK_SHADOWMASKFILTER_SHADOWFLAGS = 0x01,
+    LARGER_UMBRA_SK_SHADOWMASKFILTER_SHADOWFLAGS = 0x02,
+    GAUSSIAN_EDGE_SK_SHADOWMASKFILTER_SHADOWFLAGS = 0x04,
+    ALL_SK_SHADOWMASKFILTER_SHADOWFLAGS = 0x07
+} sk_shadowmaskfilter_shadowflags_t;
+
 SK_C_PLUS_PLUS_END_GUARD
 
 #endif
index 103be53..ce36d91 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "sk_types_priv.h"
+#include "SkShadowMaskFilter.h"
 
 #if __cplusplus >= 199711L
 
@@ -313,4 +314,11 @@ static_assert ((int)SkPathMeasure::MatrixFlags::kGetPosition_MatrixFlag    == (i
 static_assert ((int)SkPathMeasure::MatrixFlags::kGetTangent_MatrixFlag     == (int)GET_TANGENT_SK_PATHMEASURE_MATRIXFLAGS,       ASSERT_MSG(SkPathMeasure::MatrixFlags, sk_pathmeasure_matrixflags_t));
 static_assert ((int)SkPathMeasure::MatrixFlags::kGetPosAndTan_MatrixFlag   == (int)GET_POS_AND_TAN_SK_PATHMEASURE_MATRIXFLAGS,   ASSERT_MSG(SkPathMeasure::MatrixFlags, sk_pathmeasure_matrixflags_t));
 
+// sk_shadowmaskfilter_shadowflags_t
+static_assert ((int)SkShadowMaskFilter::ShadowFlags::kNone_ShadowFlag                  == (int)NONE_SK_SHADOWMASKFILTER_SHADOWFLAGS,                   ASSERT_MSG(SkShadowMaskFilter::ShadowFlags, sk_shadowmaskfilter_shadowflags_t));
+static_assert ((int)SkShadowMaskFilter::ShadowFlags::kTransparentOccluder_ShadowFlag   == (int)TRANSPARENT_OCCLUDER_SK_SHADOWMASKFILTER_SHADOWFLAGS,   ASSERT_MSG(SkShadowMaskFilter::ShadowFlags, sk_shadowmaskfilter_shadowflags_t));
+static_assert ((int)SkShadowMaskFilter::ShadowFlags::kLargerUmbra_ShadowFlag           == (int)LARGER_UMBRA_SK_SHADOWMASKFILTER_SHADOWFLAGS,           ASSERT_MSG(SkShadowMaskFilter::ShadowFlags, sk_shadowmaskfilter_shadowflags_t));
+static_assert ((int)SkShadowMaskFilter::ShadowFlags::kGaussianEdge_ShadowFlag          == (int)GAUSSIAN_EDGE_SK_SHADOWMASKFILTER_SHADOWFLAGS,          ASSERT_MSG(SkShadowMaskFilter::ShadowFlags, sk_shadowmaskfilter_shadowflags_t));
+static_assert ((int)SkShadowMaskFilter::ShadowFlags::kAll_ShadowFlag                   == (int)ALL_SK_SHADOWMASKFILTER_SHADOWFLAGS,                    ASSERT_MSG(SkShadowMaskFilter::ShadowFlags, sk_shadowmaskfilter_shadowflags_t));
+
 #endif
index f177268..23f27d4 100644 (file)
@@ -7,6 +7,7 @@
 
 #include "SkBlurMaskFilter.h"
 #include "SkTableMaskFilter.h"
+#include "SkShadowMaskFilter.h"
 
 #include "sk_maskfilter.h"
 
@@ -43,3 +44,7 @@ void sk_maskfilter_unref(sk_maskfilter_t* cfilter) {
 sk_maskfilter_t* sk_maskfilter_new_blur(sk_blurstyle_t cstyle, float sigma) {
     return ToMaskFilter(SkBlurMaskFilter::Make((SkBlurStyle)cstyle, sigma).release());
 }
+
+sk_maskfilter_t* sk_maskfilter_new_shadow(float occluderHeight, const sk_point3_t* lightPos, float lightRadius, float ambientAlpha, float spotAlpha, sk_shadowmaskfilter_shadowflags_t flags) {
+    return ToMaskFilter(SkShadowMaskFilter::Make(occluderHeight, AsPoint3(*lightPos), lightRadius, ambientAlpha, spotAlpha, (SkShadowMaskFilter::ShadowFlags)flags).release());
+}