diff options
Diffstat (limited to 'gsk/gsktransform.h')
-rw-r--r-- | gsk/gsktransform.h | 103 |
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__ */ |