Riot: disp_dev: profundidade de cor e sistema de coordenadas

Criado em 1 abr. 2020  ·  5Comentários  ·  Fonte: RIOT-OS/RIOT

Acabei de adicionar uma implementação de disp_dev (consulte # 13262) a # 12509. Tenho alguns comentários (reconhecidamente pequenos) sobre a API atual:

  • O parâmetro color para disp_dev_map é um ponteiro uint16_t . Isso significa que os pixels devem ter pelo menos 16 bits. A tela do e-Paper em # 12509 usa um único byte por 8 pixels, então seria mais natural usar uint8_t ali. Especialmente ao lidar com algo como uma imagem de 8x3 pixels.

  • Na implementação de ili9341 x2 e y2 descrevem a coordenada do pixel interno do canto, não o canto externo. Isso também é observado na documentação desse driver. Não é, entretanto, mencionado em disp_dev_map . Eu também acho que (mesmo quando explicitamente mencionado) este não é um uso intuitivo de coordenadas: um retângulo com dois vértices opostos tendo as coordenadas (5,5) e (5,5) tem uma área de 0, não 1.

  • disp_dev_set_invert provavelmente não se aplicará a todos os monitores. Atualmente não é possível comunicar isso ao usuário.

Propostas:

  • Faça color an uint8_t .

  • Use largura ( w ) e altura ( h ) em vez de x2 e y2 para evitar qualquer confusão. Isso também é o que SDL , Gegl e Cairo fazem.

  • Adicione um tipo de retorno a disp_dev_set_invert indicando sucesso / falha. Provavelmente, este também deve ser o caso de disp_dev_map .

drivers RFC new feature question

Comentários muito úteis

Ping @aabadie @bergzand?

Todos 5 comentários

Adicione um tipo de retorno a disp_dev_set_invert indicando sucesso / falha. Provavelmente, este também deve ser o caso de disp_dev_map .

Uma solução diferente para isso poderia ser adicionar vários sinalizadores de capacidade a um driver para indicar diferentes capacidades do driver.

Tenho uma proposta para a questão da profundidade de cor no PR # 14054.
Enquanto eu fiz algumas simplificações da API para as coordenadas em # 14051.

Eu também acho que (mesmo quando explicitamente mencionado) este não é um uso intuitivo de coordenadas: um retângulo com dois vértices opostos tendo as coordenadas (5,5) e (5,5) tem uma área de 0, não 1.

Mas a simplificação do Coordenador não resolve esse problema. Apenas uma simplificação da própria API.

Use largura (w) e altura (h) em vez de x2 e y2 para evitar qualquer confusão. Isso também é o que SDL, Gegl e Cairo fazem.

Eu concordo com isso. Deve abordar o problema.

É de alguma forma possível empurrar este tópico, então ele não vai morrer? :)

Ping @aabadie @bergzand?

Ping @aabadie @bergzand?

Esta página foi útil?
0 / 5 - 0 avaliações