On Aug 21, 2010, at 8:46 AM, Laurent wrote:

> On 21/08/10 12:00, r-devel-requ...@r-project.org wrote:
>> 
>> On Aug 20, 2010, at 1:59 PM, Matt Shotwell wrote:
>> 
>>> >  On Fri, 2010-08-20 at 12:58 -0400, Sharpie wrote:
>>>> >>
>>>> >>  Donald Paul Winston wrote:
> (...)
>>>> >>
>>>> >>  Donald Paul Winston wrote:
>>>>> >>>
>>>>> >>>  It appears R insists on directing plot output to a file. Is their a
>>>>> >>>  graphics device that keeps the output in memory so it can be 
>>>>> >>> returned to
>>>>> >>>  my java app as a stream of bytes? If I have to wait for it to write 
>>>>> >>> to a
>>>>> >>>  "unique file" and then read it back again then I don't think that's 
>>>>> >>> going
>>>>> >>>  to work. My web app needs to support hundreds of concurrent clients.
>>>>> >>>
>>>> >>
>>>> >>  As far as I know all R graphics output that does not go to a screen 
>>>> >> device,
>>>> >>  such as an X window, must be directed to some sort of file.  I am not 
>>>> >> aware
>>>> >>  of a graphics device that provides output to something other than a 
>>>> >> screen
>>>> >>  or a file, but there very well may be such a device in existence.
> 
> For experimentation purpose, the rpy2 project is finalizing a system to allow 
> Python-written graphical devices (no C-level R extensions, just Python). 
> Beside other niceties, it will allow working around the lack of
> connection API in R for graphics.
> Since Python makes the use of file-like objects straightforward, we plan 
> providing devices that are streams (nice for serving graphics from web 
> applications without having to worry about temp files).
> 

Well, that doesn't help with the issue we raised since you still cannot use R 
connections. It's trivial to modify any of the existing devices (e.g. Cairo as 
I said) to support in-memory storage as they already support that internally - 
certainly much easier that to mess with Python etc. Nonetheless, yes, it is 
another way along the lines of xGD, JavaGD etc.

Cheers,
Simon



> 
>>> >  This was essentially the conclusion of Donald's earlier thread...
>>> >
>>>> >>  The functionality you could describe could be implemented by writing a 
>>>> >> R
>>>> >>  graphics device that forwards the R plotting commands to... well 
>>>> >> anywhere
>>>> >>  you want, really.  As the author of an R graphics device, I can say the
>>>> >>  trickiest part of such an undertaking will be calculating font metrics 
>>>> >> so
>>>> >>  that R can properly position text in the graphics.  Everything else is 
>>>> >> very
>>>> >>  straight-forward.
>>> >
>>> >  I believe Donald wants the_rendered_  output. That is, a stream of bytes
>>> >  that represent a png, jpeg, etc. Toward this end, we have already
>>> >  discussed using an OS-level fifo to avoid disk I/O, and I think this is
>>> >  the easiest route for Donald.
>>> >
>>> >  Alternatively, Donald might look into the X11 graphics driver, where
>>> >  Cairo is used to write pngs. In particular, the in_do_saveplot function
>>> >  (src/main/modules/X11/devX11.c) calls cairo_surface_write_to_png, in
>>> >  order to save a png to file. Cairo also provides the
>>> >  cairo_surface_write_to_png_stream function, which might be used to send
>>> >  png data to a memory buffer (i.e. a raw vector). I don't think it would
>>> >  be too difficult to modify in_do_saveplot to accommodate this.
>>> >
>> That is all nice, it will require you to hack R (well, there is the Cairo 
>> device so you could make the change outside of R instead).
>> 
>> As always, the reason is buried deep inside -- the lack of connection API. 
>> If we had that, devices would take a connection instead of the file name and 
>> all would be well since you could use in-memory connections instead of files 
>> ...;)
> 
> May I dare asking about what happened to past offers to alleviate the problem 
> ?
> 
> There is at least one patch (contributed 4 years ago)
> http://rwiki.sciviews.org/doku.php?id=developers:r_connections_api
> that remained seemingly ignored, and subsequent requests for updates (or 
> patch submission policies) remained similarly unanswered.
> 
> A recent thread showed unexpected progress, with the eventual possibility of 
> accepting a patch being worded.
> http://www.mail-archive.com/r-devel@r-project.org/msg20276.html
> Unfortunately the thread drifted into legalese invocations, and despite the 
> author of the patch complying to all demands regarding the licensing flavour 
> for his contribution the patch seems to have joined (all ?) other submitted 
> patches. (I don't get anything when running:
> svn log -r {2010-04-27}:HEAD | grep -i Shotwell
> ).
> 
> Are there such patches included in the Revolution R sources, or are there 
> plans to do so ?
> 
> 
> 
> Laurent
> 
> 
> 
> 
>> Cheers,
>> Simon
>> 
>> 
>> 
> 
> 

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

Reply via email to