1#' @include wrap.R
2NULL
3
4# Internal *_dev functions ------------------------------------------------
5
6pdf_dev <- wrap(grDevices::pdf, NULL, grDevices::dev.cur())
7
8postscript_dev <- wrap(grDevices::postscript, NULL, grDevices::dev.cur())
9
10svg_wrapper <- function(filename, width = 7, height = 7, pointsize = 12,
11  onefile = FALSE, family = "sans", bg = "white",
12  antialias = c("default", "none", "gray", "subpixel"), ...) {
13  grDevices::svg(filename, width, height, pointsize, onefile, family, bg, antialias, ...)
14}
15svg_dev <- wrap(svg_wrapper, NULL, grDevices::dev.cur())
16
17xfig_dev <- wrap(grDevices::xfig, NULL, grDevices::dev.cur())
18
19
20# These functions arguments differ between R versions, so just use ...
21
22cairo_pdf_dev <- function(filename, ...) {
23  grDevices::cairo_pdf(filename = filename, ...)
24  grDevices::dev.cur()
25}
26
27cairo_ps_dev <- function(filename, ...) {
28  grDevices::cairo_ps(filename = filename, ...)
29  grDevices::dev.cur()
30}
31
32# These functions arguments differ between unix and windows, so just use ...
33
34bmp_dev <- function(filename, ...) {
35  grDevices::bmp(filename = filename, ...)
36  grDevices::dev.cur()
37}
38
39tiff_dev <- function(filename, ...) {
40  grDevices::tiff(filename = filename, ...)
41  grDevices::dev.cur()
42}
43
44png_dev <- function(filename, ...) {
45  grDevices::png(filename = filename, ...)
46  grDevices::dev.cur()
47}
48
49jpeg_dev <- function(filename, ...) {
50  grDevices::jpeg(filename = filename, ...)
51  grDevices::dev.cur()
52}
53
54# User-level with_* fns ---------------------------------------------------
55
56#' Graphics devices
57#'
58#' Temporarily use a graphics device.
59#'
60#' @name devices
61#' @aliases with_dev with_device
62#' @template with
63#' @param new \code{[named character]}\cr New graphics device
64#' @param ... Additional arguments passed to the graphics device.
65#' @param .local_envir `[environment]`\cr The environment to use for scoping.
66#' @seealso \code{\link[grDevices]{Devices}}
67#' @examples
68#' # dimensions are in inches
69#' with_pdf(file.path(tempdir(), "test.pdf"), width = 7, height = 5,
70#'   plot(runif(5))
71#' )
72#'
73#' # dimensions are in pixels
74#' with_png(file.path(tempdir(), "test.png"), width = 800, height = 600,
75#'   plot(runif(5))
76#' )
77NULL
78
79#' @describeIn devices BMP device
80#' @export
81with_bmp <- with_(bmp_dev, grDevices::dev.off)
82
83#' @rdname devices
84#' @export
85local_bmp <- local_(bmp_dev, grDevices::dev.off)
86
87#' @describeIn devices CAIRO_PDF device
88#' @inheritParams grDevices::cairo_pdf
89#' @export
90with_cairo_pdf <- with_(cairo_pdf_dev, grDevices::dev.off)
91
92#' @rdname devices
93#' @export
94local_cairo_pdf <- local_(cairo_pdf_dev, grDevices::dev.off)
95
96#' @describeIn devices CAIRO_PS device
97#' @inheritParams grDevices::cairo_ps
98#' @export
99with_cairo_ps <- with_(cairo_ps_dev, grDevices::dev.off)
100
101#' @rdname devices
102#' @export
103local_cairo_ps <- local_(cairo_ps_dev, grDevices::dev.off)
104
105#' @describeIn devices PDF device
106#' @inheritParams grDevices::pdf
107#' @export
108with_pdf <- with_(pdf_dev, grDevices::dev.off)
109
110#' @rdname devices
111#' @export
112local_pdf <- local_(pdf_dev, grDevices::dev.off)
113
114#' @describeIn devices POSTSCRIPT device
115#' @inheritParams grDevices::postscript
116#' @param command the command to be used for \sQuote{printing}. Defaults
117#'   to \code{"default"}, the value of option \code{"printcmd"}. The
118#'   length limit is \code{2*PATH_MAX}, typically 8096 bytes on unix systems and
119#'   520 bytes on windows.
120#' @export
121with_postscript <- with_(postscript_dev, grDevices::dev.off)
122
123#' @rdname devices
124#' @export
125local_postscript <- local_(postscript_dev, grDevices::dev.off)
126
127#' @describeIn devices SVG device
128#' @inheritParams grDevices::svg
129#' @export
130with_svg <- with_(svg_dev, grDevices::dev.off)
131
132#' @rdname devices
133#' @export
134local_svg <- local_(svg_dev, grDevices::dev.off)
135
136#' @describeIn devices TIFF device
137#' @export
138with_tiff <- with_(tiff_dev, grDevices::dev.off)
139
140
141#' @rdname devices
142#' @export
143local_tiff <- local_(tiff_dev, grDevices::dev.off)
144
145#' @describeIn devices XFIG device
146#' @inheritParams grDevices::xfig
147#' @export
148with_xfig <- with_(xfig_dev, grDevices::dev.off)
149
150#' @rdname devices
151#' @export
152local_xfig <- local_(xfig_dev, grDevices::dev.off)
153
154#' @describeIn devices PNG device
155#' @export
156with_png <- with_(png_dev, grDevices::dev.off)
157
158#' @rdname devices
159#' @export
160local_png <- local_(png_dev, grDevices::dev.off)
161
162#' @describeIn devices JPEG device
163#' @export
164with_jpeg <- with_(jpeg_dev, grDevices::dev.off)
165
166#' @rdname devices
167#' @export
168local_jpeg <- local_(jpeg_dev, grDevices::dev.off)
169