# Colours¶

## Configure¶

No configuration is required, as the object myColours provides the colours.

Colours are coded internally on 16 bits, with 5 bits for red, 6 bits for green and 5 bits for blue, or called RGB565.

rrrrr gggggg bbbbb
43210 543210 43210


The Red-Green-Blue components are 8-bit sized and 0x00..0xff scaled.

The monochrome e-paper screens provides two basic colours. Combining those two basic colours gives an additional shade, totalling three colours.

• white: basic colour;
• black: basic colour;
• grey: combined colour, one pixel black, another pixel white.

The colour e-paper screens provides three basic colours. Combining those three basic colours gives two additional shades, totalling six colours.

• white: basic colour;
• black: basic colour;
• red: basic colour.

and

• grey: combined colour, one pixel black, another pixel white;
• light red: combined colour, one pixel red, another pixel white;
• dark red: combined colour, one pixel red, another pixel black.

## Use¶

The monochrome or black-and-white screens feature three colours:

• myColours.white for white;
• myColours.black for black;
• myColours.grey for grey, with one pixel black and another white.

The colour screens bring three more colours:

• myColours.red for red;
• myColours.lightRed for light red, with one pixel red and another white;
• myColours.darkRed for dark red, with one pixel black and another red.

## Example¶

This is the core of the code from example Common_Colours.ino.

void displayPalette()
{
displayRGB(myColours.blue);
myScreen.setOrientation(myOrientation);
myScreen.setPenSolid(false);

uint16_t x0, y0, dx, dy, dz;

dz = min((myScreen.screenSizeX() * 10 / 50), (myScreen.screenSizeY() * 10 / 35));
dx = (myScreen.screenSizeX() - dz * 50 / 10) / 2;
dy = (myScreen.screenSizeY() - dz * 35 / 10) / 2;

y0 = dy + dz / 2;
x0 = dx + dz / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);
x0 = dx + dz * 4 / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);
x0 = dx + dz * 7 / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);

y0 = dy + dz * 4 / 2;
x0 = dx + dz / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);
x0 = dx + dz * 4 / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);
x0 = dx + dz * 7 / 2;
myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);

myScreen.setPenSolid(true);
myScreen.selectFont(fontSmall);

// Light red
x0 = dx + dz / 2;
y0 = dy + dz / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.lightRed);
myScreen.gText(x0, y0 + dz + 6, "light", myColours.red);

// Red
x0 = dx + dz * 4 / 2;
y0 = dy + dz / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.red);
myScreen.gText(x0, y0 + dz + 6, "colour", myColours.red);

// Dark-red
x0 = dx + dz * 7 / 2;
y0 = dy + dz / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.darkRed);
myScreen.gText(x0, y0 + dz + 6, "dark", myColours.red);

// White
x0 = dx + dz / 2;
y0 = dy + dz * 4 / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.white);
myScreen.gText(x0, y0 + dz + 6, "white", myColours.black);

// Grey
x0 = dx + dz * 4 / 2;
y0 = dy + dz * 4 / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.grey);
myScreen.gText(x0, y0 + dz + 6, "grey", myColours.black);

// Black
x0 = dx + dz * 7 / 2;
y0 = dy + dz * 4 / 2;
myScreen.dRectangle(x0, y0, dz, dz, myColours.black);
myScreen.gText(x0, y0 + dz + 6, "black", myColours.black);

myScreen.gText(0, 0, myScreen.WhoAmI(), myColours.black);

myScreen.flush();
}