@@ -18,64 +18,32 @@ var Color = require('../color');
1818/**
1919 * General colorscale function generator.
2020 *
21- * Can be called in two forms:
22- *
23- * (1) makeScaleFunction(scl, { cmin: 0, cmax: 20 })
24- * where cmin and cmax are used to compute the scale domain and range.
25- *
26- * (2) makeScaleFunction(scl, { domain: [0, 1, 3], range: [ 'red', 'green', 'blue'] })
27- * where domain and range are the precomputed values.
28- *
29- * @param {array } scl
30- * plotly.js colorscale array of arrays as found in fullData
21+ * @param {object } specs output of Colorscale.extractScale or precomputed domain, range.
22+ * - domain {array}
23+ * - range {array}
3124 *
3225 * @param {object } opts
33- * - cmin {number} minimum color value (used to clamp scale)
34- * - cmax {number} maximum color value (used to clamp scale)
35- * - domain {array} precomputed domain
36- * - range {array} precomputed range
3726 * - noNumericCheck {boolean} if true, scale func bypasses numeric checks
3827 * - returnArray {boolean} if true, scale func return 4-item array instead of color strings
3928 *
4029 * @return {function }
4130 */
42- module . exports = function makeScaleFunction ( scl , opts ) {
31+ module . exports = function makeColorScaleFunc ( specs , opts ) {
4332 opts = opts || { } ;
4433
45- var N = scl . length ;
46-
47- var domain , rangeOrig , i ;
48-
49- if ( opts . domain && opts . range ) {
50- domain = opts . domain ;
51- rangeOrig = opts . range ;
52- }
53- else {
54- var cmin = opts . cmin ,
55- cmax = opts . cmax ;
56-
57- domain = new Array ( N ) ;
58- rangeOrig = new Array ( N ) ;
59-
60- for ( i = 0 ; i < N ; i ++ ) {
61- var si = scl [ i ] ;
62-
63- domain [ i ] = cmin + si [ 0 ] * ( cmax - cmin ) ;
64- rangeOrig [ i ] = si [ 1 ] ;
65- }
66- }
67-
68- var range = new Array ( N ) ;
69-
70- for ( i = 0 ; i < N ; i ++ ) {
71- var rgba = tinycolor ( rangeOrig [ i ] ) . toRgb ( ) ;
34+ var domain = specs . domain ,
35+ range = specs . range ,
36+ N = range . length ,
37+ _range = new Array ( N ) ;
7238
73- range [ i ] = [ rgba . r , rgba . g , rgba . b , rgba . a ] ;
39+ for ( var i = 0 ; i < N ; i ++ ) {
40+ var rgba = tinycolor ( range [ i ] ) . toRgb ( ) ;
41+ _range [ i ] = [ rgba . r , rgba . g , rgba . b , rgba . a ] ;
7442 }
7543
7644 var _sclFunc = d3 . scale . linear ( )
7745 . domain ( domain )
78- . range ( range )
46+ . range ( _range )
7947 . clamp ( true ) ;
8048
8149 var noNumericCheck = opts . noNumericCheck ,
@@ -109,7 +77,7 @@ module.exports = function makeScaleFunction(scl, opts) {
10977
11078 sclFunc . domain = _sclFunc . domain ;
11179
112- sclFunc . range = function ( ) { return rangeOrig ; } ;
80+ sclFunc . range = function ( ) { return range ; } ;
11381
11482 return sclFunc ;
11583} ;
0 commit comments