Updating Xamarin/Microsoft file headers
[platform/upstream/libSkiaSharp.git] / include / c / sk_matrix.h
1 /*
2  * Copyright 2014 Google Inc.
3  * Copyright 2015 Xamarin Inc.
4  * Copyright 2017 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 #ifndef sk_matrix_DEFINED
11 #define sk_matrix_DEFINED
12
13 #include "sk_types.h"
14
15 SK_C_PLUS_PLUS_BEGIN_GUARD
16
17
18 SK_C_API void sk_matrix_set_identity (sk_matrix_t*);
19 SK_C_API void sk_matrix_set_translate (sk_matrix_t*, float tx, float ty);
20 SK_C_API void sk_matrix_pre_translate (sk_matrix_t*, float tx, float ty);
21 SK_C_API void sk_matrix_post_translate (sk_matrix_t*, float tx, float ty);
22 SK_C_API void sk_matrix_set_scale (sk_matrix_t*, float sx, float sy);
23 SK_C_API void sk_matrix_pre_scale (sk_matrix_t*, float sx, float sy);
24 SK_C_API void sk_matrix_post_scale (sk_matrix_t*, float sx, float sy);
25 SK_C_API int sk_matrix_try_invert (sk_matrix_t *matrix, sk_matrix_t *result);
26 SK_C_API void sk_matrix_concat (sk_matrix_t *result, sk_matrix_t *first, sk_matrix_t *second);
27 SK_C_API void sk_matrix_pre_concat (sk_matrix_t *result, sk_matrix_t *matrix);
28 SK_C_API void sk_matrix_post_concat (sk_matrix_t *result, sk_matrix_t *matrix);
29 SK_C_API void sk_matrix_map_rect (sk_matrix_t *matrix, sk_rect_t *dest, sk_rect_t *source);
30 SK_C_API void sk_matrix_map_points (sk_matrix_t *matrix, sk_point_t *dst, sk_point_t *src, int count);
31 SK_C_API void sk_matrix_map_vectors (sk_matrix_t *matrix, sk_point_t *dst, sk_point_t *src, int count);
32 SK_C_API void sk_matrix_map_xy (sk_matrix_t *matrix, float x, float y, sk_point_t* result);
33 SK_C_API void sk_matrix_map_vector (sk_matrix_t *matrix, float x, float y, sk_point_t* result);
34 SK_C_API float sk_matrix_map_radius (sk_matrix_t *matrix, float radius);
35
36
37 SK_C_API sk_3dview_t* sk_3dview_new (void);
38 SK_C_API void sk_3dview_destroy (sk_3dview_t* cview);
39 SK_C_API void sk_3dview_save (sk_3dview_t* cview);
40 SK_C_API void sk_3dview_restore (sk_3dview_t* cview);
41 SK_C_API void sk_3dview_translate (sk_3dview_t* cview, float x, float y, float z);
42 SK_C_API void sk_3dview_rotate_x_degrees (sk_3dview_t* cview, float degrees);
43 SK_C_API void sk_3dview_rotate_y_degrees (sk_3dview_t* cview, float degrees);
44 SK_C_API void sk_3dview_rotate_z_degrees (sk_3dview_t* cview, float degrees);
45 SK_C_API void sk_3dview_rotate_x_radians (sk_3dview_t* cview, float radians);
46 SK_C_API void sk_3dview_rotate_y_radians (sk_3dview_t* cview, float radians);
47 SK_C_API void sk_3dview_rotate_z_radians (sk_3dview_t* cview, float radians);
48 SK_C_API void sk_3dview_get_matrix (sk_3dview_t* cview, sk_matrix_t* cmatrix);
49 SK_C_API void sk_3dview_apply_to_canvas (sk_3dview_t* cview, sk_canvas_t* ccanvas);
50 SK_C_API float sk_3dview_dot_with_normal (sk_3dview_t* cview, float dx, float dy, float dz);
51
52
53 SK_C_API void sk_matrix44_destroy (sk_matrix44_t* matrix);
54 SK_C_API sk_matrix44_t* sk_matrix44_new (void);
55 SK_C_API sk_matrix44_t* sk_matrix44_new_identity (void);
56 SK_C_API sk_matrix44_t* sk_matrix44_new_copy (const sk_matrix44_t* src);
57 SK_C_API sk_matrix44_t* sk_matrix44_new_concat (const sk_matrix44_t* a, const sk_matrix44_t* b);
58 SK_C_API sk_matrix44_t* sk_matrix44_new_matrix (const sk_matrix_t* src);
59 SK_C_API bool sk_matrix44_equals (sk_matrix44_t* matrix, const sk_matrix44_t* other);
60 SK_C_API void sk_matrix44_to_matrix (sk_matrix44_t* matrix, sk_matrix_t* dst);
61 SK_C_API sk_matrix44_type_mask_t sk_matrix44_get_type (sk_matrix44_t* matrix);
62 SK_C_API void sk_matrix44_set_identity (sk_matrix44_t* matrix);
63 SK_C_API float sk_matrix44_get (sk_matrix44_t* matrix, int row, int col);
64 SK_C_API void sk_matrix44_set (sk_matrix44_t* matrix, int row, int col, float value);
65 SK_C_API void sk_matrix44_as_col_major (sk_matrix44_t* matrix, float* dst);
66 SK_C_API void sk_matrix44_as_row_major (sk_matrix44_t* matrix, float* dst);
67 SK_C_API void sk_matrix44_set_col_major (sk_matrix44_t* matrix, float* dst);
68 SK_C_API void sk_matrix44_set_row_major (sk_matrix44_t* matrix, float* dst);
69 SK_C_API void sk_matrix44_set_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
70 SK_C_API void sk_matrix44_pre_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
71 SK_C_API void sk_matrix44_post_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
72 SK_C_API void sk_matrix44_set_scale (sk_matrix44_t* matrix, float sx, float sy, float sz);
73 SK_C_API void sk_matrix44_pre_scale (sk_matrix44_t* matrix, float sx, float sy, float sz);
74 SK_C_API void sk_matrix44_post_scale (sk_matrix44_t* matrix, float sx, float sy, float sz);
75 SK_C_API void sk_matrix44_set_rotate_about_degrees (sk_matrix44_t* matrix, float x, float y, float z, float degrees);
76 SK_C_API void sk_matrix44_set_rotate_about_radians (sk_matrix44_t* matrix, float x, float y, float z, float radians);
77 SK_C_API void sk_matrix44_set_rotate_about_radians_unit (sk_matrix44_t* matrix, float x, float y, float z, float radians);
78 SK_C_API void sk_matrix44_set_concat (sk_matrix44_t* matrix, const sk_matrix44_t* a, const sk_matrix44_t* b);
79 SK_C_API void sk_matrix44_pre_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m);
80 SK_C_API void sk_matrix44_post_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m);
81 SK_C_API bool sk_matrix44_invert (sk_matrix44_t* matrix, sk_matrix44_t* inverse);
82 SK_C_API void sk_matrix44_transpose (sk_matrix44_t* matrix);
83 SK_C_API void sk_matrix44_map_scalars (sk_matrix44_t* matrix, const float* src, float* dst);
84 SK_C_API void sk_matrix44_map2 (sk_matrix44_t* matrix, const float* src2, int count, float* dst4);
85 SK_C_API bool sk_matrix44_preserves_2d_axis_alignment (sk_matrix44_t* matrix, float epsilon);
86 SK_C_API double sk_matrix44_determinant (sk_matrix44_t* matrix);
87
88
89 SK_C_PLUS_PLUS_END_GUARD
90
91 #endif