From c5178fd90ea5e5f86a34c91b5a0ef55980753d79 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 15 Jul 2021 13:59:14 -0400 Subject: [PATCH] Extend foreground_color() utility to support custom dark/light colors --- netbox/dcim/svg.py | 2 +- netbox/utilities/utils.py | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/svg.py b/netbox/dcim/svg.py index 4841e3193..624496402 100644 --- a/netbox/dcim/svg.py +++ b/netbox/dcim/svg.py @@ -342,7 +342,7 @@ class CableTraceSVG: for i, label in enumerate(labels): self.cursor += LINE_HEIGHT text_coords = (self.center, self.cursor - LINE_HEIGHT / 2) - text_color = f'#{foreground_color(color)}' + text_color = f'#{foreground_color(color, dark="303030")}' text = Text(label, insert=text_coords, fill=text_color, class_='bold' if not i else []) link.add(text) diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index e3a1fcdd9..bc8d5fbea 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -44,16 +44,19 @@ def csv_format(data): return ','.join(csv) -def foreground_color(bg_color): +def foreground_color(bg_color, dark='000000', light='ffffff'): """ - Return the ideal foreground color (black or white) for a given background color in hexadecimal RGB format. + Return the ideal foreground color (dark or light) for a given background color in hexadecimal RGB format. + + :param dark: RBG color code for dark text + :param light: RBG color code for light text """ bg_color = bg_color.strip('#') r, g, b = [int(bg_color[c:c + 2], 16) for c in (0, 2, 4)] if r * 0.299 + g * 0.587 + b * 0.114 > 186: - return '000000' + return dark else: - return 'ffffff' + return light def dynamic_import(name):