Standalone types/methods ported from treeform/chroma.
See chroma LICENSE.
Types
Color = object r*: float32 ## red (0-1) g*: float32 ## green (0-1) b*: float32 ## blue (0-1) a*: float32 ## alpha (0-1, 0 is fully transparent)
- Main color type, float32 points Source Edit
ColorHSL = object h*: float32 ## hue 0 to 360 s*: float32 ## saturation 0 to 100 l*: float32 ## lightness 0 to 100
- HSL attempts to resemble more perceptual color models Source Edit
ColorRGB = object r*: uint8 ## Red 0-255 g*: uint8 ## Green 0-255 b*: uint8 ## Blue 0-255
- Color stored as 3 uint8s Source Edit
ColorRGBA = object r*: uint8 ## Red 0-255 g*: uint8 ## Green 0-255 b*: uint8 ## Blue 0-255 a*: uint8 ## Alpha 0-255
- Color stored as 4 uint8s Source Edit
ColorRGBX = object r*: uint8 ## Red 0-a g*: uint8 ## Green 0-a b*: uint8 ## Blue 0-a a*: uint8 ## Alpha 0-255
- Premultiplied alpha RGBA color stored as 4 uint8s Source Edit
InvalidColor = object of ValueError
- Source Edit
Procs
proc `$`(c: Color): string {....raises: [], tags: [].}
- Returns colors as "(r, g, b, a)". Source Edit
proc color(c: ColorRGB): Color {.inline, ...raises: [], tags: [].}
- Convert ColorRGB to Color Source Edit
proc color(c: ColorRGBA): Color {.inline, ...raises: [], tags: [].}
- Convert ColorRGBA to Color Source Edit
proc color(r, g, b: float32; a: float32 = 1.0): Color {.inline, ...raises: [], tags: [].}
-
Creates from floats like:
- color(1,0,0) -> red
- color(0,1,0) -> green
- color(0,0,1) -> blue
- color(0,0,0,1) -> opaque black
- color(0,0,0,0) -> transparent black
func hash(c: ColorHSL): Hash {....raises: [], tags: [].}
- Hashes a ColorHSL - used in tables. Source Edit
func hash(c: ColorRGB): Hash {....raises: [], tags: [].}
- Hashes a ColorRGB - used in tables. Source Edit
func hash(c: ColorRGBA): Hash {....raises: [], tags: [].}
- Hashes a ColorRGB - used in tables. Source Edit
proc rgb(c: Color): ColorRGB {.inline, ...raises: [], tags: [].}
- Convert Color to ColorRGB Source Edit
proc rgb(r, g, b: uint8): ColorRGB {.inline, ...raises: [], tags: [].}
-
Creates from uint8s like:
- rgba(255,0,0) -> red
- rgba(0,255,0) -> green
- rgba(0,0,255) -> blue
proc rgba(c: Color): ColorRGBA {.inline, ...raises: [], tags: [].}
- Convert Color to ColorRGBA Source Edit
proc rgba(c: ColorRGBX): ColorRGBA {.inline, ...raises: [], tags: [].}
- Convert a premultiplied alpha RGBA to a straight alpha RGBA. Source Edit
proc rgba(r, g, b, a: uint8): ColorRGBA {.inline, ...raises: [], tags: [].}
-
Creates from uint8s like:
- rgba(255,0,0,255) -> red
- rgba(0,255,0,255) -> green
- rgba(0,0,255,255) -> blue
- rgba(0,0,0,255) -> opaque black
- rgba(0,0,0,0) -> transparent black
proc to[T: SomeColor](c: SomeColor; toColor: typedesc[T]): T {.inline.}
- Allows conversion of transformation of a color in any color space into any other color space. Source Edit
proc toHex(c: Color): string {....raises: [], tags: [].}
-
Formats color as hex (upper case):
- red -> FF0000
- blue -> 0000FF
- white -> FFFFFF
proc toHexAlpha(c: Color): string {....raises: [], tags: [].}
-
Formats color as hex (upper case):
- red -> FF0000FF
- blue -> 0000FFFF
- white -> FFFFFFFF
- opaque black -> 000000FF
- transparent black -> 00000000
proc toHtmlHex(c: Color): string {....raises: [], tags: [].}
-
Formats color as HTML hex (upper case):
- red -> #FF0000
- blue -> #0000FF
- white -> #FFFFFF
proc toHtmlHexTiny(c: Color): string {....raises: [], tags: [].}
-
Formats color as HTML 3 hex numbers (upper case):
- red -> #F00
- blue -> #00F
- white -> #FFF
proc toHtmlRgb(c: Color): string {....raises: [], tags: [].}
-
Parses colors in html's rgb format:
- red -> rgb(255, 0, 0)
- blue -> rgb(0,0,255)
- white -> rgb(255,255,255)
proc toHtmlRgba(c: Color): string {....raises: [], tags: [].}
-
Parses colors in html's rgb format:
- red -> rgb(255, 0, 0)
- blue -> rgb(0,0,255)
- white -> rgb(255,255,255)