Pile d'annulation

TopoDroid pilote les fonctions 'Annuler / Refaire' grâce à une suite d'actions 'dessine / supprime / édite' qui sont stockées empilées. Lorsque vous dessinez quelque chose, une action de dessin est placée sur le haut de la pile. Son annulation revient à déplacer le pointeur de la pile vers le bas de celle-ci (en plus de modifier le dessin de l'esquisse à l'écran). Refaire déplace le pointeur de la pile vers le haut (et bien entendu rajoute le dessin à l'esquisse).

La fonction "continuation" du dessin ne créée pas une nouvelle ligne dans la pile d'annulation mais la ligne qui a été continuée est déplacée sur le dessus de la pile d'annulation.

Les actions d'effacement et d'édition peuvent également être annulées ou refaites. Cependant, leur effet sur la pile n'est pas aussi simple que pour le dessin.

L'effacement est une opération matricielle alors que le dessin est constitué d'éléments vectoriels. Les points des éléments vectoriels qui se trouvent inclus dans la région effacée sont supprimés. Cela affecte la pile d'annulation de deux façons. Si un élément est complètement effacé (par exemple, un point), il est supprimé de la pile. L'annulation de cette action d'effacement replace l'objet, mais en haut de la pile. Effacer le milieu d'une ligne supprime l'objet ligne de la pile et le remplace par deux items qui sont ajoutés en haut de la pile.


En conséquence, l'effacement d'une ligne peut changer la position de celle-ci dans la pile d'annulation. Effacer le milieu d'une ligne supprime la ligne de la pile et place ses deux extrémités en haut de la pile. L' "Annulation" suivante supprimera les deux extrémités et restituera la ligne, mais cette fois en haut de la pile.