caemor / epd-waveshare

Drivers for various EPDs from Waveshare and others
ISC License
226 stars 136 forks source link

The WaveshareDisplay associated color is not properly documented #122

Open peckpeck opened 2 years ago

peckpeck commented 2 years ago

Since it is an associated type, most driver implement it as the color type the epd supports.

However since there is a separate WaveshareThreeColorDisplay trait, some driver implement it only as a black and white color and let the 3 colors handling to WaveshareThreeColorDisplay (eg epd1in54c).

We should document and enforce the right behaviour to make sure this is coherent between various implementations.

caemor commented 2 years ago

Sounds like a good idea :+1:

peckpeck commented 2 years ago

I se no other reason than rendering speed to provide a specific trait fir 3 color versions, so I wrote this. Are you ok with this definition ?

DisplayColor should be the exact color type supported by the device. 

If you want to be able to let the user update only chromatic or bw buffer separately
in color mode sometimes, maybe to gain some refresh time, please implement
`WaveshareTheeColorDisplay`.

If you want to support a black and white only mode on a color EPD, because it may make the refresh 
faster, please implement `WaveshareDisplay` with the bicolor `Color` type on a bicolor 
version of your structure.

If it not any faster, the user can always use a TriColor `WaveshareDisplay` as a Bicolor 
one.

It implies that most (b) versions, ie tricolor, of existing display will work differently than they do currently, but they will be closer to what bw versions and octocolor versions provide. And it also means the definition will match their Display structure counterpart.

peckpeck commented 1 year ago

Any news on this ?

caemor commented 1 year ago

DisplayColor should be the exact color type supported by the device.

Please implement WaveshareThreeColorDisplay, if you want to allow that in color mode the user can sometimes only update chromatic or B/W buffers separately to maybe gain some refresh time.

Please implement WaveshareDisplay with the bicolor type Color on a bicolor version of your structure, if you want to support a pure black and white mode on a color EPD, as this can speed up the refresh.

If there is no faster way, the user can still use a TriColor WaveshareDisplay as Bicolor one.

Some small changes but the meaning hopefully should have stayed the same.

This also sounds like a good change to make the usage and development of this crate more intuitive.