*/
SK_C_API float sk_matrix_map_radius (sk_matrix_t *matrix, float radius);
+
SK_C_API sk_3dview_t* sk_3dview_new ();
SK_C_API void sk_3dview_destroy (sk_3dview_t* cview);
SK_C_API void sk_3dview_save (sk_3dview_t* cview);
SK_C_API void sk_3dview_apply_to_canvas (sk_3dview_t* cview, sk_canvas_t* ccanvas);
SK_C_API float sk_3dview_dot_with_normal (sk_3dview_t* cview, float dx, float dy, float dz);
+
+SK_C_API void sk_matrix44_destroy (sk_matrix44_t* matrix);
+SK_C_API sk_matrix44_t* sk_matrix44_new ();
+SK_C_API sk_matrix44_t* sk_matrix44_new_identity ();
+SK_C_API sk_matrix44_t* sk_matrix44_new_copy (const sk_matrix44_t* src);
+SK_C_API sk_matrix44_t* sk_matrix44_new_concat (const sk_matrix44_t* a, const sk_matrix44_t* b);
+SK_C_API sk_matrix44_t* sk_matrix44_new_matrix (const sk_matrix_t* src);
+SK_C_API bool sk_matrix44_equals (sk_matrix44_t* matrix, const sk_matrix44_t* other);
+SK_C_API void sk_matrix44_to_matrix (sk_matrix44_t* matrix, sk_matrix_t* dst);
+SK_C_API sk_matrix44_type_mask_t sk_matrix44_get_type (sk_matrix44_t* matrix);
+SK_C_API void sk_matrix44_set_identity (sk_matrix44_t* matrix);
+SK_C_API float sk_matrix44_get (sk_matrix44_t* matrix, int row, int col);
+SK_C_API void sk_matrix44_set (sk_matrix44_t* matrix, int row, int col, float value);
+SK_C_API void sk_matrix44_as_col_major (sk_matrix44_t* matrix, float* dst);
+SK_C_API void sk_matrix44_as_row_major (sk_matrix44_t* matrix, float* dst);
+SK_C_API void sk_matrix44_set_col_major (sk_matrix44_t* matrix, float* dst);
+SK_C_API void sk_matrix44_set_row_major (sk_matrix44_t* matrix, float* dst);
+SK_C_API void sk_matrix44_set_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
+SK_C_API void sk_matrix44_pre_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
+SK_C_API void sk_matrix44_post_translate (sk_matrix44_t* matrix, float dx, float dy, float dz);
+SK_C_API void sk_matrix44_set_sccle (sk_matrix44_t* matrix, float sx, float sy, float sz);
+SK_C_API void sk_matrix44_pre_scale (sk_matrix44_t* matrix, float sx, float sy, float sz);
+SK_C_API void sk_matrix44_post_scale (sk_matrix44_t* matrix, float sx, float sy, float sz);
+SK_C_API void sk_matrix44_set_rotate_about_degrees (sk_matrix44_t* matrix, float x, float y, float z, float degrees);
+SK_C_API void sk_matrix44_set_rotate_about_radians (sk_matrix44_t* matrix, float x, float y, float z, float radians);
+SK_C_API void sk_matrix44_set_rotate_about_radians_unit (sk_matrix44_t* matrix, float x, float y, float z, float radians);
+SK_C_API void sk_matrix44_set_concat (sk_matrix44_t* matrix, const sk_matrix44_t* a, const sk_matrix44_t* b);
+SK_C_API void sk_matrix44_pre_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m);
+SK_C_API void sk_matrix44_post_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m);
+SK_C_API bool sk_matrix44_invert (sk_matrix44_t* matrix, sk_matrix44_t* inverse);
+SK_C_API void sk_matrix44_transpose (sk_matrix44_t* matrix);
+SK_C_API void sk_matrix44_map_scalars (sk_matrix44_t* matrix, const float* src, float* dst);
+SK_C_API void sk_matrix44_map2 (sk_matrix44_t* matrix, const float* src2, int count, float* dst4);
+SK_C_API bool sk_matrix44_preserves_2d_axis_alignment (sk_matrix44_t* matrix, float epsilon);
+SK_C_API double sk_matrix44_determinant (sk_matrix44_t* matrix);
+
+
SK_C_PLUS_PLUS_END_GUARD
#endif
float mat[9];
} sk_matrix_t;
+typedef struct sk_matrix44_t sk_matrix44_t;
+
+typedef enum {
+ IDENTITY_SK_MATRIX44_TYPE_MASK = 0,
+ TRANSLATE_SK_MATRIX44_TYPE_MASK = 0x01,
+ SCALE_SK_MATRIX44_TYPE_MASK = 0x02,
+ AFFINE_SK_MATRIX44_TYPE_MASK = 0x04,
+ PERSPECTIVE_SK_MATRIX44_TYPE_MASK = 0x08
+} sk_matrix44_type_mask_t;
+
/**
A sk_canvas_t encapsulates all of the state about drawing into a
destination This includes a reference to the destination itself,
*/
#include "sk_types_priv.h"
+#include "SkMatrix44.h"
#include "SkShadowMaskFilter.h"
#include "SkBitmapScaler.h"
#include "SkBlurMaskFilter.h"
static_assert ((int)SkMask::Format::kARGB32_Format == (int)ARGB32_SK_MASK_FORMAT, ASSERT_MSG(SkMask::Format, sk_mask_format_t));
static_assert ((int)SkMask::Format::kLCD16_Format == (int)LCD16_SK_MASK_FORMAT, ASSERT_MSG(SkMask::Format, sk_mask_format_t));
+// sk_matrix44_type_mask_t
+static_assert ((int)SkMatrix44::TypeMask::kIdentity_Mask == (int)IDENTITY_SK_MATRIX44_TYPE_MASK, ASSERT_MSG(SkMatrix44::TypeMask, sk_matrix44_type_mask_t));
+static_assert ((int)SkMatrix44::TypeMask::kTranslate_Mask == (int)TRANSLATE_SK_MATRIX44_TYPE_MASK, ASSERT_MSG(SkMatrix44::TypeMask, sk_matrix44_type_mask_t));
+static_assert ((int)SkMatrix44::TypeMask::kScale_Mask == (int)SCALE_SK_MATRIX44_TYPE_MASK, ASSERT_MSG(SkMatrix44::TypeMask, sk_matrix44_type_mask_t));
+static_assert ((int)SkMatrix44::TypeMask::kAffine_Mask == (int)AFFINE_SK_MATRIX44_TYPE_MASK, ASSERT_MSG(SkMatrix44::TypeMask, sk_matrix44_type_mask_t));
+static_assert ((int)SkMatrix44::TypeMask::kPerspective_Mask == (int)PERSPECTIVE_SK_MATRIX44_TYPE_MASK, ASSERT_MSG(SkMatrix44::TypeMask, sk_matrix44_type_mask_t));
+
#endif
return As3DView (cview)->dotWithNormal (dx, dy, dz);
}
+
+void sk_matrix44_destroy (sk_matrix44_t* matrix)
+{
+ delete AsMatrix44 (matrix);
+}
+
+sk_matrix44_t* sk_matrix44_new ()
+{
+ return ToMatrix44 (new SkMatrix44(SkMatrix44::Uninitialized_Constructor::kUninitialized_Constructor));
+}
+
+sk_matrix44_t* sk_matrix44_new_identity ()
+{
+ return ToMatrix44 (new SkMatrix44(SkMatrix44::Identity_Constructor::kIdentity_Constructor));
+}
+
+sk_matrix44_t* sk_matrix44_new_copy (const sk_matrix44_t* src)
+{
+ return ToMatrix44 (new SkMatrix44(AsMatrix44 (*src)));
+}
+
+sk_matrix44_t* sk_matrix44_new_concat (const sk_matrix44_t* a, const sk_matrix44_t* b)
+{
+ return ToMatrix44 (new SkMatrix44(AsMatrix44 (*a), AsMatrix44 (*b)));
+}
+
+sk_matrix44_t* sk_matrix44_new_matrix (const sk_matrix_t* src)
+{
+ SkMatrix skmatrix;
+ from_c (src, &skmatrix);
+ return ToMatrix44 (new SkMatrix44(skmatrix));
+}
+
+bool sk_matrix44_equals (sk_matrix44_t* matrix, const sk_matrix44_t* other)
+{
+ return AsMatrix44(matrix) == AsMatrix44(other);
+}
+
+void sk_matrix44_to_matrix (sk_matrix44_t* matrix, sk_matrix_t* dst)
+{
+ SkMatrix skmatrix = AsMatrix44(*matrix);
+ from_sk (&skmatrix, dst);
+}
+
+sk_matrix44_type_mask_t sk_matrix44_get_type (sk_matrix44_t* matrix)
+{
+ return (sk_matrix44_type_mask_t) AsMatrix44(matrix)->getType ();
+}
+
+void sk_matrix44_set_identity (sk_matrix44_t* matrix)
+{
+ AsMatrix44(matrix)->setIdentity ();
+}
+
+float sk_matrix44_get (sk_matrix44_t* matrix, int row, int col)
+{
+ return AsMatrix44(matrix)->get (row, col);
+}
+
+void sk_matrix44_set (sk_matrix44_t* matrix, int row, int col, float value)
+{
+ AsMatrix44(matrix)->set (row, col, value);
+}
+
+void sk_matrix44_as_col_major (sk_matrix44_t* matrix, float* dst)
+{
+ AsMatrix44(matrix)->asColMajorf (dst);
+}
+
+void sk_matrix44_as_row_major (sk_matrix44_t* matrix, float* dst)
+{
+ AsMatrix44(matrix)->asRowMajorf (dst);
+}
+
+void sk_matrix44_set_col_major (sk_matrix44_t* matrix, float* dst)
+{
+ AsMatrix44(matrix)->setColMajorf (dst);
+}
+
+void sk_matrix44_set_row_major (sk_matrix44_t* matrix, float* dst)
+{
+ AsMatrix44(matrix)->setRowMajorf (dst);
+}
+
+void sk_matrix44_set_translate (sk_matrix44_t* matrix, float dx, float dy, float dz)
+{
+ AsMatrix44(matrix)->setTranslate (dx, dy, dz);
+}
+
+void sk_matrix44_pre_translate (sk_matrix44_t* matrix, float dx, float dy, float dz)
+{
+ AsMatrix44(matrix)->preTranslate (dx, dy, dz);
+}
+
+void sk_matrix44_post_translate (sk_matrix44_t* matrix, float dx, float dy, float dz)
+{
+ AsMatrix44(matrix)->postTranslate (dx, dy, dz);
+}
+
+void sk_matrix44_set_scale (sk_matrix44_t* matrix, float sx, float sy, float sz)
+{
+ AsMatrix44(matrix)->setScale (sx, sy, sz);
+}
+
+void sk_matrix44_pre_scale (sk_matrix44_t* matrix, float sx, float sy, float sz)
+{
+ AsMatrix44(matrix)->preScale (sx, sy, sz);
+}
+
+void sk_matrix44_post_scale (sk_matrix44_t* matrix, float sx, float sy, float sz)
+{
+ AsMatrix44(matrix)->postScale (sx, sy, sz);
+}
+
+void sk_matrix44_set_rotate_about_degrees (sk_matrix44_t* matrix, float x, float y, float z, float degrees)
+{
+ AsMatrix44(matrix)->setRotateDegreesAbout (x, y, z, degrees);
+}
+
+void sk_matrix44_set_rotate_about_radians (sk_matrix44_t* matrix, float x, float y, float z, float radians)
+{
+ AsMatrix44(matrix)->setRotateAbout (x, y, z, radians);
+}
+
+void sk_matrix44_set_rotate_about_radians_unit (sk_matrix44_t* matrix, float x, float y, float z, float radians)
+{
+ AsMatrix44(matrix)->setRotateAboutUnit (x, y, z, radians);
+}
+
+void sk_matrix44_set_concat (sk_matrix44_t* matrix, const sk_matrix44_t* a, const sk_matrix44_t* b)
+{
+ AsMatrix44 (matrix)->setConcat (AsMatrix44 (*a), AsMatrix44 (*b));
+}
+
+void sk_matrix44_pre_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m)
+{
+ AsMatrix44 (matrix)->preConcat (AsMatrix44 (*m));
+}
+
+void sk_matrix44_post_concat (sk_matrix44_t* matrix, const sk_matrix44_t* m)
+{
+ AsMatrix44 (matrix)->postConcat (AsMatrix44 (*m));
+}
+
+bool sk_matrix44_invert (sk_matrix44_t* matrix, sk_matrix44_t* inverse)
+{
+ return AsMatrix44 (matrix)->invert (AsMatrix44 (inverse));
+}
+
+void sk_matrix44_transpose (sk_matrix44_t* matrix)
+{
+ AsMatrix44 (matrix)->transpose ();
+}
+
+void sk_matrix44_map_scalars (sk_matrix44_t* matrix, const float* src, float* dst)
+{
+ AsMatrix44(matrix)->mapScalars (src, dst);
+}
+
+void sk_matrix44_map2 (sk_matrix44_t* matrix, const float* src2, int count, float* dst4)
+{
+ AsMatrix44(matrix)->map2 (src2, count, dst4);
+}
+
+bool sk_matrix44_preserves_2d_axis_alignment (sk_matrix44_t* matrix, float epsilon)
+{
+ return AsMatrix44(matrix)->preserves2dAxisAlignment (epsilon);
+}
+
+double sk_matrix44_determinant (sk_matrix44_t* matrix)
+{
+ return AsMatrix44(matrix)->determinant ();
+}
+
return reinterpret_cast<const sk_3dview_t*>(p);
}
+static inline const SkMatrix44& AsMatrix44(const sk_matrix44_t& p) {
+ return reinterpret_cast<const SkMatrix44&>(p);
+}
+
+static inline SkMatrix44& AsMatrix44(sk_matrix44_t& p) {
+ return reinterpret_cast<SkMatrix44&>(p);
+}
+
+static inline const SkMatrix44* AsMatrix44(const sk_matrix44_t* p) {
+ return reinterpret_cast<const SkMatrix44*>(p);
+}
+
+static inline SkMatrix44* AsMatrix44(sk_matrix44_t* p) {
+ return reinterpret_cast<SkMatrix44*>(p);
+}
+
+static inline sk_matrix44_t* ToMatrix44(SkMatrix44* p) {
+ return reinterpret_cast<sk_matrix44_t*>(p);
+}
+
+static inline const sk_matrix44_t* ToMatrix44(const SkMatrix44* p) {
+ return reinterpret_cast<const sk_matrix44_t*>(p);
+}
+
static inline void from_c(const sk_matrix_t* cmatrix, SkMatrix* matrix) {
matrix->setAll(
cmatrix->mat[0], cmatrix->mat[1], cmatrix->mat[2],