From 7ba600bc769f5ea563d522ba59a12a381f449234 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 1 Jun 2024 01:06:17 +0800 Subject: [PATCH 1/2] Add the rest of the color filters --- include/c/sk_colorfilter.h | 4 ++++ src/c/sk_colorfilter.cpp | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/c/sk_colorfilter.h b/include/c/sk_colorfilter.h index c0a5acba5bbb..3aa9bc99b7a4 100644 --- a/include/c/sk_colorfilter.h +++ b/include/c/sk_colorfilter.h @@ -19,6 +19,10 @@ SK_C_API sk_colorfilter_t* sk_colorfilter_new_mode(sk_color_t c, sk_blendmode_t SK_C_API sk_colorfilter_t* sk_colorfilter_new_lighting(sk_color_t mul, sk_color_t add); SK_C_API sk_colorfilter_t* sk_colorfilter_new_compose(sk_colorfilter_t* outer, sk_colorfilter_t* inner); SK_C_API sk_colorfilter_t* sk_colorfilter_new_color_matrix(const float array[20]); +SK_C_API sk_colorfilter_t* sk_colorfilter_new_hsla_matrix(const float array[20]); +SK_C_API sk_colorfilter_t* sk_colorfilter_new_linear_to_srgb_gamma(void); +SK_C_API sk_colorfilter_t* sk_colorfilter_new_srgb_to_linear_gamma(void); +SK_C_API sk_colorfilter_t* sk_colorfilter_new_lerp(float t, sk_colorfilter_t* dst, sk_colorfilter_t* src); SK_C_API sk_colorfilter_t* sk_colorfilter_new_luma_color(void); SK_C_API sk_colorfilter_t* sk_colorfilter_new_high_contrast(const sk_highcontrastconfig_t* config); SK_C_API sk_colorfilter_t* sk_colorfilter_new_table(const uint8_t table[256]); diff --git a/src/c/sk_colorfilter.cpp b/src/c/sk_colorfilter.cpp index 18421b0235e6..13ef2cf965c7 100644 --- a/src/c/sk_colorfilter.cpp +++ b/src/c/sk_colorfilter.cpp @@ -36,6 +36,22 @@ sk_colorfilter_t* sk_colorfilter_new_color_matrix(const float array[20]) { return ToColorFilter(SkColorFilters::Matrix(array).release()); } +sk_colorfilter_t* sk_colorfilter_new_hsla_matrix(const float array[20]) { + return ToColorFilter(SkColorFilters::HSLAMatrix(array).release()); +} + +sk_colorfilter_t* sk_colorfilter_new_linear_to_srgb_gamma(void) { + return ToColorFilter(SkColorFilters::LinearToSRGBGamma().release()); +} + +sk_colorfilter_t* sk_colorfilter_new_srgb_to_linear_gamma(void) { + return ToColorFilter(SkColorFilters::SRGBToLinearGamma().release()); +} + +sk_colorfilter_t* sk_colorfilter_new_lerp(float t, sk_colorfilter_t* dst, sk_colorfilter_t* src) { + return ToColorFilter(SkColorFilters::Lerp(t, sk_ref_sp(AsColorFilter(dst)), sk_ref_sp(AsColorFilter(src))).release()); +} + sk_colorfilter_t* sk_colorfilter_new_luma_color(void) { return ToColorFilter(SkLumaColorFilter::Make().release()); } From d9628afd185c032216aaf1be8af0f928f7f18271 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Thu, 19 Sep 2024 02:40:23 +0800 Subject: [PATCH 2/2] better API --- include/c/sk_colorfilter.h | 2 +- src/c/sk_colorfilter.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/c/sk_colorfilter.h b/include/c/sk_colorfilter.h index 3aa9bc99b7a4..63cdc699a132 100644 --- a/include/c/sk_colorfilter.h +++ b/include/c/sk_colorfilter.h @@ -22,7 +22,7 @@ SK_C_API sk_colorfilter_t* sk_colorfilter_new_color_matrix(const float array[20] SK_C_API sk_colorfilter_t* sk_colorfilter_new_hsla_matrix(const float array[20]); SK_C_API sk_colorfilter_t* sk_colorfilter_new_linear_to_srgb_gamma(void); SK_C_API sk_colorfilter_t* sk_colorfilter_new_srgb_to_linear_gamma(void); -SK_C_API sk_colorfilter_t* sk_colorfilter_new_lerp(float t, sk_colorfilter_t* dst, sk_colorfilter_t* src); +SK_C_API sk_colorfilter_t* sk_colorfilter_new_lerp(float weight, sk_colorfilter_t* filter0, sk_colorfilter_t* filter1); SK_C_API sk_colorfilter_t* sk_colorfilter_new_luma_color(void); SK_C_API sk_colorfilter_t* sk_colorfilter_new_high_contrast(const sk_highcontrastconfig_t* config); SK_C_API sk_colorfilter_t* sk_colorfilter_new_table(const uint8_t table[256]); diff --git a/src/c/sk_colorfilter.cpp b/src/c/sk_colorfilter.cpp index 13ef2cf965c7..e38b192648e7 100644 --- a/src/c/sk_colorfilter.cpp +++ b/src/c/sk_colorfilter.cpp @@ -48,8 +48,8 @@ sk_colorfilter_t* sk_colorfilter_new_srgb_to_linear_gamma(void) { return ToColorFilter(SkColorFilters::SRGBToLinearGamma().release()); } -sk_colorfilter_t* sk_colorfilter_new_lerp(float t, sk_colorfilter_t* dst, sk_colorfilter_t* src) { - return ToColorFilter(SkColorFilters::Lerp(t, sk_ref_sp(AsColorFilter(dst)), sk_ref_sp(AsColorFilter(src))).release()); +sk_colorfilter_t* sk_colorfilter_new_lerp(float weight, sk_colorfilter_t* filter0, sk_colorfilter_t* filter1) { + return ToColorFilter(SkColorFilters::Lerp(weight, sk_ref_sp(AsColorFilter(filter0)), sk_ref_sp(AsColorFilter(filter1))).release()); } sk_colorfilter_t* sk_colorfilter_new_luma_color(void) {