Skip to content

Graphics device API

2 messages · Simon Urbanek, Paul Murrell

#
I just wrote a graphics device taking the X11 device in R-devel as a 
guide (I was told it's the reference device). It works perfectly with 
R-devel, but I just noticed that the API (e.g. the use of 
R_GE_gcontext) is incompatible with previous versions of R. Is the 
current API in R-devel set in stone or are there any further plans to 
change the API? (If so, how far?) Also, is there any 'recommended' or 
'official' way to provide compatibility (beside using wrappers in 
various #ifdef's..)?

Thanks,
Simon

---
Simon Urbanek
Department of computer oriented statistics and data analysis
Universit?tsstr. 14
86135 Augsburg
Germany

Tel: +49-821-598-2236
Fax: +49-821-598-2280

Simon.Urbanek@Math.Uni-Augsburg.de
http://simon.urbanek.info
#
Hi
Simon Urbanek wrote:
It's the closest we've currently got to documentation on graphics devices.
I'm still mucking about with it a bit.  The plan is to have something 
officially documented for 2.0.  I view the current status of the API as 
"unofficial";  it's there so that people can make external devices, but 
you should be aware that it will change -- I am trying to keep device 
maintainers up to date with the changes as they happen.  To be honest, I 
would not expect the 2.0 API to be "set in stone" either.  That API will 
be the result of restructuring and cleaning up the graphics code base, 
without trying to add any new features, but there are a number of 
aspects of the API that will require further resdesign.  A good example, 
is the ability to extend the device API with external code (at the 
moment the device API rigidly prescribes the operations that a device 
can perform).
At the moment, a package can specify something like ...

Depends: R (>= 1.9.0)

... in the DESCRIPTION file.  This at least avoids the problem of using 
a "newer" device on an "older" version of R.  It does not solve the 
problem of further incompatible changes happening in 2.0 (i.e., using an 
"older" device on a "newer" R).

I intend to implement some useful suggestions from Thomas Baier to 
improve this situation.  The idea would be to include explicit version 
information as part of the device API so that external devices can check 
both with compiler directives and dynamically in the code for changes in 
the API.

Paul