You can create an R externalptr object, see google and Rinternals.h, i.e.,
R_MakeExternalPtr. Once you get one of those, it's just a matter of getting
the class attribute set correctly and everything should work.


On Mon, Sep 23, 2013 at 4:23 PM, Thomas Glogowski
<thomas.glogowski@rub.de>wrote:

> Michael Lawrence <lawrence.michael <at> gene.com> writes:
>
> >
> > The objects in RGtk2 (and cairoDevice) are externalptr objects in R. One
> > approach would be to create an externalptr in C, and then call some R
> code
> > that sets the class attribute accordingly, i.e., to the result of
> > gTypeGetAncestors("GtkDrawingArea"), and then calls asCairoDevice() on
> that
> > object.
> >
> > Michael
> >
>
> Thank's Michael but I don't understand how to do what you've explained. How
> can I change an external pointer (created in C) to be an
> GtkDrawingArea using R?
>
> What I've tried so far is:
>
> -1-store the existing GtkDrawingArea* from my app in a DLL callable
> variable
> -2-set up a DrawingArea in R with: DA <- gtkDrawingArea
> -3-call the DLL-function with .Call ("R_Interface_get_da", DA )
> -4-the DLL-function R_Interface_get_da takes DA as an SEXP and lets it
> point
> to the variable created in step 1 (i.e. my apps DrawingArea).
>
> Doing it that way I thought DA would be an object of the correct class
> allready, because I only let it point to some other DrawingArea. But that
> doesn't work in conjunction with asCairoDevice.
>
>
>
> Thomas
>
> _______________________________________________
> R-SIG-GUI mailing list
> R-SIG-GUI@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-gui
>

	[[alternative HTML version deleted]]

