Azimlib0.3.0 · documentation

Responsividade do pan — 2026-10-03

A revisão preserva a espessura durante o pan, melhora o renderer temporário e corrige a continuidade do gesto ao sair e voltar ao canvas.

Comparação medida

Tk real oculto; handlers sintéticos temporizados durante dois segundos; mesmo Brasil, tamanho, dados, estilo e deslocamento. Inclui composição, raster e entrega a PhotoImage. Cada execução abaixo ocorreu separadamente, antes de iniciar a suíte/galeria pesada. Não mede input físico nem apresentação no monitor.

Runtime Quadros/s durante o gesto Maior intervalo do timer Tk Raster de navegação, mediana
Primeiro worker instalado 0,44 883 ms 1.263 ms
Revisão anterior instalada 9,90 31 ms 67 ms
Azimlib atual source 30,90 40 ms 25 ms
Azimlib atual instalada 31,99 32 ms 23 ms
Matplotlib/TkAgg de referência 30,81 47 ms —

Tempos variam por hardware, carga e complexidade. Os limites finais coincidem com a referência até arredondamento numérico. São execuções pontuais, sem afirmar equivalência geral de FPS ou um SLA de responsividade.

Python 3.14.4/Windows, Pillow 12.3.0, aggdraw 1.4.1 e NumPy 2.5.3 no ambiente atual. Os JSONs registram hashes dos módulos usados.

Primeira pegada e retomada

Antes: primeiro quadro em 113 ms; nova pegada durante o raster preciso em 1.082 ms. Wheel atual: 39 ms e 46 ms, respectivamente. Source registra a mesma prova independente. Essas medidas começam no Motion sintético e terminam na entrega do buffer; não incluem latência de mouse/compositor. O processo de pixels aquece durante o primeiro desenho, e a próxima pegada interrompe trabalho preciso obsoleto. O teste confere o quadro final contra nosso renderer preciso.

Implementação e independência

O preenchimento genérico foi conferido diretamente no código oficial de aggdraw. Essa dependência opcional não é o Matplotlib nem um motor cartográfico.

Bordas e qualidade final

Ao voltar com o botão já solto, um gesto cujo release foi perdido termina na última posição realmente pressionada. A posição de reentrada não desloca o mapa. Com o botão ainda pressionado, o gesto continua fora dos Axes, preservando a origem congelada. Um zoom retangular interrompido não aplica uma seleção incompleta. O histórico grava a vista uma vez. Integração source/wheel cobre esses casos.

Ao soltar, o quadro exato levou aproximadamente um segundo neste Brasil. Essa espera ocorre fora da thread Tk e pode ser interrompida por outra pegada. PNG/SVG estáticos usam o caminho normal; qualidade final e dimensões continuam iguais às cenas completas. Navegação, ownership e exportação têm regressões específicas, além dos smokes source/wheel.

A verificação visual Windows cobre espessura, componentes e navegação; o registro de observação fecha 3.08–3.10. Acelerar o quadro preciso e medir gesto físico visível continuam no critério 4.09. Os benchmarks ocultos isoladamente não fecham esse item. O núcleo permanece sem dependências obrigatórias e o extra png continua apenas Pillow.

Reprodução

python tools/benchmark_pan_tk.py --library azimlib --output pan.json
python tools/benchmark_first_grab_tk.py --output first-grab.json
python tools/benchmark_pan_tk.py --library matplotlib --output mpl-pan.json

A terceira execução exige o ambiente de desenvolvimento com Matplotlib; ele não é importado no primeiro modo nem pelo runtime. As implementações anteriores e hashes estão em tools/baselines/interactive-raster-before e tools/baselines/interactive-tiles-before; os relatórios anteriores permanecem identificados como históricos, sem substituir seus hashes pelos atuais.

Relação com o aceite atual

As tabelas acima preservam medições históricas dos snapshots indicados. “Atual” nessas tabelas significa o runtime daquele lote, não o kernel opcional posterior. O aceite do passo 4 traz os hashes finais, base original mais detalhada, input humano/idle Tk e limites. Nenhum tempo antigo foi atribuído novamente ao runtime novo.