]> www.fi.muni.cz Git - evince.git/blobdiff - ps/ps-document.c
Removed EggRecentViewGtk
[evince.git] / ps / ps-document.c
index 31bb082d622e5b29485b7a2eba7e964f257f7688..d1c5271bc39e9c1b3c7caf5ada53f4e93bc38b49 100644 (file)
@@ -137,6 +137,8 @@ ps_document_init (PSDocument *gs)
 
        gs->ps_export_pagelist = NULL;
        gs->ps_export_filename = NULL;
 
        gs->ps_export_pagelist = NULL;
        gs->ps_export_filename = NULL;
+
+       gs->orientation = GTK_GS_ORIENTATION_NONE;
 }
 
 static void
 }
 
 static void
@@ -441,6 +443,9 @@ get_page_orientation (PSDocument *gs, int page)
        if (orientation == GTK_GS_ORIENTATION_NONE) {
                orientation = GTK_GS_ORIENTATION_PORTRAIT;
        }
        if (orientation == GTK_GS_ORIENTATION_NONE) {
                orientation = GTK_GS_ORIENTATION_PORTRAIT;
        }
+       if (gs->orientation != GTK_GS_ORIENTATION_NONE) {
+               orientation = gs->orientation;
+       }
 
        return orientation;
 }
 
        return orientation;
 }
@@ -450,32 +455,22 @@ setup_page (PSDocument *gs, int page, double scale)
 {
        char buf[1024];
        int urx, ury, llx, lly, orientation;
 {
        char buf[1024];
        int urx, ury, llx, lly, orientation;
-#ifdef HAVE_LOCALE_H
-       char *savelocale;
-#endif
+       char scaled_xdpi[G_ASCII_DTOSTR_BUF_SIZE];      
+       char scaled_ydpi[G_ASCII_DTOSTR_BUF_SIZE];
 
        LOG ("Setup the page");
 
 
        LOG ("Setup the page");
 
-#ifdef HAVE_LOCALE_H
-       /* gs needs floating point parameters with '.' as decimal point
-        * while some (european) locales use ',' instead, so we set the 
-        * locale for this snprintf to "C".
-        */
-       savelocale = setlocale (LC_NUMERIC, "C");
-#endif
        get_page_box (gs, page, &urx, &ury, &llx, &lly);
        orientation = get_page_orientation (gs, page);
        get_page_box (gs, page, &urx, &ury, &llx, &lly);
        orientation = get_page_orientation (gs, page);
+       g_ascii_dtostr (scaled_xdpi, G_ASCII_DTOSTR_BUF_SIZE, get_xdpi (gs) * scale);
+       g_ascii_dtostr (scaled_ydpi, G_ASCII_DTOSTR_BUF_SIZE, get_ydpi (gs) * scale);
 
 
-       g_snprintf (buf, 1024, "%ld %d %d %d %d %d %f %f %d %d %d %d",
+       g_snprintf (buf, 1024, "%ld %d %d %d %d %d %s %s %d %d %d %d",
                    0L, orientation * 90, llx, lly, urx, ury,
                    0L, orientation * 90, llx, lly, urx, ury,
-                   get_xdpi (gs) * scale,
-                   get_ydpi (gs) * scale,
+                   scaled_xdpi, scaled_ydpi,               
                    0, 0, 0, 0);
        LOG ("GS property %s", buf);
 
                    0, 0, 0, 0);
        LOG ("GS property %s", buf);
 
-#ifdef HAVE_LOCALE_H
-       setlocale(LC_NUMERIC, savelocale);
-#endif
        gdk_property_change (gs->pstarget, gs_class->gs_atom, gs_class->string_atom,
                             8, GDK_PROP_MODE_REPLACE, (guchar *)buf, strlen(buf));
        gdk_flush ();
        gdk_property_change (gs->pstarget, gs_class->gs_atom, gs_class->string_atom,
                             8, GDK_PROP_MODE_REPLACE, (guchar *)buf, strlen(buf));
        gdk_flush ();
@@ -1229,13 +1224,70 @@ ps_document_get_info (EvDocument *document)
 
        info = g_new0 (EvDocumentInfo, 1);
        info->fields_mask = EV_DOCUMENT_INFO_TITLE |
 
        info = g_new0 (EvDocumentInfo, 1);
        info->fields_mask = EV_DOCUMENT_INFO_TITLE |
+                           EV_DOCUMENT_INFO_FORMAT |
+                           EV_DOCUMENT_INFO_CREATOR |
                            EV_DOCUMENT_INFO_N_PAGES;
        info->title = g_strdup (ps->doc->title);
                            EV_DOCUMENT_INFO_N_PAGES;
        info->title = g_strdup (ps->doc->title);
+       info->format = ps->doc->epsf ? g_strdup (_("Encapsulated PostScript"))
+                                    : g_strdup (_("PostScript"));
+       info->creator = g_strdup (ps->doc->creator);
        info->n_pages = ev_document_get_n_pages (document);
 
        return info;
 }
 
        info->n_pages = ev_document_get_n_pages (document);
 
        return info;
 }
 
+static EvOrientation
+ps_document_get_orientation (EvDocument *document)
+{
+       EvOrientation orientation;
+       PSDocument *ps = PS_DOCUMENT (document);
+
+       g_return_val_if_fail (ps != NULL, EV_ORIENTATION_PORTRAIT);
+
+       switch (ps->orientation) {
+               case GTK_GS_ORIENTATION_PORTRAIT:
+                       orientation = EV_ORIENTATION_PORTRAIT;
+                       break;
+               case GTK_GS_ORIENTATION_LANDSCAPE:
+                       orientation = EV_ORIENTATION_LANDSCAPE;
+                       break;
+               case GTK_GS_ORIENTATION_UPSIDEDOWN:
+                       orientation = EV_ORIENTATION_UPSIDEDOWN;
+                       break;
+               case GTK_GS_ORIENTATION_SEASCAPE:
+                       orientation = EV_ORIENTATION_SEASCAPE;
+                       break;
+               default:
+                       orientation = EV_ORIENTATION_PORTRAIT;
+                       break;
+       }
+
+       return orientation;
+}
+
+static void
+ps_document_set_orientation (EvDocument *document, EvOrientation orientation)
+{
+       PSDocument *ps = PS_DOCUMENT (document);
+
+       g_return_if_fail (ps != NULL);
+
+       switch (orientation) {
+               case EV_ORIENTATION_PORTRAIT:
+                       ps->orientation = GTK_GS_ORIENTATION_PORTRAIT;
+                       break;
+               case EV_ORIENTATION_LANDSCAPE:
+                       ps->orientation = GTK_GS_ORIENTATION_LANDSCAPE;
+                       break;
+               case EV_ORIENTATION_UPSIDEDOWN:
+                       ps->orientation = GTK_GS_ORIENTATION_UPSIDEDOWN;
+                       break;
+               case EV_ORIENTATION_SEASCAPE:
+                       ps->orientation = GTK_GS_ORIENTATION_SEASCAPE;
+                       break;
+       }
+}
+
 static void
 ps_document_document_iface_init (EvDocumentIface *iface)
 {
 static void
 ps_document_document_iface_init (EvDocumentIface *iface)
 {
@@ -1245,6 +1297,8 @@ ps_document_document_iface_init (EvDocumentIface *iface)
        iface->get_n_pages = ps_document_get_n_pages;
        iface->get_page_size = ps_document_get_page_size;
        iface->get_info = ps_document_get_info;
        iface->get_n_pages = ps_document_get_n_pages;
        iface->get_page_size = ps_document_get_page_size;
        iface->get_info = ps_document_get_info;
+       iface->set_orientation = ps_document_set_orientation;
+       iface->get_orientation = ps_document_get_orientation;
 }
 
 static void
 }
 
 static void