Fix off by one error in OnDiskBitmap

It resulted in the first row of pixels being pulled for out of bounds.

Fixes #1801
This commit is contained in:
Scott Shawcroft 2019-04-17 15:17:11 -07:00
parent 49c4c1e2ac
commit c372567330
No known key found for this signature in database
GPG Key ID: FD0EDC4B6C53CA59

View File

@ -123,12 +123,13 @@ uint32_t common_hal_displayio_ondiskbitmap_get_pixel(displayio_ondiskbitmap_t *s
if (x < 0 || x >= self->width || y < 0 || y >= self->height) {
return 0;
}
uint32_t location;
uint8_t bytes_per_pixel = (self->bits_per_pixel / 8) ? (self->bits_per_pixel /8) : 1;
if (self->bits_per_pixel >= 8){
location = self->data_offset + (self->height - y) * self->stride + x * bytes_per_pixel;
location = self->data_offset + (self->height - y - 1) * self->stride + x * bytes_per_pixel;
} else {
location = self->data_offset + (self->height - y) * self->stride + x / 8;
location = self->data_offset + (self->height - y - 1) * self->stride + x / 8;
}
// We don't cache here because the underlying FS caches sectors.
f_lseek(&self->file->fp, location);