From 01790aac2739ad35d8a0c7c15588fbce9aeb9d4a Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 22 Nov 2016 11:24:05 +0200 Subject: [PATCH] Added the C API for SkShadowMaskFilter --- include/c/sk_maskfilter.h | 2 ++ include/c/sk_types.h | 8 ++++++++ src/c/sk_enums.cpp | 8 ++++++++ src/c/sk_maskfilter.cpp | 5 +++++ 4 files changed, 23 insertions(+) diff --git a/include/c/sk_maskfilter.h b/include/c/sk_maskfilter.h index 5d4db82..975164a 100644 --- a/include/c/sk_maskfilter.h +++ b/include/c/sk_maskfilter.h @@ -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 diff --git a/include/c/sk_types.h b/include/c/sk_types.h index cc6edfa..27dfb61 100644 --- a/include/c/sk_types.h +++ b/include/c/sk_types.h @@ -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 diff --git a/src/c/sk_enums.cpp b/src/c/sk_enums.cpp index 103be53..ce36d91 100644 --- a/src/c/sk_enums.cpp +++ b/src/c/sk_enums.cpp @@ -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 diff --git a/src/c/sk_maskfilter.cpp b/src/c/sk_maskfilter.cpp index f177268..23f27d4 100644 --- a/src/c/sk_maskfilter.cpp +++ b/src/c/sk_maskfilter.cpp @@ -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()); +} -- 2.7.4