Comment on attachment 96165
Rotate documents correctly

Review of attachment 96165:
-----------------------------------------------------------------

Thanks for the patch!

::: libspectre/spectre-device.c
@@ +206,5 @@
>               return SPECTRE_STATUS_RENDER_ERROR;
>       }
>  
> +     scaled_width = (int) ((width * rc->x_scale) + 0.5);
> +     scaled_height = (int) ((height * rc->y_scale) + 0.5);

I think it would be clearer if we set these values depending on the
orientation, and then we just use scale_width, scaled_height below.

@@ +226,5 @@
>                                                          rc->text_alpha_bits);
>       args[arg++] = graph_alpha = _spectre_strdup_printf 
> ("-dGraphicsAlphaBits=%d",
>                                                           
> rc->graphic_alpha_bits);
> +
> +     if (rc->orientation == 0 || rc->orientation == 2) {

Don't use magic numbers here, use NONE and LANDSCAPE instead.

@@ +232,5 @@
> +             args[arg++] = resolution = _spectre_strdup_printf ("-r%fx%f",
> +                                                                rc->x_scale 
> * rc->x_dpi,
> +                                                                rc->y_scale 
> * rc->y_dpi);
> +     }
> +     else {

} else {

::: libspectre/spectre-gs.c
@@ +237,5 @@
>  
> +     switch (rotation) {
> +             default:
> +                     tmp_xoffset = xoffset + x;
> +                     tmp_yoffset = yoffset + y;

I don't think we need the tmp_ variables, we can just modify the
existing xoffset/yoffset.

@@ +277,5 @@
>                                doc->endsetup))
>               return FALSE;
>  
> +     if (rotation != 0) {
> +             set = _spectre_strdup_printf ("%d rotate", rotation);

Where does this end up? After the setup and before the pages? Isn't it
recommended to apply the rotation after the translation? I think we
could move this to spectre_gs_process, after the translate. We pass the
rotation to spectre_gs_process and when it's != NONE we inject the
rotate command there. What do you think?

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to evince in Ubuntu.
https://bugs.launchpad.net/bugs/1242678

Title:
  evince cannot render some EPS files

Status in Evince document viewer:
  New
Status in GS-GPL  -  GPL Ghostscript:
  Unknown
Status in libspectre:
  Confirmed
Status in “evince” package in Ubuntu:
  Confirmed
Status in “ghostscript” package in Ubuntu:
  Invalid
Status in “gnuplot” package in Ubuntu:
  Invalid
Status in “libspectre” package in Ubuntu:
  Triaged
Status in “evince” source package in Trusty:
  Confirmed
Status in “ghostscript” source package in Trusty:
  Invalid
Status in “gnuplot” source package in Trusty:
  Invalid
Status in “libspectre” source package in Trusty:
  Triaged

Bug description:
  I upgraded to Ubuntu Saucy,
  evince cannot render EPS files generated by gnuplot.
  (Just show an empty page.)

  
  [how to reproduce]

  1. Generate an EPS file using gnuplot by executing the following command.
  $ gnuplot -e "set terminal postscript; set output 'test.eps'; plot x;"

  2. Open the file "test.eps" just created.
  $ evince "test.eps"

  The following are what evince writes to the terminal.

  (evince:24176): EvinceDocument-CRITICAL **: ev_document_get_n_pages:
  assertion 'EV_IS_DOCUMENT (document)' failed

  (evince:24176): Gtk-WARNING **: drawing failure for widget `EvView':
  invalid matrix (not invertible)

  (evince:24176): Gdk-CRITICAL **: gdk_pixbuf_get_from_surface:
  assertion 'width > 0 && height > 0' failed

  (evince:24176): Gdk-CRITICAL **: gdk_pixbuf_get_from_surface:
  assertion 'width > 0 && height > 0' failed

  3. Then evince just shows an empty (white) page.

  ===

  If i rotate 90 or -90 degree by pressing Ctrl+Left or Ctrl+Right key,
  evince can show this file correctly.

  ===

  Okular, GIMP, inkscape and gs can show this EPS file.
  (may be rotated 90 degree, however)

  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: evince 3.10.0-0ubuntu2
  ProcVersionSignature: Ubuntu 3.11.0-12.19-generic 3.11.3
  Uname: Linux 3.11.0-12-generic x86_64
  NonfreeKernelModules: nvidia
  ApportVersion: 2.12.5-0ubuntu2
  Architecture: amd64
  Date: Mon Oct 21 21:23:15 2013
  InstallationDate: Installed on 2013-09-07 (44 days ago)
  InstallationMedia: Ubuntu 13.04 "Raring Ringtail" - Release amd64 (20130424)
  MarkForUpload: True
  SourcePackage: evince
  UpgradeStatus: Upgraded to saucy on 2013-10-04 (16 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/evince/+bug/1242678/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to