Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--pdf/ev-poppler.cc43
-rw-r--r--ps/ps-document.c3
-rw-r--r--shell/ev-view.c3
4 files changed, 23 insertions, 35 deletions
diff --git a/ChangeLog b/ChangeLog
index 761137c..ccb5f55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-08-23 Marco Pesenti Gritti <mpg@redhat.com>
+
+ * pdf/ev-poppler.cc:
+ * ps/ps-document.c: (push_pixbuf), (ps_document_widget_event):
+ * shell/ev-view.c: (highlight_find_results):
+
+ Adapt to the new poppler rotation API. Fix text maps on landscape
+ documents.
+
Sat Aug 20 17:13:48 2005 Jonathan Blandford <jrb@redhat.com>
* shell/ev-view.c (compute_new_selection_text): get the correct
diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc
index ef95956..4be0e7c 100644
--- a/pdf/ev-poppler.cc
+++ b/pdf/ev-poppler.cc
@@ -244,28 +244,6 @@ pdf_document_get_n_pages (EvDocument *document)
}
static void
-set_page_orientation (PdfDocument *pdf_document, PopplerPage *page, int rotation)
-{
- PopplerOrientation orientation;
-
- switch (rotation) {
- case 90:
- orientation = POPPLER_ORIENTATION_LANDSCAPE;
- break;
- case 180:
- orientation = POPPLER_ORIENTATION_UPSIDEDOWN;
- break;
- case 270:
- orientation = POPPLER_ORIENTATION_SEASCAPE;
- break;
- default:
- orientation = POPPLER_ORIENTATION_PORTRAIT;
- }
-
- poppler_page_set_orientation (page, orientation);
-}
-
-static void
pdf_document_get_page_size (EvDocument *document,
int page,
double *width,
@@ -349,11 +327,16 @@ pdf_document_render_pixbuf (EvDocument *document,
pdf_document = PDF_DOCUMENT (document);
set_rc_data (pdf_document, rc);
- set_page_orientation (pdf_document, POPPLER_PAGE (rc->data), rc->rotation);
poppler_page_get_size (POPPLER_PAGE (rc->data), &width_points, &height_points);
- width = (int) ((width_points * rc->scale) + 0.5);
- height = (int) ((height_points * rc->scale) + 0.5);
+
+ if (rc->rotation == 90 || rc->rotation == 270) {
+ width = (int) ((height_points * rc->scale) + 0.5);
+ height = (int) ((width_points * rc->scale) + 0.5);
+ } else {
+ width = (int) ((width_points * rc->scale) + 0.5);
+ height = (int) ((height_points * rc->scale) + 0.5);
+ }
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
FALSE, 8,
@@ -363,6 +346,7 @@ pdf_document_render_pixbuf (EvDocument *document,
0, 0,
width, height,
rc->scale,
+ rc->rotation,
pixbuf);
@@ -817,7 +801,6 @@ make_thumbnail_for_size (PdfDocument *pdf_document,
gdouble unscaled_width, unscaled_height;
poppler_page = poppler_document_get_page (pdf_document->document, page);
- set_page_orientation (pdf_document, poppler_page, rotation);
g_return_val_if_fail (poppler_page != NULL, NULL);
pdf_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (pdf_document), page,
@@ -842,7 +825,7 @@ make_thumbnail_for_size (PdfDocument *pdf_document,
poppler_page_render_to_pixbuf (poppler_page, 0, 0,
width, height,
- scale, sub_pixbuf);
+ scale, rotation, sub_pixbuf);
g_object_unref (G_OBJECT (sub_pixbuf));
@@ -864,7 +847,6 @@ pdf_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document_thumbnails
pdf_document = PDF_DOCUMENT (document_thumbnails);
poppler_page = poppler_document_get_page (pdf_document->document, page);
- set_page_orientation (pdf_document, poppler_page, rotation);
g_return_val_if_fail (poppler_page != NULL, NULL);
pixbuf = poppler_page_get_thumbnail (poppler_page);
@@ -1151,7 +1133,6 @@ pdf_document_ps_exporter_do_page (EvPSExporter *exporter, EvRenderContext *rc)
g_return_if_fail (pdf_document->ps_file != NULL);
poppler_page = poppler_document_get_page (pdf_document->document, rc->page);
- set_page_orientation (pdf_document, poppler_page, rc->rotation);
poppler_page_render_to_ps (poppler_page, pdf_document->ps_file);
g_object_unref (poppler_page);
}
@@ -1190,8 +1171,6 @@ pdf_selection_render_selection (EvSelection *selection,
pdf_document = PDF_DOCUMENT (selection);
set_rc_data (pdf_document, rc);
- set_page_orientation (pdf_document, POPPLER_PAGE (rc->data), rc->rotation);
-
poppler_page_get_size (POPPLER_PAGE (rc->data), &width_points, &height_points);
width = (int) ((width_points * rc->scale) + 0.5);
height = (int) ((height_points * rc->scale) + 0.5);
@@ -1222,7 +1201,6 @@ pdf_selection_get_selection_region (EvSelection *selection,
pdf_document = PDF_DOCUMENT (selection);
set_rc_data (pdf_document, rc);
- set_page_orientation (pdf_document, POPPLER_PAGE (rc->data), rc->rotation);
retval = poppler_page_get_selection_region ((PopplerPage *)rc->data, rc->scale, (PopplerRectangle *) points);
@@ -1241,7 +1219,6 @@ pdf_selection_get_selection_map (EvSelection *selection,
pdf_document = PDF_DOCUMENT (selection);
poppler_page = poppler_document_get_page (pdf_document->document,
rc->page);
- set_page_orientation (pdf_document, poppler_page, rc->rotation);
points.x1 = 0.0;
points.y1 = 0.0;
diff --git a/ps/ps-document.c b/ps/ps-document.c
index 5a4a457..f95dfe0 100644
--- a/ps/ps-document.c
+++ b/ps/ps-document.c
@@ -215,9 +215,11 @@ push_pixbuf (PSDocument *gs)
cmap = gdk_window_get_colormap (gs->pstarget);
gdk_drawable_get_size (gs->bpixmap, &width, &height);
+ LOG ("Get from drawable\n");
pixbuf = gdk_pixbuf_get_from_drawable (NULL, gs->bpixmap, cmap,
0, 0, 0, 0,
width, height);
+ LOG ("Get from drawable done\n");
g_signal_emit_by_name (gs, "render_finished", pixbuf);
g_object_unref (pixbuf);
}
@@ -247,6 +249,7 @@ ps_document_widget_event (GtkWidget *widget, GdkEvent *event, gpointer data)
gs->busy = FALSE;
push_pixbuf (gs);
+ LOG ("Pixbuf pushed");
}
return TRUE;
diff --git a/shell/ev-view.c b/shell/ev-view.c
index 7055554..1e95459 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -1686,8 +1686,7 @@ highlight_find_results (EvView *view, int page)
alpha = 0x20;
}
- ev_document_find_get_result (find, page,
- i, &rectangle);
+ ev_document_find_get_result (find, page, i, &rectangle);
doc_rect_to_view_rect (view, page, &rectangle, &view_rectangle);
draw_rubberband (GTK_WIDGET (view), GTK_WIDGET(view)->window,
&view_rectangle, alpha);