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.