From bcf5eb0beb318ab43ee3fcb7a4acb051089543c6 Mon Sep 17 00:00:00 2001 From: Max Derner Date: Thu, 28 Nov 2024 14:38:20 +0000 Subject: [PATCH] better docs --- README.md | 207 +++++++++++++++++- README_IMGS/Colour-example-output.gif | Bin 0 -> 77948 bytes README_IMGS/Grey-example-output.png | Bin 0 -> 2124 bytes README_IMGS/RGB-example-output.png | Bin 0 -> 2214 bytes README_IMGS/SimpleColour-example-output.png | Bin 0 -> 2181 bytes .../vertical-gradient-example-output.png | Bin 0 -> 16065 bytes src/colour_fx/eight_bit.py | 2 +- src/colour_fx/four_bit.py | 21 ++ 8 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 README_IMGS/Colour-example-output.gif create mode 100644 README_IMGS/Grey-example-output.png create mode 100644 README_IMGS/RGB-example-output.png create mode 100644 README_IMGS/SimpleColour-example-output.png create mode 100644 README_IMGS/vertical-gradient-example-output.png diff --git a/README.md b/README.md index 1cfd520..8be001b 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,214 @@ ![promo image](./README_IMGS/promo_img.png) -This a a project to develop a Python PyPI package that not just handles colour text output but can also apply sweet colour effects to your text. +This a project to develop a Python PyPI package that not just handles colour text output but can also apply colour effects such as gradients to your text. + + +# Introduction + +This package uses ANSI escape sequence select graphics renditions in order to apply colour and style to text and backgrounds. +How is this package any different to the others? +* 8 bit codes as well as 4 bit codes +* there is an ever expanding library of effects that can be applied to larger blocks of texts. +* super slick and simple interface + + +#### N.B. +Different terminals render colours differently, some terminals don't even render ANSI escape sequences at all, leading to a big mess of text. Playing around with ANSI escape codes is just that, it is playing. + +Some basic colours used sparingly to highlight different logging levels is fine but you can't get carried away with colours in serious projects. + +# Getting started + +First, there 4 bit and 8 bit codes available, import from `colour_fx.four_bit` and `colour_fx.eight_bit` respectively. However, both 8 bit and 4 bit codes can be used together without issue. + +#### N.B. +The objects in these modules only provide the the value to be used inside an ANSI escape sequence. They will need to be compiled into an ANSI escape sequence using `compile_ansi_code` which can be imported with `from colour_fx import compile_ansi_code`. + +## 4 bit example +```python +from colour_fx import compile_ansi_code +from colour_fx.four_bit import Colour, Style + +blinking_red_on_yellow = compile_ansi_code( + # add as many ANSI values as you like and receive a single ANSI + # escape sequence to handle all effects + Colour.RED, + Colour.YELLOW.bright_background, + Style.BLINK +) + +# an empty call to compile_ansi_code() gives the reset ANSI escape +# sequence which resets the way text is rendered +RESET = compile_ansi_code() + +print(F"HELLO, {blinking_red_on_yellow}WORLD{RESET}!") +``` +![Colour example output](./README_IMGS/Colour-example-output.gif) + +## 8 bit examples + +##### N.B. +8 bit colours are much more unpredictable in appearance between different terminals than 4 bit colours are. + +### `SimpleColour` +```python +from colour_fx import compile_ansi_code +from colour_fx.eight_bit import SimpleColour + +red_on_yellow = compile_ansi_code( + # add as many ANSI values as you like and receive a single ANSI + # escape sequence to handle all effects + SimpleColour.RED, + SimpleColour.YELLOW.bright_background, +) + +# an empty call to compile_ansi_code() gives the reset ANSI escape +# sequence which resets the way text is rendered +RESET = compile_ansi_code() + +print(F"HELLO, {red_on_yellow}WORLD{RESET}!") +``` +#### output +![SipleColour example output](./README_IMGS/SimpleColour-example-output.png) + +### `Grey` +```python +from colour_fx import compile_ansi_code +from colour_fx.eight_bit import Grey + +# Grey has 24 different shades available, here we use 12 to apply a +# gradient to the text "HELLO, WORLD!" +grey_array = [ + Grey.AA, + Grey.AC, + Grey.AE, + Grey.BB, + Grey.BD, + Grey.BF, + Grey.CA, + Grey.CC, + Grey.CE, + Grey.DB, + Grey.DD, + Grey.DF, +] + +# converting shades in grey_array to background colours and +# reversing order +grey_back = [grey.background for grey in reversed(grey_array)] + +# Compiling the values in grey_array and grey_back into codes +g = [ + compile_ansi_code( + grey_array[idx], + grey_back[idx], + ) + for idx in range(len(grey_array)) +] + +# an empty call to compile_ansi_code() gives the reset ANSI escape +# sequence which resets the way text is rendered +RESET = compile_ansi_code() + +# Accessing the individual ANSI escape codes in the list of codes to +# create a gradient +print( + F"{g[0]}H{g[1]}E{g[2]}L{g[3]}L{g[4]}O{g[5]}," + F"{g[6]} W{g[7]}O{g[8]}R{g[9]}L{g[10]}D{g[11]}!{RESET}" +) +``` +#### output +![Grey example output](./README_IMGS/Grey-example-output.png) + +### `RGB` +```python +from colour_fx import compile_ansi_code +from colour_fx.eight_bit import RGB + + +# RGB is different to the rest in that you need to pass values in and +# initialise the object rather than treating as an Enum +# RGB values should be an integer between 0 and 5 inclusive +spectrum = [ + RGB(5, 0, 0).foreground, + RGB(3, 2, 0).foreground, + RGB(1, 4, 0).foreground, + RGB(0, 4, 1).foreground, + RGB(0, 2, 3).foreground, + RGB(0, 0, 5).foreground, +] + +# compiling spectrum into ANSI escape sequences while adding a +# white background +s = [ + compile_ansi_code(spec, RGB(5, 5, 5).background) + for spec in spectrum +] + +# an empty call to compile_ansi_code() gives the reset ANSI escape +# sequence which resets the way text is rendered +RESET = compile_ansi_code() + +# Accessing individual elements of s allows a gradient +print(F"{s[0]}HE{s[1]}LL{s[2]}O,{s[3]} WO{s[4]}RL{s[5]}D!{RESET}") +``` + +#### output +![RGB output](./README_IMGS/RGB-example-output.png) + + +# Getting advanced +Now this is what inspired the creation of this package, being able to apply gradients to large blocks of text. + +## gradients +```python +from colour_fx.four_bit import Colour +from colour_fx.effects.gradients import create_vertical_gradient_field +from colour_fx.effects import apply_ansi_field + +rainbow_vals = [ + [Colour.RED], + [Colour.RED.bright], + [Colour.YELLOW.bright], + [Colour.GREEN], + [Colour.BLUE], + [Colour.BLUE.bright], + [Colour.MAGENTA], +] + +text_to_render = ( + " ::: ::: :::::::::: ::: ::: :::::::: ::: \n" + " :+: :+: :+: :+: :+: :+: :+: :+: \n" + " +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ \n" + " +#++:++#++ +#++:++# +#+ +#+ +#+ +:+ +#+ \n" + " +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ \n" + " #+# #+# #+# #+# #+# #+# #+# \n" + " ### ### ########## ########## ########## ######## ### \n" +) + +output_field = create_vertical_gradient_field( + template=text_to_render, + ansi_vals=rainbow_vals, + indent=3, + step=1, +) + +output_text = apply_ansi_field( + text=text_to_render, + field=output_field +) + +print(output_text) +``` +#### output +![vertical gradient example output](./README_IMGS/vertical-gradient-example-output.png) + # Working on this? Don't use Windows, install Python 3.9, then use `source ./tooling && venv-setup` to get yourself a venv set up with Python 3.9 (our lowest supported Python version) Use command `lint-cfx` to lint work, and command `test-cfx` to test work. -Use a branch in your name to do feature work, then submit a pull request. \ No newline at end of file +Use a branch in your name to do feature work, then submit a pull request. + diff --git a/README_IMGS/Colour-example-output.gif b/README_IMGS/Colour-example-output.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa841ec6d3816dd6d7c880487a8dae8d57850e81 GIT binary patch literal 77948 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̠NjuKw=OVL8t*`F0&@rBcCn-Ib`N=BE^&&z)AP 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

7~tSZPO>daMg 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 J!C=6l{{c-i5;y<= literal 0 HcmV?d00001 diff --git a/README_IMGS/Grey-example-output.png b/README_IMGS/Grey-example-output.png new file mode 100644 index 0000000000000000000000000000000000000000..041ec34a7331d5953e2ee7ecb6a2802dcb69e789 GIT binary patch literal 2124 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 Hu0mjfKoI?1 literal 0 HcmV?d00001 diff --git a/README_IMGS/vertical-gradient-example-output.png b/README_IMGS/vertical-gradient-example-output.png new file mode 100644 index 0000000000000000000000000000000000000000..db970928f1d2ce94b99db00dbc78d4c6c0f2aae5 GIT binary patch literal 16065 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 ansi_val: class RGB: - """Accepts rgb values between 0 and 6 inclusive, then produces ANSI + """Accepts rgb values between 0 and 5 inclusive, then produces ANSI values when requested via the foreground and background properties""" def __init__(self, r: Literal[0, 1, 2, 3, 4, 5], diff --git a/src/colour_fx/four_bit.py b/src/colour_fx/four_bit.py index 91a9d27..6fe98cc 100644 --- a/src/colour_fx/four_bit.py +++ b/src/colour_fx/four_bit.py @@ -6,6 +6,14 @@ # https://en.wikipedia.org/wiki/ANSI_escape_code#Control_Sequence_Introducer_commands # Skipping lots of stuff that's not widely supported class Style(str, Enum): + """Produces a 4 bit ANSI style code value which can be inserted + into an ANSI escape sequence. + + Example: + + ```python + blinking = Style.BLINK + ```""" BOLD = '1' FAINT = '2' UNDERLINE = '4' @@ -25,6 +33,19 @@ class Style(str, Enum): class Colour(str, Enum): + """Produces a 4 bit ANSI colour code value which can be inserted + into an ANSI escape sequence. + + Produces code for foreground colour by default. Access properties + `bright`, `background`, and `bright_background` in order to modify + as appropriate. + + Example: + ```python + red_foreground = Colour.RED + + blue_background = Colour.BLUE.background + """ BLACK = '30' RED = '31' GREEN = '32'