summaryrefslogtreecommitdiff
path: root/examples/demos/src/main/scala/Splash.scala
blob: 05cbbc27cc82d1c634f0a261b4c074f4fcb88299 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.lang.Math._

import org.scalajs.dom

import scalajs.js.annotation.JSExport

@JSExport
object Splash extends{
  @JSExport
  def main(canvas: dom.HTMLCanvasElement) = {

    def clear() = {
      canvas.width = canvas.parentElement.clientWidth
      canvas.height = canvas.parentElement.clientHeight
    }
    clear()

    val brush =
      canvas.getContext("2d")
            .asInstanceOf[dom.CanvasRenderingContext2D]

    def h = canvas.height
    def w = canvas.width

    var x = 0.0
    type Graph = (String, Double => Double)
    val graphs = Seq[Graph](
      ("red", sin),
      ("green", x => abs(x % 4 - 2) - 1),
      ("blue", x => sin(x/12) * sin(x))
    ).zipWithIndex
    dom.setInterval(() => {
      x = (x + 1) % w; if (x == 0) clear()
      for (((color, f), i) <- graphs) {
        val offset = h / 3 * (i + 0.5)
        val y = f(x / w * 75) * h / 30
        brush.fillStyle = color
        brush.fillRect(x, y + offset, 3, 3)
      }
    }, 20)
  }
}