aboutsummaryrefslogtreecommitdiffstats
path: root/src/color.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/color.js')
-rw-r--r--src/color.js101
1 files changed, 49 insertions, 52 deletions
diff --git a/src/color.js b/src/color.js
index 9d77d4e..8f47f70 100644
--- a/src/color.js
+++ b/src/color.js
@@ -1,108 +1,105 @@
+/* globals fullHex, compToHex */
+
// Module for color convertions
-SVG.Color = function(color) {
+SVG.Color = function (color) {
var match
-
- // initialize defaults
+
+ // initialize defaults
this.r = 0
this.g = 0
this.b = 0
-
- if(!color) return
-
- // parse color
+
+ if (!color) return
+
+ // parse color
if (typeof color === 'string') {
if (SVG.regex.isRgb.test(color)) {
- // get rgb values
- match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace,''))
-
- // parse numeric values
+ // get rgb values
+ match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, ''))
+
+ // parse numeric values
this.r = parseInt(match[1])
this.g = parseInt(match[2])
this.b = parseInt(match[3])
-
} else if (SVG.regex.isHex.test(color)) {
- // get hex values
+ // get hex values
match = SVG.regex.hex.exec(fullHex(color))
- // parse numeric values
+ // parse numeric values
this.r = parseInt(match[1], 16)
this.g = parseInt(match[2], 16)
this.b = parseInt(match[3], 16)
-
}
-
} else if (typeof color === 'object') {
this.r = color.r
this.g = color.g
this.b = color.b
-
}
-
}
SVG.extend(SVG.Color, {
// Default to hex conversion
- toString: function() {
+ toString: function () {
return this.toHex()
- }
+ },
// Build hex value
-, toHex: function() {
- return '#'
- + compToHex(this.r)
- + compToHex(this.g)
- + compToHex(this.b)
- }
+ toHex: function () {
+ return '#' +
+ compToHex(this.r) +
+ compToHex(this.g) +
+ compToHex(this.b)
+ },
// Build rgb value
-, toRgb: function() {
+ toRgb: function () {
return 'rgb(' + [this.r, this.g, this.b].join() + ')'
- }
+ },
// Calculate true brightness
-, brightness: function() {
- return (this.r / 255 * 0.30)
- + (this.g / 255 * 0.59)
- + (this.b / 255 * 0.11)
- }
+ brightness: function () {
+ return (this.r / 255 * 0.30) +
+ (this.g / 255 * 0.59) +
+ (this.b / 255 * 0.11)
+ },
// Make color morphable
-, morph: function(color) {
+ morph: function (color) {
this.destination = new SVG.Color(color)
return this
- }
+ },
// Get morphed color at given position
-, at: function(pos) {
- // make sure a destination is defined
+ at: function (pos) {
+ // make sure a destination is defined
if (!this.destination) return this
- // normalise pos
+ // normalise pos
pos = pos < 0 ? 0 : pos > 1 ? 1 : pos
- // generate morphed color
+ // generate morphed color
return new SVG.Color({
- r: ~~(this.r + (this.destination.r - this.r) * pos)
- , g: ~~(this.g + (this.destination.g - this.g) * pos)
- , b: ~~(this.b + (this.destination.b - this.b) * pos)
+ r: ~~(this.r + (this.destination.r - this.r) * pos),
+ g: ~~(this.g + (this.destination.g - this.g) * pos),
+ b: ~~(this.b + (this.destination.b - this.b) * pos)
})
}
-
+
})
// Testers
// Test if given value is a color string
-SVG.Color.test = function(color) {
+SVG.Color.test = function (color) {
color += ''
- return SVG.regex.isHex.test(color)
- || SVG.regex.isRgb.test(color)
+ return SVG.regex.isHex.test(color) ||
+ SVG.regex.isRgb.test(color)
}
// Test if given value is a rgb object
-SVG.Color.isRgb = function(color) {
- return color && typeof color.r == 'number'
- && typeof color.g == 'number'
- && typeof color.b == 'number'
+SVG.Color.isRgb = function (color) {
+ return color && typeof color.r === 'number' &&
+ typeof color.g === 'number' &&
+ typeof color.b === 'number'
}
// Test if given value is a color
-SVG.Color.isColor = function(color) {
+SVG.Color.isColor = function (color) {
return SVG.Color.isRgb(color) || SVG.Color.test(color)
-} \ No newline at end of file
+}