Skip to content

Commit 3bab776

Browse files
authored
Merge pull request #6318 from plotly/pattern-stroke-opacity
Fix exporting patterns with transparent color
2 parents 4e262a5 + ed53eb4 commit 3bab776

File tree

4 files changed

+27
-15
lines changed

4 files changed

+27
-15
lines changed

draftlogs/6318_fix.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Fix drawing & exporting patterns with transparent color [[#6318](https://github.com/plotly/plotly.js/pull/6318)]

src/components/drawing/index.js

+26-15
Original file line numberDiff line numberDiff line change
@@ -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

test/image/baselines/pattern_bars.png

327 Bytes
Loading
88 Bytes
Loading

0 commit comments

Comments
 (0)