Skip to content

Vectorio doesn't seem to display rotation properly #5084

Closed
@FoamyGuy

Description

@FoamyGuy

CircuitPython version

Adafruit CircuitPython 7.0.0-alpha.5 on 2021-07-21; Adafruit PyPortal with samd51j20


### Code/REPL

```python
import board
import displayio
import vectorio

main_group = displayio.Group()
board.DISPLAY.rotation = 0
#board.DISPLAY.rotation = 90
#board.DISPLAY.rotation = 180
#board.DISPLAY.rotation = 270
board.DISPLAY.show(main_group)

rect = vectorio.Rectangle(width=50, height=1)
rect_palette = displayio.Palette(2)
rect_palette[0] = 0xFFFFFF
rect_palette[1] = 0xFFFFFF

vector_shape = vectorio.VectorShape(shape=rect, x=50, y=50, pixel_shader=rect_palette)
main_group.append(vector_shape)

while True:
    pass

Behavior

When the display is at rotation 0 the rectangle gets drawn as expected a 50px wide, 1px tall line:
image

When the display rotation is 90 we get a filled in rectangle, looks like 50px tall and over 100px wide, not sure of exact size:
image

When the display rotation is 180 we get a bigger filled rectangle, not sure of exact size:
image

When the display rotation is 270 we get a similar rectangle as the 90 degree one, but rotated 90 degrees:
image

Description

I'm not sure how to describe the exact relation, but I believe the x,y location that the tilegrid is placed at is determining the size and shape of the incorrectly drawn larger rectangles on all of the rotations except for 0

Additional information

These images depict a PyPortal but this issue has been seen on the MacroPad as well. I believe it would be affecting all devices that support displayio. I suspect there is something inside the core implementation of vectorio that is not handling the rotation properly

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions