• Aucun résultat trouvé

4.3 Exemples

4.3.3 Le zoom continu au clavier

La plupart des logiciels de cr´eation graphique offrent la possibilit´e de choisir l’´echelle `a laquelle est repr´esent´e le document en cours d’´edition. Le nombre de techniques pour r´ealiser cette tˆache est surprenant. Nous en pr´esentons quelques-unes, tir´ees d’une application r´eelle, puis nous pr´esentons une tech-nique originale r´ealis´ee `a l’aide des machines `a ´etats hi´erarchiques.

Les techniques de zoom

On peut d´enombrer dans une application professionnelle de retouche pho-tographique comme Adobe Photoshop au moins sept moyens distincts pour changer l’´echelle du document courant :

– la saisie directe de l’´echelle d´esir´ee (Figure 4.16a et b) ;

– l’incr´ementation et la d´ecr´ementation par un facteur fix´e de l’´echelle par l’interm´ediaire des commandes “Agrandir” et “R´eduire” du menu “Af-fichage” ;

– l’invocation de ces mˆemes commandes `a l’aide de raccourcis clavier ; – l’utilisation de deux boutons accol´es `a la vue radar permettant de

navi-guer dans le document (Figure 4.16c et d) ;

– l’utilisation d’un potentiom`etre accol´e `a la vue radar permettant de r´egler, avec un retour visuel imm´ediat, le facteur de zoom d´esir´e (Fi-gure 4.16e) ;

86 CHAPITRE 4. LES MACHINES `A ´ETATS HI ´ERARCHIQUES

a

b c e d

f

FIG. 4.16 – Diff´erents moyens de zoomer dans Adobe Photoshop

– l’utilisation de l’outil loupe qui permet grˆace `a ses deux variantes d’incr´ementer et de d´ecr´ementer de mˆeme le facteur de zoom lorsque l’on clique dans la zone de travail ; et enfin

– l’utilisation du mˆeme outil loupe pour s´electionner une r´egion de la zone de travail — `a l’aide d’un cliquer-tirer — sp´ecifiant soit la partie du document qui doit occuper tout l’espace de travail (et donc sur la-quelle on veut zoomer), soit la partie de l’espace de travail qui doit ˆetre occup´ee par la partie visible du document (qui sera ainsi r´eduite, per-mettant d’obtenir une vue plus large sur le document) (Figure 4.16f). Si l’on analyse ces techniques suivant les crit`eres d’indirection, d’int´egration et de compatibilit´e pr´esent´es `a la Section 2.1.2, on peut remar-quer que leur multiplication permet d’obtenir divers compromis. La premi`ere technique, la saisie d’une ´echelle, est celle qui offre la compatibilit´e avec la tˆache la plus faible. Elle ne propose aucun retour interm´ediaire et pr´esuppose donc que l’utilisateur sache quel est le bon facteur de zoom. La seconde tech-nique, l’utilisation de commandes d’un menu pour incr´ementer l’´echelle, im-pose une indirection spatiale qui la rend peu int´eressante. Les trois autres techniques, bas´ees sur l’incr´ementation de l’´echelle, ne pr´esentent pas cet in-conv´enient mais partagent le mˆeme degr´e de compatibilit´e tr`es faible. Le fac-teur de zoom peut prendre ses valeurs dans un intervalle continu poss´edant une dimension. Le faire varier `a l’aide de commandes discr`etes permettant simplement de l’augmenter et de le r´eduire par pas fix´es n’est donc pas di-rectement adapt´e `a la tˆache. Les deux techniques restantes, l’usage du poten-tiom`etre et celui de la s´election, sont plus int´eressantes et ce pour plusieurs raisons. Elles offrent un retour imm´ediat permettant d’ajuster directement l’´echelle pour obtenir la vue d´esir´ee sur le document. Elles ont par ailleurs un degr´e d’int´egration meilleur. Dans le premier cas, une dimension du mou-vement du curseur est certes n´eglig´ee, mais la compatibilit´e est totale avec l’autre dimension. Cette technique pr´esente quand mˆeme l’indirection d’ˆetre associ´ee `a la vue radar et non au document lui-mˆeme. Le control menu utilis´e pour zoomer offre la mˆeme compatibilit´e mais supprime l’indirection spatiale en utilisant opportun´ement un menu contextuel. Dans le dernier cas, la tˆache est habilement transform´ee pour d´esigner une zone de la vue, tˆache qui peut ˆetre r´ealis´ee naturellement `a l’aide du curseur.

4.3. EXEMPLES 87

FIG. 4.17 – Le zoom continu au clavier

Principe du zoom continu au clavier

La technique que nous proposons permet de r´eduire l’indirection spatiale et temporelle sans requ´erir l’activation d’un mode particulier : elle utilise cer-taines touches du clavier qui sont en g´en´eral sous employ´ees dans les ap-plications de cr´eation graphique. Elle augmente le degr´e d’int´egration de la technique en utilisant une rang´ee compl`ete de touches l`a o `u les autres tech-niques utilisant le clavier n’en utilisent que deux. Ainsi, la rang´ee de touches est utilis´ee comme un axe sur lequel s’effectue le contr ˆole du facteur de zoom. La Figure 4.17 illustre l’utilisation de la technique qui est particuli`erement adapt´ee aux ordinateurs portables, lesquels disposent de touches fines qui peuvent ˆetre parcourues en glissant le doigt dessus. En parcourant la rang´ee de gauche `a droite, le document est zoom´e alors qu’un parcours dans le sens inverse r´eduit la taille de la partie affich´ee. La rang´ee de touches devient ainsi un capteur de d´eplacement le long d’un axe `a une dimension qui offre un contr ˆole isotonique sur le facteur de zoom.

R´ealisation

Cette technique d’interaction utilise le clavier d’une mani`ere inhabituelle. En effet, ce n’est pas l’appui d’une touche qui est porteur d’information, mais la succession des touches enfonc´ees qui d´etermine le sens du mouvement. Une machine `a ´etats est bien adapt´ee pour extraire d’une suite d’´ev´enements discr`ete une information bas´ee sur la temporalit´e de ces ´ev´enements. De plus, le mod`ele hi´erarchique des HSM permet de structurer le code en s´eparant les divers probl`emes.

La Figure 4.18 donne le code r´ealisant le zoom au clavier. La machine `a ´etatsKeyboardZoomercomporte deux sous-´etats :

– Idle(ligne 5), dans lequel le d´ebut de l’interaction est attendu ; et – Zoom(ligne 9), dans lequel l’interaction proprement dite a lieu.

Le d´ebut de l’interaction est d´eclench´e par l’appui sur une touche du cla-vier qui d´eclenche la transition de l’´etatIdlevers l’´etatZoom. Cette transition est sp´ecifi´ee par l’´etatIdleligne 6. Pour que cette transition et les suivantes r´eagissant aux touches du clavier ne soient effectivement franchies que si les touches en question font partie de la rang´ee num´erique situ´ee en haut du

cla-88 CHAPITRE 4. LES MACHINES `A ´ETATS HI ´ERARCHIQUES

01 hsm KeyboardZoomer {

02

03 - keys [(event.data.aInt < ’1’) || (event.data.aInt > ’9’)] 04

05 hsm Idle {

06 - keys > Zoom::Continuous(key = event.data.aInt) 07 }

08

09 hsm Zoom {

10 var hsm::SVGLWindow *window; 11 var hsm::Point &point; 12

13 var hsm::Zoom *zoom = 0; 14

15 ! ((zoom = window->pick< hsm::Zoom >(point)) != 0) : Idle 16 ! (zoom->begin()) : Idle

17

18 leave { zoom->end(); }

19

20 hsm Continuous {

21 var hsm::Zoom *zoom; 22 var int key = 0; 23 24 - 200 > Idle 25 - keys { 26 zoom->zoom((event.data.aInt - key) * 10); 27 } > Continuous(key = event.data.aInt) 28 } 29 } 30 }

FIG. 4.18 – Le code r´ealisant le zoom au clavier

vier (visible sur la Figure 4.17), une transition suppl´ementaire a ´et´e ajout´ee au plus haut niveau de la machine (ligne 3). Cette transition n’ex´ecute au-cun code et ne fait pas changer d’´etat. Son r ˆole est uniquement d’absorber les ´ev´enements ne provenant pas des touches num´eriques. Grˆace `a sa garde qui exclut les ´ev´enements provenant des touches num´eriques, seuls ceux-ci at-teignent les transitions des sous-´etats de la machine, simplifiant l’expression de ces derni`eres.

C’est donc l’appui d’une touche num´erique qui permet de franchir la tran-sition de l’´etatIdle(ligne 6), et de commencer l’interaction. La cible de cette transition est Continuouscontenu dans l’´etat Zoomet, au moment de son franchissement, la transition lui communique quelle touche a ´et´e enfonc´ee en r´ecup´erant l’information des donn´ees contenues dans l’´ev´enement.

Avant la d´efinition de son sous-´etat, l’´etatZoomd´eclare un ensemble de variables utiles (lignes 10 `a 13) dont en particulier la fenˆetre et la position qui lui serviront `a r´ealiser le picking, ainsi que l’objet sur lequel est r´ealis´e le zoom. Suivent deux pr´econditions qui doivent ˆetre v´erifi´ees pour entrer dans cet ´etat :

– ligne 15, un objet zoomable doit ˆetre pr´esent sous le curseur (picking) ; et – ligne 16, cet objet doit accepter l’interaction (protocole ´el´ementaire

d’in-teraction begin/end).

Si l’une de ces conditions n’est pas remplie, la machine retourne dans l’´etat Idle. Sinon, l’interaction commence et ne se terminera que lorsque l’´etat Zoomsera quitt´e, et que l’action associ´ee `a ce d´epart sera effectu´ee. Celle-ci est d´efinie ligne 18 par l’actionleavequi notifie l’objet de la fin de l’interac-tion.