Окно печати с кварцем () задает xpos или обход xpos - PullRequest
0 голосов
/ 18 сентября 2019

В Ubuntu вы можете сделать x11(xpos, ypos), чтобы указать положение окна.

Опция A

Возможно ли сделать это в MacOS, используя quartz()?

Опция B

Большинство моих поисков подсказывает, что вариант А невозможен, поэтому можем ли мы его пропустить?

Я пытаюсь переписать исходную функцию quartz, но она не работает, так или иначе не в состоянии выполнить d <- check.options(new, name.opt = ".quartz.Options", envir = .Quartzenv) потому что "no .Quartzenv" и если я настроил условия для получения q_options <<- quartz.options(), он завершится неудачно при вызове .External, сказав, что не может выполнить C_quartz.

Что происходит?

    quartz <- function (title, width, height, pointsize, family, antialias,
                        type, file = NULL, bg, canvas, dpi, xpos=NULL, ypos=NULL)
    {
      if (missing(type) || type %in% c("", "native", "Cocoa")) {
        check <- Sys.getenv("_R_CHECK_SCREEN_DEVICE_", "")
        msg <- "screen devices should not be used in examples etc"
        if (identical(check, "stop"))
          stop(msg, domain = NA)
        else if (identical(check, "warn"))
          warning(msg, immediate. = TRUE, noBreaks. = TRUE,
                  domain = NA)
      }

      if(!is.null(xpos)){
        warning("MacOS quartz does not accept `xpos`. Not using parameter")
      }
      if(!is.null(xpos)){
        warning("MacOS quartz does not accept `ypos`. Not using parameter")
      }

      new <- list()
      if (!missing(title))
        new$title <- title
      if (!missing(width))
        new$width <- width
      if (!missing(height))
        new$height <- height
      if (!missing(pointsize))
        new$pointsize <- pointsize
      if (!missing(family))
        new$family <- family
      if (!missing(antialias))
        new$antialias <- antialias
      if (!missing(bg))
        new$bg <- bg
      if (!missing(canvas))
        new$canvas <- canvas
      if (!missing(type))
        new$type <- type
      if (!missing(dpi))
        new$dpi <- dpi
      if (!grDevices:::checkIntFormat(new$title))
        stop("invalid 'title'")
      if (!is.null(file) && !grDevices:::checkIntFormat(file))
        stop("invalid 'file'")
      d <- check.options(new, name.opt = ".quartz.Options", envir = .Quartzenv)
      .External(C_Quartz, d$type, file, d$width, d$height, d$pointsize,
                d$family, d$antialias, d$title, d$bg, d$canvas, if (is.na(d$dpi)) NULL else d$dpi)
      invisible()
    }
    assign("quartz", quartz, envir = .GlobalEnv)
...