]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/pdf-document.cc
Beginnings of clipboard support. Incomplete but primary sort of work.
[evince.git] / pdf / xpdf / pdf-document.cc
index 76229dbcfedeb9b530d580f2cc30ae46b4db4553..2293841fd2e6709433f906311eb27126c5400687 100644 (file)
@@ -197,6 +197,25 @@ pdf_document_load (EvDocument  *document,
        return TRUE;
 }
 
+static gboolean
+pdf_document_save (EvDocument  *document,
+                  const char  *uri,
+                  GError     **error)
+{
+       PdfDocument *pdf_document = PDF_DOCUMENT (document);
+       char *filename;
+       gboolean retval = FALSE;
+
+       filename = g_filename_from_uri (uri, NULL, error);
+       if (filename != NULL) {
+               GString *fname = new GString (filename);
+
+               retval = pdf_document->doc->saveAs (fname);
+       }
+
+       return retval;
+}
+
 static int
 pdf_document_get_n_pages (EvDocument  *document)
 {
@@ -940,6 +959,25 @@ pdf_document_get_title (PdfDocument *pdf_document)
        return title;
 }
 
+static char *
+pdf_document_get_text (EvDocument *document, GdkRectangle *rect)
+{
+       PdfDocument *pdf_document = PDF_DOCUMENT (document);
+       GString *sel_text = new GString;
+       const char *text;
+       int x1, y1, x2, y2;
+
+       x1 = rect->x;
+       y1 = rect->y;
+       x2 = x1 + rect->width;
+       y2 = y1 + rect->height;
+
+       sel_text = pdf_document->out->getText (x1, y1, x2, y2);
+       text = sel_text->getCString ();
+
+       return text ? g_strdup (text) : NULL;
+}
+
 static void
 pdf_document_get_property (GObject *object,
                           guint prop_id,
@@ -975,6 +1013,8 @@ static void
 pdf_document_document_iface_init (EvDocumentIface *iface)
 {
        iface->load = pdf_document_load;
+       iface->save = pdf_document_save;
+       iface->get_text = pdf_document_get_text;
        iface->get_n_pages = pdf_document_get_n_pages;
        iface->set_page = pdf_document_set_page;
        iface->get_page = pdf_document_get_page;