1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071openOCamlRlet()=ignore(eval_string"require(grDevices, quietly=TRUE)")moduleStub=structletpng=symbol"png"letpdf=symbol"pdf"letpostscript=symbol"postscript"letsvg=symbol"svg"letdev_off=symbol"dev.off"(* TODO: This segfaults: let dev = symbol "dev" *)endtypelength_unit=[`pixel|`inch|`cm|`mm]letstring_of_length_unit=function|`pixel->"px"|`inch->"in"|`cm->"cm"|`mm->"mm"letr_length_unitx=Enc.string(string_of_length_unitx)letpng?width?height?unit?pointsizepath=ignore(callStub.png[argEnc.stringpath;opt_argEnc.float"width"width;opt_argEnc.float"height"height;opt_argr_length_unit"unit"unit;opt_argEnc.int"pointsize"pointsize])letpdf?width?height?pointsizepath=ignore(callStub.pdf[argEnc.stringpath;opt_argEnc.float"width"width;opt_argEnc.float"height"height;opt_argEnc.int"pointsize"pointsize])letpostscript?width?height?pointsizepath=ignore(callStub.postscript[argEnc.stringpath;opt_argEnc.float"width"width;opt_argEnc.float"height"height;opt_argEnc.int"pointsize"pointsize])letsvg?width?height?pointsizepath=ignore(callStub.svg[argEnc.stringpath;opt_argEnc.float"width"width;opt_argEnc.float"height"height;opt_argEnc.int"pointsize"pointsize])letdev_off()=ignore(callStub.dev_off[])