@@ -410,6 +410,12 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
410410 var path , linewidth , radius ;
411411 var patternTag ;
412412 var patternAttrs = { } ;
413+
414+ var fgC = tinycolor ( fgcolor ) ;
415+ var fgRGB = Color . tinyRGB ( fgC ) ;
416+ var fgAlpha = fgC . getAlpha ( ) ;
417+ var opacity = fgopacity * fgAlpha ;
418+
413419 switch ( shape ) {
414420 case '/' :
415421 width = size * Math . sqrt ( 2 ) ;
@@ -421,8 +427,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
421427 patternTag = 'path' ;
422428 patternAttrs = {
423429 'd' : path ,
424- 'opacity' : fgopacity ,
425- 'stroke' : fgcolor ,
430+ 'opacity' : opacity ,
431+ 'stroke' : fgRGB ,
426432 'stroke-width' : linewidth + 'px'
427433 } ;
428434 break ;
@@ -436,8 +442,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
436442 patternTag = 'path' ;
437443 patternAttrs = {
438444 'd' : path ,
439- 'opacity' : fgopacity ,
440- 'stroke' : fgcolor ,
445+ 'opacity' : opacity ,
446+ 'stroke' : fgRGB ,
441447 'stroke-width' : linewidth + 'px'
442448 } ;
443449 break ;
@@ -454,8 +460,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
454460 patternTag = 'path' ;
455461 patternAttrs = {
456462 'd' : path ,
457- 'opacity' : fgopacity ,
458- 'stroke' : fgcolor ,
463+ 'opacity' : opacity ,
464+ 'stroke' : fgRGB ,
459465 'stroke-width' : linewidth + 'px'
460466 } ;
461467 break ;
@@ -468,8 +474,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
468474 patternTag = 'path' ;
469475 patternAttrs = {
470476 'd' : path ,
471- 'opacity' : fgopacity ,
472- 'stroke' : fgcolor ,
477+ 'opacity' : opacity ,
478+ 'stroke' : fgRGB ,
473479 'stroke-width' : linewidth + 'px'
474480 } ;
475481 break ;
@@ -482,8 +488,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
482488 patternTag = 'path' ;
483489 patternAttrs = {
484490 'd' : path ,
485- 'opacity' : fgopacity ,
486- 'stroke' : fgcolor ,
491+ 'opacity' : opacity ,
492+ 'stroke' : fgRGB ,
487493 'stroke-width' : linewidth + 'px'
488494 } ;
489495 break ;
@@ -497,8 +503,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
497503 patternTag = 'path' ;
498504 patternAttrs = {
499505 'd' : path ,
500- 'opacity' : fgopacity ,
501- 'stroke' : fgcolor ,
506+ 'opacity' : opacity ,
507+ 'stroke' : fgRGB ,
502508 'stroke-width' : linewidth + 'px'
503509 } ;
504510 break ;
@@ -515,8 +521,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
515521 'cx' : width / 2 ,
516522 'cy' : height / 2 ,
517523 'r' : radius ,
518- 'opacity' : fgopacity ,
519- 'fill' : fgcolor
524+ 'opacity' : opacity ,
525+ 'fill' : fgRGB
520526 } ;
521527 break ;
522528 }
@@ -550,14 +556,19 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity,
550556 } ) ;
551557
552558 if ( bgcolor ) {
559+ var bgC = tinycolor ( bgcolor ) ;
560+ var bgRGB = Color . tinyRGB ( bgC ) ;
561+ var bgAlpha = bgC . getAlpha ( ) ;
562+
553563 var rects = el . selectAll ( 'rect' ) . data ( [ 0 ] ) ;
554564 rects . exit ( ) . remove ( ) ;
555565 rects . enter ( )
556566 . append ( 'rect' )
557567 . attr ( {
558568 'width' : width + 'px' ,
559569 'height' : height + 'px' ,
560- 'fill' : bgcolor
570+ 'fill' : bgRGB ,
571+ 'fill-opacity' : bgAlpha ,
561572 } ) ;
562573 }
563574
0 commit comments