8000 _pixelbuf: Respond to review comments · russbot/circuitpython@dac4ac5 · GitHub
[go: up one dir, main page]

Skip to content

Commit dac4ac5

Browse files
committed
_pixelbuf: Respond to review comments
* Comment on the reason for scaling by 256 * Divide by 256 instead of shifting * fix a cast; eliminate an unneeded roundf() to get a few bytes code back
1 parent b7f5c27 commit dac4ac5

File tree

1 file changed

+7
-26
lines changed

1 file changed

+7
-26
lines changed

shared-module/_pixelbuf/PixelBuf.c

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ void common_hal__pixelbuf_pixelbuf_set_brightness(mp_obj_t self_in, mp_float_t b
112112
// Skip out if the brightness is already set. The default of self->brightness is 1.0. So, this
113113
// also prevents the pre_brightness_buffer allocation when brightness is set to 1.0 again.
114114
self->brightness = brightness;
115-
uint16_t new_scaled_brightness = (int)roundf(brightness * 256);
115+
// Use 256 steps of brightness so that we can do integer math below.
116+
uint16_t new_scaled_brightness = (uint16_t)(brightness * 256);
116117
if (new_scaled_brightness == self->scaled_brightness) {
117118
return;
118119
}
@@ -130,7 +131,7 @@ void common_hal__pixelbuf_pixelbuf_set_brightness(mp_obj_t self_in, mp_float_t b
130131
if (self->byteorder.is_dotstar && i % 4 == 0) {
131132
continue;
132133
}
133-
self->post_brightness_buffer[i] = (self->pre_brightness_buffer[i] * self->scaled_brightness) >> 8;
134+
self->post_brightness_buffer[i] = (self->pre_brightness_buffer[i] * self->scaled_brightness) / 256;
134135
}
135136

136137
if (self->auto_write) {
@@ -224,13 +225,13 @@ void _pixelbuf_set_pixel_color(pixelbuf_pixelbuf_obj_t* self, size_t index, uint
224225
if (scaled_buffer) {
225226
if (self->bytes_per_pixel == 4) {
226227
if (!self->byteorder.is_dotstar) {
227-
w = (w * self->scaled_brightness) >> 8;
228+
w = (w * self->scaled_brightness) / 256;
228229
}
229230
scaled_buffer[rgbw_order->w] = w;
230231
}
231-
scaled_buffer[rgbw_order->r] = (r * self->scaled_brightness) >> 8;
232-
scaled_buffer[rgbw_order->g] = (g * self->scaled_brightness) >> 8;
233-
scaled_buffer[rgbw_order->b] = (b * self->scaled_brightness) >> 8;
232+
scaled_buffer[rgbw_order->r] = (r * self->scaled_brightness) / 256;
233+
scaled_buffer[rgbw_order->g] = (g * self->scaled_brightness) / 256;
234+
scaled_buffer[rgbw_order->b] = (b * self->scaled_brightness) / 256;
234235
}
235236
}
236237

@@ -331,23 +332,3 @@ void common_hal__pixelbuf_pixelbuf_fill(mp_obj_t self_in, mp_obj_t fill_color) {
331332
common_hal__pixelbuf_pixelbuf_show(self_in);
332333
}
333334
}
334-
335-
mp_int_t common_hal__pixelbuf_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) {
336-
pixelbuf_pixelbuf_obj_t *self = native_pixelbuf(self_in);
337-
bufinfo->buf = self->pre_brightness_buffer;
338-
if (self->pre_brightness_buffer) {
339-
// If we have a brightness setting, we must treat the buffer as
340-
// read-only (because we have no way to "fire" the
341-
// brightness-converting code as a side effect of mutation via the
342-
// buffer)
343-
if ((flags & MP_BUFFER_WRITE)) {
344-
return 1;
345-
}
346-
bufinfo->buf = self->pre_brightness_buffer;
347-
} else {
348-
bufinfo->buf = self->post_brightness_buffer;
349-
}
350-
bufinfo->typecode = 'B';
351-
bufinfo->len = self->bytes_per_pixel * common_hal__pixelbuf_pixelbuf_get_len(self_in);
352-
return 0;
353-
}

0 commit comments

Comments
 (0)
0