Rev 85935 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/grid/man/grid.convert.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2013 R Core Team% Distributed under GPL 2 or later\name{grid.convert}\alias{convertUnit}\alias{convertX}\alias{convertY}\alias{convertWidth}\alias{convertHeight}\title{ Convert Between Different grid Coordinate Systems }\description{These functions take a unit object and convert it to anequivalentunit object in a different coordinate system.}\usage{convertX(x, unitTo, valueOnly = FALSE)convertY(x, unitTo, valueOnly = FALSE)convertWidth(x, unitTo, valueOnly = FALSE)convertHeight(x, unitTo, valueOnly = FALSE)convertUnit(x, unitTo,axisFrom = "x", typeFrom = "location",axisTo = axisFrom, typeTo = typeFrom,valueOnly = FALSE)}\arguments{\item{x}{ A unit object. }\item{unitTo}{ The coordinate system to convert the unit to.See the \code{\link{unit}} function for valid coordinate systems.}\item{axisFrom}{ Either \code{"x"} or \code{"y"} to indicatewhether the unit object represents a value in the x- ory-direction. }\item{typeFrom}{ Either \code{"location"} or \code{"dimension"}to indicate whether the unit object represents a location or alength. }\item{axisTo}{ Same as \code{axisFrom}, but applies to the unit objectthat is to be created. }\item{typeTo}{ Same as \code{typeFrom}, but applies to the unit objectthat is to be created. }\item{valueOnly}{ A logical indicating. If \code{TRUE} thenthe function does not return a unit object, but rather only theconverted numeric values. }}\details{The \code{convertUnit} function allows for general-purposeconversions. The other four functions are just more convenientfront-ends to it for the most common conversions.The conversions occur within the current viewport.It is not currently possible to convert to all valid coordinate systems(e.g., \code{"strwidth"} or \code{"grobwidth"}). I'm not sure if all of theseare impossible, they just seem implausible at this stage.In normal usage of grid, these functions should not be necessary.If you want to express a location or dimension in inches ratherthan user coordinates then you should simply do something like\code{unit(1, "inches")} rather than something like\code{unit(0.134, "native")}.In some cases, however, it is necessary for the user toperform calculations on a unit value and this function becomesnecessary. In such cases, please take note of the warning below.}\value{A unit object in the specified coordinate system(unless \code{valueOnly} is \code{TRUE} in which casethe returned value is a numeric).}\author{ Paul Murrell }\section{Warning}{The conversion is only valid for the current device size.If the device is resized then at least some conversions willbecome invalid. For example, suppose that I create a unitobject as follows: \code{oneinch <- convertUnit(unit(1, "inches"),"native")}. Now if I resize the device, the unit object in\code{oneinch} no longer corresponds to a physical length of 1 inch.}\seealso{ \code{\link{unit}} }\examples{## A tautologyconvertX(unit(1, "inches"), "inches")## The physical unitsconvertX(unit(2.54, "cm"), "inches")convertX(unit(25.4, "mm"), "inches")convertX(unit(72.27, "points"), "inches")convertX(unit(1/12*72.27, "picas"), "inches")convertX(unit(72, "bigpts"), "inches")convertX(unit(1157/1238*72.27, "dida"), "inches")convertX(unit(1/12*1157/1238*72.27, "cicero"), "inches")convertX(unit(65536*72.27, "scaledpts"), "inches")convertX(unit(1/2.54, "inches"), "cm")convertX(unit(1/25.4, "inches"), "mm")convertX(unit(1/72.27, "inches"), "points")convertX(unit(1/(1/12*72.27), "inches"), "picas")convertX(unit(1/72, "inches"), "bigpts")convertX(unit(1/(1157/1238*72.27), "inches"), "dida")convertX(unit(1/(1/12*1157/1238*72.27), "inches"), "cicero")convertX(unit(1/(65536*72.27), "inches"), "scaledpts")pushViewport(viewport(width=unit(1, "inches"),height=unit(2, "inches"),xscale=c(0, 1),yscale=c(1, 3)))## Location versus dimensionconvertY(unit(2, "native"), "inches")convertHeight(unit(2, "native"), "inches")## From "x" to "y" (the conversion is via "inches")convertUnit(unit(1, "native"), "native",axisFrom="x", axisTo="y")## Convert several values at onceconvertX(unit(c(0.5, 2.54), c("npc", "cm")),c("inches", "native"))popViewport()## Convert a complex unitconvertX(unit(1, "strwidth", "Hello"), "native")}\keyword{dplot}