Riot: disp_dev: глубина цвета и система координат

Созданный на 1 апр. 2020  ·  5Комментарии  ·  Источник: RIOT-OS/RIOT

Я только что добавил реализацию disp_dev (см. # 13262) в # 12509. У меня есть некоторые (правда, незначительные) отзывы о текущем API:

  • Параметр color для disp_dev_map является указателем на uint16_t . Это означает, что пиксели должны быть не менее 16 бит. Дисплей электронной бумаги в №12509 использует один байт на 8 пикселей, поэтому было бы более естественно использовать там uint8_t . Особенно при работе с чем-то вроде изображения размером 8x3 пикселей.

  • В реализации для ili9341 x2 и y2 описывают координату внутреннего пикселя угла, а не внешнего угла. Это также указано в документации к этому драйверу. Однако это не указано в disp_dev_map . Я также думаю, что (даже если это явно указано) это не интуитивное использование координат: прямоугольник с двумя противоположными углами, имеющими координаты (5,5) и (5,5), имеет площадь 0, а не 1.

  • disp_dev_set_invert , вероятно, не будет применяться ко всем дисплеям. В настоящее время невозможно сообщить об этом пользователю.

Предложения:

  • Сделайте color и uint8_t .

  • Используйте ширину ( w ) и высоту ( h ) вместо x2 и y2 чтобы избежать путаницы. Это также то, что делают SDL , Gegl и Cairo .

  • Добавьте тип возврата к disp_dev_set_invert указывающий успех / неудачу. Вероятно, это также должно быть в случае disp_dev_map .

drivers RFC new feature question

Самый полезный комментарий

Пинг @aabadie @bergzand?

Все 5 Комментарий

Добавьте в disp_dev_set_invert возвращаемый тип, указывающий на успех / неудачу. Вероятно, это также должно быть в случае disp_dev_map .

Другим решением для этого может быть добавление к драйверу нескольких флагов возможностей, чтобы указать различные возможности драйвера.

У меня есть предложение по проблеме глубины цвета в PR №14054.
Пока я делал некоторые упрощения API для координат в # 14051.

Я также думаю, что (даже если это явно указано) это не интуитивное использование координат: прямоугольник с двумя противоположными углами, имеющими координаты (5,5) и (5,5), имеет площадь 0, а не 1.

Но упрощение Координатора не решает эту проблему. Просто упрощение самого API.

Используйте ширину (w) и высоту (h) вместо x2 и y2, чтобы избежать путаницы. Это также то, что делают SDL, Gegl и Cairo.

Я согласен с этим. Следует решить проблему.

Можно ли как-то эту тему протолкнуть, чтобы она не сдохла? :)

Пинг @aabadie @bergzand?

Пинг @aabadie @bergzand?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги