(solidFill, clrMap, phClr, warpObj)
| 709 | } |
| 710 | |
| 711 | export function getSolidFill(solidFill, clrMap, phClr, warpObj) { |
| 712 | if (!solidFill) return '' |
| 713 | |
| 714 | let color = '' |
| 715 | let clrNode |
| 716 | |
| 717 | if (solidFill['a:srgbClr']) { |
| 718 | clrNode = solidFill['a:srgbClr'] |
| 719 | color = getTextByPathList(clrNode, ['attrs', 'val']) |
| 720 | } |
| 721 | else if (solidFill['a:schemeClr']) { |
| 722 | clrNode = solidFill['a:schemeClr'] |
| 723 | const schemeClr = 'a:' + getTextByPathList(clrNode, ['attrs', 'val']) |
| 724 | color = getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) || '' |
| 725 | } |
| 726 | else if (solidFill['a:scrgbClr']) { |
| 727 | clrNode = solidFill['a:scrgbClr'] |
| 728 | const defBultColorVals = clrNode['attrs'] |
| 729 | const red = (defBultColorVals['r'].indexOf('%') !== -1) ? defBultColorVals['r'].split('%').shift() : defBultColorVals['r'] |
| 730 | const green = (defBultColorVals['g'].indexOf('%') !== -1) ? defBultColorVals['g'].split('%').shift() : defBultColorVals['g'] |
| 731 | const blue = (defBultColorVals['b'].indexOf('%') !== -1) ? defBultColorVals['b'].split('%').shift() : defBultColorVals['b'] |
| 732 | color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100)) |
| 733 | } |
| 734 | else if (solidFill['a:prstClr']) { |
| 735 | clrNode = solidFill['a:prstClr'] |
| 736 | const prstClr = getTextByPathList(clrNode, ['attrs', 'val']) |
| 737 | color = getColorName2Hex(prstClr) |
| 738 | } |
| 739 | else if (solidFill['a:hslClr']) { |
| 740 | clrNode = solidFill['a:hslClr'] |
| 741 | const defBultColorVals = clrNode['attrs'] |
| 742 | const hue = Number(defBultColorVals['hue']) / 100000 |
| 743 | const sat = Number((defBultColorVals['sat'].indexOf('%') !== -1) ? defBultColorVals['sat'].split('%').shift() : defBultColorVals['sat']) / 100 |
| 744 | const lum = Number((defBultColorVals['lum'].indexOf('%') !== -1) ? defBultColorVals['lum'].split('%').shift() : defBultColorVals['lum']) / 100 |
| 745 | const hsl2rgb = hslToRgb(hue, sat, lum) |
| 746 | color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b) |
| 747 | } |
| 748 | else if (solidFill['a:sysClr']) { |
| 749 | clrNode = solidFill['a:sysClr'] |
| 750 | const sysClr = getTextByPathList(clrNode, ['attrs', 'lastClr']) |
| 751 | if (sysClr) color = sysClr |
| 752 | } |
| 753 | |
| 754 | let isAlpha = false |
| 755 | const alpha = parseInt(getTextByPathList(clrNode, ['a:alpha', 'attrs', 'val'])) / 100000 |
| 756 | if (!isNaN(alpha)) { |
| 757 | const al_color = tinycolor(color) |
| 758 | al_color.setAlpha(alpha) |
| 759 | color = al_color.toHex8() |
| 760 | isAlpha = true |
| 761 | } |
| 762 | |
| 763 | const hueMod = parseInt(getTextByPathList(clrNode, ['a:hueMod', 'attrs', 'val'])) / 100000 |
| 764 | if (!isNaN(hueMod)) { |
| 765 | color = applyHueMod(color, hueMod, isAlpha) |
| 766 | } |
| 767 | const lumMod = parseInt(getTextByPathList(clrNode, ['a:lumMod', 'attrs', 'val'])) / 100000 |
| 768 | if (!isNaN(lumMod)) { |
no test coverage detected