From 966724f20ec119720962e410c1a6162ddf6c78f3 Mon Sep 17 00:00:00 2001 From: Kelvin DeCosta Date: Fri, 24 Jul 2020 02:19:38 +0300 Subject: [PATCH] [docs/formats] Add Formats documentation --- .../formats/overview/colorization.webp | Bin 0 -> 9964 bytes docs/formats/ansi.md | 44 ++++++++++ docs/formats/html.md | 43 ++++++++++ docs/formats/index.md | 81 ++++++++++++++++++ docs/snippets/references/formatting.md | 3 + 5 files changed, 171 insertions(+) create mode 100644 docs/assets/images/diagrams/formats/overview/colorization.webp create mode 100644 docs/formats/ansi.md create mode 100644 docs/formats/html.md create mode 100644 docs/formats/index.md create mode 100644 docs/snippets/references/formatting.md diff --git a/docs/assets/images/diagrams/formats/overview/colorization.webp b/docs/assets/images/diagrams/formats/overview/colorization.webp new file mode 100644 index 0000000000000000000000000000000000000000..d807a46bdc11ec60eab69a02b946ad3f1e19e703 GIT binary patch literal 9964 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 element. + +??? abstract "Source" + Refer to the [`color` function][picharsso.format.html.HtmlFormatter.color] + for more information. + +### Unification + +Elements of each row of the `text_matrix` are joined to form +lines. +All lines are wrapped in a `
` elemen each. +The entire text output is wrapped in a `
` element. + +??? abstract "Source" + Refer to the [`unify` function][picharsso.format.html.HtmlFormatter.unify] + for more information. diff --git a/docs/formats/index.md b/docs/formats/index.md new file mode 100644 index 0000000..45cb816 --- /dev/null +++ b/docs/formats/index.md @@ -0,0 +1,81 @@ +--- +title: "Formats - Picharsso" +description: "An overview of the output formats of Picharsso" +--- + +# Formats + +After an `image` is coverted to a `text_matrix`, +it must be formatted before it can be output. + +## Procedure + +There are steps involved in this process that are common to +all `formatters`. +Picharsso defines a [`BaseFormatter`][picharsso.format.base.BaseFormatter] +that abstracts this general procedure. + +### Initialization + +This step assigns values to the parameters for the algorithms. + +#### Color + +The `colorize` parameter controls whether the output text must include the colors from the image. + +Consider the following image: + +--8<-- "docs/snippets/embed/subjects/instagram.html" + +Here's what it should look like: + +--8<-- "docs/snippets/chunks/format/colorize.md" + +#### Vectorization + +The `vcolor` attribute is a vectorized version of the `color` method. + +### Translation + +The elements of the `text_matrix` are encoded in the Unicode standard. + +Depending on the output format, these characters must be translated accordingly. + +??? abstract "Source" + Refer to the [`translate` function][picharsso.format.base.BaseFormatter.translate] for more information. + +### Colorization + +Colors are pooled from the original `image` by resizing it to the dimensions of the output text. +This ensures that each character has a unique pixel, and thus, a unique color. + +With the vectorized `color` method, `vcolor`, the elements of the `text_matrix` +are transformed into strings of text that represent +the original character as well as its color. + +
+ Text matrix colorization +
+ +??? abstract "Source" + Refer to the [`color` function][picharsso.format.base.BaseFormatter.color] for more information. + +### Unification + +Finally, the `text_matrix` is unified into a single string of text. +This text, when viewed through a means supporting the particular format, +should look like the original image. + +??? abstract "Source" + Refer to the [`unify` function][picharsso.format.base.BaseFormatter.unify] for more information. + +## Varities + +All the following formats are implemented by a `formatter` +which inherits from the [`BaseFormatter`][picharsso.format.base.BaseFormatter]. + +### ANSI +: The [ANSI format](/formats/ansi/) is implemented by the [`AnsiFormater`][picharsso.format.ansi.AnsiFormatter]. + +### HTML +: The [HTML format](/formats/html/) is implemented by the [`HtmlFormater`][picharsso.format.html.HtmlFormatter]. diff --git a/docs/snippets/references/formatting.md b/docs/snippets/references/formatting.md new file mode 100644 index 0000000..75bdcd0 --- /dev/null +++ b/docs/snippets/references/formatting.md @@ -0,0 +1,3 @@ +!!! question "Formatting" + Refer to the [procedure](/formats/#procedure) outlined in the Formats documentation + for an overview of the **steps common to all formats**.