summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/resources/index-dev.html19
-rw-r--r--src/main/resources/index-opt.html18
-rw-r--r--src/main/scala/example/ScalaJSExample.scala43
3 files changed, 80 insertions, 0 deletions
diff --git a/src/main/resources/index-dev.html b/src/main/resources/index-dev.html
new file mode 100644
index 0000000..3c03bc1
--- /dev/null
+++ b/src/main/resources/index-dev.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Example Scala.js application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body style="margin: 0px">
+
+<div>
+ <canvas style="display: block" id="canvas" width="255" height="255"/>
+</div>
+
+<script type="text/javascript" src="../example-fastopt.js"></script>
+<script type="text/javascript" src="/workbench.js"></script>
+<script>
+ ScalaJSExample().main(document.getElementById('canvas'));
+</script>
+</body>
+</html>
diff --git a/src/main/resources/index-opt.html b/src/main/resources/index-opt.html
new file mode 100644
index 0000000..4f1f784
--- /dev/null
+++ b/src/main/resources/index-opt.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Example Scala.js application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body style="margin: 0px">
+
+<div>
+ <canvas style="display: block" id="canvas" width="255" height="255"/>
+</div>
+
+<script type="text/javascript" src="../example-opt.js"></script>
+<script>
+ ScalaJSExample().main(document.getElementById('canvas'));
+</script>
+</body>
+</html>
diff --git a/src/main/scala/example/ScalaJSExample.scala b/src/main/scala/example/ScalaJSExample.scala
new file mode 100644
index 0000000..e7e5326
--- /dev/null
+++ b/src/main/scala/example/ScalaJSExample.scala
@@ -0,0 +1,43 @@
+package example
+import scala.scalajs.js.annotation.JSExport
+import org.scalajs.dom
+import scala.util.Random
+
+case class Point(x: Int, y: Int){
+ def +(p: Point) = Point(x + p.x, y + p.y)
+ def /(d: Int) = Point(x / d, y / d)
+}
+
+@JSExport
+object ScalaJSExample {
+ @JSExport
+ def main(canvas: dom.HTMLCanvasElement): Unit = {
+ val ctx = canvas.getContext("2d")
+ .asInstanceOf[dom.CanvasRenderingContext2D]
+
+ var count = 0
+ var p = Point(0, 0)
+ val corners = Seq(Point(255, 255), Point(0, 255), Point(128, 0))
+
+ def clear() = {
+ ctx.fillStyle = "black"
+ ctx.fillRect(0, 0, 255, 255)
+ }
+
+ def run = for (i <- 0 until 10){
+ if (count % 3000 == 0) clear()
+ count += 1
+ p = (p + corners(Random.nextInt(3))) / 2
+
+ val height = 512.0 / (255 + p.y)
+ val r = (p.x * height).toInt
+ val g = ((255-p.x) * height).toInt
+ val b = p.y
+ ctx.fillStyle = s"rgb($g, $r, $b)"
+
+ ctx.fillRect(p.x, p.y, 1, 1)
+ }
+
+ dom.setInterval(() => run, 50)
+ }
+}