
useDynLib(lattice, .registration = TRUE)

import(grid)

## importFrom(methods, hasArg) # replicated in hasGroupNumber()

importFrom(grDevices,

           dev.hold, dev.flush, dev.capabilities,
           dev.list, cm.colors, gray, col2rgb, rgb, adjustcolor,
           heat.colors, grey, hsv, xy.coords, axisTicks,
           boxplot.stats, contourLines, colorRamp, colorRampPalette,
           as.raster, hcl.colors, palette.colors, convertColor)

importFrom(graphics, par, plot, co.intervals, hist)

importFrom(utils, head, tail, modifyList)


importFrom(stats,

           as.formula, density, fitted.values, loess.smooth, median,
           ppoints, qnorm, residuals, update, var, coef, quantile, lm,
           dnorm, qunif, uniroot, smooth.spline, predict)


export(histogram,     # high level generics:
       densityplot,
       qqmath,
       qq,
       bwplot,
       dotplot,
       barchart,
       stripplot,
       xyplot, xyplot.ts, # needed by zoo
       contourplot,
       levelplot,
       cloud,
       wireframe,
       splom,
       parallel, # deprecated
       parallelplot,
       tmd,

       rfs,
       oneway,

       ## default panel functions

       panel.histogram,
       panel.densityplot,
       panel.qqmath,
       panel.qq,
       panel.bwplot, 
       panel.dotplot,
       panel.barchart,
       panel.stripplot,
       panel.xyplot,
       panel.contourplot,
       panel.levelplot,   panel.levelplot.raster,
       panel.cloud,       panel.3dscatter, 
       panel.wireframe,   panel.3dwire,
       panel.pairs,
       panel.splom,       diag.panel.splom,
       panel.parallel,
       panel.tmd.default, panel.tmd.qqmath,
       
       panel.error,

       ## Components for use in custom panel functions:

       ## superposition (usually unnecessary)

       panel.superpose,
       panel.superpose.2,
       panel.superpose.plain,
       
       ## data-driven (usually summary of some sort)

       panel.smoothScatter,
       panel.violin,
       panel.rug,
       panel.average,
       panel.linejoin,
       panel.lmline,
       panel.loess,
       panel.spline,
       panel.qqmathline,

       ## decorative / adds reference

       panel.abline,
       panel.refline,
       panel.curve,
       panel.fill,
       panel.grid,
       panel.mathdensity,
       panel.axis,

       ## access relevant informations (works in strip/axis as well)

       current.row,
       current.column,
       panel.number,
       packet.number,
       which.packet,
       trellis.currentLayout,

       ## replacements for low level standard graphics functions

       lplot.xy,
       llines,    panel.lines,
       lpoints,   panel.points,
       lsegments, panel.segments,
       ltext,     panel.arrows,
       lrect,     panel.text,
       larrows,   panel.rect,
       lpolygon,  panel.polygon,
       lpolypath, panel.polypath,


       ## useful prepanel functions

       prepanel.tmd.default, prepanel.tmd.qqmath,
       prepanel.lmline,
       prepanel.loess,
       prepanel.spline,
       prepanel.qqmathline,


       ## default prepanel functions

       prepanel.default.bwplot,
       prepanel.default.histogram,
       prepanel.default.qq,
       prepanel.default.xyplot,
       prepanel.default.cloud,
       prepanel.default.levelplot,
       prepanel.default.qqmath,
       prepanel.default.densityplot,
       prepanel.default.parallel,
       prepanel.default.splom,

       ## shingles 

       shingle,
       is.shingle,
       as.shingle, 
       as.factorOrShingle,
       equal.count,

### construct.scales,


       draw.colorkey,
       draw.key,
       simpleKey, 
       latticeParseFormula,

       ## 3D utilities

       ltransform3dMatrix,
       ltransform3dto3d,

       ## miscellaneous utilities

       strip.default,
       strip.custom,
       packet.panel.default,
       axis.default,
       xscale.components.default,
       yscale.components.default,

       do.breaks,
       make.groups,
       banking, 
       Rows,
       level.colors,

       ## settings 

       show.settings,
       trellis.device,
       trellis.par.get,
       trellis.par.set,
       lattice.getOption,
       lattice.options,
       canonical.theme,
       standard.theme,
       classic.theme,
       col.whitebg,
       simpleTheme,
       makeShadePalette,       


       ## interaction etc
       
       panel.identify,
       panel.identify.qqmath,
       panel.identify.cloud,
       panel.link.splom,
       panel.brush.splom,
       trellis.focus,
       trellis.unfocus,
       trellis.switchFocus,
       trellis.panelArgs,
       trellis.vpname,
       trellis.grobname,
       current.panel.limits,

       trellis.last.object


       )

S3method(widthDetails, latticeKey)


## methods related to shingles

S3method("[",           shingle)
S3method(as.data.frame, shingle)
S3method(plot,          shingle)
S3method(print,         shingle)
S3method(summary,       shingle)
S3method(as.character,  shingleLevel)
S3method(print,         shingleLevel)

## methods for ``trellis'' objects (see also tmd below)

S3method(print,    trellis)
S3method(plot,     trellis)
S3method(update,   trellis)
S3method(dim,      trellis)
S3method(dimnames, trellis)
S3method("dimnames<-", trellis)
S3method("[",      trellis)
S3method(t,        trellis)
S3method(summary,  trellis)
S3method(print,    summary.trellis)


## methods for high level functions

S3method(barchart,      formula)
S3method(barchart,      data.frame)
S3method(barchart,      array)
S3method(barchart,      default)
S3method(barchart,      matrix)
S3method(barchart,      numeric)
S3method(barchart,      table)

S3method(bwplot,        formula)
S3method(bwplot,        data.frame)
S3method(bwplot,        numeric)
S3method(densityplot,   formula)
S3method(densityplot,   data.frame)
S3method(densityplot,   numeric)
S3method(dotplot,       formula)
S3method(dotplot,       data.frame)
S3method(dotplot,       array)
S3method(dotplot,       default)
S3method(dotplot,       matrix)
S3method(dotplot,       numeric)
S3method(dotplot,       table)
S3method(histogram,     formula)
S3method(histogram,     data.frame)
S3method(histogram,     factor)
S3method(histogram,     numeric)
S3method(qqmath,        formula)
S3method(qqmath,        data.frame)
S3method(qqmath,        numeric)
S3method(stripplot,     formula)
S3method(stripplot,     data.frame)
S3method(stripplot,     numeric)
S3method(qq,            formula)
S3method(qq,            data.frame)
S3method(xyplot,        formula)
S3method(xyplot,        data.frame)
S3method(xyplot,        ts)
S3method(levelplot,     formula)
S3method(levelplot,     data.frame)
S3method(levelplot,     table)
S3method(levelplot,     array)
S3method(levelplot,     matrix)
S3method(contourplot,   formula)
S3method(contourplot,   data.frame)
S3method(contourplot,   table)
S3method(contourplot,   array)
S3method(contourplot,   matrix)
S3method(cloud,         formula)
S3method(cloud,         data.frame)
S3method(cloud,         matrix)
S3method(cloud,         table)
S3method(wireframe,     formula)
S3method(wireframe,     data.frame)
S3method(wireframe,     matrix)
S3method(splom,         formula)
S3method(splom,         matrix)
S3method(splom,         data.frame)

S3method(parallelplot,  formula)
S3method(parallelplot,  matrix)
S3method(parallelplot,  data.frame)

# defunct
S3method(parallel,  formula)
S3method(parallel,  matrix)
S3method(parallel,  data.frame)

S3method(tmd,           formula)
S3method(tmd,           data.frame)
S3method(tmd,           trellis)


S3method(larrows,       default)
S3method(llines,        default)
S3method(lpoints,       default)
S3method(lpolygon,      default)
S3method(lpolypath,     default)
S3method(lrect,         default)
S3method(lsegments,     default)
S3method(ltext,         default)


### Local variables:
### mode: R
### End:
