Skip to content

disp_dev: color depth and coordinate system #13787

@silkeh

Description

@silkeh

I just added an implementation of disp_dev (see #13262) to #12509. I have some (admittedly minor) feedback about the current API:

  • The color parameter for disp_dev_map is an uint16_t pointer. This implies that pixels should at least be 16 bits. The e-Paper display in black/white e-Paper/e-Ink display driver #12509 uses a single byte per 8 pixels, so it would be more natural to use uint8_t there. Especially when dealing with something like a 8x3 pixel image.

  • In the implementation for the ili9341 x2 and y2 describe the coordinate of the inner pixel of the corner, not the outside corner. This is also noted in the documentation of that driver. It is not, however, noted in disp_dev_map. I also think that (even when explicitly noted) this is not an intuitive use of coordinates: a rectangle with two opposing corners having the coordinates (5,5) and (5,5) has an area of 0, not 1.

  • disp_dev_set_invert will probably not apply to all displays. It is currently not possible to communicate this to the user.

Proposals:

  • Make color an uint8_t.

  • Use width (w) and height (h) instead of x2 and y2 to avoid any confusion. This is also what SDL, Gegl and Cairo do.

  • Add a return type to disp_dev_set_invert indicating success/failure. This should probably also be the case for disp_dev_map.

Metadata

Metadata

Labels

Area: driversArea: Device driversDiscussion: RFCThe issue/PR is used as a discussion starting point about the item of the issue/PRType: new featureThe issue requests / The PR implemements a new feature for RIOTType: questionThe issue poses a question regarding usage of RIOT

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions