Skip to content

Commit

Permalink
kit: fixed bug in Colour hex to int conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
marcuswendt committed Sep 1, 2010
1 parent 546b769 commit b088bb4
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 39 deletions.
2 changes: 1 addition & 1 deletion .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<classpathentry kind="src" path="src.gl"/>
<classpathentry kind="src" path="src.vision"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="lib/jogl/gluegen-rt.jar"/>
Expand Down
2 changes: 1 addition & 1 deletion build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
ANT_OPTS="-Xmx1G" ant p5libs
ANT_OPTS="-Xmx1G" ant dist
======================================================================= -->
<project name="FieldKit">
<project name="FieldKit" default="dist">

<property name="build.dir" location="build" />
<property name="ant.dir" value="res/ant" />
Expand Down
11 changes: 7 additions & 4 deletions src/field/kit/colour/Colour.scala
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ class Colour(var r:Float, var g:Float, var b:Float, var a:Float) extends Logger
if(this.v < 0f) this.v *= -1
if(this.v > 1f) this.v %= 1f


val rgb = Colour.hsvToRGB(h,s,v)
this.r = rgb._1
this.g = rgb._2
Expand Down Expand Up @@ -249,15 +248,19 @@ class Colour(var r:Float, var g:Float, var b:Float, var a:Float) extends Logger
/**
* Attempts to interpret this String to set this Colours components
* @return itself
*/
*/
final def :=(s:String):Colour = {
if(s == null) return this

// String is a hexadecimal representation of this colour
if(s(0) == '#') {
val intValue = Integer.parseInt(s.substring(1, s.length), 16)
this.:=(intValue)
val intValue = Integer.parseInt(s.substring(1, s.length), 16)
fromRGB(intValue)

// REMINDER:
// Cant do this because it would interpret the hex-color as greyscale when it only contains blue
// this.:=(intValue)

// String is a text description of this colour e.g. r: 255, g: 128, b: 64
} else {
val iter = DECIMAL findAllIn s
Expand Down
101 changes: 68 additions & 33 deletions test/field/kit/test/unit/ColourTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,38 +13,73 @@ import field.kit.colour.Colour

/** unit tests for the <code>Colour</code> class */
class ColourTest extends TestCase {

def testStringConstructor() = {
var c:Colour = null
c = Colour("25")
val n = 25/ 255f
assertEquals(n, c.r, 0)
assertEquals(n, c.g, 0)
assertEquals(n, c.b, 0)
assertEquals(n, c.a, 0)

def testStringConstructor() = {
var c: Colour = null
c = Colour("25")
val n = 25 / 255f
assertEquals(n, c.r, 0)
assertEquals(n, c.g, 0)
assertEquals(n, c.b, 0)
assertEquals(n, c.a, 0)

c = Colour("0.9 0.1")
assertEquals(c.r, 0.9f, 0)
assertEquals(c.g, 0.9f, 0)
assertEquals(c.b, 0.9f, 0)
assertEquals(c.a, 0.1f, 0)

c = Colour("0.1 0.2 0.3")
assertEquals(c.r, 0.1f, 0)
assertEquals(c.g, 0.2f, 0)
assertEquals(c.b, 0.3f, 0)
assertEquals(c.a, 1.0f, 0)

c = Colour("0.1 0.2 0.3 0.4")
assertEquals(c.r, 0.1f, 0)
assertEquals(c.g, 0.2f, 0)
assertEquals(c.b, 0.3f, 0)
assertEquals(c.a, 0.4f, 0)

c = Colour("R1.0 G0.1254902 B0.96862745 A1.0")
assertEquals(1.0f, c.r, 0)
assertEquals(0.1254902f, c.g, 0)
assertEquals(0.96862745f, c.b, 0)
assertEquals(1.0f, c.a, 0)
}

def testHexString() = {
var c: Colour = null

c = Colour("#FFFFFF")
assertEquals(c.r, 1.0, 0)
assertEquals(c.g, 1.0, 0)
assertEquals(c.b, 1.0, 0)
assertEquals(c.a, 1.0, 0)

c = Colour("#FF0000")
assertEquals(c.r, 1.0, 0)
assertEquals(c.g, 0.0, 0)
assertEquals(c.b, 0.0, 0)
assertEquals(c.a, 1.0, 0)

c = Colour("#00FF00")
assertEquals(c.r, 0.0, 0)
assertEquals(c.g, 1.0, 0)
assertEquals(c.b, 0.0, 0)
assertEquals(c.a, 1.0, 0)

c = Colour("#0000FF")
assertEquals(c.r, 0.0, 0)
assertEquals(c.g, 0.0, 0)
assertEquals(c.b, 1.0, 0)
assertEquals(c.a, 1.0, 0)

c = Colour("0.9 0.1")
assertEquals(c.r, 0.9f, 0)
assertEquals(c.g, 0.9f, 0)
assertEquals(c.b, 0.9f, 0)
assertEquals(c.a, 0.1f, 0)

c = Colour("0.1 0.2 0.3")
assertEquals(c.r, 0.1f, 0)
assertEquals(c.g, 0.2f, 0)
assertEquals(c.b, 0.3f, 0)
assertEquals(c.a, 1.0f, 0)

c = Colour("0.1 0.2 0.3 0.4")
assertEquals(c.r, 0.1f, 0)
assertEquals(c.g, 0.2f, 0)
assertEquals(c.b, 0.3f, 0)
assertEquals(c.a, 0.4f, 0)

c = Colour("R1.0 G0.1254902 B0.96862745 A1.0")
assertEquals(1.0f, c.r, 0)
assertEquals(0.1254902f, c.g, 0)
assertEquals(0.96862745f, c.b, 0)
assertEquals(1.0f, c.a, 0)
}
// yellow
c = Colour("#FFFF00")
assertEquals(c.r, 1.0, 0)
assertEquals(c.g, 1.0, 0)
assertEquals(c.b, 0.0, 0)
assertEquals(c.a, 1.0, 0)
}
}

0 comments on commit b088bb4

Please sign in to comment.