diff --git a/README.md b/README.md index ecd5383..50cf630 100644 --- a/README.md +++ b/README.md @@ -7,53 +7,31 @@ bitbank@pobox.com

What is it?
A frustration-free eink library suitable for Arduino, Linux, or random embedded systems with no OS.
+
Why did you write it?
I've always had an interest in graphics and displays. After experimenting with eink, I looked around for code to control them. All I found was half-implemented demos and frustration. I wrote my own support for eink panels into my OneBitDisplay library, but it made it a bit unwieldy. Eink is in a class by itself, so I decided to create a unique library for working with these panels. The main goal was to reduce frustration and make an efficient set of functions that work with a large collection of panels in a consistent way.

What's special about it?
-It's the first eink library I've ever seen which can drive the displays without needing a local copy of the image data. In other words, it allows you to create complex graphics without needing any RAM. I also created a very effective font compression scheme which allows you to fit large, beautiful fonts in a small amount of space. This allows tiny MCUs to do things that would normally require a more capable chip.
-
-Includes the unique feature that the I2C init function can optionally detect the display address (0x3C or 0x3D) and the controller type (SSD1306, SH1106 or SH1107).
-
-I try to support as many OLEDs as I can. I was able to justify buying a bunch -of different sized SSD1306 displays because they're around $2 each. A generous patron -donated money so that I could purchase Pimoroni's 128x128 OLED and add support for it. -It uses the SH1107 controller and behaves very similarly to the SH1106. +It's the first eink library I've ever seen which can draw text and graphics without needing a local copy of the image data. There are some limitations to working that way, but it opens the possibility to control large displays on MCUs with nearly no memory. It also supports keeping a local copy of the graphics in RAM (the normal way to work with eink). By offering both options, this library is unique.

Features:
---------
-- C API and C++ wrapper class which mimics the Adafruit_GFX API +- C API and C++ wrapper class with all of the usual graphics functions
+- Supports a large number of panels in a consistent way, without tons of repeated code
- Supports any number of simultaneous displays of any type (mix and match)
-- Optionally detect the display address and type (I2C only)
-- Supports 72x40, 96x16, 64x32, 128x32, 128x64, 64x128 (SH1107), 128x128 (SH1107) and 132x64 (SH1106) OLED display sizes
-- Supports 96x68 HX1230, 84x48 Nokia 5110 and 128x64 ST7567/UC1701 mono LCDs
-- Supports 144x168 and 400x240 Sharp Memory LCDs
-- Supports the ST7302 low power LCD (250x122, 2.13") -- *NEW* supports a few popular epd (e-ink) panels -- Virtual displays of any size which can be drawn across multiple physical displays -- Flexible copy function can convert the internal pixel format to any output format and orientation -- Drive displays from I2C, SPI or any GPIO pins (virtual I2C/SPI)
-- Includes 5 sizes of fixed fonts (6x8, 8x8, 12x16, 16x16, 16x32)
-- Text drawing at any fractional scale (e.g. 1.25x), and any of 4 directions/rotations
-- Can use Adafruit_GFX format bitmap fonts (proportional and fixed)
-- Deferred rendering allows preparing a back buffer, then displaying it (usually faster)
-- Text scrolling features (vertical and horizontal)
+- Includes a unique compressed bitmap font format
- Text cursor position with optional line wrap
- A function to load a Windows BMP file
-- Pixel drawing on SH1106/7 without needing backing RAM
- Optimized Bresenham line drawing
- Optimized Bresenham outline and filled ellipse drawing
- Optimized outline and filled rectangle drawing
-- Optional backing RAM (needed for some text and drawing functions)
-- 16x16 Tile/Sprite drawing at any angle.
-- Run full frame animations at high frame rates with a simple API

-This code depends on the BitBang_I2C library. You can download it here:
-https://github.com/bitbank2/BitBang_I2C +This code depends on the Group5 data compression library. You can download it here:
+https://github.com/bitbank2/Group5
See the Wiki for help getting started
-https://github.com/bitbank2/OneBitDisplay/wiki
+https://github.com/bitbank2/bb_eink/wiki

![Fonts](/fonts_opt.jpg?raw=true "fonts")