Hi Paul, OK I tried not to make the examples too fancy.
Please let me know what you think. They should probably be amended to support the Windows platform, but I think that task would be much easier for someone with access to Windows... By the way I'm Cc'ing Mark O'Connell who shared with me some great getGraphicsEvent examples - well, I found them useful, perhaps if these are going to the R distro somewhere, then his examples should be included as well. Thank you, Frederick On Mon, Nov 14, 2016 at 01:51:08PM +1300, Paul Murrell wrote: > > Great. Thanks! > > Paul > > On 14/11/16 13:41, frede...@ofb.net wrote: > > Hi Paul, > > > > Thank you, for some reason I didn't seem to get an email notification > > for your bugzilla comment! > > > > I will try to send you something shortly. > > > > Frederick > > > > On Mon, Nov 14, 2016 at 08:55:20AM +1300, Paul Murrell wrote: > > > Hi > > > > > > The current status is that I am keen for people to contribute some testing > > > code (see https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16951) > > > > > > There were also some getGraphicsEvent() changes/fixes suggested by Richard > > > Bodewits (cc'ed), for which I am also seeking test code. > > > > > > Paul > > > > > > On 13/11/16 09:00, frede...@ofb.net wrote: > > > > Hi Paul, > > > > > > > > Just checking in to see what the status is. > > > > > > > > From my perspective it seems logical to split off X11 into a separate > > > > package, so development can proceed at a reasonable rate, but I > > > > haven't yet tried to see if that's even possible. > > > > > > > > Thanks, > > > > > > > > Frederick > > > > > > > > On Tue, Jul 26, 2016 at 09:23:35AM +1200, Paul Murrell wrote: > > > > > Hi > > > > > > > > > > Taking a look at those patches is now on my todo list, so I may be in > > > > > touch > > > > > with both of you at some point to request some testing. > > > > > > > > > > Paul > > > > > > > > > > On 26/07/16 07:17, frede...@ofb.net wrote: > > > > > > Dear Daniel Greenidge, > > > > > > > > > > > > To enable getGraphicsEvent on Cairo, you have two patches to choose > > > > > > from: > > > > > > > > > > > > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=14364 > > > > > > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16951 > > > > > > > > > > > > The second one is by me, and the first one is from five years ago by > > > > > > Hugo Mildenberger. > > > > > > > > > > > > Both patches are very simple, they move some lines enabling > > > > > > getGrahpicsEvent outside of a if(!cairo) statement. My patch also > > > > > > adds > > > > > > the ability to execute code (e.g. for animation) while the interface > > > > > > is idle. > > > > > > > > > > > > Top guy Duncan Murdoch has expressed that he doesn't have time to > > > > > > work > > > > > > on applying these patches, and I haven't had any responses from the > > > > > > rest of the R Core Team. I was thinking that perhaps your best bet > > > > > > is > > > > > > to try to create a package called e.g. "X11-fixes" which people can > > > > > > use to get a better X11 library (there is also a bug waiting to be > > > > > > fixed from 2001: > > > > > > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16702). > > > > > > > > > > > > I don't know if CRAN would accept such a package, or if you'd have > > > > > > to > > > > > > distribute it via GitHub, but R has excellent tools to facilitate > > > > > > the > > > > > > distribution of code via packages. Whether the R kernel exports > > > > > > enough > > > > > > functions to allow a package to take over event handling, I'm not > > > > > > sure. I was intending to look more into the details of this > > > > > > possibility but haven't had time. > > > > > > > > > > > > Best wishes, > > > > > > > > > > > > Frederick > > > > > > > > > > > > On Mon, Jul 25, 2016 at 02:15:59PM -0400, Daniel Greenidge wrote: > > > > > > > Hi all, > > > > > > > > > > > > > > I'm writing an interactive plotting function for viewing fMRI > > > > > > > datasets. Currently, I get keypresses using > > > > > > > grDevices::getGraphicsEvent(). > > > > > > > > > > > > > > Unfortunately getGraphicsEvent() only supports the > > > > > > > X11(type="Xlib") > > > > > > > graphics device on Unix systems. The Xlib device doesn't support > > > > > > > buffering (i.e. dev.hold() and dev.flush()), so redrawing the > > > > > > > plots > > > > > > > causes lots of flickering. > > > > > > > > > > > > > > Is there a way to get keypresses while using the cairo graphics > > > > > > > device? Alternatively, is there a way to prevent flickering with > > > > > > > the > > > > > > > Xlib graphics device? > > > > > > > > > > > > > > Best, > > > > > > > Daniel Greenidge > > > > > > > > > > > > > > ______________________________________________ > > > > > > > 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 > > > > > > > > > > > > > > > > -- > > > > > 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/ > > > > > > > > > > > -- > > > 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/ > > > > > -- > 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/ >
# Examples for "onIdle" function in getGraphicsEvent # FHE 13 Nov 2016 - public domain # This should produce a "plot" display with 50 random points connected # by lines. The points will scroll to the right at a fixed speed, # which depends on how fast your computer is. Closing the plot window # should terminate the function cleanly, and pressing Ctrl-C at the # prompt should have the same effect. testIdle1 = function() { # cairo is the flicker-free option for X11 X11(type="cairo"); on.exit(dev.off()); ps=matrix(runif(100),ncol=2) getGraphicsEvent( onIdle=function() { plot(ps[,1],ps[,2],type="b", xlim=c(0,1),ylim=c(0,1)); ps<<-t(t(ps)+c(0.001,0)) %% 1 NULL } ); } # This is a more interactive example. You have to move the mouse to # start, and then the mouse will leave a trail which shrinks and # rotates towards the center of the screen. There is a 0.01 second # delay (currently Linux-specific, since Sys.sleep() can't be used in # onIdle) between successive updates, so, unlike the first example, # this shouldn't use 100% of your CPU (I measured 20% on a 3.7GHz # Xeon). Closing the window or pressing "q" should terminate the # function, but sometimes Ctrl-C at the prompt is ignored due to the # system() call. testIdle2 = function(factor=0.99,theta=0.03) { n=200; xform=factor* rbind(c(cos(theta),-sin(theta)), c(sin(theta),cos(theta))); lastp=c(0,0); ps=matrix(lastp,ncol=2); # cairo is the flicker-free option for X11 X11(type="cairo"); on.exit(dev.off()); getGraphicsEvent( onIdle=function() { plot(ps[,1],ps[,2], xlim=c(-1,1),ylim=c(-1,1),type="l"); ps<<-head(rbind(lastp,ps%*%xform),n); # for Windows, comment or change appropriately system("sleep 0.02"); NULL }, onMouseMove=function(buttons,x,y) { newX=grconvertX(x,"ndc","user"); newY=grconvertY(y,"ndc","user"); lastp<<-c(newX,newY); NULL; }, onKeybd=function(key) { if(key=="q") { 1 } else { NULL } } ); }
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel