177 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<html>
 | 
						|
 | 
						|
<head>
 | 
						|
<BASE HREF="http://www-msi.ensil.unilim.fr/~maritaud/sunset/GrafX2-fra-Input.html">
 | 
						|
 | 
						|
<meta http-equiv="Content-Type"
 | 
						|
content="text/html; charset=iso-8859-1">
 | 
						|
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
 | 
						|
<title>GrafX2 - Les entrées</title>
 | 
						|
</head>
 | 
						|
 | 
						|
<body bgcolor="#FFFFFF">
 | 
						|
 | 
						|
<h1 align="center">GrafX2 - Les entrées</h1>
 | 
						|
 | 
						|
<hr>
 | 
						|
 | 
						|
<p>Get_input() (dans DIVERS.ASM):</p>
 | 
						|
 | 
						|
<ul>
 | 
						|
    <li>Touches :<ul>
 | 
						|
            <li>Met à jour la variable "Touche", un
 | 
						|
                mot 16-bits qui contient dans sa partie basse la
 | 
						|
                valeur du scan-code (valeur plutôt liée à la
 | 
						|
                géographie de la touche) de la touche enfoncée
 | 
						|
                à traiter, et dans sa partie haute un codage des
 | 
						|
                touches de contrôles enfoncées au moment de
 | 
						|
                l'appel.<ul>
 | 
						|
                    <li>(Touche & 0x0100) => Shift</li>
 | 
						|
                    <li>(Touche & 0x0200) => Control</li>
 | 
						|
                    <li>(Touche & 0x0400) => Alt</li>
 | 
						|
                </ul>
 | 
						|
            </li>
 | 
						|
            <li>Met dans la variable "Touche_ASCII" la
 | 
						|
                valeur ASCII (valeur liée au caractère que
 | 
						|
                représente la touche) de la touche enfoncée à
 | 
						|
                traiter.</li>
 | 
						|
            <li>Dans le cas où la variable globale
 | 
						|
                "Autoriser_changement_de_couleur_pendant_operation"
 | 
						|
                serait à 0, et qu'il existerait au moins une
 | 
						|
                valeur dans la pile des opérations, la fonction
 | 
						|
                filtre les touches. Cela signifie que l'on ne
 | 
						|
                peut pas interrompre une opération en cours,
 | 
						|
                sauf pour changer la couleur du pinceau si
 | 
						|
                l'opération l'autorise (utile pour faire varier
 | 
						|
                la couleur du pinceau à l'aide des touches
 | 
						|
                pendant qu'on dessine).</li>
 | 
						|
        </ul>
 | 
						|
    </li>
 | 
						|
    <li>Souris :<ul>
 | 
						|
            <li>Met à jour la position (Mouse_X,Mouse_Y) de la
 | 
						|
                souris en fonction de sa position dans un écran
 | 
						|
                virtuel. Cet écran est volontairement plus grand
 | 
						|
                que la résolution réelle du mode vidéo car de
 | 
						|
                nombreux drivers ne fournissent pas la position
 | 
						|
                de la souris au pixel près...</li>
 | 
						|
            <li>Met à jour l'état des boutons de la souris
 | 
						|
                (Mouse_K). La variable vaut 0 si aucun bouton
 | 
						|
                n'est enfoncé, 1 si seul le bouton gauche est
 | 
						|
                enfoncé, et 2 si seul le bouton droit est
 | 
						|
                enfoncé. Dans le cas où les 2 boutons seraient
 | 
						|
                enfoncé, Get_input() considère qu'aucun bouton
 | 
						|
                n'est enfoncé (Mouse_K = 0).</li>
 | 
						|
            <li>La fonction corrige la position de la souris afin
 | 
						|
                de l'empêcher de sortir de la surface d'image
 | 
						|
                sur laquelle elle se trouve si au moins une
 | 
						|
                valeur est dans la pile des opérations (la
 | 
						|
                souris ne sort pas de la zone de dessin tant que
 | 
						|
                l'opération de dessin n'est pas terminée), et
 | 
						|
                elle simule également le déplacement et les
 | 
						|
                clics de la souris si la combinaison de touches
 | 
						|
                courante correspond à de telles commandes. Dans
 | 
						|
                ce dernier cas, la touche est ensuite filtrée
 | 
						|
                afin d'éviter de faire travailler la fonction
 | 
						|
                appelante pour rien.</li>
 | 
						|
            <li>Dans le cas où la souris change d'état ou que
 | 
						|
                la variable globale
 | 
						|
                "Forcer_affichage_curseur" est placée
 | 
						|
                à 1, le curseur de la souris est réaffiché. La
 | 
						|
                fonction laisse toujours la variable
 | 
						|
                Forcer_affichage_curseur à 0 en fin d'appel.</li>
 | 
						|
            <li>La fonction fait appel à
 | 
						|
                Calculer_coordonnees_pinceau() qui se charge de
 | 
						|
                calculer convenablement les coordonnées du
 | 
						|
                pinceau (Pinceau_X,Pinceau_Y) en fonction de la
 | 
						|
                position de la souris à l'écran, de la position
 | 
						|
                de la zone de dessin dans l'image, du facteur de
 | 
						|
                zoom et de l'effet de la grille.</li>
 | 
						|
        </ul>
 | 
						|
        <p><strong>Important :</strong> Dans la plupart des cas,
 | 
						|
        vous n'avez pas à appeler cette fonction car le moteur
 | 
						|
        (boucle principale, gestionnaire de fenêtre, sélecteurs
 | 
						|
        de fichier, ...) s'en est déjà chargé. Vous pouvez
 | 
						|
        donc considérer que les variables concernées sont
 | 
						|
        déjà à jour. Si vous appeliez vous-même la fonction
 | 
						|
        Get_input() à un moment inoportun, certaines commandes
 | 
						|
        de l'utilisateur, prises en compte par le moteur, ne
 | 
						|
        seraient pas traitées.</p>
 | 
						|
    </li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>Attendre_fin_de_click() (dans DIVERS.ASM):</p>
 | 
						|
 | 
						|
<blockquote>
 | 
						|
    <p>S'il vous arrive d'avoir besoin de vous assurer que
 | 
						|
    l'utilisateur n'appuie plus sur les boutons de la souris à
 | 
						|
    un instant donné, cette fonction attend jusqu'à ce que
 | 
						|
    l'utilisateur relache le bouton. La valeur de Mouse_K vaut
 | 
						|
    alors 0, mais s'il a déplacé la souris avant de suspendre
 | 
						|
    sa pression, la position (Mouse_X,Mouse_Y) n'est pas encore
 | 
						|
    à jour. Cependant, cela ne devrait pas être génant (au
 | 
						|
    pire, un appel à Get_input() mettra ces valeurs à jour).</p>
 | 
						|
</blockquote>
 | 
						|
</body>
 | 
						|
 | 
						|
<SCRIPT language="Javascript">
 | 
						|
<!--
 | 
						|
 | 
						|
// FILE ARCHIVED ON 20021011041425 AND RETRIEVED FROM THE
 | 
						|
// INTERNET ARCHIVE ON 20070414155906.
 | 
						|
// JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
 | 
						|
// ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
 | 
						|
// SECTION 108(a)(3)).
 | 
						|
 | 
						|
   var sWayBackCGI = "http://web.archive.org/web/20021011041425/";
 | 
						|
 | 
						|
   function xResolveUrl(url) {
 | 
						|
      var image = new Image();
 | 
						|
      image.src = url;
 | 
						|
      return image.src;
 | 
						|
   }
 | 
						|
   function xLateUrl(aCollection, sProp) {
 | 
						|
      var i = 0;
 | 
						|
      for(i = 0; i < aCollection.length; i++) {
 | 
						|
         if (typeof(aCollection[i][sProp]) == "string") { 
 | 
						|
          if (aCollection[i][sProp].indexOf("mailto:") == -1 &&
 | 
						|
             aCollection[i][sProp].indexOf("javascript:") == -1) {
 | 
						|
            if(aCollection[i][sProp].indexOf("http") == 0) {
 | 
						|
                aCollection[i][sProp] = sWayBackCGI + aCollection[i][sProp];
 | 
						|
            } else {
 | 
						|
                aCollection[i][sProp] = sWayBackCGI + xResolveUrl(aCollection[i][sProp]);
 | 
						|
            }
 | 
						|
         }
 | 
						|
         }
 | 
						|
      }
 | 
						|
   }
 | 
						|
 | 
						|
   xLateUrl(document.getElementsByTagName("IMG"),"src");
 | 
						|
   xLateUrl(document.getElementsByTagName("A"),"href");
 | 
						|
   xLateUrl(document.getElementsByTagName("AREA"),"href");
 | 
						|
   xLateUrl(document.getElementsByTagName("OBJECT"),"codebase");
 | 
						|
   xLateUrl(document.getElementsByTagName("OBJECT"),"data");
 | 
						|
   xLateUrl(document.getElementsByTagName("APPLET"),"codebase");
 | 
						|
   xLateUrl(document.getElementsByTagName("APPLET"),"archive");
 | 
						|
   xLateUrl(document.getElementsByTagName("EMBED"),"src");
 | 
						|
   xLateUrl(document.getElementsByTagName("BODY"),"background");
 | 
						|
   var forms = document.getElementsByTagName("FORM");
 | 
						|
   if (forms) {
 | 
						|
       var j = 0;
 | 
						|
       for (j = 0; j < forms.length; j++) {
 | 
						|
              f = forms[j];
 | 
						|
              if (typeof(f.action)  == "string") {
 | 
						|
                 if(typeof(f.method)  == "string") {
 | 
						|
                     if(typeof(f.method) != "post") {
 | 
						|
                        f.action = sWayBackCGI + f.action;
 | 
						|
                     }
 | 
						|
                  }
 | 
						|
              }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
//-->
 | 
						|
</SCRIPT>
 | 
						|
 | 
						|
</html>
 |