| OLD | NEW | 
|---|
| 1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 /// Utility library for creating web colors. | 5 /// Utility library for creating web colors. | 
| 6 | 6 | 
| 7 library sourcemaps.colors; | 7 library sourcemaps.colors; | 
| 8 | 8 | 
| 9 /// A web color. | 9 /// A web color. | 
| 10 abstract class Color { | 10 abstract class Color { | 
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 65     sb.write(', '); | 65     sb.write(', '); | 
| 66     writeInt(g); | 66     writeInt(g); | 
| 67     sb.write(', '); | 67     sb.write(', '); | 
| 68     writeInt(b); | 68     writeInt(b); | 
| 69     sb.write(', '); | 69     sb.write(', '); | 
| 70     sb.write(a); | 70     sb.write(a); | 
| 71     sb.write(')'); | 71     sb.write(')'); | 
| 72 | 72 | 
| 73     return sb.toString(); | 73     return sb.toString(); | 
| 74   } | 74   } | 
| 75 |  | 
| 76 } | 75 } | 
| 77 | 76 | 
| 78 /// A web color defined as HSV. | 77 /// A web color defined as HSV. | 
| 79 class HSV implements Color { | 78 class HSV implements Color { | 
| 80   final double h; | 79   final double h; | 
| 81   final double s; | 80   final double s; | 
| 82   final double v; | 81   final double v; | 
| 83 | 82 | 
| 84   /// Creates a color defined by the hue [h] in range 0..360 (360 excluded), | 83   /// Creates a color defined by the hue [h] in range 0..360 (360 excluded), | 
| 85   /// saturation [s] in range 0..1, and value [v] in range 0..1. | 84   /// saturation [s] in range 0..1, and value [v] in range 0..1. | 
| 86   const HSV(this.h, this.s, this.v); | 85   const HSV(this.h, this.s, this.v); | 
| 87 | 86 | 
| 88   String get toCss => toRGB(this).toCss; | 87   String get toCss => toRGB(this).toCss; | 
| 89 | 88 | 
| 90   static RGB toRGB(HSV hsv) { | 89   static RGB toRGB(HSV hsv) { | 
| 91     double h = hsv.h; | 90     double h = hsv.h; | 
| 92     double s = hsv.s; | 91     double s = hsv.s; | 
| 93     double v = hsv.v; | 92     double v = hsv.v; | 
| 94     if (s == 0.0) { | 93     if (s == 0.0) { | 
| 95       // Grey. | 94       // Grey. | 
| 96       return new RGB(v, v, v); | 95       return new RGB(v, v, v); | 
| 97     } | 96     } | 
| 98     h /= 60.0;  // Sector 0 to 5. | 97     h /= 60.0; // Sector 0 to 5. | 
| 99     int i = h.floor(); | 98     int i = h.floor(); | 
| 100     double f = h - i; // Factorial part of [h]. | 99     double f = h - i; // Factorial part of [h]. | 
| 101     double p = v * (1.0 - s); | 100     double p = v * (1.0 - s); | 
| 102     double q = v * (1.0 - s * f); | 101     double q = v * (1.0 - s * f); | 
| 103     double t = v * (1.0 - s * (1.0 - f )); | 102     double t = v * (1.0 - s * (1.0 - f)); | 
| 104     switch (i) { | 103     switch (i) { | 
| 105       case 0: | 104       case 0: | 
| 106         return new RGB(v, t, p); | 105         return new RGB(v, t, p); | 
| 107       case 1: | 106       case 1: | 
| 108         return new RGB(q, v, p); | 107         return new RGB(q, v, p); | 
| 109       case 2: | 108       case 2: | 
| 110         return new RGB(p, v, t); | 109         return new RGB(p, v, t); | 
| 111       case 3: | 110       case 3: | 
| 112         return new RGB(p, q, v); | 111         return new RGB(p, q, v); | 
| 113       case 4: | 112       case 4: | 
| 114         return new RGB(t, p, v); | 113         return new RGB(t, p, v); | 
| 115       default:    // case 5: | 114       default: // case 5: | 
| 116         return new RGB(v, p, q); | 115         return new RGB(v, p, q); | 
| 117     } | 116     } | 
| 118   } | 117   } | 
| 119 | 118 | 
| 120   String toString() => 'hsv($h,$s,$v)'; | 119   String toString() => 'hsv($h,$s,$v)'; | 
| 121 } | 120 } | 
| OLD | NEW | 
|---|