Files
klammertext/sks/color/color.py
2026-07-31 19:45:31 +02:00

38 lines
1.2 KiB
Python

import re
import klammer_base
import kutil
class Color(klammer_base.Klammer_base):
def __init__(self, K):
# kutil.msg()
super().__init__(K)
match = re.compile(r'([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)', re.S).match(self.rgb)
if not match:
raise Exception(
'Error in color format: "{}". '.format(K.rgb)
+ 'Should be "<r>,<g>,<b>", where the components are [0,1].')
self.r, self.g, self.b = [float(c) for c in match.groups()]
def html(self):
result = 'rgb({},{},{})'.format(*[int(round(float(e*255))) for e in [self.r, self.g, self.b]])
#result = f"rgb({self.r},{self.g},{self.b}"
if self.text:
result = f'<span style="color:{result}">{self.text}</span>'
return result
def tex(self):
result = '\\color[rgb]{{{},{},{}}}'.format(self.r, self.g, self.b)
if self.text:
result = '{{{} {}}}'.format(result, self.text)
return result
def hex_color(name, hex):
def c(h):
return float(eval('0x' + h)) / 255.0
r = c(hex[:2])
g = c(hex[2:4])
b = c(hex[4:])
return '\\definecolor{{{}}}{{rgb}}{{{:.3f},{:.3f},{:.3f}}}'.format(
name, r, g, b)