GMutex *ev_doc_mutex = NULL;
+GMutex *ev_fc_mutex = NULL;
#define LOG(x)
GType
if (G_UNLIKELY (type == 0))
{
- static const GTypeInfo our_info =
+ const GTypeInfo our_info =
{
sizeof (EvDocumentIface),
NULL,
g_mutex_unlock (ev_document_get_doc_mutex ());
}
+GMutex *
+ev_document_get_fc_mutex (void)
+{
+ if (ev_fc_mutex == NULL) {
+ ev_fc_mutex = g_mutex_new ();
+ }
+ return ev_fc_mutex;
+}
+
+void
+ev_document_fc_mutex_lock (void)
+{
+ g_mutex_lock (ev_document_get_fc_mutex ());
+}
+void
+ev_document_fc_mutex_unlock (void)
+{
+ g_mutex_unlock (ev_document_get_fc_mutex ());
+}
gboolean
ev_document_load (EvDocument *document,
return retval;
}
+gboolean
+ev_document_has_attachments (EvDocument *document)
+{
+ EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document);
+
+ if (iface->has_attachments == NULL)
+ return FALSE;
+
+ return iface->has_attachments (document);
+}
+
GList *
-ev_document_get_links (EvDocument *document,
- int page)
+ev_document_get_attachments (EvDocument *document)
{
EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document);
GList *retval;
- LOG ("ev_document_get_link");
- if (iface->get_links == NULL)
+ LOG ("ev_document_get_attachments");
+ if (iface->get_attachments == NULL)
return NULL;
- retval = iface->get_links (document, page);
+ retval = iface->get_attachments (document);
return retval;
}
-
-
GdkPixbuf *
-ev_document_render_pixbuf (EvDocument *document,
- int page,
- double scale)
+ev_document_render_pixbuf (EvDocument *document,
+ EvRenderContext *rc)
{
EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document);
GdkPixbuf *retval;
LOG ("ev_document_render_pixbuf");
g_assert (iface->render_pixbuf);
- retval = iface->render_pixbuf (document, page, scale);
+ retval = iface->render_pixbuf (document, rc);
return retval;
}
g_free (info);
}
+
+
+/* Compares two rects. returns 0 if they're equal */
+#define EPSILON 0.0000001
+
+gint
+ev_rect_cmp (EvRectangle *a,
+ EvRectangle *b)
+{
+ if (a == b)
+ return 0;
+ if (a == NULL || b == NULL)
+ return 1;
+
+ return ! ((ABS (a->x1 - b->x1) < EPSILON) &&
+ (ABS (a->y1 - b->y1) < EPSILON) &&
+ (ABS (a->x2 - b->x2) < EPSILON) &&
+ (ABS (a->y2 - b->y2) < EPSILON));
+}