diff options
| author | Kenny <3454741+WarriorOfWire@users.noreply.github.com> | 2020-07-20 20:25:31 -0700 |
|---|---|---|
| committer | Kenny <3454741+WarriorOfWire@users.noreply.github.com> | 2020-07-20 20:25:31 -0700 |
| commit | e977b427aa6783858ecccd4a69e17d08f039122c (patch) | |
| tree | 8afb182dfc1935241caaa7c806c50661a767e21b | |
| parent | 12edb57aace86422c6e0165c5281efb72b5ee3b3 (diff) | |
vectorio: fix VectorShape non-transposed pixel placement
Fixes https://github.com/adafruit/circuitpython/issues/3170
The absolute transform needs to be subtracted in all cases, not
only when the coordinate system is transposed.
| -rw-r--r-- | shared-module/vectorio/VectorShape.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/shared-module/vectorio/VectorShape.c b/shared-module/vectorio/VectorShape.c index bfe8a7b25..81f46b3fa 100644 --- a/shared-module/vectorio/VectorShape.c +++ b/shared-module/vectorio/VectorShape.c @@ -223,8 +223,8 @@ bool vectorio_vector_shape_fill_area(vectorio_vector_shape_t *self, const _displ pixel_to_get_x = (input_pixel.y - self->absolute_transform->dy * self->x - self->absolute_transform->y) / self->absolute_transform->dy; pixel_to_get_y = (input_pixel.x - self->absolute_transform->dx * self->y - self->absolute_transform->x) / self->absolute_transform->dx; } else { - pixel_to_get_x = (input_pixel.x - self->absolute_transform->dx * self->x) / self->absolute_transform->dx; - pixel_to_get_y = (input_pixel.y - self->absolute_transform->dy * self->y) / self->absolute_transform->dy; + pixel_to_get_x = (input_pixel.x - self->absolute_transform->dx * self->x - self->absolute_transform->x) / self->absolute_transform->dx; + pixel_to_get_y = (input_pixel.y - self->absolute_transform->dy * self->y - self->absolute_transform->y) / self->absolute_transform->dy; } VECTORIO_SHAPE_PIXEL_DEBUG(" get_pixel %p (%3d, %3d) -> ( %3d, %3d )", self->ishape.shape, input_pixel.x, input_pixel.y, pixel_to_get_x, pixel_to_get_y); #ifdef VECTORIO_PERF |
