Code

gtk-tpdfv: Added gtk_tpdfv_goto_page().
[tpdfview.git] / src / gtk-tpdfv.c
index cba2e1f2a1c13697e384cb8d1eeab7e62c0547e8..d1a377ce4e44bd3d1204b259982f02ded02f533b 100644 (file)
@@ -279,6 +279,15 @@ gtk_tpdfv_expose(GtkWidget *tpdfv, GdkEventExpose *event)
 
        cairo_translate(cr, x + pdf->delta_x, y + pdf->delta_y);
 
+       /* draw empty white page */
+       cairo_save(cr);
+
+       cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0);
+       cairo_rectangle(cr, 0.0, 0.0, page_width, page_height);
+       cairo_fill(cr);
+
+       cairo_restore(cr);
+
        poppler_page_render(pdf->current_page, cr);
 
        cairo_destroy(cr);
@@ -349,6 +358,30 @@ gtk_tpdfv_reload(GtkWidget *widget)
        do_redraw(widget);
 } /* gtk_tpdfv_reload */
 
+int
+gtk_tpdfv_get_n_pages(GtkWidget *widget)
+{
+       gtk_tpdfv_t *pdf;
+
+       if (! widget)
+               return -1;
+
+       pdf = GTK_TPDFV_GET_PRIVATE(widget);
+       return pdf->total_pages;
+} /* gtk_tpdfv_get_n_pages */
+
+int
+gtk_tpdfv_get_current_page(GtkWidget *widget)
+{
+       gtk_tpdfv_t *pdf;
+
+       if (! widget)
+               return -1;
+
+       pdf = GTK_TPDFV_GET_PRIVATE(widget);
+       return pdf->current_page_no;
+} /* gtk_tpdfv_get_current_page */
+
 void
 gtk_tpdfv_page_up(GtkWidget *widget)
 {
@@ -393,6 +426,20 @@ gtk_tpdfv_last_page(GtkWidget *widget)
        do_redraw(widget);
 } /* gtk_tpdfv_last_page */
 
+void
+gtk_tpdfv_goto_page(GtkWidget *widget, int page)
+{
+       gtk_tpdfv_t *pdf;
+
+       pdf = GTK_TPDFV_GET_PRIVATE(widget);
+
+       if ((page < 0) || (page >= pdf->total_pages))
+               return;
+
+       pdf->current_page_no = page;
+       do_redraw(widget);
+} /* gtk_tpdfv_goto_page */
+
 void
 gtk_tpdfv_zoom_in(GtkWidget *widget)
 {