Animações
As animações permitem adicionar animações de quadros monocromáticas prontas a telas embarcadas sem desenhar cada quadro à mão. Elas estão disponíveis para plataformas que conseguem gerar código de reprodução de animação.
Adicionar uma animação
Selecione a ferramenta Imagem e escolha Animação. O Lopaka abre o navegador de animações com abas de categoria, um campo de busca, controles de tamanho e controles de detalhe. Se a plataforma ativa não oferecer suporte à geração de código de animação, a opção Animação fica oculta.
Use as abas de categoria para navegar pelo conjunto de animações integradas ou digite no campo de busca para filtrar animações por nome em todas as categorias. Somente as categorias com animações correspondentes permanecem visíveis durante a busca. Passe o cursor sobre uma miniatura para pré-visualizar o movimento antes de posicioná-la.
Clique em uma animação para adicioná-la ao centro da tela de desenho. O Lopaka cria uma camada de animação nomeada a partir da animação, do tamanho selecionado e da quantidade de quadros, por exemplo sun-weather 48x48 14f.
Tamanho e detalhe
O controle de tamanho escolhe as dimensões do quadro: 32 x 32, 48 x 48 ou 64 x 64 pixels. Tamanhos maiores são mais fáceis de ler no display, mas exigem mais dados de firmware.
O controle de detalhe escolhe quantos quadros são mantidos da animação original:
| Detalhe | Quadros | Quando usar |
|---|---|---|
| Alta | 28 | Movimento mais suave quando o espaço em flash permite |
| Média | 14 | Equilíbrio entre movimento e tamanho do código |
| Baixa | 7 | Menor saída quando a memória é apertada |
O navegador mostra um tamanho estimado de dados de firmware para o tamanho e o detalhe selecionados. Use essa estimativa antes de posicionar animações grandes, especialmente em dispositivos monocromáticos pequenos.
O Lopaka lembra o último tamanho e detalhe que você selecionou, então reabrir o navegador de animações mantém as mesmas configurações.
Importar um vídeo
Selecione a ferramenta Imagem, escolha Enviar arquivo e carregue um vídeo MP4, MOV ou WebM. Escolha o tamanho do quadro, as configurações de processamento e a taxa de quadros de saída, e então selecione Importar para criar uma camada de animação. Consulte Importando imagens para formatos de vídeo e limites.
Comportamento na tela de desenho
Uma camada de animação se comporta como uma camada normal quanto a posicionamento, ordem, seleção e exclusão. Quando a camada não está selecionada, a tela de desenho mostra seu primeiro quadro como um bitmap estático. Quando você seleciona a camada, o Lopaka reproduz a pré-visualização da animação no tempo pretendido.
Desmarcar a camada interrompe a reprodução e a retorna ao primeiro quadro. Isso mantém o editor tranquilo, mas ainda permite verificar a animação no contexto.
Código gerado
As camadas de animação geram os dados dos quadros e a lógica de reprodução. A saída exata depende da plataforma e da configuração de código Auxiliares de animação.
Quando Auxiliares de animação está ativado, o Lopaka emite um código auxiliar que avança os quadros ao longo do tempo. O auxiliar gerado updateAnimations() acompanha o tempo decorrido e atualiza o quadro atual de cada animação usando seu atraso. Plataformas que agrupam o desenho de animações também recebem um auxiliar drawAnimations(), que chama updateAnimations() e desenha cada animação em seu quadro atual.
No modelo Arduino (C++) da AdafruitGFX, da ArduinoGFX e da TFT_eSPI, o Lopaka adiciona uma função loop() que chama o auxiliar de desenho de animações, para que os sketches copiados possam reproduzir logo após a configuração, e os quadros são cronometrados com millis(). O modelo ESP-IDF (C++) delas não gera setup() / loop(): os quadros são cronometrados com esp_timer_get_time(), e você chama drawAnimations() a partir do loop da sua própria tarefa. Na saída U8g2, o loop gerado atualiza os quadros das animações antes de executar o loop de imagem firstPage() / nextPage() da U8g2. Na saída U8g2 para ESP-IDF, o Lopaka mantém o código incorporável e não cria uma função app_main() para você. A saída do Flipper usa o tempo de atividade do sistema para selecionar o quadro atual de cada animação e inclui um loop que solicita redesenhos da viewport.
Se uma tela contiver camadas estáticas ao redor de uma animação, o Lopaka mantém a ordem das camadas intacta. Em plataformas de desenho agrupado, drawAnimations() é inserido onde a primeira camada de animação aparece na pilha. Na U8g2, as camadas de animação são desenhadas diretamente a partir da função de desenho da tela, em ordem.
Quando Auxiliares de animação está desativado, os dados dos quadros da animação são incorporados como arrays estáticos. O Lopaka não emite includes de animação, updateAnimations(), drawAnimations() nem um loop() de reprodução. Use esse modo quando você quiser gerenciar a reprodução por conta própria.
Arquivos de animação
O painel de Configurações de código lista anexos de animação para download quando uma tela usa camadas de animação. Baixe esses arquivos junto com o código-fonte gerado e coloque-os ao lado dos arquivos do seu sketch ou projeto, conforme exigido pela sua plataforma. Os anexos do Flipper são cabeçalhos C com dados de quadros XBM e não exigem Arduino nem PROGMEM.
As chamadas de desenho geradas referenciam os dados dos quadros da animação por nome. Se o anexo estiver faltando no seu projeto de firmware, o código gerado não compilará ou os quadros da animação não estarão disponíveis em tempo de execução.