summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Perez de Castro <aperez@igalia.com>2013-09-26 20:01:36 +0300
committerCarlos Garcia Campos <carlosgc@gnome.org>2013-09-30 10:17:18 +0200
commit5d3a84248aa1c8c8318f31d149ecf85d29dc849b (patch)
tree3defd5fed7aced3c071a032e38b73f1b341a95c0
parentc503dd05b071ade141908853fbdcb4ff0e36ffbc (diff)
glib: Private function _poppler_link_mapping_new_from_form_field()
Move the code that creates a PopplerFormFieldMapping to its own function, and add it as private API. This will avoid duplication of the code when creation a PopplerFormFieldMapping from a PopplerStructureElement.
-rw-r--r--glib/poppler-page.cc45
-rw-r--r--glib/poppler-private.h3
2 files changed, 35 insertions, 13 deletions
diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc
index abe13ac1..67669ced 100644
--- a/glib/poppler-page.cc
+++ b/glib/poppler-page.cc
@@ -1271,6 +1271,34 @@ poppler_page_free_link_mapping (GList *list)
g_list_free (list);
}
+
+PopplerFormFieldMapping *
+_poppler_form_field_mapping_new_from_form_field (PopplerFormField *form_field,
+ gint page_num)
+{
+ PopplerFormFieldMapping *mapping;
+ Page *page;
+
+ g_assert (POPPLER_IS_FORM_FIELD (form_field));
+ g_assert (page_num >= 0);
+ g_assert (page_num < poppler_document_get_n_pages (form_field->document));
+
+ mapping = poppler_form_field_mapping_new ();
+ mapping->field = form_field;
+
+ form_field->widget->getRect (&mapping->area.x1, &mapping->area.y1,
+ &mapping->area.x2, &mapping->area.y2);
+
+ page = form_field->document->doc->getPage (page_num + 1);
+
+ mapping->area.x1 -= page->getCropBox ()->x1;
+ mapping->area.x2 -= page->getCropBox ()->x1;
+ mapping->area.y1 -= page->getCropBox ()->y1;
+ mapping->area.y2 -= page->getCropBox ()->y1;
+
+ return mapping;
+}
+
/**
* poppler_page_get_form_field_mapping:
* @page: A #PopplerPage
@@ -1297,21 +1325,12 @@ poppler_page_get_form_field_mapping (PopplerPage *page)
for (i = 0; i < forms->getNumWidgets (); i++) {
PopplerFormFieldMapping *mapping;
- FormWidget *field;
+ PopplerFormField *field = _poppler_form_field_new (page->document,
+ forms->getWidget (i));
- mapping = poppler_form_field_mapping_new ();
-
- field = forms->getWidget (i);
-
- mapping->field = _poppler_form_field_new (page->document, field);
- field->getRect (&(mapping->area.x1), &(mapping->area.y1),
- &(mapping->area.x2), &(mapping->area.y2));
+ mapping = _poppler_form_field_mapping_new_from_form_field (field,
+ page->index);
- mapping->area.x1 -= page->page->getCropBox()->x1;
- mapping->area.x2 -= page->page->getCropBox()->x1;
- mapping->area.y1 -= page->page->getCropBox()->y1;
- mapping->area.y2 -= page->page->getCropBox()->y1;
-
map_list = g_list_prepend (map_list, mapping);
}
diff --git a/glib/poppler-private.h b/glib/poppler-private.h
index e7fbea96..e965a5ac 100644
--- a/glib/poppler-private.h
+++ b/glib/poppler-private.h
@@ -143,6 +143,9 @@ PopplerLinkMapping *_poppler_link_mapping_new_from_annot_link (PopplerDocument *
gint page_num,
AnnotLink *link);
+PopplerFormFieldMapping *_poppler_form_field_mapping_new_from_form_field (PopplerFormField *form_field,
+ gint page_num);
+
char *_poppler_goo_string_to_utf8(GooString *s);
gboolean _poppler_convert_pdf_date_to_gtime (GooString *date,
time_t *gdate);