]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-document.h
[printing] Fix multipage even/odd printing issues
[evince.git] / libdocument / ev-document.h
index 7cb6d8470551f96e4b5f6574d51dde3ef5dc3278..5afdb035166e60951bc0dc9a6b6fa00464da96dc 100644 (file)
  *  $Id$
  */
 
  *  $Id$
  */
 
+#if !defined (__EV_EVINCE_DOCUMENT_H_INSIDE__) && !defined (EVINCE_COMPILATION)
+#error "Only <evince-document.h> can be included directly."
+#endif
+
 #ifndef EV_DOCUMENT_H
 #define EV_DOCUMENT_H
 
 #ifndef EV_DOCUMENT_H
 #define EV_DOCUMENT_H
 
@@ -60,12 +64,7 @@ typedef struct {
         double y;
 } EvPoint;
 
         double y;
 } EvPoint;
 
-typedef struct {
-        double x1;
-        double y1;
-        double x2;
-        double y2;
-} EvRectangle;
+typedef struct _EvRectangle EvRectangle;
 
 struct _EvDocumentIface
 {
 
 struct _EvDocumentIface
 {
@@ -133,6 +132,20 @@ cairo_surface_t *ev_document_render           (EvDocument      *document,
 gint            ev_rect_cmp                   (EvRectangle     *a,
                                                EvRectangle     *b);
 
 gint            ev_rect_cmp                   (EvRectangle     *a,
                                                EvRectangle     *b);
 
+#define EV_TYPE_RECTANGLE (ev_rectangle_get_type ())
+struct _EvRectangle
+{
+       gdouble x1;
+       gdouble y1;
+       gdouble x2;
+       gdouble y2;
+};
+
+GType        ev_rectangle_get_type (void) G_GNUC_CONST;
+EvRectangle *ev_rectangle_new      (void);
+EvRectangle *ev_rectangle_copy     (EvRectangle *ev_rect);
+void         ev_rectangle_free     (EvRectangle *ev_rect);
+
 /* convenience macro to ease interface addition in the CODE
  * section of EV_BACKEND_REGISTER_WITH_CODE (this macro relies on
  * the g_define_type_id present within EV_BACKEND_REGISTER_WITH_CODE()).
 /* convenience macro to ease interface addition in the CODE
  * section of EV_BACKEND_REGISTER_WITH_CODE (this macro relies on
  * the g_define_type_id present within EV_BACKEND_REGISTER_WITH_CODE()).
@@ -178,7 +191,7 @@ static void     backend_name##_class_intern_init (gpointer klass)           \
 G_MODULE_EXPORT GType                                                          \
 register_evince_backend (GTypeModule *module)                                  \
 {                                                                              \
 G_MODULE_EXPORT GType                                                          \
 register_evince_backend (GTypeModule *module)                                  \
 {                                                                              \
-       static const GTypeInfo our_info = {                                     \
+       const GTypeInfo our_info = {                                    \
                sizeof (BackendName##Class),                                    \
                NULL, /* base_init */                                           \
                NULL, /* base_finalize */                                       \
                sizeof (BackendName##Class),                                    \
                NULL, /* base_init */                                           \
                NULL, /* base_finalize */                                       \
@@ -265,6 +278,25 @@ type_name##_get_type (void)
        }                                                                                    \
        return g_define_type_id__volatile;                                                   \
 }
        }                                                                                    \
        return g_define_type_id__volatile;                                                   \
 }
+
+/*
+ * A convenience macro for boxed type implementations, which defines a
+ * type_name_get_type() function registering the boxed type.
+ */
+#define EV_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func)               \
+GType                                                                                 \
+type_name##_get_type (void)                                                           \
+{                                                                                     \
+        static volatile gsize g_define_type_id__volatile = 0;                         \
+       if (g_once_init_enter (&g_define_type_id__volatile)) {                        \
+               GType g_define_type_id =                                              \
+                   g_boxed_type_register_static (g_intern_static_string (#TypeName), \
+                                                 (GBoxedCopyFunc) copy_func,         \
+                                                 (GBoxedFreeFunc) free_func);        \
+               g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);    \
+       }                                                                             \
+       return g_define_type_id__volatile;                                            \
+}
                
 G_END_DECLS
 
                
 G_END_DECLS