| Type: | Package | 
| Title: | 'HTMLwidgets' Displaying Some 'WebGL' Shaders | 
| Version: | 0.2.0 | 
| Description: | Creates some 'WebGL' shaders. They can be used as the background of a 'Shiny' app. They also can be visualized in the 'RStudio' viewer pane or included in 'Rmd' documents, but this is pretty useless, besides contemplating them. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| Imports: | htmlwidgets | 
| Suggests: | shiny, htmltools | 
| URL: | https://github.com/stla/thorn | 
| BugReports: | https://github.com/stla/thorn/issues | 
| RoxygenNote: | 7.1.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2020-11-12 19:00:28 UTC; stla | 
| Author: | Stéphane Laurent [aut, cre], Scott Boyle [ctb, cph] ('Hamster.js' library), Mathew Groves [ctb, cph] ('PixiJS' library), Chad Engler [ctb, cph] ('PixiJS' library) | 
| Maintainer: | Stéphane Laurent <laurent_step@outlook.fr> | 
| Repository: | CRAN | 
| Date/Publication: | 2020-11-12 19:30:02 UTC | 
HTML widget displaying a shader
Description
Creates a HTML widget displaying a shader.
Usage
thorn(shader, width = NULL, height = NULL, elementId = NULL)
Arguments
| shader | the name of the shader, one of  | 
| width,height | a valid CSS measurement (like  | 
| elementId | a HTML id for the widget | 
Examples
library(thorn)
thorn("ikeda") # click on the shader to animate it
thorn("thorn") # you can also use the mouse wheel on this one
# four shaders ####
library(htmltools)
hw1 <- thorn("thorn-color", width = "50vw", height = "50vh")
hw2 <- thorn("ikeda", width = "50vw", height = "50vh")
hw3 <- thorn("sweet", width = "50vw", height = "50vh")
hw4 <- thorn("biomorph3", width = "50vw", height = "50vh")
if(interactive()){
  browsable(
    withTags(
      div(
        div(
          style = "position:absolute; top:0;",
          div(hw1, style="position:fixed; left:0;"),
          div(hw2, style="position:fixed; left:50vw;")
        ),
        div(
          style = "position:absolute; top:50vh;",
          div(hw3, style="position:fixed; left:0;"),
          div(hw4, style="position:fixed; left:50vw;")
        )
      )
    )
  )
}
Shiny bindings for thorn
Description
Output and render functions for using thorn within Shiny
applications and interactive Rmd documents.
Usage
thornOutput(outputId, width = "100%", height = "100%")
renderThorn(expr, env = parent.frame(), quoted = FALSE)
Arguments
| outputId | output variable to read from | 
| width,height | a valid CSS measurement (like  | 
| expr | an expression that generates a shader created with
 | 
| env | the environment in which to evaluate  | 
| quoted | logical, whether  | 
Examples
# use a shader as the background of a Shiny app ####
library(thorn)
library(shiny)
ui <- fluidPage(
  thornOutput("thorn", width = "100%", height = "100%"),
  br(),
  sidebarLayout(
    sidebarPanel(
      sliderInput(
        "slider", "Slide me",
        value = 10, min = 0, max = 20
      ),
      selectInput(
        "select", "Select me", choices = c("Choice 1", "Choice 2")
      )
    ),
    mainPanel()
  )
)
server <- function(input, output){
  output[["thorn"]] <- renderThorn({
    thorn("biomorph2")
  })
}
if(interactive()){
  shinyApp(ui, server)
}
# all available shaders ####
library(thorn)
library(shiny)
ui <- fluidPage(
  br(),
  sidebarLayout(
    sidebarPanel(
      wellPanel(
        radioButtons(
          "shader", "Shader",
          choices = c(
            "thorn",
            "thorn-color",
            "ikeda",
            "biomorph1",
            "biomorph2",
            "biomorph3",
            "sweet",
            "apollony",
            "smoke"
          )
        )
      )
    ),
    mainPanel(
      thornOutput("shader", width = "calc(100% - 15px)", height = "400px")
    )
  )
)
server <- function(input, output){
  output[["shader"]] <- renderThorn({
    thorn(input[["shader"]])
  })
}
if(interactive()){
  shinyApp(ui, server)
}