From p.murrell at auckland.ac.nz  Thu Jan 12 03:58:08 2012
From: p.murrell at auckland.ac.nz (Paul Murrell)
Date: Thu, 12 Jan 2012 15:58:08 +1300
Subject: [Rd] Inconsistencies in device_Raster when axes are reflected
In-Reply-To: <1326305479642-4286320.post@n4.nabble.com>
References: <1326305479642-4286320.post@n4.nabble.com>
Message-ID: <4F0E4C40.5060407@auckland.ac.nz>

Hi

On 12/01/2012 7:11 a.m., Sharpie wrote:
> I noticed some undocumented and inconsistent behavior in device_Raster when a
> plot is produced with reflected axes such as:
>
>      image(volcano, xlim = c(1,0), useRaster = TRUE)
>      image(volcano, ylim = c(1,0), useRaster = TRUE)
>
> The `pdf` device will perform horizontal and vertical reflections, while
> `quartz` will ignore the transformations when plotting to the screen, but
> when plotting to a file, `quartz(file = 'test.pdf', type = 'pdf')`, it will
> produce horizontal reflections and ignore vertical ones.
>
> When the `xlim` or `ylim` is reversed, negative widths and heights are
> passed to the C function `device_Raster`, which is not a behavior documented
> in `R_ext/GraphicsDevice.h`. Also, the values of `x` and `y` passed to
> `device_Raster` will be shifted by the width or height of the image such
> that the coordinates no longer reference the bottom-left corner of the image
> as `R_ext/GraphicsDevice.h` says they should.
>
> Given the inconsistencies in documentation and behavior, I am wondering what
> the intended behavior of `device_Raster` is in this situation.

I think the problem is that I just failed to anticipate this situation 
(i.e., the current documentation and behaviour both assume xlim[1] < 
xlim[2] and ylim[1] < ylim[2]).

Will take a look at where to apply a fix (EITHER allow the API to be 
more flexible [allow negative 'width' and 'height' and 'x' and 'y' to be 
other than left-bottom], which will require complicating the code in 
some devices OR keep the API fixed and complicate the graphics engine 
code instead).  The rotation argument adds an interesting twist ...

Thanks for the report!

Paul

> Thanks!
>
> -Charlie
>
> -----
> Charlie Sharpsteen
> Undergraduate-- Environmental Resources Engineering
> Humboldt State University
> --
> View this message in context: http://r.789695.n4.nabble.com/Inconsistencies-in-device-Raster-when-axes-are-reflected-tp4286320p4286320.html
> Sent from the R devel mailing list archive at Nabble.com.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/



[Rd] Inconsistencies in device_Raster when axes are reflected
Paul Murrell