@@ -368,7 +368,17 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {
368368 * @param {number } solidity: how solid lines of this pattern are
369369 * @param {string } prop: the property to apply to, 'fill' or 'stroke'
370370 */
371- drawing . pattern = function ( sel , gd , patternID , shape , bgcolor , fgcolor , size , solidity , prop ) {
371+ drawing . pattern = function ( sel , gd , patternID , shape , bgcolor , fgcolor , size , solidity , mcc , fillmode , prop ) {
372+ if ( mcc ) {
373+ if ( fillmode === 'overlay' ) {
374+ bgcolor = mcc ;
375+ fgcolor = Color . contrast ( bgcolor ) ;
376+ } else {
377+ bgcolor = undefined ;
378+ fgcolor = mcc ;
379+ }
380+ }
381+
372382 var fullLayout = gd . _fullLayout ;
373383 var fullID = 'p' + fullLayout . _uid + '-' + patternID ;
374384 var width , height ;
@@ -704,16 +714,17 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) {
704714 var patternFGColor = drawing . getPatternAttr ( markerPattern . fgcolor , d . i , null ) ;
705715 var patternSize = drawing . getPatternAttr ( markerPattern . size , d . i , 8 ) ;
706716 var patternSolidity = drawing . getPatternAttr ( markerPattern . solidity , d . i , 0.3 ) ;
707- var perPointPattern = Lib . isArrayOrTypedArray ( markerPattern . shape ) ||
708- Lib . isArrayOrTypedArray ( markerPattern . bgcolor ) ||
709- Lib . isArrayOrTypedArray ( markerPattern . size ) ||
710- Lib . isArrayOrTypedArray ( markerPattern . solidity ) ;
717+ var perPointPattern = d . mcc ||
718+ Lib . isArrayOrTypedArray ( markerPattern . shape ) ||
719+ Lib . isArrayOrTypedArray ( markerPattern . bgcolor ) ||
720+ Lib . isArrayOrTypedArray ( markerPattern . size ) ||
721+ Lib . isArrayOrTypedArray ( markerPattern . solidity ) ;
711722
712723 var patternID = trace . uid ;
713724 if ( perPointPattern ) patternID += '-' + d . i ;
714725
715726 drawing . pattern ( sel , gd , patternID , patternShape , patternBGColor , patternFGColor ,
716- patternSize , patternSolidity , 'fill' ) ;
727+ patternSize , patternSolidity , d . mcc , markerPattern . fillmode , 'fill' ) ;
717728 } else {
718729 Color . fill ( sel , fillColor ) ;
719730 }
0 commit comments