#include "djvu-links.h"
#include "djvu-document-private.h"
#include "ev-document-links.h"
-
+#include "ev-mapping.h"
static gboolean number_from_miniexp(miniexp_t sexp, int *number)
{
}
static gboolean
-get_djvu_hyperlink_area (ddjvu_pageinfo_t *page_info,
- miniexp_t sexp,
- EvLinkMapping *ev_link_mapping)
+get_djvu_hyperlink_area (ddjvu_pageinfo_t *page_info,
+ miniexp_t sexp,
+ EvMapping *ev_link_mapping)
{
miniexp_t iter;
iter = miniexp_cdr (iter);
if (!number_from_miniexp (miniexp_car (iter), &height)) goto unknown_link;
- ev_link_mapping->x1 = minx;
- ev_link_mapping->x2 = (minx + width);
- ev_link_mapping->y1 = (page_info->height - (miny + height));
- ev_link_mapping->y2 = (page_info->height - miny);
+ ev_link_mapping->area.x1 = minx;
+ ev_link_mapping->area.x2 = (minx + width);
+ ev_link_mapping->area.y1 = (page_info->height - (miny + height));
+ ev_link_mapping->area.y2 = (page_info->height - miny);
} else if (miniexp_car (iter) == miniexp_symbol ("poly")
&& miniexp_length (iter) >= 5 && miniexp_length (iter) % 2 == 1) {
maxy = MAX (maxy, y);
}
- ev_link_mapping->x1 = minx;
- ev_link_mapping->x2 = maxx;
- ev_link_mapping->y1 = (page_info->height - maxy);
- ev_link_mapping->y2 = (page_info->height - miny);
+ ev_link_mapping->area.x1 = minx;
+ ev_link_mapping->area.x2 = maxx;
+ ev_link_mapping->area.y1 = (page_info->height - maxy);
+ ev_link_mapping->area.y2 = (page_info->height - miny);
} else {
/* unknown */
goto unknown_link;
return FALSE;
}
-static EvLinkMapping *
+static EvMapping *
get_djvu_hyperlink_mapping (DjvuDocument *djvu_document,
int page,
ddjvu_pageinfo_t *page_info,
miniexp_t sexp)
{
- EvLinkMapping *ev_link_mapping = NULL;
+ EvMapping *ev_link_mapping = NULL;
EvLinkAction *ev_action = NULL;
miniexp_t iter;
const char *url, *url_target, *comment;
- ev_link_mapping = g_new (EvLinkMapping, 1);
+ ev_link_mapping = g_new (EvMapping, 1);
iter = sexp;
ev_action = get_djvu_link_action (djvu_document, url, page);
if (!ev_action) goto unknown_mapping;
- ev_link_mapping->link = ev_link_new (comment, ev_action);
+ ev_link_mapping->data = ev_link_new (comment, ev_action);
return ev_link_mapping;
GList *retval = NULL;
miniexp_t page_annotations = miniexp_nil;
miniexp_t *hyperlinks = NULL, *iter = NULL;
- EvLinkMapping *ev_link_mapping;
+ EvMapping *ev_link_mapping;
ddjvu_pageinfo_t page_info;
while ((page_annotations = ddjvu_document_get_pageanno (djvu_document->d_document, page)) == miniexp_dummy)
for (iter = hyperlinks; *iter; ++iter) {
ev_link_mapping = get_djvu_hyperlink_mapping (djvu_document, page, &page_info, *iter);
if (ev_link_mapping) {
- ev_link_mapping->x1 *= scale_factor;
- ev_link_mapping->x2 *= scale_factor;
- ev_link_mapping->y1 *= scale_factor;
- ev_link_mapping->y2 *= scale_factor;
+ ev_link_mapping->area.x1 *= scale_factor;
+ ev_link_mapping->area.x2 *= scale_factor;
+ ev_link_mapping->area.y1 *= scale_factor;
+ ev_link_mapping->area.y2 *= scale_factor;
retval = g_list_prepend (retval, ev_link_mapping);
}
}
#include "ev-poppler.h"
#include "ev-file-exporter.h"
+#include "ev-mapping.h"
#include "ev-document-find.h"
#include "ev-document-misc.h"
#include "ev-document-links.h"
for (list = mapping_list; list; list = list->next) {
PopplerLinkMapping *link_mapping;
- EvLinkMapping *ev_link_mapping;
+ EvMapping *ev_link_mapping;
link_mapping = (PopplerLinkMapping *)list->data;
- ev_link_mapping = g_new (EvLinkMapping, 1);
- ev_link_mapping->link = ev_link_from_action (pdf_document,
+ ev_link_mapping = g_new (EvMapping, 1);
+ ev_link_mapping->data = ev_link_from_action (pdf_document,
link_mapping->action);
- ev_link_mapping->x1 = link_mapping->area.x1;
- ev_link_mapping->x2 = link_mapping->area.x2;
+ ev_link_mapping->area.x1 = link_mapping->area.x1;
+ ev_link_mapping->area.x2 = link_mapping->area.x2;
/* Invert this for X-style coordinates */
- ev_link_mapping->y1 = height - link_mapping->area.y2;
- ev_link_mapping->y2 = height - link_mapping->area.y1;
+ ev_link_mapping->area.y1 = height - link_mapping->area.y2;
+ ev_link_mapping->area.y2 = height - link_mapping->area.y1;
retval = g_list_prepend (retval, ev_link_mapping);
}
for (list = mapping_list; list; list = list->next) {
PopplerImageMapping *image_mapping;
- EvImageMapping *ev_image_mapping;
+ EvMapping *ev_image_mapping;
image_mapping = (PopplerImageMapping *)list->data;
- ev_image_mapping = g_new (EvImageMapping, 1);
+ ev_image_mapping = g_new (EvMapping, 1);
- ev_image_mapping->image = ev_image_new (page, image_mapping->image_id);
- ev_image_mapping->x1 = image_mapping->area.x1;
- ev_image_mapping->x2 = image_mapping->area.x2;
- ev_image_mapping->y1 = image_mapping->area.y1;
- ev_image_mapping->y2 = image_mapping->area.y2;
+ ev_image_mapping->data = ev_image_new (page, image_mapping->image_id);
+ ev_image_mapping->area.x1 = image_mapping->area.x1;
+ ev_image_mapping->area.y1 = image_mapping->area.y1;
+ ev_image_mapping->area.x2 = image_mapping->area.x2;
+ ev_image_mapping->area.y2 = image_mapping->area.y2;
retval = g_list_prepend (retval, ev_image_mapping);
}
for (list = fields; list; list = list->next) {
PopplerFormFieldMapping *mapping;
- EvFormFieldMapping *field_mapping;
+ EvMapping *field_mapping;
EvFormField *ev_field;
mapping = (PopplerFormFieldMapping *)list->data;
if (!ev_field)
continue;
- field_mapping = g_new0 (EvFormFieldMapping, 1);
- field_mapping->x1 = mapping->area.x1;
- field_mapping->x2 = mapping->area.x2;
- field_mapping->y1 = height - mapping->area.y2;
- field_mapping->y2 = height - mapping->area.y1;
- field_mapping->field = ev_field;
- field_mapping->field->page = EV_PAGE (g_object_ref (page));
+ field_mapping = g_new0 (EvMapping, 1);
+ field_mapping->area.x1 = mapping->area.x1;
+ field_mapping->area.x2 = mapping->area.x2;
+ field_mapping->area.y1 = height - mapping->area.y2;
+ field_mapping->area.y2 = height - mapping->area.y1;
+ field_mapping->data = ev_field;
+ ev_field->page = EV_PAGE (g_object_ref (page));
g_object_set_data_full (G_OBJECT (ev_field),
"poppler-field",
for (list = annots; list; list = list->next) {
PopplerAnnotMapping *mapping;
- EvAnnotationMapping *annot_mapping;
+ EvMapping *annot_mapping;
EvAnnotation *ev_annot;
mapping = (PopplerAnnotMapping *)list->data;
if (!ev_annot->name)
ev_annot->name = g_strdup_printf ("annot-%d-%d", page->index, i);
- annot_mapping = g_new0 (EvAnnotationMapping, 1);
- annot_mapping->x1 = mapping->area.x1;
- annot_mapping->x2 = mapping->area.x2;
- annot_mapping->y1 = height - mapping->area.y2;
- annot_mapping->y2 = height - mapping->area.y1;
- annot_mapping->annotation = ev_annot;
+ annot_mapping = g_new (EvMapping, 1);
+ annot_mapping->area.x1 = mapping->area.x1;
+ annot_mapping->area.x2 = mapping->area.x2;
+ annot_mapping->area.y1 = height - mapping->area.y2;
+ annot_mapping->area.y2 = height - mapping->area.y1;
+ annot_mapping->data = ev_annot;
g_object_set_data_full (G_OBJECT (ev_annot),
"poppler-annot",
#include "ev-pixbuf-cache.h"
#include "ev-job-scheduler.h"
#include "ev-page-cache.h"
-#include "ev-document-images.h"
+#include "ev-mapping.h"
#include "ev-document-forms.h"
-#include "ev-document-links.h"
+#include "ev-document-images.h"
#include "ev-document-annotations.h"
-#include "ev-image.h"
-#include "ev-form-field.h"
-#include "ev-annotation.h"
typedef struct _CacheJobInfo
{
job_info->region = NULL;
}
if (job_info->link_mapping) {
- ev_link_mapping_free (job_info->link_mapping);
+ ev_mapping_list_free (job_info->link_mapping, g_object_unref);
job_info->link_mapping = NULL;
}
if (job_info->image_mapping) {
- ev_image_mapping_free (job_info->image_mapping);
+ ev_mapping_list_free (job_info->image_mapping, g_object_unref);
job_info->image_mapping = NULL;
}
if (job_info->form_field_mapping) {
- ev_form_field_mapping_free (job_info->form_field_mapping);
+ ev_mapping_list_free (job_info->form_field_mapping, g_object_unref);
job_info->form_field_mapping = NULL;
}
if (job_info->annots_mapping) {
- ev_annotation_mapping_free (job_info->annots_mapping);
+ ev_mapping_list_free (job_info->annots_mapping, g_object_unref);
job_info->annots_mapping = NULL;
}
if (job_info->text_mapping) {
if (job_render->flags & EV_RENDER_INCLUDE_LINKS) {
if (job_info->link_mapping)
- ev_link_mapping_free (job_info->link_mapping);
+ ev_mapping_list_free (job_info->link_mapping, g_object_unref);
job_info->link_mapping = job_render->link_mapping;
}
if (job_render->flags & EV_RENDER_INCLUDE_IMAGES) {
if (job_info->image_mapping)
- ev_image_mapping_free (job_info->image_mapping);
+ ev_mapping_list_free (job_info->image_mapping, g_object_unref);
job_info->image_mapping = job_render->image_mapping;
}
if (job_render->flags & EV_RENDER_INCLUDE_FORMS) {
if (job_info->form_field_mapping)
- ev_form_field_mapping_free (job_info->form_field_mapping);
+ ev_mapping_list_free (job_info->form_field_mapping, g_object_unref);
job_info->form_field_mapping = job_render->form_field_mapping;
}
if (job_render->flags & EV_RENDER_INCLUDE_ANNOTS) {
if (job_info->annots_mapping)
- ev_annotation_mapping_free (job_info->annots_mapping);
+ ev_mapping_list_free (job_info->annots_mapping, g_object_unref);
job_info->annots_mapping = job_render->annots_mapping;
}
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
+#include "ev-mapping.h"
#include "ev-document-forms.h"
#include "ev-document-images.h"
#include "ev-document-links.h"
link_mapping = ev_pixbuf_cache_get_link_mapping (view->pixbuf_cache, page);
if (link_mapping)
- return ev_link_mapping_find (link_mapping, x_new, y_new);
+ return ev_mapping_list_get_data (link_mapping, x_new, y_new);
else
return NULL;
}
image_mapping = ev_pixbuf_cache_get_image_mapping (view->pixbuf_cache, page);
if (image_mapping)
- return ev_image_mapping_find (image_mapping, x_new, y_new);
+ return ev_mapping_list_get_data (image_mapping, x_new, y_new);
else
return NULL;
}
forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, page);
if (forms_mapping)
- return ev_form_field_mapping_find (forms_mapping, x_new, y_new);
+ return ev_mapping_list_get_data (forms_mapping, x_new, y_new);
else
return NULL;
}
ev_view_form_field_get_region (EvView *view,
EvFormField *field)
{
- EvRectangle field_area;
GdkRectangle view_area;
GList *forms_mapping;
+ EvMapping *mapping;
forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
field->page->index);
- ev_form_field_mapping_get_area (forms_mapping, field, &field_area);
- doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
+ mapping = ev_mapping_list_find (forms_mapping, field);
+ doc_rect_to_view_rect (view, field->page->index, &mapping->area, &view_area);
view_area.x -= view->scroll_x;
view_area.y -= view->scroll_y;
forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
field->page->index);
for (l = forms_mapping; l; l = g_list_next (l)) {
- EvFormField *button = ((EvFormFieldMapping *)(l->data))->field;
+ EvFormField *button = ((EvMapping *)(l->data))->data;
GdkRegion *button_region;
if (button->id == field->id)
{
GtkWidget *field_widget = NULL;
GList *form_field_mapping;
- EvRectangle field_area;
+ EvMapping *mapping;
GdkRectangle view_area;
if (field->is_read_only)
(GDestroyNotify)g_object_unref);
form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, field->page->index);
- ev_form_field_mapping_get_area (form_field_mapping, field, &field_area);
-
- doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
+ mapping = ev_mapping_list_find (form_field_mapping, field);
+
+ doc_rect_to_view_rect (view, field->page->index, &mapping->area, &view_area);
view_area.x -= view->scroll_x;
view_area.y -= view->scroll_y;
annots = ev_pixbuf_cache_get_annots_mapping (view->pixbuf_cache, page);
for (l = annots; l && l->data; l = g_list_next (l)) {
- EvAnnotationMapping *annotation_mapping;
- EvAnnotation *annot;
- EvViewWindowChild *child;
- GtkWidget *window;
- EvRectangle *doc_rect;
- GdkRectangle view_rect;
+ EvAnnotation *annot;
+ EvViewWindowChild *child;
+ GtkWidget *window;
+ EvRectangle *doc_rect;
+ GdkRectangle view_rect;
- annotation_mapping = (EvAnnotationMapping *)l->data;
- annot = annotation_mapping->annotation;
+ annot = ((EvMapping *)(l->data))->data;
if (!EV_IS_ANNOTATION_MARKUP (annot))
continue;
annots = ev_pixbuf_cache_get_annots_mapping (view->pixbuf_cache, page);
for (l = annots; l && l->data; l = g_list_next (l)) {
- EvAnnotationMapping *annotation_mapping;
- EvAnnotation *annot;
- GtkWidget *window;
+ EvAnnotation *annot;
+ GtkWidget *window;
- annotation_mapping = (EvAnnotationMapping *)l->data;
- annot = annotation_mapping->annotation;
+ annot = ((EvMapping *)(l->data))->data;
if (!EV_IS_ANNOTATION_MARKUP (annot))
continue;
annotations_mapping = ev_pixbuf_cache_get_annots_mapping (view->pixbuf_cache, page);
if (annotations_mapping)
- return ev_annotation_mapping_find (annotations_mapping, x_new, y_new);
+ return ev_mapping_list_get_data (annotations_mapping, x_new, y_new);
else
return NULL;
}
children = gtk_container_get_children (GTK_CONTAINER (widget));
for (l = children; l && l->data; l = g_list_next (l)) {
EvFormField *field;
- EvRectangle field_area;
GdkRectangle view_area;
GList *form_field_mapping;
+ EvMapping *mapping;
GtkAllocation child_allocation;
GtkRequisition child_requisition;
GtkWidget *child = (GtkWidget *)l->data;
form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache,
field->page->index);
- ev_form_field_mapping_get_area (form_field_mapping, field, &field_area);
+ mapping = ev_mapping_list_find (form_field_mapping, field);
- doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area);
+ doc_rect_to_view_rect (view, field->page->index, &mapping->area, &view_area);
view_area.x -= view->scroll_x;
view_area.y -= view->scroll_y;
EvLink *link,
GdkRectangle *area)
{
- EvRectangle ev_rect;
- GList *link_mapping;
- gint page;
- gint x_offset = 0, y_offset = 0;
+ GList *link_mapping;
+ EvMapping *mapping;
+ gint page;
+ gint x_offset = 0, y_offset = 0;
x += view->scroll_x;
y += view->scroll_y;
find_page_at_location (view, x, y, &page, &x_offset, &y_offset);
link_mapping = ev_pixbuf_cache_get_link_mapping (view->pixbuf_cache, page);
- ev_link_mapping_get_area (link_mapping, link, &ev_rect);
+ mapping = ev_mapping_list_find (link_mapping, link);
- doc_rect_to_view_rect (view, page, &ev_rect, area);
+ doc_rect_to_view_rect (view, page, &mapping->area, area);
area->y -= view->scroll_y;
}
EvAnnotation *annot,
GdkRectangle *area)
{
- EvRectangle ev_rect;
- GList *annots_mapping;
- gint page;
- gint x_offset = 0, y_offset = 0;
+ GList *annots_mapping;
+ EvMapping *mapping;
+ gint page;
+ gint x_offset = 0, y_offset = 0;
x += view->scroll_x;
y += view->scroll_y;
find_page_at_location (view, x, y, &page, &x_offset, &y_offset);
annots_mapping = ev_pixbuf_cache_get_annots_mapping (view->pixbuf_cache, page);
- ev_annotation_mapping_get_area (annots_mapping, annot, &ev_rect);
+ mapping = ev_mapping_list_find (annots_mapping, annot);
- doc_rect_to_view_rect (view, page, &ev_rect, area);
+ doc_rect_to_view_rect (view, page, &mapping->area, area);
area->y -= view->scroll_y;
}