2 * Copyright 2014 Google Inc.
3 * Copyright 2016 Xamarin Inc.
4 * Copyright 2018 Microsoft Corporation. All rights reserved.
6 * Use of this source code is governed by a BSD-style license that can be
7 * found in the LICENSE file.
12 #include "sk_types_priv.h"
15 sk_rrect_t* sk_rrect_new(void) {
16 return ToRRect(new SkRRect());
19 sk_rrect_t* sk_rrect_new_copy(const sk_rrect_t* rrect) {
20 return ToRRect(new SkRRect(AsRRect(*rrect)));
23 void sk_rrect_delete(const sk_rrect_t* rrect) {
24 delete AsRRect(rrect);
27 sk_rrect_type_t sk_rrect_get_type(const sk_rrect_t* rrect) {
28 return (sk_rrect_type_t)AsRRect(rrect)->getType();
31 void sk_rrect_get_rect(const sk_rrect_t* rrect, sk_rect_t* rect) {
33 *rect = ToRect(AsRRect(rrect)->rect());
37 void sk_rrect_get_radii(const sk_rrect_t* rrect, sk_rrect_corner_t corner, sk_vector_t* radii) {
39 *radii = ToPoint(AsRRect(rrect)->radii((SkRRect::Corner)corner));
43 bool sk_rrect_all_corners_circular(const sk_rrect_t* rrect, float tolerance) {
44 return AsRRect(rrect)->allCornersCircular(tolerance);
47 float sk_rrect_get_width(const sk_rrect_t* rrect) {
48 return AsRRect(rrect)->width();
51 float sk_rrect_get_height(const sk_rrect_t* rrect) {
52 return AsRRect(rrect)->height();
55 void sk_rrect_set_empty(sk_rrect_t* rrect) {
56 AsRRect(rrect)->setEmpty();
59 void sk_rrect_set_rect(sk_rrect_t* rrect, const sk_rect_t* rect) {
60 AsRRect(rrect)->setRect(AsRect(*rect));
63 void sk_rrect_set_oval(sk_rrect_t* rrect, const sk_rect_t* rect) {
64 AsRRect(rrect)->setOval(AsRect(*rect));
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);
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);
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));
79 void sk_rrect_inset(sk_rrect_t* rrect, float dx, float dy) {
80 AsRRect(rrect)->inset(dx, dy);
83 void sk_rrect_outset(sk_rrect_t* rrect, float dx, float dy) {
84 AsRRect(rrect)->outset(dx, dy);
87 void sk_rrect_offset(sk_rrect_t* rrect, float dx, float dy) {
88 AsRRect(rrect)->offset(dx, dy);
91 bool sk_rrect_contains(const sk_rrect_t* rrect, const sk_rect_t* rect) {
92 return AsRRect(rrect)->contains(AsRect(*rect));
95 bool sk_rrect_is_valid(const sk_rrect_t* rrect) {
96 return AsRRect(rrect)->isValid();
99 bool sk_rrect_transform(sk_rrect_t* rrect, const sk_matrix_t* matrix, sk_rrect_t* dest) {
101 from_c(matrix, &skmatrix);
102 return AsRRect(rrect)->transform(skmatrix, AsRRect(dest));