Skip to content

Commit 86df3c0

Browse files
committed
changed color helpers, and other things
1 parent 4826b87 commit 86df3c0

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

src/main/scala/scala/scalajs/extensions/Extensions.scala

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,33 @@ class EasySeq[T](jsLength: js.Number, jsApply: js.Number => T) extends Seq[T]{
1818
}
1919
}
2020

21-
21+
case class Color(r: Int, g: Int, b: Int){
22+
override def toString() = s"rgb($r, $g, $b)"
23+
def *(c: Color) = Color(r * c.r, g * c.g, b * c.b)
24+
def +(c: Color) = Color(r + c.r, g + c.g, b + c.b)
25+
}
2226
object Color{
23-
def rgb(r: Int, g: Int, b: Int) = s"rgb($r, $g, $b)"
24-
val White = rgb(255, 255, 255)
25-
val Red = rgb(255, 0, 0)
26-
val Green = rgb(0, 255, 0)
27-
val Blue = rgb(0, 0, 255)
28-
val Cyan = rgb(0, 255, 255)
29-
val Magenta = rgb(255, 0, 255)
30-
val Yellow = rgb(255, 255, 0)
31-
val Black = rgb(0, 0, 0)
27+
28+
val d = "[0-9a-zA-Z]"
29+
val RGB = "rgb\\((\\d+), (\\d+), (\\d+)\\)".r
30+
val ShortHex = s"#($d)($d)($d)".r
31+
val LongHex = s"#($d$d)($d$d)($d$d)".r
32+
def hex(x: String) = Integer.parseInt(x, 16)
33+
def apply(s: String): Color = {
34+
s match{
35+
case RGB(r, g, b) => Color(r.toInt, g.toInt, b.toInt)
36+
case ShortHex(r, g, b) => Color(hex(r) * 16, hex(g) * 16, hex(b) * 16)
37+
case LongHex(r, g, b) => Color(hex(r), hex(g), hex(b))
38+
}
39+
}
40+
val White = Color(255, 255, 255)
41+
val Red = Color(255, 0, 0)
42+
val Green = Color(0, 255, 0)
43+
val Blue = Color(0, 0, 255)
44+
val Cyan = Color(0, 255, 255)
45+
val Magenta = Color(255, 0, 255)
46+
val Yellow = Color(255, 255, 0)
47+
val Black = Color(0, 0, 0)
3248
val all = Seq(
3349
White,
3450
Red,

src/main/scala/scala/scalajs/extensions/package.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,23 @@ package object extensions {
2323
prepCircle(x, y, r)
2424
ctx.stroke()
2525
}
26-
def prepPath(points: (js.Number, js.Number)*) = {
26+
def prepPath(points: Seq[(js.Number, js.Number)], closed: Boolean = true) = {
2727
ctx.beginPath()
28-
ctx.moveTo(points.last._1, points.last._2)
28+
if (closed) ctx.moveTo(points.last._1, points.last._2)
2929
for(p <- points){
3030
ctx.lineTo(p._1, p._2)
3131
}
3232
}
3333
def fillPath(points: (js.Number, js.Number)*) = {
34-
prepPath(points:_*)
34+
prepPath(points)
3535
ctx.fill()
3636
}
3737
def strokePath(points: (js.Number, js.Number)*) = {
38-
prepPath(points:_*)
38+
prepPath(points)
39+
ctx.stroke()
40+
}
41+
def strokePathOpen(points: (js.Number, js.Number)*) = {
42+
prepPath(points, closed = false)
3943
ctx.stroke()
4044
}
4145
}

src/main/scala/scala/scalajs/js/lib.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,7 @@ trait NodeListOf[TNode <: Node] extends NodeList {
16841684

16851685
}
16861686

1687-
trait XMLSerializer extends js.Object {
1687+
class XMLSerializer extends js.Object {
16881688
def serializeToString(target: Node): js.String = ???
16891689
}
16901690

@@ -1945,6 +1945,7 @@ object Option extends js.Object {
19451945
/* ??? ConstructorMember(FunSignature(List(),List(FunParam(Ident(text),true,Some(TypeRef(CoreType(string),List()))), FunParam(Ident(value),true,Some(TypeRef(CoreType(string),List()))), FunParam(Ident(defaultSelected),true,Some(TypeRef(CoreType(boolean),List()))), FunParam(Ident(selected),true,Some(TypeRef(CoreType(boolean),List())))),Some(TypeRef(TypeName(HTMLOptionElement),List())))) */
19461946
}
19471947

1948+
19481949
object Image extends js.Object {
19491950
/* ??? ConstructorMember(FunSignature(List(),List(FunParam(Ident(width),true,Some(TypeRef(CoreType(number),List()))), FunParam(Ident(height),true,Some(TypeRef(CoreType(number),List())))),Some(TypeRef(TypeName(HTMLImageElement),List())))) */
19501951
}
@@ -2471,7 +2472,7 @@ object Worker extends js.Object {
24712472

24722473
}
24732474
package js{
2474-
object JsGlobals extends js.GlobalScope {
2475+
object globals extends js.GlobalScope {
24752476
def parseInt(string: js.String, radix: js.Number): js.Number = ???
24762477
def parseFloat(string: js.String, radix: js.Number): js.Number = ???
24772478
var ondragend: js.Function1[DragEvent, js.Any] = _

0 commit comments

Comments
 (0)