blob: d856f40c43e868f1942ebb34400117806481d388 [file] [log] [blame]
% File src/library/grDevices/man/recordGraphics.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2018 R Core Team
% Distributed under GPL 2 or later
\name{recordGraphics}
\alias{recordGraphics}
\title{Record Graphics Operations}
\description{
Records arbitrary code on the graphics engine display list.
Useful for encapsulating calculations with graphical output
that depends on the calculations.
Intended \emph{only} for expert use.
}
\usage{
recordGraphics(expr, list, env)
}
\arguments{
\item{expr}{object of mode \code{\link{expression}} or \code{call} or
an unevaluated expression.}
\item{list}{a list defining the environment in which \code{expr} is to
be evaluated.}
\item{env}{an \code{\link{environment}} specifying
where \R looks for objects not found in \code{list}.}
}
\value{
The value from evaluating \code{expr}.
}
\details{
The code in \code{expr} is evaluated in an environment constructed
from \code{list}, with \code{env} as the parent of that environment.
All three arguments are saved on the graphics engine display list
so that on a device resize or copying between devices, the original
evaluation environment can be recreated and the code can be
re-evaluated to reproduce the graphical output.
}
\section{Warning}{
This function is not intended for general use. Incorrect or
improper use of this function could lead to unintended and/or
undesirable results.
An example of acceptable use is querying the current state
of a graphics device or graphics system setting and then
calling a graphics function.
An example of improper use would be calling the \code{assign} function
to performing assignments in the global environment.
}
\seealso{\code{\link{eval}} }
\examples{
require(graphics)
plot(1:10)
# This rectangle remains 1inch wide when the device is resized
recordGraphics(
{
rect(4, 2,
4 + diff(par("usr")[1:2])/par("pin")[1], 3)
},
list(),
getNamespace("graphics"))
}
\keyword{ device }