From 3c9ddacff9b86069f35c92a7a1faa8bcae3276f7 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Thu, 24 May 2018 19:09:50 +0200 Subject: [PATCH] Adding bindings for SkNWayCanvas and SkNoDrawCanvas --- include/c/sk_canvas.h | 9 +++++++++ include/c/sk_types.h | 2 ++ src/c/sk_canvas.cpp | 28 ++++++++++++++++++++++++++++ src/c/sk_types_priv.h | 18 ++++++++++++++++++ 4 files changed, 57 insertions(+) diff --git a/include/c/sk_canvas.h b/include/c/sk_canvas.h index cd44564..6c7f799 100644 --- a/include/c/sk_canvas.h +++ b/include/c/sk_canvas.h @@ -351,6 +351,15 @@ SK_C_API void sk_canvas_draw_image_nine(sk_canvas_t* t, const sk_image_t* image, SK_C_API void sk_canvas_draw_vertices(sk_canvas_t* ccanvas, sk_vertices_t* vertices, sk_blendmode_t mode, const sk_paint_t* paint); +SK_C_API sk_nodraw_canvas_t* sk_nodraw_canvas_new(int width, int height); +SK_C_API void sk_nodraw_canvas_destroy(sk_nodraw_canvas_t*); + +SK_C_API sk_nway_canvas_t* sk_nway_canvas_new(int width, int height); +SK_C_API void sk_nway_canvas_destroy(sk_nway_canvas_t*); +SK_C_API void sk_nway_canvas_add_canvas(sk_nway_canvas_t*, sk_canvas_t* canvas); +SK_C_API void sk_nway_canvas_remove_canvas(sk_nway_canvas_t*, sk_canvas_t* canvas); +SK_C_API void sk_nway_canvas_remove_all(sk_nway_canvas_t*); + SK_C_PLUS_PLUS_END_GUARD #endif diff --git a/include/c/sk_types.h b/include/c/sk_types.h index 905bd5b..c8d4bb6 100644 --- a/include/c/sk_types.h +++ b/include/c/sk_types.h @@ -183,6 +183,8 @@ typedef enum { and a stack of matrix/clip values. */ typedef struct sk_canvas_t sk_canvas_t; +typedef struct sk_nodraw_canvas_t sk_nodraw_canvas_t; +typedef struct sk_nway_canvas_t sk_nway_canvas_t; /** A sk_data_ holds an immutable data buffer. */ diff --git a/src/c/sk_canvas.cpp b/src/c/sk_canvas.cpp index 1266be6..d055834 100644 --- a/src/c/sk_canvas.cpp +++ b/src/c/sk_canvas.cpp @@ -297,3 +297,31 @@ void sk_canvas_draw_image_nine(sk_canvas_t* ccanvas, void sk_canvas_draw_vertices(sk_canvas_t* ccanvas, sk_vertices_t* vertices, sk_blendmode_t mode, const sk_paint_t* paint) { AsCanvas(ccanvas)->drawVertices(AsVertices(vertices), (SkBlendMode)mode, AsPaint(*paint)); } + +sk_nodraw_canvas_t* sk_nodraw_canvas_new(int width, int height) { + return ToNoDrawCanvas(new SkNoDrawCanvas(width, height)); +} + +void sk_nodraw_canvas_destroy(sk_nodraw_canvas_t* t) { + delete AsNoDrawCanvas(t); +} + +sk_nway_canvas_t* sk_nway_canvas_new(int width, int height) { + return ToNWayCanvas(new SkNWayCanvas(width, height)); +} + +void sk_nway_canvas_destroy(sk_nway_canvas_t* t) { + delete AsNWayCanvas(t); +} + +void sk_nway_canvas_add_canvas(sk_nway_canvas_t* t, sk_canvas_t* canvas) { + AsNWayCanvas(t)->addCanvas(AsCanvas(canvas)); +} + +void sk_nway_canvas_remove_canvas(sk_nway_canvas_t* t, sk_canvas_t* canvas) { + AsNWayCanvas(t)->removeCanvas(AsCanvas(canvas)); +} + +void sk_nway_canvas_remove_all(sk_nway_canvas_t* t) { + AsNWayCanvas(t)->removeAll(); +} diff --git a/src/c/sk_types_priv.h b/src/c/sk_types_priv.h index dd34545..fa85479 100644 --- a/src/c/sk_types_priv.h +++ b/src/c/sk_types_priv.h @@ -10,6 +10,8 @@ #include "SkImageInfo.h" #include "SkCanvas.h" +#include "SkNoDrawCanvas.h" +#include "SkNWayCanvas.h" #include "SkSurface.h" #include "SkVertices.h" #include "SkBlurTypes.h" @@ -251,6 +253,22 @@ static inline SkCanvas* AsCanvas(sk_canvas_t* ccanvas) { return reinterpret_cast(ccanvas); } +static inline sk_nodraw_canvas_t* ToNoDrawCanvas(SkNoDrawCanvas* canvas) { + return reinterpret_cast(canvas); +} + +static inline SkNoDrawCanvas* AsNoDrawCanvas(sk_nodraw_canvas_t* ccanvas) { + return reinterpret_cast(ccanvas); +} + +static inline sk_nway_canvas_t* ToNWayCanvas(SkNWayCanvas* canvas) { + return reinterpret_cast(canvas); +} + +static inline SkNWayCanvas* AsNWayCanvas(sk_nway_canvas_t* ccanvas) { + return reinterpret_cast(ccanvas); +} + static inline SkPictureRecorder* AsPictureRecorder(sk_picture_recorder_t* crec) { return reinterpret_cast(crec); } -- 2.7.4