Re: [Rd] strange interaction between rasterImage and Grid graphics

2010-10-02 Thread Deepayan Sarkar
On Fri, Oct 1, 2010 at 12:17 AM, baptiste auguie
baptiste.aug...@googlemail.com wrote:
 Dear all,

 This may be specific to Mac, I haven't had a chance to test another
 platform. Consider this,

 plot(1,1,t=n)
 rasterImage(matrix(1),1,1,1,1)
 library(grid)
 grid.rect(gp=gpar(fill=grey))

 The grid.rect covers the full device window as expected. However, when
 I resize the window ever so slightly (interactive device) the rectGrob
 is suddenly clipped to the previous plot window. I cannot understand
 this behavior, and it doesn't happen if one removes the rasterImage()
 call, so I suspect something iffy is going on with the display list or
 something.

I can reproduce the behaviour on GNU/Linux x11(type=cairo), but this
is inappropriate mixing of base and grid graphics, so officially I
don't think you are allowed to expect anything at all.

-Deepayan



 The only device I've tried is quartz(), x11() crashed with rasterImage,

  *** caught segfault ***
 address 0x28, cause 'memory not mapped'

 Traceback:
  1: rasterImage(matrix(1), 1, 1, 1, 1)

 sessionInfo()
 R version 2.11.1 (2010-05-31)
 x86_64-apple-darwin9.8.0

 locale:
 [1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

 attached base packages:
 [1] grid      stats     graphics  grDevices utils     datasets  methods   base

 __
 R-devel@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-devel


__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] Eval and the enclos argument

2010-10-02 Thread Hadley Wickham
Hi all,

I'm trying to understand the default value of the enclos argument of eval:

  enclos = if(is.list(envir) || is.pairlist(envir)) parent.frame()
else baseenv()

Why isn't it just

  enclos = parent.frame()

given that enclos is only meaningful (given my reading of the
documentation) when envir is not an environment already.

Hadley

-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Eval and the enclos argument

2010-10-02 Thread Duncan Murdoch

On 02/10/2010 7:57 AM, Hadley Wickham wrote:

Hi all,

I'm trying to understand the default value of the enclos argument of eval:

  enclos = if(is.list(envir) || is.pairlist(envir)) parent.frame()
else baseenv()

Why isn't it just

  enclos = parent.frame()

given that enclos is only meaningful (given my reading of the
documentation) when envir is not an environment already.

Hadley




I think that handles the case of envir=NULL.

Duncan Murdoch

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Eval and the enclos argument

2010-10-02 Thread Hadley Wickham
On Sat, Oct 2, 2010 at 8:18 AM, Duncan Murdoch murdoch.dun...@gmail.com wrote:
 On 02/10/2010 7:57 AM, Hadley Wickham wrote:

 Hi all,

 I'm trying to understand the default value of the enclos argument of eval:

  enclos = if(is.list(envir) || is.pairlist(envir)) parent.frame()
 else baseenv()

 Why isn't it just

  enclos = parent.frame()

 given that enclos is only meaningful (given my reading of the
 documentation) when envir is not an environment already.

 Hadley



 I think that handles the case of envir=NULL.

So that makes eval(expr, NULL) equivalent to eval(expr, baseenv()), right?

Hadley


-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Eval and the enclos argument

2010-10-02 Thread Duncan Murdoch

On 02/10/2010 10:40 AM, Hadley Wickham wrote:

On Sat, Oct 2, 2010 at 8:18 AM, Duncan Murdoch murdoch.dun...@gmail.com wrote:

On 02/10/2010 7:57 AM, Hadley Wickham wrote:

Hi all,

I'm trying to understand the default value of the enclos argument of eval:

 enclos = if(is.list(envir) || is.pairlist(envir)) parent.frame()
else baseenv()

Why isn't it just

 enclos = parent.frame()

given that enclos is only meaningful (given my reading of the
documentation) when envir is not an environment already.

Hadley



I think that handles the case of envir=NULL.


So that makes eval(expr, NULL) equivalent to eval(expr, baseenv()), right?


I think so.

Duncan

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] strange interaction between rasterImage and Grid graphics

2010-10-02 Thread baptiste auguie
Hi,

Thanks for the follow-up.

On 2 October 2010 09:33, Deepayan Sarkar deepayan.sar...@gmail.com wrote:
 On Fri, Oct 1, 2010 at 12:17 AM, baptiste auguie
 baptiste.aug...@googlemail.com wrote:
 Dear all,

 This may be specific to Mac, I haven't had a chance to test another
 platform. Consider this,

 plot(1,1,t=n)
 rasterImage(matrix(1),1,1,1,1)
 library(grid)
 grid.rect(gp=gpar(fill=grey))

 The grid.rect covers the full device window as expected. However, when
 I resize the window ever so slightly (interactive device) the rectGrob
 is suddenly clipped to the previous plot window. I cannot understand
 this behavior, and it doesn't happen if one removes the rasterImage()
 call, so I suspect something iffy is going on with the display list or
 something.

 I can reproduce the behaviour on GNU/Linux x11(type=cairo), but this
 is inappropriate mixing of base and grid graphics, so officially I
 don't think you are allowed to expect anything at all.


I think the gridBase package does this kind of mixing of base and grid
graphics; and also this behavior might be a side-effect of a more
serious bug.

Best regards,

baptiste


 -Deepayan



 The only device I've tried is quartz(), x11() crashed with rasterImage,

  *** caught segfault ***
 address 0x28, cause 'memory not mapped'

 Traceback:
  1: rasterImage(matrix(1), 1, 1, 1, 1)

 sessionInfo()
 R version 2.11.1 (2010-05-31)
 x86_64-apple-darwin9.8.0

 locale:
 [1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

 attached base packages:
 [1] grid      stats     graphics  grDevices utils     datasets  methods   
 base

 __
 R-devel@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-devel



__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] strange interaction between rasterImage and Grid graphics

2010-10-02 Thread Paul Murrell

Hi

baptiste auguie wrote:

Dear all,

This may be specific to Mac, I haven't had a chance to test another
platform. Consider this,

plot(1,1,t=n)
rasterImage(matrix(1),1,1,1,1)
library(grid)
grid.rect(gp=gpar(fill=grey))



The grid.rect covers the full device window as expected. However, when
I resize the window ever so slightly (interactive device) the rectGrob
is suddenly clipped to the previous plot window. I cannot understand
this behavior, and it doesn't happen if one removes the rasterImage()
call, so I suspect something iffy is going on with the display list or
something.


It happens like this:

# 1. Clip to the device and draw axes and labels
plot(1,1,t=n)
# 2. Clip to the plot region and draw raster
rasterImage(matrix(1),1,1,1,1)
library(grid)
# Oooh!  This is the first time any grid drawing
# has occurred on the device, so initialize grid
# stuff, including the top-level viewport,
# *which clips to the device*
# 3. Draw a rectangle
grid.rect(gp=gpar(fill=grey))

# Resize the window ...
# which triggers a redraw ...
# Oooh! There is grid output on this device so
# initialize grid stuff, including the top-level
# viewport *which clips to the device* ...
# 1. Clip to the device and draw axes and labels
# 2. Clip to the plot region and draw raster
# 3. Draw a rectangle

A workaround is to explicitly do a clip before the grid.rect(), i.e., ...

plot(1,1,t=n)
rasterImage(matrix(1),1,1,1,1)
library(grid)
grid.clip()
grid.rect(gp=gpar(fill=grey))

... and I will add this example to the things I will look at when I am 
trying to clean up the grid code a bit.



The only device I've tried is quartz(), x11() crashed with rasterImage,


That is more serious.  I have heard of a couple of others like this and 
I think the common thread may be 64-bit MacOS X.  I need to get access 
to such a beast to take a look.


Paul


 *** caught segfault ***
address 0x28, cause 'memory not mapped'

Traceback:
 1: rasterImage(matrix(1), 1, 1, 1, 1)

sessionInfo()
R version 2.11.1 (2010-05-31)
x86_64-apple-darwin9.8.0

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] grid  stats graphics  grDevices utils datasets  methods   base

__
R-devel@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
p...@stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] strange interaction between rasterImage and Grid graphics

2010-10-02 Thread Deepayan Sarkar
On Sat, Oct 2, 2010 at 4:35 PM, Paul Murrell p.murr...@auckland.ac.nz wrote:
 Hi

 baptiste auguie wrote:

 Dear all,

 This may be specific to Mac, I haven't had a chance to test another
 platform. Consider this,

 plot(1,1,t=n)
 rasterImage(matrix(1),1,1,1,1)
 library(grid)
 grid.rect(gp=gpar(fill=grey))



 The grid.rect covers the full device window as expected. However, when
 I resize the window ever so slightly (interactive device) the rectGrob
 is suddenly clipped to the previous plot window. I cannot understand
 this behavior, and it doesn't happen if one removes the rasterImage()
 call, so I suspect something iffy is going on with the display list or
 something.

 It happens like this:

 # 1. Clip to the device and draw axes and labels
 plot(1,1,t=n)
 # 2. Clip to the plot region and draw raster
 rasterImage(matrix(1),1,1,1,1)
 library(grid)
 # Oooh!  This is the first time any grid drawing
 # has occurred on the device, so initialize grid
 # stuff, including the top-level viewport,
 # *which clips to the device*
 # 3. Draw a rectangle
 grid.rect(gp=gpar(fill=grey))

 # Resize the window ...
 # which triggers a redraw ...
 # Oooh! There is grid output on this device so
 # initialize grid stuff, including the top-level
 # viewport *which clips to the device* ...
 # 1. Clip to the device and draw axes and labels
 # 2. Clip to the plot region and draw raster
 # 3. Draw a rectangle

 A workaround is to explicitly do a clip before the grid.rect(), i.e., ...

 plot(1,1,t=n)
 rasterImage(matrix(1),1,1,1,1)
 library(grid)
 grid.clip()
 grid.rect(gp=gpar(fill=grey))

 ... and I will add this example to the things I will look at when I am
 trying to clean up the grid code a bit.

 The only device I've tried is quartz(), x11() crashed with rasterImage,

 That is more serious.  I have heard of a couple of others like this and I
 think the common thread may be 64-bit MacOS X.  I need to get access to such
 a beast to take a look.

Or maybe just 64 bit. I have (running Debian unstable)

 sessionInfo()
R version 2.12.0 Under development (unstable) (2010-09-02 r52864)
Platform: x86_64-unknown-linux-gnu (64-bit)

and I get reproducible crashes (same 'memory not mapped' segfault) with

x11(type=Xlib)
example(rasterImage) #or

library(lattice)
example(panel.levelplot.raster)

[I noticed this a while back, but neglected to report.]

-Deepayan


 Paul

  *** caught segfault ***
 address 0x28, cause 'memory not mapped'

 Traceback:
  1: rasterImage(matrix(1), 1, 1, 1, 1)

 sessionInfo()
 R version 2.11.1 (2010-05-31)
 x86_64-apple-darwin9.8.0

 locale:
 [1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

 attached base packages:
 [1] grid      stats     graphics  grDevices utils     datasets  methods
 base

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel