Merge branch 'xamarin-mobile-bindings' into update-m59
authorMatthew Leibowitz <mattleibow@live.com>
Mon, 10 Jul 2017 20:54:45 +0000 (22:54 +0200)
committerMatthew Leibowitz <mattleibow@live.com>
Mon, 10 Jul 2017 20:54:45 +0000 (22:54 +0200)
18 files changed:
gn/core.gni
include/c/sk_colorfilter.h
include/c/sk_colorspace.h [new file with mode: 0644]
include/c/sk_imagefilter.h
include/c/sk_patheffect.h
include/c/sk_types.h
include/core/SkDocument.h
src/c/sk_colorfilter.cpp
src/c/sk_colorspace.cpp [new file with mode: 0644]
src/c/sk_document.cpp
src/c/sk_enums.cpp
src/c/sk_imagefilter.cpp
src/c/sk_patheffect.cpp
src/c/sk_structs.cpp
src/c/sk_types_priv.h
src/gpu/effects/GrProxyMove.h
src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp
third_party/icu/BUILD.gn

index e2bb2b0..8c8ec30 100644 (file)
@@ -34,6 +34,7 @@ skia_core_sources = [
   "$_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",
@@ -62,6 +63,7 @@ skia_core_sources = [
   "$_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",
index 3f7bdc6..f8f0533 100644 (file)
@@ -21,6 +21,7 @@ SK_C_API sk_colorfilter_t* sk_colorfilter_new_lighting(sk_color_t mul, sk_color_
 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_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]);
 SK_C_API sk_colorfilter_t* sk_colorfilter_new_table_argb(const uint8_t tableA[256], const uint8_t tableR[256], const uint8_t tableG[256], const uint8_t tableB[256]);
 
diff --git a/include/c/sk_colorspace.h b/include/c/sk_colorspace.h
new file mode 100644 (file)
index 0000000..5457df4
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * 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
index 0bca27c..b055c58 100644 (file)
@@ -112,7 +112,8 @@ SK_C_API sk_imagefilter_t* sk_imagefilter_new_spot_lit_specular(
 SK_C_API sk_imagefilter_t* sk_imagefilter_new_magnifier(
     const sk_rect_t* src, 
     float inset,
-    sk_imagefilter_t* input /*NULL*/);
+    sk_imagefilter_t* input, /*NULL*/
+    const sk_imagefilter_croprect_t* cropRect /*NULL*/);
 SK_C_API sk_imagefilter_t* sk_imagefilter_new_matrix_convolution(
     const sk_isize_t* kernelSize,
     const float kernel[],
@@ -167,6 +168,16 @@ SK_C_API sk_imagefilter_t* sk_imagefilter_new_arithmetic(
     sk_imagefilter_t* background,
     sk_imagefilter_t* foreground /*NULL*/,
     const sk_imagefilter_croprect_t* cropRect /*NULL*/);
+SK_C_API sk_imagefilter_t* sk_imagefilter_new_image_source(
+    sk_image_t* image,
+    const sk_rect_t* srcRect,
+    const sk_rect_t* dstRect,
+    sk_filter_quality_t filterQuality);
+SK_C_API sk_imagefilter_t* sk_imagefilter_new_image_source_default(
+    sk_image_t* image);
+SK_C_API sk_imagefilter_t* sk_imagefilter_new_paint(
+    const sk_paint_t* paint,
+    const sk_imagefilter_croprect_t* cropRect /*NULL*/);
 
 SK_C_PLUS_PLUS_END_GUARD
 
index cacdfed..8600bb3 100644 (file)
@@ -20,6 +20,7 @@ SK_C_API sk_path_effect_t* sk_path_effect_create_compose(sk_path_effect_t* outer
 SK_C_API sk_path_effect_t* sk_path_effect_create_sum(sk_path_effect_t* first, sk_path_effect_t* second);
 SK_C_API sk_path_effect_t* sk_path_effect_create_discrete(float segLength, float deviation, uint32_t seedAssist /*0*/);
 SK_C_API sk_path_effect_t* sk_path_effect_create_corner(float radius);
+SK_C_API sk_path_effect_t* sk_path_effect_create_arc_to(float radius);
 SK_C_API sk_path_effect_t* sk_path_effect_create_1d_path(const sk_path_t* path, float advance, float phase, sk_path_effect_1d_style_t style);
 SK_C_API sk_path_effect_t* sk_path_effect_create_2d_line(float width, const sk_matrix_t* matrix);
 SK_C_API sk_path_effect_t* sk_path_effect_create_2d_path(const sk_matrix_t* matrix, const sk_path_t* path);
index e7041a3..c1caf3a 100644 (file)
@@ -80,15 +80,8 @@ typedef enum {
     BGR_V_SK_PIXELGEOMETRY,
 } sk_pixelgeometry_t;
 
-typedef struct {
-    int32_t         width;
-    int32_t         height;
-    sk_colortype_t  colorType;
-    sk_alphatype_t  alphaType;
-} sk_imageinfo_t;
-
 typedef enum {
-    USE_DEVICE_INDEPENDENT_FONTS_GR_SURFACE_PROPS_FLAGS = 1 << 0,
+    USE_DEVICE_INDEPENDENT_FONTS_SK_SURFACE_PROPS_FLAGS = 1 << 0,
 } sk_surfaceprops_flags_t;
 
 typedef struct {
@@ -726,7 +719,6 @@ typedef struct {
     int  fBufferMapThreshold;
     bool fUseDrawInsteadOfPartialRenderTargetWrite;
     bool fImmediateMode;
-    bool fClipDrawOpsToBounds;
     int fMaxOpCombineLookback;
     int fMaxOpCombineLookahead;
     bool fUseShaderSwizzling;
@@ -737,6 +729,7 @@ typedef struct {
     bool fDisableGpuYUVConversion;
     bool fSuppressPathRendering;
     gr_contextoptions_gpupathrenderers_t fGpuPathRenderers;
+    bool fAvoidStencilBuffers;
 } gr_context_options_t;
 
 typedef enum {
@@ -848,6 +841,20 @@ typedef enum {
     YCCK_SK_ENCODEDINFO_COLOR,
 } sk_encodedinfo_color_t;
 
+typedef enum {
+    SRGB_SK_COLORSPACE_NAMED,
+    ADOBE_RGB_SK_COLORSPACE_NAMED,
+    SRGB_LINEAR_SK_COLORSPACE_NAMED,
+} sk_colorspace_named_t;
+
+typedef struct {
+    sk_colorspace_t* colorspace;
+    int32_t          width;
+    int32_t          height;
+    sk_colortype_t   colorType;
+    sk_alphatype_t   alphaType;
+} sk_imageinfo_t;
+
 typedef struct {
     sk_encodedinfo_color_t fColor;
     sk_encodedinfo_alpha_t fAlpha;
@@ -876,6 +883,47 @@ typedef enum {
 
 typedef struct sk_vertices_t sk_vertices_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
index 55ab086..1afa20d 100644 (file)
@@ -174,10 +174,7 @@ public:
                                      SkScalar dpi = SK_ScalarDefaultRasterDPI);
 #else
     // DEPRECATED; TODO(mattleibow): we should remove this function.
-    static sk_sp<SkDocument> MakeXPS(SkWStream* stream,
-                                     SkScalar dpi = SK_ScalarDefaultRasterDPI) {
-        return nullptr;
-    }
+    static sk_sp<SkDocument> MakeXPS(SkWStream*, SkScalar) { return nullptr; }
 #endif
     // DEPRECATED; TODO(halcanary): remove this function after Chromium switches to new API.
     static sk_sp<SkDocument> MakeXPS(SkWStream*) { return nullptr; }
index b7751f3..86222fb 100644 (file)
@@ -52,6 +52,12 @@ sk_colorfilter_t* sk_colorfilter_new_luma_color() {
     return ToColorFilter(filter.release());
 }
 
+sk_colorfilter_t* sk_colorfilter_new_high_contrast(const sk_highcontrastconfig_t* config) {
+
+    sk_sp<SkColorFilter> filter = SkHighContrastFilter::Make(AsHighContrastConfig(*config));
+    return ToColorFilter(filter.release());
+}
+
 sk_colorfilter_t* sk_colorfilter_new_table(const uint8_t table[256]) {
 
     sk_sp<SkColorFilter> filter = SkTableColorFilter::Make(table);
diff --git a/src/c/sk_colorspace.cpp b/src/c/sk_colorspace.cpp
new file mode 100644 (file)
index 0000000..dc57380
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * 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(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_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(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));
+}
index 25e8047..91a3576 100644 (file)
@@ -30,7 +30,7 @@ sk_document_t* sk_document_create_pdf_from_filename(const char* path, float dpi)
 }
 
 sk_document_t* sk_document_create_xps_from_stream(sk_wstream_t* stream, float dpi) {
-   return ToDocument(SkDocument::MakeXPS(AsWStream(stream), dpi).release());
+    return ToDocument(SkDocument::MakeXPS(AsWStream(stream), dpi).release());
 }
 
 sk_canvas_t* sk_document_begin_page(sk_document_t* document, float width, float height, const sk_rect_t* content) {
index 6f2e92e..40c7c25 100644 (file)
@@ -11,6 +11,7 @@
 #include "SkBlurMaskFilter.h"
 
 #if SK_SUPPORT_GPU
+#include "GrTypes.h"
 #include "GrContextOptions.h"
 #endif
 
@@ -266,7 +267,7 @@ static_assert ((int)SkCanvas::PointMode::kLines_PointMode     == (int)LINES_SK_P
 static_assert ((int)SkCanvas::PointMode::kPolygon_PointMode   == (int)POLYGON_SK_POINT_MODE,   ASSERT_MSG(SkCanvas::PointMode, sk_point_mode_t));
 
 // sk_surfaceprops_flags_t
-static_assert ((int)SkSurfaceProps::Flags::kUseDeviceIndependentFonts_Flag   == (int)USE_DEVICE_INDEPENDENT_FONTS_GR_SURFACE_PROPS_FLAGS,   ASSERT_MSG(SkSurfaceProps::Flags, sk_surfaceprops_flags_t));
+static_assert ((int)SkSurfaceProps::Flags::kUseDeviceIndependentFonts_Flag   == (int)USE_DEVICE_INDEPENDENT_FONTS_SK_SURFACE_PROPS_FLAGS,   ASSERT_MSG(SkSurfaceProps::Flags, sk_surfaceprops_flags_t));
 
 // sk_bitmapscaler_resizemethod_t
 static_assert ((int)SkBitmapScaler::ResizeMethod::RESIZE_BOX        == (int)BOX_SK_BITMAP_SCALER_RESIZE_METHOD,        ASSERT_MSG(SkBitmapScaler::ResizeMethod, sk_bitmapscaler_resizemethod_t));
@@ -291,7 +292,7 @@ static_assert ((int)SkPath::Convexity::kUnknown_Convexity   == (int)UNKNOWN_SK_P
 static_assert ((int)SkPath::Convexity::kConvex_Convexity    == (int)CONVEX_SK_PATH_CONVEXITY,    ASSERT_MSG(SkPath::Convexity, sk_path_convexity_t));
 static_assert ((int)SkPath::Convexity::kConcave_Convexity   == (int)CONCAVE_SK_PATH_CONVEXITY,   ASSERT_MSG(SkPath::Convexity, sk_path_convexity_t));
 
-// gr_backendtexture_flags_t
+// sk_lattice_flags_t
 static_assert ((int)0                                              == (int)DEFAULT_SK_LATTICE_FLAGS,       ASSERT_MSG(SkCanvas::Lattice::Flags, sk_lattice_flags_t));
 static_assert ((int)SkCanvas::Lattice::Flags::kTransparent_Flags   == (int)TRANSPARENT_SK_LATTICE_FLAGS,   ASSERT_MSG(SkCanvas::Lattice::Flags, sk_lattice_flags_t));
 
@@ -319,6 +320,12 @@ static_assert ((int)SkEncodedInfo::Color::kYUVA_Color           == (int)YUVA_SK_
 static_assert ((int)SkEncodedInfo::Color::kInvertedCMYK_Color   == (int)INVERTED_CMYK_SK_ENCODEDINFO_COLOR,   ASSERT_MSG(SkEncodedInfo::Color, sk_encodedinfo_color_t));
 static_assert ((int)SkEncodedInfo::Color::kYCCK_Color           == (int)YCCK_SK_ENCODEDINFO_COLOR,            ASSERT_MSG(SkEncodedInfo::Color, sk_encodedinfo_color_t));
 
+// sk_colorspace_gamut_t
+static_assert ((int)SkColorSpace::Gamut::kSRGB_Gamut        == (int)SRGB_SK_COLORSPACE_GAMUT,        ASSERT_MSG(SkColorSpace::Gamut, sk_colorspace_gamut_t));
+static_assert ((int)SkColorSpace::Gamut::kAdobeRGB_Gamut    == (int)ADOBE_RGB_SK_COLORSPACE_GAMUT,   ASSERT_MSG(SkColorSpace::Gamut, sk_colorspace_gamut_t));
+static_assert ((int)SkColorSpace::Gamut::kDCIP3_D65_Gamut   == (int)DCIP3_D65_SK_COLORSPACE_GAMUT,   ASSERT_MSG(SkColorSpace::Gamut, sk_colorspace_gamut_t));
+static_assert ((int)SkColorSpace::Gamut::kRec2020_Gamut     == (int)REC2020_SK_COLORSPACE_GAMUT,     ASSERT_MSG(SkColorSpace::Gamut, sk_colorspace_gamut_t));
+
 // sk_mask_format_t
 static_assert ((int)SkMask::Format::kBW_Format       == (int)BW_SK_MASK_FORMAT,        ASSERT_MSG(SkMask::Format, sk_mask_format_t));
 static_assert ((int)SkMask::Format::kA8_Format       == (int)A8_SK_MASK_FORMAT,        ASSERT_MSG(SkMask::Format, sk_mask_format_t));
@@ -342,6 +349,15 @@ static_assert ((int)SkVertices::VertexMode::kTriangleFan_VertexMode     == (int)
 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_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));
 
index 840e0ac..11214a6 100644 (file)
@@ -23,6 +23,8 @@
 #include "SkTileImageFilter.h"
 #include "SkXfermodeImageFilter.h"
 #include "SkArithmeticImageFilter.h"
+#include "SkImageSource.h"
+#include "SkPaintImageFilter.h"
 
 #include "sk_imagefilter.h"
 
@@ -274,12 +276,14 @@ sk_imagefilter_t* sk_imagefilter_new_spot_lit_specular(
 sk_imagefilter_t* sk_imagefilter_new_magnifier(
     const sk_rect_t* src,
     float inset,
-    sk_imagefilter_t* input /*NULL*/) {
+    sk_imagefilter_t* input, /*NULL*/
+    const sk_imagefilter_croprect_t* cropRect) {
 
     sk_sp<SkImageFilter> filter = SkMagnifierImageFilter::Make(
         *AsRect(src),
         inset,
-        sk_ref_sp(AsImageFilter(input)));
+        sk_ref_sp(AsImageFilter(input)),
+        AsImageFilterCropRect(cropRect));
     return ToImageFilter(filter.release());
 }
 
@@ -440,3 +444,35 @@ SK_API sk_imagefilter_t* sk_imagefilter_new_arithmetic(
         AsImageFilterCropRect(cropRect));
     return ToImageFilter(filter.release());
 }
+
+sk_imagefilter_t* sk_imagefilter_new_image_source(
+    sk_image_t* image,
+    const sk_rect_t* srcRect,
+    const sk_rect_t* dstRect,
+    sk_filter_quality_t filterQuality) {
+
+    sk_sp<SkImageFilter> filter = SkImageSource::Make(
+        sk_ref_sp(AsImage(image)),
+        *AsRect(srcRect),
+        *AsRect(dstRect),
+        (SkFilterQuality)filterQuality);
+    return ToImageFilter(filter.release());
+}
+
+sk_imagefilter_t* sk_imagefilter_new_image_source_default(
+    sk_image_t* image) {
+
+    sk_sp<SkImageFilter> filter = SkImageSource::Make(
+        sk_ref_sp(AsImage(image)));
+    return ToImageFilter(filter.release());
+}
+
+sk_imagefilter_t* sk_imagefilter_new_paint(
+    const sk_paint_t* paint,
+    const sk_imagefilter_croprect_t* cropRect /*NULL*/) {
+
+    sk_sp<SkImageFilter> filter = SkPaintImageFilter::Make(
+        AsPaint(*paint),
+        AsImageFilterCropRect(cropRect));
+    return ToImageFilter(filter.release());
+}
index b05a3ee..764b997 100644 (file)
@@ -11,6 +11,7 @@
 #include "Sk1DPathEffect.h"
 #include "Sk2DPathEffect.h"
 #include "SkDashPathEffect.h"
+#include "SkArcToPathEffect.h"
 #include "SkPath.h"
 
 #include "sk_patheffect.h"
@@ -42,6 +43,11 @@ sk_path_effect_t* sk_path_effect_create_corner(float radius)
     return ToPathEffect(SkCornerPathEffect::Make(radius).release());
 }
 
+sk_path_effect_t* sk_path_effect_create_arc_to(float radius)
+{
+    return ToPathEffect(SkArcToPathEffect::Make(radius).release());
+}
+
 sk_path_effect_t* sk_path_effect_create_1d_path(const sk_path_t* path, float advance, float phase, sk_path_effect_1d_style_t style)
 {
     return ToPathEffect(SkPath1DPathEffect::Make(AsPath(*path), advance, phase, (SkPath1DPathEffect::Style)style).release());
index ca6ac4b..d7cbc74 100644 (file)
@@ -52,6 +52,9 @@ static_assert (sizeof (sk_lattice_t) == sizeof (SkCanvas::Lattice), ASSERT_MSG(S
 static_assert (sizeof (sk_time_datetime_t) == sizeof (SkTime::DateTime), ASSERT_MSG(SkTime::DateTime, sk_time_datetime_t));
 static_assert (sizeof (sk_encodedinfo_t) == sizeof (SkEncodedInfo), ASSERT_MSG(SkEncodedInfo, sk_encodedinfo_t));
 static_assert (sizeof (sk_codec_frameinfo_t) == sizeof (SkCodec::FrameInfo), ASSERT_MSG(SkCodec::FrameInfo, sk_codec_frameinfo_t));
+static_assert (sizeof (sk_colorspace_transfer_fn_t) == sizeof (SkColorSpaceTransferFn), ASSERT_MSG(SkColorSpaceTransferFn, sk_colorspace_transfer_fn_t));
+static_assert (sizeof (sk_colorspaceprimaries_t) == sizeof (SkColorSpacePrimaries), ASSERT_MSG(SkColorSpacePrimaries, sk_colorspaceprimaries_t));
+static_assert (sizeof (sk_highcontrastconfig_t) == sizeof (SkHighContrastConfig), ASSERT_MSG(SkHighContrastConfig, sk_highcontrastconfig_t));
 
 #if SK_SUPPORT_GPU
 static_assert (sizeof (gr_backend_rendertarget_desc_t) == sizeof (GrBackendRenderTargetDesc), ASSERT_MSG(GrBackendRenderTargetDesc, gr_backend_rendertarget_desc_t));
index d6a2068..99c2a7b 100644 (file)
@@ -15,6 +15,7 @@
 #include "SkPath.h"
 #include "SkPathMeasure.h"
 #include "SkCodec.h"
+#include "SkColorSpace.h"
 #include "SkPicture.h"
 #include "SkPixmap.h"
 #include "SkPictureRecorder.h"
@@ -35,6 +36,7 @@
 #include "SkEncodedInfo.h"
 #include "SkTime.h"
 #include "SkCamera.h"
+#include "SkHighContrastFilter.h"
 
 #include "sk_path.h"
 #include "sk_paint.h"
@@ -198,6 +200,10 @@ static inline const SkImage* AsImage(const sk_image_t* cimage) {
     return reinterpret_cast<const SkImage*>(cimage);
 }
 
+static inline SkImage* AsImage(sk_image_t* cimage) {
+    return reinterpret_cast<SkImage*>(cimage);
+}
+
 static inline sk_image_t* ToImage(SkImage* cimage) {
     return reinterpret_cast<sk_image_t*>(cimage);
 }
@@ -298,6 +304,10 @@ static inline SkColorSpace* AsColorSpace(sk_colorspace_t* colorspace) {
     return reinterpret_cast<SkColorSpace*>(colorspace);
 }
 
+static inline const SkColorSpace* AsColorSpace(const sk_colorspace_t* colorspace) {
+    return reinterpret_cast<const SkColorSpace*>(colorspace);
+}
+
 static inline sk_shader_t* ToShader(SkShader* shader) {
     return reinterpret_cast<sk_shader_t*>(shader);
 }
@@ -614,6 +624,70 @@ static inline const sk_encodedinfo_t& ToEncodedInfo(const SkEncodedInfo &p) {
     return reinterpret_cast<const sk_encodedinfo_t&>(p);
 }
 
+static inline const SkColorSpacePrimaries* AsColorSpacePrimaries(const sk_colorspaceprimaries_t* p) {
+    return reinterpret_cast<const SkColorSpacePrimaries*>(p);
+}
+
+static inline const SkColorSpacePrimaries& AsColorSpacePrimaries(const sk_colorspaceprimaries_t& p) {
+    return reinterpret_cast<const SkColorSpacePrimaries&>(p);
+}
+
+static inline SkColorSpacePrimaries* AsColorSpacePrimaries(sk_colorspaceprimaries_t* p) {
+    return reinterpret_cast<SkColorSpacePrimaries*>(p);
+}
+
+static inline SkColorSpacePrimaries& AsColorSpacePrimaries(sk_colorspaceprimaries_t& p) {
+    return reinterpret_cast<SkColorSpacePrimaries&>(p);
+}
+
+static inline sk_colorspaceprimaries_t* ToColorSpacePrimaries(SkColorSpacePrimaries *p) {
+    return reinterpret_cast<sk_colorspaceprimaries_t*>(p);
+}
+
+static inline sk_colorspaceprimaries_t& ToColorSpacePrimaries(SkColorSpacePrimaries &p) {
+    return reinterpret_cast<sk_colorspaceprimaries_t&>(p);
+}
+
+static inline const sk_colorspaceprimaries_t* ToColorSpacePrimaries(const SkColorSpacePrimaries *p) {
+    return reinterpret_cast<const sk_colorspaceprimaries_t*>(p);
+}
+
+static inline const sk_colorspaceprimaries_t& ToColorSpacePrimaries(const SkColorSpacePrimaries &p) {
+    return reinterpret_cast<const sk_colorspaceprimaries_t&>(p);
+}
+
+static inline const SkColorSpaceTransferFn* AsColorSpaceTransferFn(const sk_colorspace_transfer_fn_t* p) {
+    return reinterpret_cast<const SkColorSpaceTransferFn*>(p);
+}
+
+static inline const SkColorSpaceTransferFn& AsColorSpaceTransferFn(const sk_colorspace_transfer_fn_t& p) {
+    return reinterpret_cast<const SkColorSpaceTransferFn&>(p);
+}
+
+static inline SkColorSpaceTransferFn* AsColorSpaceTransferFn(sk_colorspace_transfer_fn_t* p) {
+    return reinterpret_cast<SkColorSpaceTransferFn*>(p);
+}
+
+static inline SkColorSpaceTransferFn& AsColorSpaceTransferFn(sk_colorspace_transfer_fn_t& p) {
+    return reinterpret_cast<SkColorSpaceTransferFn&>(p);
+}
+
+static inline sk_colorspace_transfer_fn_t* ToColorSpaceTransferFn(SkColorSpaceTransferFn *p) {
+    return reinterpret_cast<sk_colorspace_transfer_fn_t*>(p);
+}
+
+static inline sk_colorspace_transfer_fn_t& ToColorSpaceTransferFn(SkColorSpaceTransferFn &p) {
+    return reinterpret_cast<sk_colorspace_transfer_fn_t&>(p);
+}
+
+static inline const sk_colorspace_transfer_fn_t* ToColorSpaceTransferFn(const SkColorSpaceTransferFn *p) {
+    return reinterpret_cast<const sk_colorspace_transfer_fn_t*>(p);
+}
+
+static inline const sk_colorspace_transfer_fn_t& ToColorSpaceTransferFn(const SkColorSpaceTransferFn &p) {
+    return reinterpret_cast<const sk_colorspace_transfer_fn_t&>(p);
+}
+
 static inline SkCodec::FrameInfo* AsFrameInfo(sk_codec_frameinfo_t *p) {
     return reinterpret_cast<SkCodec::FrameInfo*>(p);
 }
@@ -706,6 +780,38 @@ static inline const sk_matrix44_t* ToMatrix44(const SkMatrix44* p) {
     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);
 }
@@ -733,27 +839,27 @@ static inline void from_sk(const SkMatrix* matrix, sk_matrix_t* cmatrix) {
     matrix->get9(cmatrix->mat);
 }
 
-static inline bool from_c(const sk_imageinfo_t& cinfo, SkImageInfo* info) {
+static inline void from_c(const sk_imageinfo_t& cinfo, SkImageInfo* info) {
     if (info) { 
         *info = SkImageInfo::Make(
             cinfo.width,
             cinfo.height,
             (SkColorType)cinfo.colorType,
-            (SkAlphaType)cinfo.alphaType); 
+            (SkAlphaType)cinfo.alphaType,
+            sk_ref_sp(AsColorSpace(cinfo.colorspace))); 
     } 
-    return true; 
 } 
 
-static inline bool from_sk(const SkImageInfo& info, sk_imageinfo_t* cinfo) {
+static inline void from_sk(const SkImageInfo& info, sk_imageinfo_t* cinfo) {
     if (cinfo) { 
         *cinfo = {
+            ToColorSpace(info.refColorSpace().release()),
             info.width(),
             info.height(),
             (sk_colortype_t)info.colorType(),
-            (sk_alphatype_t)info.alphaType()
+            (sk_alphatype_t)info.alphaType(),
         }; 
     } 
-    return true; 
 } 
 
 static inline void from_c(const sk_document_pdf_metadata_t& cmetadata, SkDocument::PDFMetadata* metadata) {
index 4fbf1a0..ad5b403 100644 (file)
@@ -22,7 +22,7 @@
 #       define GCC_EVAL_ORDER_BUG 1
 #   endif
 #   undef GCC_VERSION
-#elif defined(_MSC_VER) && defined(__clang__)
+#elif defined(_MSC_VER) && (defined(__clang__) || defined(_M_ARM))
 #   define GCC_EVAL_ORDER_BUG 1
 #else
 #   define GCC_EVAL_ORDER_BUG 0
index 6e8b2b0..f714cb2 100644 (file)
@@ -61,7 +61,7 @@ static GrGLFuncPtr glx_get(void* ctx, const char name[]) {
 
     SkASSERT(nullptr != ctx);
     const GLXProcGetter* getter = (const GLXProcGetter*) ctx;
-    SkASSERT(nullptr != getter->getCurrentContext())
+    SkASSERT(nullptr != getter->getCurrentContext());
     return getter->getProc(reinterpret_cast<const GLubyte*>(name));
 }
 
index 1d54c46..e3815ee 100644 (file)
@@ -4,7 +4,7 @@
 # found in the LICENSE file.
 
 declare_args() {
-  skia_use_system_icu = is_official_build
+  skia_use_system_icu = false
 }
 
 import("../third_party.gni")