Skip to content

Commit

Permalink
Fixes #477 better handling of non available angles (#478)
Browse files Browse the repository at this point in the history
  • Loading branch information
pchelle authored Aug 16, 2023
1 parent 6c04cac commit eec205f
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 10 deletions.
22 changes: 22 additions & 0 deletions R/error-checks.R
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,26 @@
}
warning(messages$warningValuesNotWitinRange(x, left, right, strict))
return(invisible())
}


#' Check if an input angle is within available angles
#'
#' @param angle an input angle provided by user
#' @param availableAngles available angle for usage og `ggtext`
#' @import ospsuite.utils
#' @keywords internal
.checkIsInAvailableAngles <- function(angle, availableAngles = c(0,90,180,270)){
validateIsNumeric(angle)
newAngle <- tryCatch({
validateIsIncluded(angle, availableAngles)
return(angle)
},
error = function(e){
angleDifferences <- abs(angle - availableAngles)
closestAngle <- head(availableAngles[which(angleDifferences == min(angleDifferences))], 1)
warning(messages$warningAngleNotIncludedInAvailableAngles(angle, closestAngle))
return(closestAngle)
})
return(newAngle)
}
3 changes: 2 additions & 1 deletion R/font.R
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,9 @@ Font <- R6::R6Class(
}

.convertAngleToOrientation <- function(angle){
# use modulo 360 to in case minus angles were provided
return(
switch(as.character(angle),
switch(as.character(angle %% 360),
"0" = "upright",
"90" = "left-rotated",
"180" = "right-rotated",
Expand Down
6 changes: 6 additions & 0 deletions R/messages.R
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,11 @@ messages <- list(
ifelse(strict, "strictly ", ""),
"within [", paste0(range(left, right), collapse = ";"), "] range"
)
},
warningAngleNotIncludedInAvailableAngles = function(oldAngle, newAngle){
paste0(
"Angles other than 0, 90, 180 and 270 are not available for title, subtitles, caption and axis titles. ",
"Replacing '", oldAngle, "' by closest available value: '", newAngle, "'."
)
}
)
14 changes: 5 additions & 9 deletions R/plotconfiguration-label.R
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,12 @@ LabelConfiguration <- R6::R6Class(
for (labelName in names(labels)) {
label <- labels[[labelName]]
if(!isOfType(label, "Label")) {
labels[[labelName]] <- asLabel(text = label, font = currentTheme$fonts[[labelName]])
label <- asLabel(text = label, font = currentTheme$fonts[[labelName]])
}

# Check Chosen angle is available
availableAngles <- c(0,90,180,270)
if (!(labels[[labelName]]$font$angle %in% availableAngles)) {
labels[[labelName]]$font$angle <- availableAngles[which(abs(label$font$angle - availableAngles) == min(abs(label$font$angle - availableAngles)))][1]
warning("Angles other than 0, 90, 189 and 270 are not available for title, subtitles, caption and axis titles. Replacing by closest available value: ", label$font$angle,".")
}
private[[paste0(".", labelName)]] <- asLabel(labels[[labelName]])
# Check chosen angle is available
# use modulo 360 to in case minus angles were provided
label$font$angle <- .checkIsInAvailableAngles(label$font$angle %% 360)
private[[paste0(".", labelName)]] <- asLabel(label)
}
},

Expand Down
17 changes: 17 additions & 0 deletions man/dot-checkIsInAvailableAngles.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit eec205f

Please sign in to comment.