summaryrefslogtreecommitdiff
path: root/gsk/gsktransform.h
diff options
context:
space:
mode:
Diffstat (limited to 'gsk/gsktransform.h')
-rw-r--r--gsk/gsktransform.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/gsk/gsktransform.h b/gsk/gsktransform.h
new file mode 100644
index 0000000000..b8393aca60
--- /dev/null
+++ b/gsk/gsktransform.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright © 2019 Benjamin Otte
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Benjamin Otte <otte@gnome.org>
+ */
+
+
+#ifndef __GSK_TRANSFORM_H__
+#define __GSK_TRANSFORM_H__
+
+#if !defined (__GSK_H_INSIDE__) && !defined (GSK_COMPILATION)
+#error "Only <gsk/gsk.h> can be included directly."
+#endif
+
+#include <gsk/gsktypes.h>
+
+G_BEGIN_DECLS
+
+#define GSK_TYPE_TRANSFORM (gsk_transform_get_type ())
+
+typedef enum
+{
+ GSK_TRANSFORM_TYPE_IDENTITY,
+ GSK_TRANSFORM_TYPE_TRANSFORM,
+ GSK_TRANSFORM_TYPE_TRANSLATE,
+ GSK_TRANSFORM_TYPE_ROTATE,
+ GSK_TRANSFORM_TYPE_SCALE
+} GskTransformType;
+
+GDK_AVAILABLE_IN_ALL
+GType gsk_transform_get_type (void) G_GNUC_CONST;
+
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_ref (GskTransform *self);
+GDK_AVAILABLE_IN_ALL
+void gsk_transform_unref (GskTransform *self);
+
+GDK_AVAILABLE_IN_ALL
+void gsk_transform_print (GskTransform *self,
+ GString *string);
+GDK_AVAILABLE_IN_ALL
+char * gsk_transform_to_string (GskTransform *self);
+GDK_AVAILABLE_IN_ALL
+void gsk_transform_to_matrix (GskTransform *self,
+ graphene_matrix_t *out_matrix);
+GDK_AVAILABLE_IN_ALL
+gboolean gsk_transform_equal (GskTransform *first,
+ GskTransform *second) G_GNUC_PURE;
+
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_new (void);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_identity (GskTransform *next);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_transform (GskTransform *next,
+ GskTransform *other);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_matrix (GskTransform *next,
+ const graphene_matrix_t *matrix);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_translate (GskTransform *next,
+ const graphene_point_t *point);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_translate_3d (GskTransform *next,
+ const graphene_point3d_t *point);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_rotate (GskTransform *next,
+ float angle);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_rotate_3d (GskTransform *next,
+ float angle,
+ const graphene_vec3_t *axis);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_scale (GskTransform *next,
+ float factor_x,
+ float factor_y);
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_scale_3d (GskTransform *next,
+ float factor_x,
+ float factor_y,
+ float factor_z);
+
+GDK_AVAILABLE_IN_ALL
+GskTransformType gsk_transform_get_transform_type (GskTransform *self) G_GNUC_PURE;
+GDK_AVAILABLE_IN_ALL
+GskTransform * gsk_transform_get_next (GskTransform *self) G_GNUC_PURE;
+
+G_END_DECLS
+
+#endif /* __GSK_TRANSFORM_H__ */