1# whiskers-icons
2
3The pixel icons Whiskers may draw for what it remembers, and how to read them. A child who cannot read
4needs a picture on every card; these are the pictures.
5
6The icons are [shuqikhor/pixel-icons](https://github.com/shuqikhor/pixel-icons) by shuqikhor, vendored unchanged in
7[`third-party/pixel-icons`](../../third-party/pixel-icons/). **Not all of them are for a young child.** The
8decision is data, in [`allowlist.txt`](allowlist.txt), and it is the file to read when reviewing: one line per
9icon of the pack, `+` admitted or `-` excluded with the reason. The only reason to exclude one is that it does
10not suit a young child.
11
12## What is admitted and what is not (357 icons in the pack)
13
14| Category of the pack | Admitted | Excluded | Why those are out |
15|---|---:|---:|---|
16| Animals | 54 | 0 | |
17| Dinosaurs | 4 | 0 | |
18| Fruits, Vegetables and other Ingredients | 21 | 0 | |
19| Food and Drinks | 47 | 2 | `beer`, `wine`: alcohol |
20| Objects | 83 | 2 | `credit-card`, `dollar`: money |
21| Logos | 39 | 1 | `paypal`: money and payments |
22| Games | 7 | 0 | |
23| Pokemons | 18 | 0 | |
24| Memes | 5 | 4 | `stonks`, `take-my-money`: money; `sad-pepe`: not for a young child; `this-is-fine`: a room on fire could frighten |
25| UI | 44 | 26 | text-editor, file and mail buttons; warning signs (`alert-*`); `scissors`, `wrench`: not pictures of anything a child would tell Whiskers about |
26| **Total** | **322** | **35** | |
27
28The UI icons admitted (arrows, speaker, battery, star, thumbs, user, bell, ...) are for the app's own menu;
29a fact is given a picture of a *thing* (`IconId::depicts_a_thing`), never one of those. The pack has no
30check mark, so the green check is drawn by the app.
31
32## What is here
33
34| File | What |
35|---|---|
36| `allowlist.txt` | The curated list. Data, reviewed by the owner. |
37| `src/lib.rs` | `IconId`: the name of an admitted icon. The only way to make one is to name an admitted entry, so a fact cannot point at an icon that was not admitted. |
38| `src/allowlist.rs` | The reader of `allowlist.txt`. |
39| `src/raster.rs` | Reads the pack's SVG files into pixels, and refuses anything it cannot draw faithfully. |
40| `src/kotlin.rs`, `src/bin/gen-kotlin.rs` | Writes the admitted icons as Kotlin data for the app (`tools/build-core.sh` runs it). |
41| `examples/show.rs` | `cargo run -p whiskers-icons --example show -- cat bin` prints icons as text, to look at. |
42| `tests/pack.rs` | Holds the allowlist to the pack: every file decided once, every name a file, what does not suit a young child stays out, and what she loves is in. |