"$_include/c/sk_types.h",
"$_include/c/sk_xml.h",
"$_include/c/sk_svg.h",
+ "$_include/c/sk_colorspace.h",
+ "$_include/c/sk_vertices.h",
"$_include/c/gr_context.h",
"$_src/c/sk_bitmap.cpp",
"$_src/c/sk_canvas.cpp",
"$_src/c/sk_typeface.cpp",
"$_src/c/sk_xml.cpp",
"$_src/c/sk_svg.cpp",
+ "$_src/c/sk_colorspace.cpp",
+ "$_src/c/sk_vertices.cpp",
"$_src/c/sk_types_priv.h",
"$_src/c/gr_context.cpp",
"$_src/c/sk_structs.cpp",
--- /dev/null
-SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_gamma(sk_colorspace_render_target_gamma_t gamma, const sk_matrix44_t* toXYZD50, uint32_t flags);
-SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_gamma_and_gamut(sk_colorspace_render_target_gamma_t gamma, sk_colorspace_gamut_t gamut, uint32_t flags);
-SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs(const sk_colorspace_transfer_fn_t* coeffs, const sk_matrix44_t* toXYZD50, uint32_t flags);
-SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs_and_gamut(const sk_colorspace_transfer_fn_t* coeffs, sk_colorspace_gamut_t gamut, uint32_t flags);
+ /*
+ * Copyright 2017 Xamarin Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+ #ifndef sk_colorspace_DEFINED
+ #define sk_colorspace_DEFINED
+
+ #include "sk_types.h"
+
+ SK_C_PLUS_PLUS_BEGIN_GUARD
+
+ SK_C_API void sk_colorspace_unref(sk_colorspace_t* cColorSpace);
+ SK_C_API sk_colorspace_t* sk_colorspace_new_srgb();
+ SK_C_API sk_colorspace_t* sk_colorspace_new_srgb_linear();
+ SK_C_API sk_colorspace_t* sk_colorspace_new_icc(const void* input, size_t len);
++SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_gamma(sk_colorspace_render_target_gamma_t gamma, const sk_matrix44_t* toXYZD50);
++SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_gamma_and_gamut(sk_colorspace_render_target_gamma_t gamma, sk_colorspace_gamut_t gamut);
++SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs(const sk_colorspace_transfer_fn_t* coeffs, const sk_matrix44_t* toXYZD50);
++SK_C_API sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs_and_gamut(const sk_colorspace_transfer_fn_t* coeffs, sk_colorspace_gamut_t gamut);
+ SK_C_API bool sk_colorspace_gamma_close_to_srgb(const sk_colorspace_t* cColorSpace);
+ SK_C_API bool sk_colorspace_gamma_is_linear(const sk_colorspace_t* cColorSpace);
+ SK_C_API bool sk_colorspace_equals(const sk_colorspace_t* src, const sk_colorspace_t* dst);
+ SK_C_API bool sk_colorspace_to_xyzd50(const sk_colorspace_t* cColorSpace, sk_matrix44_t* toXYZD50);
+ SK_C_API bool sk_colorspaceprimaries_to_xyzd50(const sk_colorspaceprimaries_t* primaries, sk_matrix44_t* toXYZD50);
+
+ SK_C_PLUS_PLUS_END_GUARD
+
+ #endif
int fBufferMapThreshold;
bool fUseDrawInsteadOfPartialRenderTargetWrite;
bool fImmediateMode;
-- bool fClipDrawOpsToBounds;
int fMaxOpCombineLookback;
int fMaxOpCombineLookahead;
bool fUseShaderSwizzling;
bool fDisableGpuYUVConversion;
bool fSuppressPathRendering;
gr_contextoptions_gpupathrenderers_t fGpuPathRenderers;
++ bool fAvoidStencilBuffers;
} gr_context_options_t;
typedef enum {
typedef struct sk_3dview_t sk_3dview_t;
typedef enum {
- TRIANGLES_SK_VERTEX_MODE,
- TRIANGLE_STRIP_SK_VERTEX_MODE,
- TRIANGLE_FAN_SK_VERTEX_MODE,
-} sk_vertex_mode_t;
+ TRIANGLES_SK_VERTICES_VERTEX_MODE,
+ TRIANGLE_STRIP_SK_VERTICES_VERTEX_MODE,
+ TRIANGLE_FAN_SK_VERTICES_VERTEX_MODE,
+} sk_vertices_vertex_mode_t;
+
+typedef struct sk_vertices_t sk_vertices_t;
-typedef enum {
- NON_LINEAR_BLENDING_SK_COLORSPACE_FLAGS = 0x1,
-} sk_colorspace_flags_t;
-
+ typedef enum {
+ LINEAR_SK_COLORSPACE_RENDER_TARGET_GAMMA,
+ SRGB_SK_COLORSPACE_RENDER_TARGET_GAMMA,
+ } sk_colorspace_render_target_gamma_t;
+
+ typedef enum {
+ SRGB_SK_COLORSPACE_GAMUT,
+ ADOBE_RGB_SK_COLORSPACE_GAMUT,
+ DCIP3_D65_SK_COLORSPACE_GAMUT,
+ REC2020_SK_COLORSPACE_GAMUT,
+ } sk_colorspace_gamut_t;
+
+ typedef struct {
+ float fG;
+ float fA;
+ float fB;
+ float fC;
+ float fD;
+ float fE;
+ float fF;
+ } sk_colorspace_transfer_fn_t;
+
+ typedef struct {
+ float fRX, fRY;
+ float fGX, fGY;
+ float fBX, fBY;
+ float fWX, fWY;
+ } sk_colorspaceprimaries_t;
+
+ typedef enum {
+ NO_INVERT_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
+ INVERT_BRIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
+ INVERT_LIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
+ } sk_highcontrastconfig_invertstyle_t;
+
+ typedef struct {
+ bool fGrayscale;
+ sk_highcontrastconfig_invertstyle_t fInvertStyle;
+ float fContrast;
+ } sk_highcontrastconfig_t;
+
SK_C_PLUS_PLUS_END_GUARD
#endif
--- /dev/null
-sk_colorspace_t* sk_colorspace_new_rgb_with_gamma(sk_colorspace_render_target_gamma_t gamma, const sk_matrix44_t* toXYZD50, uint32_t flags) {
- return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, AsMatrix44(*toXYZD50), flags).release());
+ /*
+ * Copyright 2017 Xamarin Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+ #include "SkColorSpace.h"
+
+ #include "sk_colorspace.h"
+
+ #include "sk_types_priv.h"
+
+ void sk_colorspace_unref(sk_colorspace_t* cColorSpace) {
+ SkSafeUnref(AsColorSpace(cColorSpace));
+ }
+
+ sk_colorspace_t* sk_colorspace_new_srgb() {
+ return ToColorSpace(SkColorSpace::MakeSRGB().release());
+ }
+
+ sk_colorspace_t* sk_colorspace_new_srgb_linear() {
+ return ToColorSpace(SkColorSpace::MakeSRGBLinear().release());
+ }
+
+ sk_colorspace_t* sk_colorspace_new_icc(const void* input, size_t len) {
+ return ToColorSpace(SkColorSpace::MakeICC(input, len).release());
+ }
+
-sk_colorspace_t* sk_colorspace_new_rgb_with_gamma_and_gamut(sk_colorspace_render_target_gamma_t gamma, sk_colorspace_gamut_t gamut, uint32_t flags) {
- return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, (SkColorSpace::Gamut)gamut, flags).release());
++sk_colorspace_t* sk_colorspace_new_rgb_with_gamma(sk_colorspace_render_target_gamma_t gamma, const sk_matrix44_t* toXYZD50) {
++ return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, AsMatrix44(*toXYZD50)).release());
+ }
+
-sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs(const sk_colorspace_transfer_fn_t* coeffs, const sk_matrix44_t* toXYZD50, uint32_t flags) {
- return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), AsMatrix44(*toXYZD50), flags).release());
++sk_colorspace_t* sk_colorspace_new_rgb_with_gamma_and_gamut(sk_colorspace_render_target_gamma_t gamma, sk_colorspace_gamut_t gamut) {
++ return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, (SkColorSpace::Gamut)gamut).release());
+ }
+
-sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs_and_gamut(const sk_colorspace_transfer_fn_t* coeffs, sk_colorspace_gamut_t gamut, uint32_t flags) {
- return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), (SkColorSpace::Gamut)gamut, flags).release());
++sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs(const sk_colorspace_transfer_fn_t* coeffs, const sk_matrix44_t* toXYZD50) {
++ return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), AsMatrix44(*toXYZD50)).release());
+ }
+
++sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs_and_gamut(const sk_colorspace_transfer_fn_t* coeffs, sk_colorspace_gamut_t gamut) {
++ return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), (SkColorSpace::Gamut)gamut).release());
+ }
+
+ bool sk_colorspace_gamma_close_to_srgb(const sk_colorspace_t* cColorSpace) {
+ return AsColorSpace(cColorSpace)->gammaCloseToSRGB();
+ }
+
+ bool sk_colorspace_gamma_is_linear(const sk_colorspace_t* cColorSpace) {
+ return AsColorSpace(cColorSpace)->gammaIsLinear();
+ }
+
+ bool sk_colorspace_equals(const sk_colorspace_t* src, const sk_colorspace_t* dst) {
+ return SkColorSpace::Equals(AsColorSpace(src), AsColorSpace(dst));
+ }
+
+ bool sk_colorspace_to_xyzd50(const sk_colorspace_t* cColorSpace, sk_matrix44_t* toXYZD50) {
+ return AsColorSpace(cColorSpace)->toXYZD50(AsMatrix44(toXYZD50));
+ }
+
+ bool sk_colorspaceprimaries_to_xyzd50(const sk_colorspaceprimaries_t* primaries, sk_matrix44_t* toXYZD50) {
+ return AsColorSpacePrimaries(primaries)->toXYZD50(AsMatrix44(toXYZD50));
+ }
static_assert ((int)SkImage::CachingHint::kAllow_CachingHint == (int)ALLOW_SK_IMAGE_CACHING_HINT, ASSERT_MSG(SkImage::CachingHint, sk_image_caching_hint_t));
static_assert ((int)SkImage::CachingHint::kDisallow_CachingHint == (int)DISALLOW_SK_IMAGE_CACHING_HINT, ASSERT_MSG(SkImage::CachingHint, sk_image_caching_hint_t));
-// sk_colorspace_flags_t
-static_assert ((int)SkColorSpace::ColorSpaceFlags::kNonLinearBlending_ColorSpaceFlag == (int)NON_LINEAR_BLENDING_SK_COLORSPACE_FLAGS, ASSERT_MSG(SkColorSpace::RenderTargetGamma, sk_colorspace_render_target_gamma_t));
-
+ // sk_colorspace_render_target_gamma_t
+ static_assert ((int)SkColorSpace::RenderTargetGamma::kLinear_RenderTargetGamma == (int)LINEAR_SK_COLORSPACE_RENDER_TARGET_GAMMA, ASSERT_MSG(SkColorSpace::RenderTargetGamma, sk_colorspace_render_target_gamma_t));
+ static_assert ((int)SkColorSpace::RenderTargetGamma::kSRGB_RenderTargetGamma == (int)SRGB_SK_COLORSPACE_RENDER_TARGET_GAMMA, ASSERT_MSG(SkColorSpace::RenderTargetGamma, sk_colorspace_render_target_gamma_t));
+
+ // sk_highcontrastconfig_invertstyle_t
+ static_assert ((int)SkHighContrastConfig::InvertStyle::kNoInvert == (int)NO_INVERT_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE, ASSERT_MSG(SkHighContrastConfig::InvertStyle, sk_highcontrastconfig_invertstyle_t));
+ static_assert ((int)SkHighContrastConfig::InvertStyle::kInvertBrightness == (int)INVERT_BRIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE, ASSERT_MSG(SkHighContrastConfig::InvertStyle, sk_highcontrastconfig_invertstyle_t));
+ static_assert ((int)SkHighContrastConfig::InvertStyle::kInvertLightness == (int)INVERT_LIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE, ASSERT_MSG(SkHighContrastConfig::InvertStyle, sk_highcontrastconfig_invertstyle_t));
+
+// sk_bitmap_allocflags_t
+static_assert ((int)SkBitmap::AllocFlags::kZeroPixels_AllocFlag == (int)ZERO_PIXELS_SK_BITMAP_ALLOC_FLAGS, ASSERT_MSG(SkBitmap::AllocFlags, sk_bitmap_allocflags_t));
+
#if SK_SUPPORT_GPU
// gr_surfaceorigin_t
return reinterpret_cast<const sk_matrix44_t*>(p);
}
+ static inline const SkHighContrastConfig* AsHighContrastConfig(const sk_highcontrastconfig_t* p) {
+ return reinterpret_cast<const SkHighContrastConfig*>(p);
+ }
+
+ static inline const SkHighContrastConfig& AsHighContrastConfig(const sk_highcontrastconfig_t& p) {
+ return reinterpret_cast<const SkHighContrastConfig&>(p);
+ }
+
+ static inline SkHighContrastConfig* AsHighContrastConfig(sk_highcontrastconfig_t* p) {
+ return reinterpret_cast<SkHighContrastConfig*>(p);
+ }
+
+ static inline SkHighContrastConfig& AsHighContrastConfig(sk_highcontrastconfig_t& p) {
+ return reinterpret_cast<SkHighContrastConfig&>(p);
+ }
+
+ static inline sk_highcontrastconfig_t* ToHighContrastConfig(SkHighContrastConfig *p) {
+ return reinterpret_cast<sk_highcontrastconfig_t*>(p);
+ }
+
+ static inline sk_highcontrastconfig_t& ToHighContrastConfig(SkHighContrastConfig &p) {
+ return reinterpret_cast<sk_highcontrastconfig_t&>(p);
+ }
+
+ static inline const sk_highcontrastconfig_t* ToHighContrastConfig(const SkHighContrastConfig *p) {
+ return reinterpret_cast<const sk_highcontrastconfig_t*>(p);
+ }
+
+ static inline const sk_highcontrastconfig_t& ToHighContrastConfig(const SkHighContrastConfig &p) {
+ return reinterpret_cast<const sk_highcontrastconfig_t&>(p);
+ }
+
+static inline const SkVertices* AsVertices(const sk_vertices_t* p) {
+ return reinterpret_cast<const SkVertices*>(p);
+}
+
+static inline SkVertices* AsVertices(sk_vertices_t* p) {
+ return reinterpret_cast<SkVertices*>(p);
+}
+
+static inline sk_vertices_t* ToVertices(SkVertices* p) {
+ return reinterpret_cast<sk_vertices_t*>(p);
+}
+
+static inline const sk_vertices_t* ToVertices(const SkVertices* p) {
+ return reinterpret_cast<const sk_vertices_t*>(p);
+}
+
static inline void from_c(const sk_matrix_t* cmatrix, SkMatrix* matrix) {
matrix->setAll(
cmatrix->mat[0], cmatrix->mat[1], cmatrix->mat[2],