未验证 提交 99e91e19 编写于 作者: X xxxwang1983 提交者: GitHub

This closes #1794, add new GetBaseColor function (#1798)

Co-authored-by: Nwangjingwei <wang.jingwei@joyratel.com>
上级 9a685537
...@@ -1369,14 +1369,11 @@ var ( ...@@ -1369,14 +1369,11 @@ var (
} }
) )
// getThemeColor provides a function to convert theme color or index color to // GetBaseColor returns the preferred hex color code by giving hex color code,
// RGB color. // indexed color, and theme color.
func (f *File) getThemeColor(clr *xlsxColor) string { func (f *File) GetBaseColor(hexColor string, indexedColor int, themeColor *int) string {
var RGB string if f.Theme != nil && themeColor != nil {
if clr == nil || f.Theme == nil { clrScheme := f.Theme.ThemeElements.ClrScheme
return RGB
}
if clrScheme := f.Theme.ThemeElements.ClrScheme; clr.Theme != nil {
if val, ok := map[int]*string{ if val, ok := map[int]*string{
0: &clrScheme.Lt1.SysClr.LastClr, 0: &clrScheme.Lt1.SysClr.LastClr,
1: &clrScheme.Dk1.SysClr.LastClr, 1: &clrScheme.Dk1.SysClr.LastClr,
...@@ -1388,21 +1385,35 @@ func (f *File) getThemeColor(clr *xlsxColor) string { ...@@ -1388,21 +1385,35 @@ func (f *File) getThemeColor(clr *xlsxColor) string {
7: clrScheme.Accent4.SrgbClr.Val, 7: clrScheme.Accent4.SrgbClr.Val,
8: clrScheme.Accent5.SrgbClr.Val, 8: clrScheme.Accent5.SrgbClr.Val,
9: clrScheme.Accent6.SrgbClr.Val, 9: clrScheme.Accent6.SrgbClr.Val,
}[*clr.Theme]; ok && val != nil { }[*themeColor]; ok && val != nil {
return strings.TrimPrefix(ThemeColor(*val, clr.Tint), "FF") return *val
} }
} }
if len(clr.RGB) == 6 { if len(hexColor) == 6 {
return clr.RGB return hexColor
}
if len(hexColor) == 8 {
return strings.TrimPrefix(hexColor, "FF")
}
if f.Styles != nil && f.Styles.Colors != nil && f.Styles.Colors.IndexedColors != nil &&
indexedColor < len(f.Styles.Colors.IndexedColors.RgbColor) {
return strings.TrimPrefix(f.Styles.Colors.IndexedColors.RgbColor[indexedColor].RGB, "FF")
} }
if len(clr.RGB) == 8 { if indexedColor < len(IndexedColorMapping) {
return strings.TrimPrefix(clr.RGB, "FF") return IndexedColorMapping[indexedColor]
} }
if f.Styles.Colors != nil && f.Styles.Colors.IndexedColors != nil && clr.Indexed < len(f.Styles.Colors.IndexedColors.RgbColor) { return hexColor
return strings.TrimPrefix(ThemeColor(strings.TrimPrefix(f.Styles.Colors.IndexedColors.RgbColor[clr.Indexed].RGB, "FF"), clr.Tint), "FF") }
// getThemeColor provides a function to convert theme color or index color to
// RGB color.
func (f *File) getThemeColor(clr *xlsxColor) string {
var RGB string
if clr == nil || f.Theme == nil {
return RGB
} }
if clr.Indexed < len(IndexedColorMapping) { if RGB = f.GetBaseColor(clr.RGB, clr.Indexed, clr.Theme); RGB != "" {
return strings.TrimPrefix(ThemeColor(IndexedColorMapping[clr.Indexed], clr.Tint), "FF") RGB = strings.TrimPrefix(ThemeColor(RGB, clr.Tint), "FF")
} }
return RGB return RGB
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册