grafX2/doc/Les entrées.html
Adrien Destugues 306a004e36 First upload of the code.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@2 416bcca6-2ee7-4201-b75f-2eb2f807beb1
2007-04-14 20:18:30 +00:00

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 &quot;Touche&quot;, 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 &amp; 0x0100) =&gt; Shift</li>
<li>(Touche &amp; 0x0200) =&gt; Control</li>
<li>(Touche &amp; 0x0400) =&gt; Alt</li>
</ul>
</li>
<li>Met dans la variable &quot;Touche_ASCII&quot; 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
&quot;Autoriser_changement_de_couleur_pendant_operation&quot;
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
&quot;Forcer_affichage_curseur&quot; 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>