Comme on n'a pas accès aux constantes C++, on utilise une astuce pour obtenir la
valeur de INT_MAX : le module Python struct permet de calculer la taille occupée
par un nombre entier, en octets. De là, on peut déduire la valeur cherchée et la
stocker dans une variable globale INT_MAX. Attention, cette valeur est différente de
la constante Python sys.maxsize.
On entre dans la partie de contrôle. Le else assure qu'on est bien dans le cas zoom
avant (facteur donné positif).
On calcule la coordonnée maximale dans la vue courante en appelant la méthode
tailleDansVue (voir ) sur le carré initial ; ce dernier est mémorisé au niveau de
la scène, dans l'attribut carreMosaiQUnivers. D'un appel à l'autre, le résultat sera
différent, sachant que la transformation de coordonnées opérée par la vue sera
différente.
Avec l'expression coordMax*facteur, on anticipe quelle serait la coordonnée
maximale sur la vue après zoom. Si cette valeur est supérieure à INT_MAX, on sait
que le zoom opéré avec la fonction scale va provoquer un débordement.
Si un débordement est anticipé, on émet un signal sonore (dépendant de l'OS) pour
avertir l'utilisateur qu'on a atteint la limite ; on appelle return pour sortir de la
fonction zoom sans faire de traitement normal.
261
valeur de INT_MAX : le module Python struct permet de calculer la taille occupée
par un nombre entier, en octets. De là, on peut déduire la valeur cherchée et la
stocker dans une variable globale INT_MAX. Attention, cette valeur est différente de
la constante Python sys.maxsize.
On entre dans la partie de contrôle. Le else assure qu'on est bien dans le cas zoom
avant (facteur donné positif).
On calcule la coordonnée maximale dans la vue courante en appelant la méthode
tailleDansVue (voir ) sur le carré initial ; ce dernier est mémorisé au niveau de
la scène, dans l'attribut carreMosaiQUnivers. D'un appel à l'autre, le résultat sera
différent, sachant que la transformation de coordonnées opérée par la vue sera
différente.
Avec l'expression coordMax*facteur, on anticipe quelle serait la coordonnée
maximale sur la vue après zoom. Si cette valeur est supérieure à INT_MAX, on sait
que le zoom opéré avec la fonction scale va provoquer un débordement.
Si un débordement est anticipé, on émet un signal sonore (dépendant de l'OS) pour
avertir l'utilisateur qu'on a atteint la limite ; on appelle return pour sortir de la
fonction zoom sans faire de traitement normal.
261
