1 #ifndef _EOG_TRANSFORM_H_ 2 #define _EOG_TRANSFORM_H_ 3 4 #include <glib-object.h> 5 #include <gdk-pixbuf/gdk-pixbuf.h> 6 7 G_BEGIN_DECLS 8 9 #ifndef __EOG_JOB_DECLR__ 10 #define __EOG_JOB_DECLR__ 11 typedef struct _EogJob EogJob; 12 #endif 13 14 typedef enum { 15 EOG_TRANSFORM_NONE, 16 EOG_TRANSFORM_ROT_90, 17 EOG_TRANSFORM_ROT_180, 18 EOG_TRANSFORM_ROT_270, 19 EOG_TRANSFORM_FLIP_HORIZONTAL, 20 EOG_TRANSFORM_FLIP_VERTICAL, 21 EOG_TRANSFORM_TRANSPOSE, 22 EOG_TRANSFORM_TRANSVERSE 23 } EogTransformType; 24 25 #define EOG_TYPE_TRANSFORM (eog_transform_get_type ()) 26 #define EOG_TRANSFORM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOG_TYPE_TRANSFORM, EogTransform)) 27 #define EOG_TRANSFORM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOG_TYPE_TRANSFORM, EogTransformClass)) 28 #define EOG_IS_TRANSFORM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOG_TYPE_TRANSFORM)) 29 #define EOG_IS_TRANSFORM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOG_TYPE_TRANSFORM)) 30 #define EOG_TRANSFORM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOG_TYPE_TRANSFORM, EogTransformClass)) 31 32 /* ========================================= 33 34 GObjecat wrapper around an affine transformation 35 36 ----------------------------------------*/ 37 38 typedef struct _EogTransform EogTransform; 39 typedef struct _EogTransformClass EogTransformClass; 40 typedef struct _EogTransformPrivate EogTransformPrivate; 41 42 struct _EogTransform { 43 GObject parent; 44 45 EogTransformPrivate *priv; 46 }; 47 48 struct _EogTransformClass { 49 GObjectClass parent_klass; 50 }; 51 52 GType eog_transform_get_type (void) G_GNUC_CONST; 53 54 GdkPixbuf* eog_transform_apply (EogTransform *trans, GdkPixbuf *pixbuf, EogJob *job); 55 EogTransform* eog_transform_reverse (EogTransform *trans); 56 EogTransform* eog_transform_compose (EogTransform *trans, EogTransform *compose); 57 gboolean eog_transform_is_identity (EogTransform *trans); 58 59 EogTransform* eog_transform_identity_new (void); 60 EogTransform* eog_transform_rotate_new (int degree); 61 EogTransform* eog_transform_flip_new (EogTransformType type /* only EOG_TRANSFORM_FLIP_* are valid */); 62 #if 0 63 EogTransform* eog_transform_scale_new (double sx, double sy); 64 #endif 65 EogTransform* eog_transform_new (EogTransformType trans); 66 67 EogTransformType eog_transform_get_transform_type (EogTransform *trans); 68 69 gboolean eog_transform_get_affine (EogTransform *trans, cairo_matrix_t *affine); 70 71 G_END_DECLS 72 73 #endif /* _EOG_TRANSFORM_H_ */ 74 75 76