Paul Murrell
2016-Nov-14 00:51 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
Great. Thanks! Paul On 14/11/16 13:41, frederik at 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, frederik at 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, frederik at 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 at r-project.org mailing list >>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>>>>> >>>>> >>>>> ______________________________________________ >>>>> 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/ >>>> >> >> -- >> 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/ >>-- 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/
frederik at ofb.net
2016-Nov-14 01:53 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
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, frederik at 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, frederik at 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, frederik at 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 at r-project.org mailing list > > > > > > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > > > > > > > > > > > > > > > > ______________________________________________ > > > > > > 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/ > > > > > > > > > > > -- > > > 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/ > > > > > -- > 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/ >-------------- next part -------------- # 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 } } ); }
Paul Murrell
2016-Nov-14 19:43 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
Thanks Frederick. Mark, if you have any examples to share, they would also be gratefully received. Paul On 14/11/16 14:53, frederik at ofb.net wrote:> 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, frederik at 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, frederik at 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, frederik at 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 at r-project.org mailing list >>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>>>>>>> >>>>>>> >>>>>>> ______________________________________________ >>>>>>> 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/ >>>>>> >>>> >>>> -- >>>> 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/ >>>> >> >> -- >> 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/ >>-- 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/
Seemingly Similar Threads
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?