@@ -373,6 +373,11 @@ drawing.pattern = function(sel, gd, patternID, shape, bgcolor, fgcolor, size, so
373
373
var fullID = 'p' + fullLayout . _uid + '-' + patternID ;
374
374
var width , height ;
375
375
376
+ // linear interpolation
377
+ var linearFn = function ( x , x0 , x1 , y0 , y1 ) {
378
+ return y0 + ( y1 - y0 ) * ( x - x0 ) / ( x1 - x0 ) ;
379
+ } ;
380
+
376
381
var path , linewidth , radius ;
377
382
var patternTag ;
378
383
var patternAttrs = { } ;
@@ -468,10 +473,6 @@ drawing.pattern = function(sel, gd, patternID, shape, bgcolor, fgcolor, size, so
468
473
if ( solidity < Math . PI / 4 ) {
469
474
radius = Math . sqrt ( solidity * size * size / Math . PI ) ;
470
475
} else {
471
- // linear interpolation
472
- var linearFn = function ( x , x0 , x1 , y0 , y1 ) {
473
- return y0 + ( y1 - y0 ) * ( x - x0 ) / ( x1 - x0 ) ;
474
- } ;
475
476
radius = linearFn ( solidity , Math . PI / 4 , 1.0 , size / 2 , size / Math . sqrt ( 2 ) ) ;
476
477
}
477
478
patternTag = 'circle' ;
@@ -561,6 +562,13 @@ drawing.initPatterns = function(gd) {
561
562
fullLayout . _patternUrlQueryParts = { } ;
562
563
} ;
563
564
565
+ drawing . getPatternAttr = function ( mp , i , dflt ) {
566
+ if ( mp && Lib . isArrayOrTypedArray ( mp ) ) {
567
+ return i < mp . length ? mp [ i ] : dflt ;
568
+ }
569
+ return mp ;
570
+ } ;
571
+
564
572
drawing . pointStyle = function ( s , trace , gd ) {
565
573
if ( ! s . size ( ) ) return ;
566
574
@@ -665,20 +673,13 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) {
665
673
666
674
// for legend - arrays will propagate through here, but we don't need
667
675
// to treat it as per-point.
668
- if ( Array . isArray ( gradientType ) ) {
676
+ if ( Lib . isArrayOrTypedArray ( gradientType ) ) {
669
677
gradientType = gradientType [ 0 ] ;
670
678
if ( ! gradientInfo [ gradientType ] ) gradientType = 0 ;
671
679
}
672
680
673
- var getPatternAttr = function ( mp , i , dflt ) {
674
- if ( mp && Array . isArray ( mp ) ) {
675
- if ( i < mp . length ) return mp [ i ] ;
676
- else return dflt ;
677
- }
678
- return mp ;
679
- } ;
680
681
var markerPattern = marker . pattern ;
681
- var patternShape = markerPattern && getPatternAttr ( markerPattern . shape , d . i , '' ) ;
682
+ var patternShape = markerPattern && drawing . getPatternAttr ( markerPattern . shape , d . i , '' ) ;
682
683
683
684
if ( gradientType && gradientType !== 'none' ) {
684
685
var gradientColor = d . mgc ;
@@ -691,13 +692,13 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) {
691
692
drawing . gradient ( sel , gd , gradientID , gradientType ,
692
693
[ [ 0 , gradientColor ] , [ 1 , fillColor ] ] , 'fill' ) ;
693
694
} else if ( patternShape ) {
694
- var patternBGColor = getPatternAttr ( markerPattern . bgcolor , d . i , null ) ;
695
- var patternSize = getPatternAttr ( markerPattern . size , d . i , 8 ) ;
696
- var patternSolidity = getPatternAttr ( markerPattern . solidity , d . i , 0.3 ) ;
697
- var perPointPattern = Array . isArray ( markerPattern . shape ) ||
698
- Array . isArray ( markerPattern . bgcolor ) ||
699
- Array . isArray ( markerPattern . size ) ||
700
- Array . isArray ( markerPattern . solidity ) ;
695
+ var patternBGColor = drawing . getPatternAttr ( markerPattern . bgcolor , d . i , null ) ;
696
+ var patternSize = drawing . getPatternAttr ( markerPattern . size , d . i , 8 ) ;
697
+ var patternSolidity = drawing . getPatternAttr ( markerPattern . solidity , d . i , 0.3 ) ;
698
+ var perPointPattern = Lib . isArrayOrTypedArray ( markerPattern . shape ) ||
699
+ Lib . isArrayOrTypedArray ( markerPattern . bgcolor ) ||
700
+ Lib . isArrayOrTypedArray ( markerPattern . size ) ||
701
+ Lib . isArrayOrTypedArray ( markerPattern . solidity ) ;
701
702
702
703
var patternID = trace . uid ;
703
704
if ( perPointPattern ) patternID += '-' + d . i ;
0 commit comments