Skip to content

Commit 4604a69

Browse files
Move dither parameter to ColorConverter constructor and parameter
1 parent 3ab6a23 commit 4604a69

File tree

6 files changed

+56
-38
lines changed

6 files changed

+56
-38
lines changed

shared-bindings/displayio/ColorConverter.c

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,18 @@
5151
// TODO(tannewt): Add support for other color formats.
5252
//|
5353
STATIC mp_obj_t displayio_colorconverter_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
54-
mp_arg_check_num(n_args, kw_args, 0, 0, false);
54+
mp_arg_check_num(n_args, kw_args, 0, 1, false);
5555

5656
displayio_colorconverter_t *self = m_new_obj(displayio_colorconverter_t);
5757
self->base.type = &displayio_colorconverter_type;
58-
common_hal_displayio_colorconverter_construct(self);
58+
59+
bool dither = false;
60+
61+
if (n_args > 0) {
62+
dither = mp_obj_is_true(pos_args[0]);
63+
}
64+
65+
common_hal_displayio_colorconverter_construct(self, dither);
5966

6067
return MP_OBJ_FROM_PTR(self);
6168
}
@@ -79,8 +86,35 @@ STATIC mp_obj_t displayio_colorconverter_obj_convert(mp_obj_t self_in, mp_obj_t
7986
}
8087
MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_convert_obj, displayio_colorconverter_obj_convert);
8188

89+
//| .. attribute:: dither
90+
//|
91+
//| True when the display is dithered
92+
//|
93+
STATIC mp_obj_t displayio_colorconverter_obj_get_dither(mp_obj_t self_in) {
94+
displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
95+
return mp_obj_new_bool(common_hal_displayio_colorconverter_get_dither(self));
96+
}
97+
MP_DEFINE_CONST_FUN_OBJ_1(displayio_colorconverter_get_dither_obj, displayio_colorconverter_obj_get_dither);
98+
99+
STATIC mp_obj_t displayio_colorconverter_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) {
100+
displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
101+
102+
common_hal_displayio_colorconverter_set_dither(self, mp_obj_is_true(dither));
103+
104+
return mp_const_none;
105+
}
106+
MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_set_dither_obj, displayio_colorconverter_obj_set_dither);
107+
108+
const mp_obj_property_t displayio_colorconverter_dither_obj = {
109+
.base.type = &mp_type_property,
110+
.proxy = {(mp_obj_t)&displayio_colorconverter_get_dither_obj,
111+
(mp_obj_t)&displayio_colorconverter_set_dither_obj,
112+
(mp_obj_t)&mp_const_none_obj},
113+
};
114+
82115
STATIC const mp_rom_map_elem_t displayio_colorconverter_locals_dict_table[] = {
83116
{ MP_ROM_QSTR(MP_QSTR_convert), MP_ROM_PTR(&displayio_colorconverter_convert_obj) },
117+
{ MP_ROM_QSTR(MP_QSTR_dither), MP_ROM_PTR(&displayio_colorconverter_dither_obj) },
84118
};
85119
STATIC MP_DEFINE_CONST_DICT(displayio_colorconverter_locals_dict, displayio_colorconverter_locals_dict_table);
86120

@@ -90,3 +124,4 @@ const mp_obj_type_t displayio_colorconverter_type = {
90124
.make_new = displayio_colorconverter_make_new,
91125
.locals_dict = (mp_obj_dict_t*)&displayio_colorconverter_locals_dict,
92126
};
127+

shared-bindings/displayio/ColorConverter.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333

3434
extern const mp_obj_type_t displayio_colorconverter_type;
3535

36-
void common_hal_displayio_colorconverter_construct(displayio_colorconverter_t* self);
36+
void common_hal_displayio_colorconverter_construct(displayio_colorconverter_t* self, bool dither);
3737
void common_hal_displayio_colorconverter_convert(displayio_colorconverter_t *colorconverter, const _displayio_colorspace_t* colorspace, uint32_t input_color, uint32_t* output_color);
3838

39+
void common_hal_displayio_colorconverter_set_dither(displayio_colorconverter_t* self, bool dither);
40+
bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t* self);
41+
3942
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H

shared-bindings/displayio/Display.c

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -346,31 +346,7 @@ const mp_obj_property_t displayio_display_auto_brightness_obj = {
346346
(mp_obj_t)&mp_const_none_obj},
347347
};
348348

349-
//| .. attribute:: dither
350-
//|
351-
//| True when the display is dithered
352-
//|
353-
STATIC mp_obj_t displayio_display_obj_get_dither(mp_obj_t self_in) {
354-
displayio_display_obj_t *self = native_display(self_in);
355-
return mp_obj_new_bool(common_hal_displayio_display_get_dither(self));
356-
}
357-
MP_DEFINE_CONST_FUN_OBJ_1(displayio_display_get_dither_obj, displayio_display_obj_get_dither);
358-
359-
STATIC mp_obj_t displayio_display_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) {
360-
displayio_display_obj_t *self = native_display(self_in);
361-
362-
common_hal_displayio_display_set_dither(self, mp_obj_is_true(dither));
363349

364-
return mp_const_none;
365-
}
366-
MP_DEFINE_CONST_FUN_OBJ_2(displayio_display_set_dither_obj, displayio_display_obj_set_dither);
367-
368-
const mp_obj_property_t displayio_display_dither_obj = {
369-
.base.type = &mp_type_property,
370-
.proxy = {(mp_obj_t)&displayio_display_get_dither_obj,
371-
(mp_obj_t)&displayio_display_set_dither_obj,
372-
(mp_obj_t)&mp_const_none_obj},
373-
};
374350

375351

376352
//| .. attribute:: width
@@ -514,7 +490,6 @@ STATIC const mp_rom_map_elem_t displayio_display_locals_dict_table[] = {
514490

515491
{ MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&displayio_display_brightness_obj) },
516492
{ MP_ROM_QSTR(MP_QSTR_auto_brightness), MP_ROM_PTR(&displayio_display_auto_brightness_obj) },
517-
{ MP_ROM_QSTR(MP_QSTR_dither), MP_ROM_PTR(&displayio_display_dither_obj) },
518493

519494
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_display_width_obj) },
520495
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_display_height_obj) },

shared-module/displayio/ColorConverter.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ uint32_t displayio_colorconverter_dither_noise_2(uint32_t x, uint32_t y) {
3939
return displayio_colorconverter_dither_noise_1(x + y * 0xFFFF);
4040
}
4141

42-
void common_hal_displayio_colorconverter_construct(displayio_colorconverter_t* self) {
42+
void common_hal_displayio_colorconverter_construct(displayio_colorconverter_t* self, bool dither) {
43+
self->dither = dither;
4344
}
4445

4546
uint16_t displayio_colorconverter_compute_rgb565(uint32_t color_rgb888) {
@@ -121,10 +122,18 @@ void common_hal_displayio_colorconverter_convert(displayio_colorconverter_t *sel
121122
(*output_color) = output_pixel.pixel;
122123
}
123124

125+
void common_hal_displayio_colorconverter_set_dither(displayio_colorconverter_t* self, bool dither) {
126+
self->dither = dither;
127+
}
128+
129+
bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t* self) {
130+
return self->dither;
131+
}
132+
124133
void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _displayio_colorspace_t* colorspace, const displayio_input_pixel_t *input_pixel, displayio_output_pixel_t *output_color) {
125134
uint32_t pixel = input_pixel->pixel;
126135

127-
if (colorspace->dither){
136+
if (self->dither){
128137
uint8_t randr = (displayio_colorconverter_dither_noise_2(input_pixel->tile_x,input_pixel->tile_y));
129138
uint8_t randg = (displayio_colorconverter_dither_noise_2(input_pixel->tile_x+33,input_pixel->tile_y));
130139
uint8_t randb = (displayio_colorconverter_dither_noise_2(input_pixel->tile_x,input_pixel->tile_y+33));
@@ -172,10 +181,13 @@ void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _d
172181
output_color->opaque = false;
173182
}
174183

184+
185+
175186
// Currently no refresh logic is needed for a ColorConverter.
176187
bool displayio_colorconverter_needs_refresh(displayio_colorconverter_t *self) {
177188
return false;
178189
}
179190

180191
void displayio_colorconverter_finish_refresh(displayio_colorconverter_t *self) {
181192
}
193+

shared-module/displayio/ColorConverter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
typedef struct {
3737
mp_obj_base_t base;
38+
bool dither;
3839
} displayio_colorconverter_t;
3940

4041
bool displayio_colorconverter_needs_refresh(displayio_colorconverter_t *self);

shared-module/displayio/Display.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,6 @@ void common_hal_displayio_display_set_auto_brightness(displayio_display_obj_t* s
150150
self->auto_brightness = auto_brightness;
151151
}
152152

153-
void common_hal_displayio_display_set_dither(displayio_display_obj_t* self, bool dither) {
154-
displayio_display_core_set_dither(&self->core, dither);
155-
}
156-
157-
bool common_hal_displayio_display_get_dither(displayio_display_obj_t* self) {
158-
return displayio_display_core_get_dither(&self->core);
159-
}
160-
161153
mp_float_t common_hal_displayio_display_get_brightness(displayio_display_obj_t* self) {
162154
return self->current_brightness;
163155
}

0 commit comments

Comments
 (0)