mirror of https://git.meli.delivery/meli/meli
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Iterate on 2x4 pixel blocks from a bitmap and return a unicode braille character for each block. The iterator holds four lines of bitmaps encoded as `u16` numbers in swapped bit order, like the `xbm` graphics format. The bitmap is split to `u16` columns. ```rust /* BEE is the contents of a 48x48 xbm file. xbm is a C-like array of 8bit values, and * each pair was manually (macro-ually?) condensed into a single 16bit value. Each 3 items * represent one pixel row. */ const BEE: [u16; 3 * 48] = [ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0000, 0xe003, 0x0000, 0x0000, 0xfc00, 0x0000, 0x0000, 0x3f00, 0x0000, 0x00e0, 0x0f00, 0x0000, 0x00f8, 0x0300, 0x0000, 0x00fe, 0x0000, 0x0080, 0x8f0d, 0x0000, 0x00e0, 0xff7f, 0x0000, 0x00f8, 0xffff, 0x0300, 0x00fc, 0xffff, 0x0f00, 0x00fe, 0xffff, 0x3f00, 0x00ff, 0xffff, 0xff00, 0xc0ff, 0xffff, 0xff01, 0xc0ff, 0xff77, 0xff07, 0xf0f9, 0xffff, 0xff07, 0xf0f0, 0xffef, 0xfd0f, 0xf0e0, 0xffff, 0xfb1f, 0xf0e1, 0xffc1, 0xfb0f, 0xe0f3, 0xffc3, 0xf307, 0xc0f7, 0xffc0, 0xe100, 0xc0ff, 0xd9e0, 0x3f00, 0x803e, 0xc1f8, 0x5f00, 0x8076, 0x43f4, 0xbf18, 0x806c, 0x43fc, 0xf325, 0x0009, 0xc3df, 0x4326, 0x001a, 0xcf3f, 0x622d, 0x0034, 0xff01, 0x2224, 0x00f0, 0xff00, 0x8312, 0x00a0, 0x5700, 0x0309, 0x00f8, 0x1b00, 0x8f06, 0x0048, 0x6000, 0xcd03, 0x0018, 0x6624, 0xdf00, 0x0030, 0x820f, 0x3f00, 0x00c0, 0xf0ff, 0x3f00, 0x0080, 0x03fe, 0x7f00, 0x0000, 0x7ce0, 0x0f00, 0x0000, 0x809f, 0x1c00, 0x0000, 0x0000, 0x3800, 0x0000, 0x0000, 0x7000, 0x0000, 0x0000, 0xe000, ]; for lines in BEE.chunks(12) { let iter = ui::BraillePixelIter::from(lines); for b in iter { print!("{}", b); } println!(""); } ``` Output: ```text ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣶⠾⠛⠉⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣀⣠⣔⣾⣛⡛⠉⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣀⠀⠀⠀⠀ ⠀⠀⣤⣿⠟⠻⣿⣿⣿⣿⣿⣿⣿⣯⢿⣯⡿⣿⣿⣿⣷⣆⠀⠀ ⠀⠀⠻⣿⣦⡀⣼⣿⣿⣿⣿⣿⠯⠉⠉⣿⡿⠘⢿⣿⠿⠟⠁⠀ ⠀⠀⠀⢹⠹⣟⢿⡍⣧⠈⠁⡟⠀⣔⣾⣿⣿⠿⣯⣢⡀⡠⢄⠀ ⠀⠀⠀⠀⠑⠜⣦⣀⣿⣶⣤⣿⠟⠛⠓⠉⣹⠀⠰⢃⢊⠗⡸⠀ ⠀⠀⠀⠀⠀⢰⡚⠞⢛⡑⢣⡅⠀⡀⢀⠀⣟⣶⡀⣴⠵⠊⠀⠀ ⠀⠀⠀⠀⠀⠀⠉⠲⠬⣀⣒⡚⠻⠿⢶⣶⣿⣿⠿⠄⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠈⠀⠙⢷⣄⠀⠀⠀ ``` |
4 years ago | |
---|---|---|
benches | 5 years ago | |
debian | 4 years ago | |
debug_printer | 5 years ago | |
melib | 4 years ago | |
scripts | 5 years ago | |
src | 4 years ago | |
testing | 4 years ago | |
tests | 4 years ago | |
text_processing | 4 years ago | |
ui | 4 years ago | |
.gdbinit | 5 years ago | |
.gitignore | 5 years ago | |
COPYING | 5 years ago | |
Cargo.lock | 4 years ago | |
Cargo.toml | 4 years ago | |
Makefile | 4 years ago | |
README | 5 years ago | |
meli-themes.5 | 4 years ago | |
meli.1 | 4 years ago | |
meli.conf.5 | 4 years ago | |
rustfmt.toml | 5 years ago | |
sample-config | 4 years ago |
README
__ __/ \__ / \__/ \__ . \__/ \__/ \ , _ , _ ___ │ ' / \__ \__/ │' `│ `┒ .' ` │ │ \__/ \__/ \ │ │ │ |────' │ │ \__/ \__/ │ / `.___, /\__ / \__/ ,-. \_/ terminal mail user agent {|||)< / \ `-' DOCUMENTATION ============= After installing meli, see meli(1) and meli.conf(5) for documentation. BUILDING ======== meli requires rust 1.39 and rust's package manager, Cargo. Information on how to get it on your system can be found here: https://doc.rust-lang.org/cargo/getting-started/installation.html With Cargo available, the project can be built with # make The resulting binary will then be found under target/release/meli Run: # make install to install the binary and man pages. This requires root, so I suggest you override the default paths and install it in your $HOME: # make PREFIX=$HOME/.local install See meli(1) and meli.conf(5) for documentation. You can build and run meli with one command: # cargo run --release While the project is in early development, meli will only be developed for the linux kernel and respected linux distributions. Support for more UNIX-like OSes is on the roadmap. BUILDING IN DEBIAN ================== Building with Debian's packaged cargo might require the installation of these two packages: librust-openssl-sys-dev and librust-libdbus-sys-dev BUILDING WITH NOTMUCH ===================== To use the optional notmuch backend feature, you must have libnotmuch installed in your system. In Debian-like systems, install the "libnotmuch" package. To build with notmuch support, prepend the environment variable "MELI_FEATURES='notmuch'" to your make invocation: # MELI_FEATURES="notmuch" make or if building directly with cargo, use the flag '--features="notmuch"'. BUILDING WITH JMAP ===================== To build with JMAP support, prepend the environment variable "MELI_FEATURES='jmap'" to your make invocation: # MELI_FEATURES="jmap" make or if building directly with cargo, use the flag '--features="jmap"'. DEVELOPMENT =========== Development builds can be built and/or run with # cargo build # cargo run There is a debug/tracing log feature that can be enabled by using the flag `--feature debug-tracing` after uncommenting the features in `Cargo.toml`. The logs are printed in stderr, thus you can run meli with a redirection (i.e `2> log`) Code style follows the default rustfmt profile. CONFIG ====== meli by default looks for a configuration file in this location: # $XDG_CONFIG_HOME/meli/config You can run meli with arbitrary configuration files by setting the MELI_CONFIG environment variable to their locations, ie: # MELI_CONFIG=./test_config cargo run TESTING ======= How to run specific tests: # cargo test -p {melib, ui, meli} (-- --nocapture) (--test test_name) PROFILING ========= # perf record -g target/debug/bin # perf script | stackcollapse-perf | rust-unmangle | flamegraph > perf.svg