8000 Merge pull request #4952 from jepler/colorconverter-bgr · domdfcoding/circuitpython@54cadb9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 54cadb9

Browse files
authored
Merge pull request adafruit#4952 from jepler/colorconverter-bgr
ColorConverter: Add "BGR" color modes.
2 parents 59a0dda + d83a21b commit 54cadb9

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

locale/circuitpython.pot

Lines changed: 0 additions & 5 deletions
8000
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,6 @@ msgstr ""
147147
msgid "%q must of type %q"
148148
msgstr ""
149149

150-
#: shared-bindings/keypad/KeyMatrix.c shared-bindings/keypad/Keys.c
151-
#: shared-bindings/keypad/ShiftRegisterKeys.c
152-
msgid "%q must store bytes"
153-
msgstr ""
154-
155150
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
156151
#: shared-bindings/canio/Match.c
157152
msgid "%q out of range"

shared-bindings/displayio/__init__.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB565, DISPLAY
7070
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB565_SWAPPED, DISPLAYIO_COLORSPACE_RGB565_SWAPPED);
7171
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB555, DISPLAYIO_COLORSPACE_RGB555);
7272
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB555_SWAPPED, DISPLAYIO_COLORSPACE_RGB555_SWAPPED);
73+
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, BGR565, DISPLAYIO_COLORSPACE_BGR565);
74+
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, BGR565_SWAPPED, DISPLAYIO_COLORSPACE_BGR565_SWAPPED);
75+
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, BGR555, DISPLAYIO_COLORSPACE_BGR555);
76+
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, BGR555_SWAPPED, DISPLAYIO_COLORSPACE_BGR555_SWAPPED);
7377

7478
//| class Colorspace:
7579
//| """The colorspace for a `ColorConverter` to operate in"""
@@ -95,6 +99,10 @@ MAKE_ENUM_MAP(displayio_colorspace) {
9599
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, RGB565_SWAPPED),
96100
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, RGB555),
97101
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, RGB555_SWAPPED),
102+
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR565),
103+
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR565_SWAPPED),
104+
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR555),
105+
MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR555_SWAPPED),
98106
};
99107
STATIC MP_DEFINE_CONST_DICT(displayio_colorspace_locals_dict, displayio_colorspace_locals_table);
100108

shared-bindings/displayio/__init__.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ typedef enum {
4646
DISPLAYIO_COLORSPACE_RGB555,
4747
DISPLAYIO_COLORSPACE_RGB565_SWAPPED,
4848
DISPLAYIO_COLORSPACE_RGB555_SWAPPED,
49+
DISPLAYIO_COLORSPACE_BGR565,
50+
DISPLAYIO_COLORSPACE_BGR555,
51+
DISPLAYIO_COLORSPACE_BGR565_SWAPPED,
52+
DISPLAYIO_COLORSPACE_BGR555_SWAPPED,
4953
} displayio_colorspace_t;
5054

5155
typedef bool (*display_bus_bus_reset)(mp_obj_t bus);

shared-module/displayio/ColorConverter.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,28 @@ void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _d
176176
}
177177
break;
178178

179+
case DISPLAYIO_COLORSPACE_BGR565_SWAPPED:
180+
pixel = __builtin_bswap16(pixel);
181+
MP_FALLTHROUGH;
182+
case DISPLAYIO_COLORSPACE_BGR565: {
183+
uint32_t b8 = (pixel >> 11) << 3;
184+
uint32_t g8 = ((pixel >> 5) << 2) & 0xff;
185+
uint32_t r8 = (pixel << 3) & 0xff;
186+
pixel = (r8 << 16) | (g8 << 8) | b8;
187+
}
188+
break;
189+
190+
case DISPLAYIO_COLORSPACE_BGR555_SWAPPED:
191+
pixel = __builtin_bswap16(pixel);
192+
MP_FALLTHROUGH;
193+
case DISPLAYIO_COLORSPACE_BGR555: {
194+
uint32_t b8 = (pixel >> 10) << 3;
195+
uint32_t g8 = ((pixel >> 5) << 3) & 0xff;
196+
uint32_t r8 = (pixel << 3) & 0xff;
197+
pixel = (r8 << 16) | (g8 << 8) | b8;
198+
}
199+
break;
200+
179201
case DISPLAYIO_COLORSPACE_RGB888:
180202
break;
181203
}

0 commit comments

Comments
 (0)
0