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