gs->ps_export_pagelist = NULL;
gs->ps_export_filename = NULL;
-
- gs->orientation = GTK_GS_ORIENTATION_NONE;
}
static void
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);
}
gs->busy = FALSE;
push_pixbuf (gs);
+ LOG ("Pixbuf pushed");
}
return TRUE;
}
static void
-setup_pixmap (PSDocument *gs, int page, double scale)
+setup_pixmap (PSDocument *gs, int page, double scale, int rotation)
{
GdkGC *fill;
GdkColor white = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; /* pixel, r, g, b */
int pixmap_width, pixmap_height;
ev_document_get_page_size (EV_DOCUMENT (gs), page, &width, &height);
- pixmap_width = width * scale + 0.5;
- pixmap_height = height * scale + 0.5;
+
+ if (rotation == 90 || rotation == 270) {
+ pixmap_height = width * scale + 0.5;
+ pixmap_width = height * scale + 0.5;
+ } else {
+ pixmap_width = width * scale + 0.5;
+ pixmap_height = height * scale + 0.5;
+ }
if(gs->bpixmap) {
int w, h;
*lly = new_lly;
}
-static int
-get_page_orientation (PSDocument *gs, int page)
-{
- int orientation;
-
- orientation = GTK_GS_ORIENTATION_NONE;
-
- if (gs->structured_doc) {
- orientation = gs->doc->pages[page].orientation;
- }
- if (orientation == GTK_GS_ORIENTATION_NONE) {
- orientation = gs->doc->default_page_orientation;
- }
- if (orientation == GTK_GS_ORIENTATION_NONE) {
- orientation = gs->doc->orientation;
- }
- if (orientation == GTK_GS_ORIENTATION_NONE) {
- orientation = GTK_GS_ORIENTATION_PORTRAIT;
- }
- if (gs->orientation != GTK_GS_ORIENTATION_NONE) {
- orientation = gs->orientation;
- }
-
- return orientation;
-}
-
static void
-setup_page (PSDocument *gs, int page, double scale)
+setup_page (PSDocument *gs, int page, double scale, int rotation)
{
- char buf[1024];
- int urx, ury, llx, lly, orientation;
+ gchar *buf;
char scaled_xdpi[G_ASCII_DTOSTR_BUF_SIZE];
char scaled_ydpi[G_ASCII_DTOSTR_BUF_SIZE];
+ int urx, ury, llx, lly;
LOG ("Setup the 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 %s %s %d %d %d %d",
- 0L, orientation * 90, llx, lly, urx, ury,
- scaled_xdpi, scaled_ydpi,
- 0, 0, 0, 0);
+ buf = g_strdup_printf ("%ld %d %d %d %d %d %s %s %d %d %d %d",
+ 0L, rotation, llx, lly, urx, ury,
+ scaled_xdpi, scaled_ydpi,
+ 0, 0, 0, 0);
LOG ("GS property %s", buf);
gdk_property_change (gs->pstarget, gs_class->gs_atom, gs_class->string_atom,
8, GDK_PROP_MODE_REPLACE, (guchar *)buf, strlen(buf));
+ g_free (buf);
+
gdk_flush ();
}
/* sucessfully uncompressed file */
gs->gs_filename_unc = filename_unc;
} else {
+ gchar *filename_dsp;
+ gchar *msg;
+
/* report error */
- g_snprintf (buf, 1024, _("Error while decompressing file %s:\n"),
- gs->gs_filename);
- interpreter_failed (gs, buf);
+ filename_dsp = g_filename_display_name (gs->gs_filename);
+ msg = g_strdup_printf (_("Error while decompressing file %s:\n"), filename_dsp);
+ g_free (filename_dsp);
+
+ interpreter_failed (gs, msg);
+ g_free (msg);
unlink (filename_unc);
g_free (filename_unc);
filename_unc = NULL;
gchar *filename = NULL;
if (!file_readable(fname)) {
- gchar buf[1024];
-
- g_snprintf (buf, 1024, _("Cannot open file %s.\n"), fname);
- interpreter_failed (gs, buf);
+ gchar *filename_dsp;
+ gchar *msg;
+
+ filename_dsp = g_filename_display_name (fname);
+ msg = g_strdup_printf (_("Cannot open file %s.\n"), filename_dsp);
+ g_free (filename_dsp);
+
+ interpreter_failed (gs, msg);
+ g_free (msg);
gs->gs_status = _("File is not readable.");
} else {
filename = check_filecompressed(gs);
result = document_load (PS_DOCUMENT (document), filename);
if (!result) {
+ gchar *filename_dsp;
+
+ filename_dsp = g_filename_display_name (filename);
+
g_set_error (error, G_FILE_ERROR,
G_FILE_ERROR_FAILED,
- "Failed to load document '%s'\n",
- uri);
+ _("Failed to load document '%s'"),
+ filename_dsp);
+
+ g_free (filename_dsp);
}
g_free (filename);
FILE *f;
gchar *buf;
- pscopydoc (sink, document->gs_filename, document->doc, page_list);
+ pscopydoc (sink, PS_DOCUMENT_GET_PS_FILE(document),
+ document->doc, page_list);
buf = gtk_gs_doc_sink_get_buffer (sink);
double *height)
{
PSDocument *gs = PS_DOCUMENT (document);
- int w, h;
- int urx, ury, llx, lly, orientation;
+ int urx, ury, llx, lly;
get_page_box (PS_DOCUMENT (document), page, &urx, &ury, &llx, &lly);
- orientation = get_page_orientation (PS_DOCUMENT (document), page);
-
- switch (orientation) {
- case GTK_GS_ORIENTATION_PORTRAIT:
- case GTK_GS_ORIENTATION_UPSIDEDOWN:
- w = (urx - llx) / 72.0 * get_xdpi (gs) + 0.5;
- h = (ury - lly) / 72.0 * get_ydpi (gs) + 0.5;
- break;
- case GTK_GS_ORIENTATION_LANDSCAPE:
- case GTK_GS_ORIENTATION_SEASCAPE:
- w = (ury - lly) / 72.0 * get_xdpi (gs) + 0.5;
- h = (urx - llx) / 72.0 * get_ydpi (gs) + 0.5;
- break;
- default:
- w = h = 0;
- g_assert_not_reached ();
- break;
- }
if (width) {
- *width = w;
+ *width = (urx - llx) / 72.0 * get_xdpi (gs) + 0.5;
}
if (height) {
- *height = h;
+ *height = (ury - lly) / 72.0 * get_ydpi (gs) + 0.5;
}
}
}
static void
-ps_async_renderer_render_pixbuf (EvAsyncRenderer *renderer, int page, double scale)
+ps_async_renderer_render_pixbuf (EvAsyncRenderer *renderer, int page, double scale, int rotation)
{
PSDocument *gs = PS_DOCUMENT (renderer);
gs);
}
- setup_pixmap (gs, page, scale);
- setup_page (gs, page, scale);
+ setup_pixmap (gs, page, scale, rotation);
+ setup_page (gs, page, scale, rotation);
render_page (gs, page);
}
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_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_orientation = ps_document_get_orientation;
}
static void