useDynLib(grDevices, .registration = TRUE, .fixes = "C_")

export(Hershey, adjustcolor, as.graphicsAnnot, as.raster, axisTicks,
       blues9, boxplot.stats, cairoSymbolFont,
       check.options, chull, CIDFont, col2rgb,
       colors, colours, cm, colorRamp, colorRampPalette, contourLines,
       convertColor, colorConverter, colorspaces, cm.colors, densCols,
       devAskNewPage, dev.capabilities, dev.capture, dev.control,
       dev.copy, dev.copy2eps, dev.copy2pdf, dev.cur, dev.hold,
       dev.flush, dev.interactive, dev.list, dev.new, dev.next,
       dev.off, dev.prev, dev.print, dev.set, dev.size, dev2bitmap,
       deviceIsInteractive, embedFonts, extendrange,
       getGraphicsEvent,
       getGraphicsEventEnv, graphics.off, gray, grey, gray.colors,
       grSoftVersion, grey.colors, heat.colors, hsv, hcl, hcl.colors, hcl.pals,
       is.raster, 
       make.rgb, n2mfrow, nclass.Sturges, nclass.FD, nclass.scott,
       palette, palette.pals, palette.colors,
       pdf, pdf.options, pdfFonts, pictex, postscript,
       postscriptFonts, ps.options, 
       rainbow, recordGraphics,
       recordPlot, replayPlot, rgb, rgb2hsv, savePlot,
       setEPS,
       setGraphicsEventEnv, setGraphicsEventHandlers,
       setPS, 
       terrain.colors, 
       topo.colors, trans3d, Type1Font, .axisPars,
       xfig, xyTable, xy.coords, xyz.coords,

       .linearGradientPattern, .mask, .radialGradientPattern,
       .clipPath, .setClipPath, .setMask, .setPattern, .tilingPattern,
       .defineGroup, .useGroup, .devUp, .ruleIndex, .opIndex)

## devices common to all platforms
export(X11, x11, bitmap, bmp, cairo_pdf, cairo_ps, jpeg, png, svg, tiff)

S3method(print, recordedplot)
S3method(print, colorConverter)
S3method(print, RGBcolorConverter)

S3method("checkFont", "default")
S3method("checkFont", "Type1Font")
S3method("checkFont", "CIDFont")
S3method("matchEncoding", "Type1Font")
S3method("matchEncoding", "CIDFont")

S3method("as.raster", "raster")
S3method("as.raster", "logical")
S3method("as.raster", "numeric")
S3method("as.raster", "character")
S3method("as.raster", "matrix")
S3method("as.raster", "array")

S3method("as.matrix", "raster")
S3method("is.na", "raster")
S3method("anyNA", "raster")
S3method("[", "raster")
S3method("[<-", "raster")
S3method("Ops", "raster")

S3method("print", "raster")

S3method(pretty, Date,   prettyDate)
S3method(pretty, POSIXt, prettyDate)


if(tools:::.OStype() == "windows") {
    export(bringToTop, msgWindow, win.graph, win.metafile, win.print,
           windows, windows.options, windowsFont, windowsFonts)

    S3method("[", SavedPlots)
    S3method(print, SavedPlots)
    importFrom("utils", "shortPathName")
} else {
    export(X11.options, X11Font, X11Fonts,
           quartz, quartz.options, quartz.save, quartzFont, quartzFonts)
}
