Added bindings for SkRRect
[platform/upstream/libSkiaSharp.git] / src / c / sk_rrect.cpp
1 /*
2  * Copyright 2014 Google Inc.
3  * Copyright 2016 Xamarin Inc.
4  * Copyright 2018 Microsoft Corporation. All rights reserved.
5  *
6  * Use of this source code is governed by a BSD-style license that can be
7  * found in the LICENSE file.
8  */
9
10 #include "SkRRect.h"
11 #include "sk_rrect.h"
12 #include "sk_types_priv.h"
13
14
15 sk_rrect_t* sk_rrect_new(void) {
16     return ToRRect(new SkRRect());
17 }
18
19 sk_rrect_t* sk_rrect_new_copy(const sk_rrect_t* rrect) {
20     return ToRRect(new SkRRect(AsRRect(*rrect)));
21 }
22
23 void sk_rrect_delete(const sk_rrect_t* rrect) {
24   delete AsRRect(rrect);
25 }
26
27 sk_rrect_type_t sk_rrect_get_type(const sk_rrect_t* rrect) {
28     return (sk_rrect_type_t)AsRRect(rrect)->getType();
29 }
30
31 void sk_rrect_get_rect(const sk_rrect_t* rrect, sk_rect_t* rect) {
32     if (rect) {
33         *rect = ToRect(AsRRect(rrect)->rect());
34     }
35 }
36
37 void sk_rrect_get_radii(const sk_rrect_t* rrect, sk_rrect_corner_t corner, sk_vector_t* radii) {
38     if (radii) {
39         *radii = ToPoint(AsRRect(rrect)->radii((SkRRect::Corner)corner));
40     }
41 }
42
43 bool sk_rrect_all_corners_circular(const sk_rrect_t* rrect, float tolerance) {
44     return AsRRect(rrect)->allCornersCircular(tolerance);
45 }
46
47 float sk_rrect_get_width(const sk_rrect_t* rrect) {
48     return AsRRect(rrect)->width();
49 }
50
51 float sk_rrect_get_height(const sk_rrect_t* rrect) {
52     return AsRRect(rrect)->height();
53 }
54
55 void sk_rrect_set_empty(sk_rrect_t* rrect) {
56     AsRRect(rrect)->setEmpty();
57 }
58
59 void sk_rrect_set_rect(sk_rrect_t* rrect, const sk_rect_t* rect) {
60     AsRRect(rrect)->setRect(AsRect(*rect));
61 }
62
63 void sk_rrect_set_oval(sk_rrect_t* rrect, const sk_rect_t* rect) {
64     AsRRect(rrect)->setOval(AsRect(*rect));
65 }
66
67 void sk_rrect_set_rect_xy(sk_rrect_t* rrect, const sk_rect_t* rect, float xRad, float yRad) {
68     AsRRect(rrect)->setRectXY(AsRect(*rect), xRad, yRad);
69 }
70
71 void sk_rrect_set_nine_patch(sk_rrect_t* rrect, const sk_rect_t* rect, float leftRad, float topRad, float rightRad, float bottomRad) {
72     AsRRect(rrect)->setNinePatch(AsRect(*rect), leftRad, topRad, rightRad, bottomRad);
73 }
74
75 void sk_rrect_set_rect_radii(sk_rrect_t* rrect, const sk_rect_t* rect, const sk_vector_t* radii) {
76     AsRRect(rrect)->setRectRadii(AsRect(*rect), AsPoint(radii));
77 }
78
79 void sk_rrect_inset(sk_rrect_t* rrect, float dx, float dy) {
80     AsRRect(rrect)->inset(dx, dy);
81 }
82
83 void sk_rrect_outset(sk_rrect_t* rrect, float dx, float dy) {
84     AsRRect(rrect)->outset(dx, dy);
85 }
86
87 void sk_rrect_offset(sk_rrect_t* rrect, float dx, float dy) {
88     AsRRect(rrect)->offset(dx, dy);
89 }
90
91 bool sk_rrect_contains(const sk_rrect_t* rrect, const sk_rect_t* rect) {
92     return AsRRect(rrect)->contains(AsRect(*rect));
93 }
94
95 bool sk_rrect_is_valid(const sk_rrect_t* rrect) {
96     return AsRRect(rrect)->isValid();
97 }
98
99 bool sk_rrect_transform(sk_rrect_t* rrect, const sk_matrix_t* matrix, sk_rrect_t* dest) {
100     SkMatrix skmatrix;
101     from_c(matrix, &skmatrix);
102     return AsRRect(rrect)->transform(skmatrix, AsRRect(dest));
103 }