1use super::*;
3
4#[cfg(use_r_ge_version_17)]
5pub const R_GE_version: u32 = 17;
6
7#[cfg(all(use_r_ge_version_16, not(use_r_ge_version_17)))]
8pub const R_GE_version: u32 = 16;
9
10#[cfg(all(not(use_r_ge_version_16), not(use_r_ge_version_17)))]
11pub const R_GE_version: u32 = 15;
12pub type DevDesc = _DevDesc;
14pub type pDevDesc = *mut DevDesc;
15pub type pGEcontext = *mut R_GE_gcontext;
16pub type pGEDevDesc = *mut GEDevDesc;
17
18pub const LTY_BLANK: i32 = -1;
20pub const LTY_SOLID: u32 = 0;
21pub const LTY_DASHED: u32 = 68;
22pub const LTY_DOTTED: u32 = 49;
23pub const LTY_DOTDASH: u32 = 13361;
24pub const LTY_LONGDASH: u32 = 55;
25pub const LTY_TWODASH: u32 = 9762;
26pub const R_GE_definitions: u32 = 13;
27
28#[repr(u32)]
30#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
31pub enum GEUnit {
32 GE_DEVICE = 0,
33 GE_NDC = 1,
34 GE_INCHES = 2,
35 GE_CM = 3,
36}
37
38#[repr(u32)]
39#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
40pub enum R_GE_lineend {
41 GE_ROUND_CAP = 1,
42 GE_BUTT_CAP = 2,
43 GE_SQUARE_CAP = 3,
44}
45
46#[repr(u32)]
47#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
48pub enum R_GE_linejoin {
49 GE_ROUND_JOIN = 1,
50 GE_MITRE_JOIN = 2,
51 GE_BEVEL_JOIN = 3,
52}
53
54#[repr(C)]
56#[derive(Debug, Copy, Clone)]
57pub struct R_GE_gcontext {
58 pub col: ::std::os::raw::c_int,
59 pub fill: ::std::os::raw::c_int,
60 pub gamma: f64,
61 pub lwd: f64,
62 pub lty: ::std::os::raw::c_int,
63 pub lend: R_GE_lineend,
64 pub ljoin: R_GE_linejoin,
65 pub lmitre: f64,
66 pub cex: f64,
67 pub ps: f64,
68 pub lineheight: f64,
69 pub fontface: ::std::os::raw::c_int,
70 pub fontfamily: [::std::os::raw::c_char; 201usize],
71 pub patternFill: SEXP,
72}
73
74#[repr(C)]
75#[derive(Debug, Copy, Clone)]
76pub struct _DevDesc {
77 #[doc = "left raster coordinate"]
78 pub left: f64,
79 #[doc = "right raster coordinate"]
80 pub right: f64,
81 #[doc = "bottom raster coordinate"]
82 pub bottom: f64,
83 #[doc = "top raster coordinate"]
84 pub top: f64,
85 #[doc = "R only has the notion of a rectangular clipping region"]
86 pub clipLeft: f64,
87 pub clipRight: f64,
88 pub clipBottom: f64,
89 pub clipTop: f64,
90 #[doc = "x character addressing offset - unused"]
91 pub xCharOffset: f64,
92 #[doc = "y character addressing offset"]
93 pub yCharOffset: f64,
94 #[doc = "1/2 interline space as frac of line height"]
95 pub yLineBias: f64,
96 #[doc = "Inches per raster; \\[0\\]=x, \\[1\\]=y"]
97 pub ipr: [f64; 2usize],
98 #[doc = "Character size in rasters; \\[0\\]=x, \\[1\\]=y"]
99 pub cra: [f64; 2usize],
100 #[doc = "(initial) Device Gamma Correction"]
101 pub gamma: f64,
102 #[doc = "Device-level clipping"]
103 pub canClip: Rboolean,
104 #[doc = "can the gamma factor be modified?"]
105 pub canChangeGamma: Rboolean,
106 #[doc = "Can do at least some horiz adjust of text\n0 = none, 1 = {0,0.5,1}, 2 = \\[0,1\\]"]
107 pub canHAdj: ::std::os::raw::c_int,
108 #[doc = "Device initial settings\n/\n/* These are things that the device must set up when it is created.\n The graphics system can modify them and track current values,"]
109 pub startps: f64,
110 #[doc = "sets par(\"fg\"), par(\"col\") and gpar(\"col\")"]
111 pub startcol: ::std::os::raw::c_int,
112 #[doc = "sets par(\"bg\") and gpar(\"fill\")"]
113 pub startfill: ::std::os::raw::c_int,
114 pub startlty: ::std::os::raw::c_int,
115 pub startfont: ::std::os::raw::c_int,
116 pub startgamma: f64,
117 #[doc = "pointer to device specific parameters"]
118 pub deviceSpecific: *mut ::std::os::raw::c_void,
119 #[doc = "toggle for initial display list status"]
120 pub displayListOn: Rboolean,
121 #[doc = "can the device generate mousedown events"]
122 pub canGenMouseDown: Rboolean,
123 #[doc = "can the device generate mousemove events"]
124 pub canGenMouseMove: Rboolean,
125 #[doc = "can the device generate mouseup events"]
126 pub canGenMouseUp: Rboolean,
127 #[doc = "can the device generate keyboard events"]
128 pub canGenKeybd: Rboolean,
129 #[doc = "can the device generate idle events"]
130 pub canGenIdle: Rboolean,
131 #[doc = "This is set while getGraphicsEvent\nis actively looking for events"]
132 pub gettingEvent: Rboolean,
133 pub activate: ::std::option::Option<unsafe extern "C" fn(arg1: pDevDesc)>,
134 pub circle: ::std::option::Option<
135 unsafe extern "C" fn(x: f64, y: f64, r: f64, gc: pGEcontext, dd: pDevDesc),
136 >,
137 pub clip: ::std::option::Option<
138 unsafe extern "C" fn(x0: f64, x1: f64, y0: f64, y1: f64, dd: pDevDesc),
139 >,
140 pub close: ::std::option::Option<unsafe extern "C" fn(dd: pDevDesc)>,
141 pub deactivate: ::std::option::Option<unsafe extern "C" fn(arg1: pDevDesc)>,
142 pub locator: ::std::option::Option<
143 unsafe extern "C" fn(x: *mut f64, y: *mut f64, dd: pDevDesc) -> Rboolean,
144 >,
145 pub line: ::std::option::Option<
146 unsafe extern "C" fn(x1: f64, y1: f64, x2: f64, y2: f64, gc: pGEcontext, dd: pDevDesc),
147 >,
148 pub metricInfo: ::std::option::Option<
149 unsafe extern "C" fn(
150 c: ::std::os::raw::c_int,
151 gc: pGEcontext,
152 ascent: *mut f64,
153 descent: *mut f64,
154 width: *mut f64,
155 dd: pDevDesc,
156 ),
157 >,
158 pub mode:
159 ::std::option::Option<unsafe extern "C" fn(mode: ::std::os::raw::c_int, dd: pDevDesc)>,
160 pub newPage: ::std::option::Option<unsafe extern "C" fn(gc: pGEcontext, dd: pDevDesc)>,
161 pub polygon: ::std::option::Option<
162 unsafe extern "C" fn(
163 n: ::std::os::raw::c_int,
164 x: *mut f64,
165 y: *mut f64,
166 gc: pGEcontext,
167 dd: pDevDesc,
168 ),
169 >,
170 pub polyline: ::std::option::Option<
171 unsafe extern "C" fn(
172 n: ::std::os::raw::c_int,
173 x: *mut f64,
174 y: *mut f64,
175 gc: pGEcontext,
176 dd: pDevDesc,
177 ),
178 >,
179 pub rect: ::std::option::Option<
180 unsafe extern "C" fn(x0: f64, y0: f64, x1: f64, y1: f64, gc: pGEcontext, dd: pDevDesc),
181 >,
182 pub path: ::std::option::Option<
183 unsafe extern "C" fn(
184 x: *mut f64,
185 y: *mut f64,
186 npoly: ::std::os::raw::c_int,
187 nper: *mut ::std::os::raw::c_int,
188 winding: Rboolean,
189 gc: pGEcontext,
190 dd: pDevDesc,
191 ),
192 >,
193 pub raster: ::std::option::Option<
194 unsafe extern "C" fn(
195 raster: *mut ::std::os::raw::c_uint,
196 w: ::std::os::raw::c_int,
197 h: ::std::os::raw::c_int,
198 x: f64,
199 y: f64,
200 width: f64,
201 height: f64,
202 rot: f64,
203 interpolate: Rboolean,
204 gc: pGEcontext,
205 dd: pDevDesc,
206 ),
207 >,
208 pub cap: ::std::option::Option<unsafe extern "C" fn(dd: pDevDesc) -> SEXP>,
209 pub size: ::std::option::Option<
210 unsafe extern "C" fn(
211 left: *mut f64,
212 right: *mut f64,
213 bottom: *mut f64,
214 top: *mut f64,
215 dd: pDevDesc,
216 ),
217 >,
218 pub strWidth: ::std::option::Option<
219 unsafe extern "C" fn(
220 str_: *const ::std::os::raw::c_char,
221 gc: pGEcontext,
222 dd: pDevDesc,
223 ) -> f64,
224 >,
225 pub text: ::std::option::Option<
226 unsafe extern "C" fn(
227 x: f64,
228 y: f64,
229 str_: *const ::std::os::raw::c_char,
230 rot: f64,
231 hadj: f64,
232 gc: pGEcontext,
233 dd: pDevDesc,
234 ),
235 >,
236 pub onExit: ::std::option::Option<unsafe extern "C" fn(dd: pDevDesc)>,
237 #[doc = "device_getEvent is no longer used, but the slot is kept for back\n compatibility of the structure."]
238 pub getEvent: ::std::option::Option<
239 unsafe extern "C" fn(arg1: SEXP, arg2: *const ::std::os::raw::c_char) -> SEXP,
240 >,
241 pub newFrameConfirm: ::std::option::Option<unsafe extern "C" fn(dd: pDevDesc) -> Rboolean>,
242 #[doc = "and strWidthUTF8"]
243 pub hasTextUTF8: Rboolean,
244 pub textUTF8: ::std::option::Option<
245 unsafe extern "C" fn(
246 x: f64,
247 y: f64,
248 str_: *const ::std::os::raw::c_char,
249 rot: f64,
250 hadj: f64,
251 gc: pGEcontext,
252 dd: pDevDesc,
253 ),
254 >,
255 pub strWidthUTF8: ::std::option::Option<
256 unsafe extern "C" fn(
257 str_: *const ::std::os::raw::c_char,
258 gc: pGEcontext,
259 dd: pDevDesc,
260 ) -> f64,
261 >,
262 pub wantSymbolUTF8: Rboolean,
263 #[doc = "Is rotated text good enough to be preferable to Hershey in\ncontour labels? Old default was FALSE."]
264 pub useRotatedTextInContour: Rboolean,
265 #[doc = "This is an environment holding event handlers."]
266 pub eventEnv: SEXP,
267 pub eventHelper:
268 ::std::option::Option<unsafe extern "C" fn(dd: pDevDesc, code: ::std::os::raw::c_int)>,
269 pub holdflush: ::std::option::Option<
270 unsafe extern "C" fn(dd: pDevDesc, level: ::std::os::raw::c_int) -> ::std::os::raw::c_int,
271 >,
272 #[doc = "1 = no, 2 = yes"]
273 pub haveTransparency: ::std::os::raw::c_int,
274 #[doc = "1 = no, 2 = fully, 3 = semi"]
275 pub haveTransparentBg: ::std::os::raw::c_int,
276 #[doc = "1 = no, 2 = yes, 3 = except for missing values"]
277 pub haveRaster: ::std::os::raw::c_int,
278 #[doc = "1 = no, 2 = yes"]
279 pub haveCapture: ::std::os::raw::c_int,
280 #[doc = "1 = no, 2 = yes"]
281 pub haveLocator: ::std::os::raw::c_int,
282 pub setPattern:
283 ::std::option::Option<unsafe extern "C" fn(pattern: SEXP, dd: pDevDesc) -> SEXP>,
284 pub releasePattern: ::std::option::Option<unsafe extern "C" fn(ref_: SEXP, dd: pDevDesc)>,
285 pub setClipPath:
286 ::std::option::Option<unsafe extern "C" fn(path: SEXP, ref_: SEXP, dd: pDevDesc) -> SEXP>,
287 pub releaseClipPath: ::std::option::Option<unsafe extern "C" fn(ref_: SEXP, dd: pDevDesc)>,
288 pub setMask:
289 ::std::option::Option<unsafe extern "C" fn(path: SEXP, ref_: SEXP, dd: pDevDesc) -> SEXP>,
290 pub releaseMask: ::std::option::Option<unsafe extern "C" fn(ref_: SEXP, dd: pDevDesc)>,
291 #[doc = "This should match R_GE_version,\n BUT it does not have to.\n It give the graphics engine a chance to work with\n graphics device packages BEFORE they update to\n changes in R_GE_version."]
292 pub deviceVersion: ::std::os::raw::c_int,
293 #[doc = "This can be used to OVERRIDE canClip so that graphics engine\n leaves ALL clipping to the graphics device"]
294 pub deviceClip: Rboolean,
295 pub defineGroup: ::std::option::Option<
296 unsafe extern "C" fn(
297 source: SEXP,
298 op: ::std::os::raw::c_int,
299 destination: SEXP,
300 dd: pDevDesc,
301 ) -> SEXP,
302 >,
303 pub useGroup:
304 ::std::option::Option<unsafe extern "C" fn(ref_: SEXP, trans: SEXP, dd: pDevDesc)>,
305 pub releaseGroup: ::std::option::Option<unsafe extern "C" fn(ref_: SEXP, dd: pDevDesc)>,
306 pub stroke:
307 ::std::option::Option<unsafe extern "C" fn(path: SEXP, gc: pGEcontext, dd: pDevDesc)>,
308 pub fill: ::std::option::Option<
309 unsafe extern "C" fn(path: SEXP, rule: ::std::os::raw::c_int, gc: pGEcontext, dd: pDevDesc),
310 >,
311 pub fillStroke: ::std::option::Option<
312 unsafe extern "C" fn(path: SEXP, rule: ::std::os::raw::c_int, gc: pGEcontext, dd: pDevDesc),
313 >,
314 pub capabilities: ::std::option::Option<unsafe extern "C" fn(cap: SEXP) -> SEXP>,
315 pub glyph: ::std::option::Option<
316 unsafe extern "C" fn(
317 n: ::std::os::raw::c_int,
318 glyphs: *mut ::std::os::raw::c_int,
319 x: *mut f64,
320 y: *mut f64,
321 font: SEXP,
322 size: f64,
323 colour: ::std::os::raw::c_int,
324 rot: f64,
325 dd: pDevDesc,
326 ),
327 >,
328 #[doc = "Area for future expansion.\nBy zeroing this, devices are more likely to work if loaded\ninto a later version of R than that they were compiled under."]
329 pub reserved: [::std::os::raw::c_char; 64usize],
330}
331
332#[repr(C)]
333#[derive(Debug, Copy, Clone)]
334pub struct _GEDevDesc {
335 #[doc = "Stuff that the devices can see (and modify).\n All detailed in GraphicsDevice.h"]
336 pub dev: pDevDesc,
337 #[doc = "toggle for display list status"]
338 pub displayListOn: Rboolean,
339 #[doc = "display list"]
340 pub displayList: SEXP,
341 #[doc = "A pointer to the end of the display list\nto avoid traversing pairlists"]
342 pub DLlastElt: SEXP,
343 #[doc = "The last element of the display list\n just prior to when the display list\n was last initialised"]
344 pub savedSnapshot: SEXP,
345 #[doc = "Has the device received any output?"]
346 pub dirty: Rboolean,
347 #[doc = "Should a graphics call be stored\n on the display list?\n Set to FALSE by do_recordGraphics,\n do_dotcallgr, and do_Externalgr\n so that nested calls are not\n recorded on the display list"]
348 pub recordGraphics: Rboolean,
349 #[doc = "Stuff about the device that only graphics systems see.\n The graphics engine has no idea what is in here.\n Used by graphics systems to store system state per device."]
350 pub gesd: [*mut GESystemDesc; 24usize],
351 #[doc = "per-device setting for 'ask' (use NewFrameConfirm)"]
352 pub ask: Rboolean,
353 #[doc = "Is a device appending a path ?"]
354 pub appending: Rboolean,
355}
356
357pub type GEcallback = ::std::option::Option<
358 unsafe extern "C" fn(arg1: GEevent, arg2: *mut GEDevDesc, arg3: SEXP) -> SEXP,
359>;
360
361#[repr(u32)]
362#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
363pub enum GEevent {
364 #[doc = "In response to this event, the registered graphics system\n should allocate and initialise the systemSpecific structure\n\n Should return R_NilValue on failure so that engine\n can tidy up memory allocation"]
365 GE_InitState = 0,
366 #[doc = "This event gives the registered system a chance to undo\n anything done in the initialisation."]
367 GE_FinaliseState = 1,
368 #[doc = "This is sent by the graphics engine prior to initialising\n the display list. It give the graphics system the chance\n to squirrel away information it will need for redrawing the\n the display list"]
369 GE_SaveState = 2,
370 #[doc = "This is sent by the graphics engine prior to replaying the\n display list. It gives the graphics system the chance to\n restore any information it saved on the GE_SaveState event"]
371 GE_RestoreState = 6,
372 #[doc = "Copy system state information to the current device.\n This is used when copying graphics from one device to another\n so all the graphics system needs to do is to copy across\n the bits required for the display list to draw faithfully\n on the new device."]
373 GE_CopyState = 3,
374 #[doc = "Create a snapshot of the system state that is sufficient\n for the current \"image\" to be reproduced"]
375 GE_SaveSnapshotState = 4,
376 #[doc = "Restore the system state that is saved by GE_SaveSnapshotState"]
377 GE_RestoreSnapshotState = 5,
378 #[doc = "When replaying the display list, the graphics engine\n checks, after each replayed action, that the action\n produced valid output. This is the graphics system's\n chance to say that the output is crap (in which case the\n graphics engine will abort the display list replay)."]
379 GE_CheckPlot = 7,
380 #[doc = "The device wants to scale the current pointsize\n (for scaling an image)\n This is not a nice general solution, but a quick fix for\n the Windows device."]
381 GE_ScalePS = 8,
382}
383
384pub type GEDevDesc = _GEDevDesc;
385
386#[repr(C)]
387#[derive(Debug, Copy, Clone)]
388pub struct GESystemDesc {
389 #[doc = "An array of information about each graphics system that\n has registered with the graphics engine.\n This is used to store graphics state for each graphics\n system on each device."]
390 pub systemSpecific: *mut ::std::os::raw::c_void,
391 #[doc = "An array of function pointers, one per graphics system that\n has registered with the graphics engine.\n\n system_Callback is called when the graphics engine wants\n to give a graphics system the chance to play with its\n device-specific information (stored in systemSpecific)\n There are two parameters: an \"event\" to tell the graphics\n system why the graphics engine has called this function,\n and the systemSpecific pointer. The graphics engine\n has to pass the systemSpecific pointer because only\n the graphics engine will know what array index to use."]
392 pub callback: GEcallback,
393}
394
395extern "C" {
396
397 pub fn GEaddDevice2(arg1: pGEDevDesc, arg2: *const ::std::os::raw::c_char);
399 pub fn GECap(dd: pGEDevDesc) -> SEXP;
400 pub fn GECircle(x: f64, y: f64, radius: f64, gc: pGEcontext, dd: pGEDevDesc);
401 #[cfg(use_r_ge_version_17)]
402 pub fn GEcreateDD() -> pDevDesc;
403 pub fn GEcreateDevDesc(dev: pDevDesc) -> pGEDevDesc;
404 #[cfg(use_r_ge_version_17)]
405 pub fn GEfreeDD(dd: pDevDesc);
406 pub fn GEcurrentDevice() -> pGEDevDesc;
407 pub fn GEdeviceNumber(arg1: pGEDevDesc) -> ::std::os::raw::c_int;
408 pub fn GEExpressionHeight(expr: SEXP, gc: pGEcontext, dd: pGEDevDesc) -> f64;
409 pub fn GEExpressionMetric(
410 expr: SEXP,
411 gc: pGEcontext,
412 ascent: *mut f64,
413 descent: *mut f64,
414 width: *mut f64,
415 dd: pGEDevDesc,
416 );
417 pub fn GEExpressionWidth(expr: SEXP, gc: pGEcontext, dd: pGEDevDesc) -> f64;
418 pub fn GEfromDeviceHeight(value: f64, to: GEUnit, dd: pGEDevDesc) -> f64;
419 pub fn GEfromDeviceWidth(value: f64, to: GEUnit, dd: pGEDevDesc) -> f64;
420 pub fn GEfromDeviceX(value: f64, to: GEUnit, dd: pGEDevDesc) -> f64;
421 pub fn GEfromDeviceY(value: f64, to: GEUnit, dd: pGEDevDesc) -> f64;
422 pub fn GEgetDevice(arg1: ::std::os::raw::c_int) -> pGEDevDesc;
423 pub fn GEinitDisplayList(dd: pGEDevDesc);
424 pub fn GELine(x1: f64, y1: f64, x2: f64, y2: f64, gc: pGEcontext, dd: pGEDevDesc);
425 pub fn GEMathText(
426 x: f64,
427 y: f64,
428 expr: SEXP,
429 xc: f64,
430 yc: f64,
431 rot: f64,
432 gc: pGEcontext,
433 dd: pGEDevDesc,
434 );
435 pub fn GEMetricInfo(
436 c: ::std::os::raw::c_int,
437 gc: pGEcontext,
438 ascent: *mut f64,
439 descent: *mut f64,
440 width: *mut f64,
441 dd: pGEDevDesc,
442 );
443 pub fn GEMode(mode: ::std::os::raw::c_int, dd: pGEDevDesc);
444 pub fn GENewPage(gc: pGEcontext, dd: pGEDevDesc);
445 pub fn GEPath(
446 x: *mut f64,
447 y: *mut f64,
448 npoly: ::std::os::raw::c_int,
449 nper: *mut ::std::os::raw::c_int,
450 winding: Rboolean,
451 gc: pGEcontext,
452 dd: pGEDevDesc,
453 );
454 pub fn GEPolygon(
455 n: ::std::os::raw::c_int,
456 x: *mut f64,
457 y: *mut f64,
458 gc: pGEcontext,
459 dd: pGEDevDesc,
460 );
461 pub fn GEPolyline(
462 n: ::std::os::raw::c_int,
463 x: *mut f64,
464 y: *mut f64,
465 gc: pGEcontext,
466 dd: pGEDevDesc,
467 );
468 pub fn GERaster(
469 raster: *mut ::std::os::raw::c_uint,
470 w: ::std::os::raw::c_int,
471 h: ::std::os::raw::c_int,
472 x: f64,
473 y: f64,
474 width: f64,
475 height: f64,
476 rot: f64,
477 interpolate: Rboolean,
478 gc: pGEcontext,
479 dd: pGEDevDesc,
480 );
481 pub fn GERect(x0: f64, y0: f64, x1: f64, y1: f64, gc: pGEcontext, dd: pGEDevDesc);
482 pub fn GESetClip(x1: f64, y1: f64, x2: f64, y2: f64, dd: pGEDevDesc);
483 pub fn GEStrHeight(
484 str_: *const ::std::os::raw::c_char,
485 enc: cetype_t,
486 gc: pGEcontext,
487 dd: pGEDevDesc,
488 ) -> f64;
489 pub fn GEStrMetric(
490 str_: *const ::std::os::raw::c_char,
491 enc: cetype_t,
492 gc: pGEcontext,
493 ascent: *mut f64,
494 descent: *mut f64,
495 width: *mut f64,
496 dd: pGEDevDesc,
497 );
498 pub fn GEStrWidth(
499 str_: *const ::std::os::raw::c_char,
500 enc: cetype_t,
501 gc: pGEcontext,
502 dd: pGEDevDesc,
503 ) -> f64;
504 pub fn GESymbol(
505 x: f64,
506 y: f64,
507 pch: ::std::os::raw::c_int,
508 size: f64,
509 gc: pGEcontext,
510 dd: pGEDevDesc,
511 );
512 pub fn GEText(
513 x: f64,
514 y: f64,
515 str_: *const ::std::os::raw::c_char,
516 enc: cetype_t,
517 xc: f64,
518 yc: f64,
519 rot: f64,
520 gc: pGEcontext,
521 dd: pGEDevDesc,
522 );
523 pub fn GEtoDeviceHeight(value: f64, from: GEUnit, dd: pGEDevDesc) -> f64;
524 pub fn GEtoDeviceWidth(value: f64, from: GEUnit, dd: pGEDevDesc) -> f64;
525 pub fn GEtoDeviceX(value: f64, from: GEUnit, dd: pGEDevDesc) -> f64;
526 pub fn GEtoDeviceY(value: f64, from: GEUnit, dd: pGEDevDesc) -> f64;
527 pub fn R_CheckDeviceAvailable();
528 pub fn R_GE_checkVersionOrDie(version: ::std::os::raw::c_int);
529}