- switch (action->goto_dest.dest->type) {
- case POPPLER_DEST_UNKNOWN:
- unimplemented_dest = "POPPLER_DEST_UNKNOWN";
- break;
- case POPPLER_DEST_XYZ:
- link = ev_link_new_page_xyz (action->any.title,
- action->goto_dest.dest->page_num - 1,
- action->goto_dest.dest->left,
- action->goto_dest.dest->top,
- action->goto_dest.dest->zoom);
- break;
- case POPPLER_DEST_FIT:
- unimplemented_dest = "POPPLER_DEST_FIT";
- break;
- case POPPLER_DEST_FITH:
- unimplemented_dest = "POPPLER_DEST_FITH";
- break;
- case POPPLER_DEST_FITV:
- unimplemented_dest = "POPPLER_DEST_FITV";
- break;
- case POPPLER_DEST_FITR:
- unimplemented_dest = "POPPLER_DEST_FITR";
- break;
- case POPPLER_DEST_FITB:
- unimplemented_dest = "POPPLER_DEST_FITB";
- break;
- case POPPLER_DEST_FITBH:
- unimplemented_dest = "POPPLER_DEST_FITBH";
- break;
- case POPPLER_DEST_FITBV:
- unimplemented_dest = "POPPLER_DEST_FITBV";
- break;
+ g_assert (dest != NULL);
+
+ switch (dest->type) {
+ case POPPLER_DEST_XYZ: {
+ PopplerPage *poppler_page;
+ double height;
+
+ poppler_page = poppler_document_get_page (pdf_document->document,
+ MAX (0, dest->page_num - 1));
+ poppler_page_get_size (poppler_page, NULL, &height);
+ ev_dest = ev_link_dest_new_xyz (dest->page_num - 1,
+ dest->left,
+ height - dest->top,
+ dest->zoom);
+ g_object_unref (poppler_page);
+ }
+ break;
+ case POPPLER_DEST_FIT:
+ ev_dest = ev_link_dest_new_fit (dest->page_num - 1);
+ break;
+ case POPPLER_DEST_FITH: {
+ PopplerPage *poppler_page;
+ double height;
+
+ poppler_page = poppler_document_get_page (pdf_document->document,
+ MAX (0, dest->page_num - 1));
+ poppler_page_get_size (poppler_page, NULL, &height);
+ ev_dest = ev_link_dest_new_fith (dest->page_num - 1,
+ height - dest->top);
+ g_object_unref (poppler_page);
+ }
+ break;
+ case POPPLER_DEST_FITV:
+ ev_dest = ev_link_dest_new_fitv (dest->page_num - 1,
+ dest->left);
+ break;
+ case POPPLER_DEST_FITR: {
+ PopplerPage *poppler_page;
+ double height;
+
+ poppler_page = poppler_document_get_page (pdf_document->document,
+ MAX (0, dest->page_num - 1));
+ poppler_page_get_size (poppler_page, NULL, &height);
+ ev_dest = ev_link_dest_new_fitr (dest->page_num - 1,
+ dest->left,
+ height - dest->bottom,
+ dest->right,
+ height - dest->top);
+ g_object_unref (poppler_page);
+ }
+ break;
+ case POPPLER_DEST_FITB:
+ unimplemented_dest = "POPPLER_DEST_FITB";
+ break;
+ case POPPLER_DEST_FITBH:
+ unimplemented_dest = "POPPLER_DEST_FITBH";
+ break;
+ case POPPLER_DEST_FITBV:
+ unimplemented_dest = "POPPLER_DEST_FITBV";
+ break;
+ case POPPLER_DEST_NAMED:
+ ev_dest = ev_link_dest_new_named (dest->named_dest);
+ break;
+ case POPPLER_DEST_UNKNOWN:
+ unimplemented_dest = "POPPLER_DEST_UNKNOWN";
+ break;