326 lines
15 KiB
HTML
326 lines
15 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type"
|
|
content="text/html; charset=iso-8859-1">
|
|
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
|
<title>Documentation VISION (LDV) : Recommandations</title>
|
|
</head>
|
|
|
|
<body background="images/conc2.gif" bgcolor="#FFFFFF">
|
|
<div align="center"><center>
|
|
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td align="center" width="17%"><a href="kitdev.htm"><img
|
|
src="images/cprev.jpg" alt="Chapitre précédent"
|
|
border="0" hspace="2" width="46" height="26"></a><a
|
|
href="index.htm"><img src="images/csom.jpg"
|
|
alt="Retour au sommaire" border="0" hspace="2" width="26"
|
|
height="26"></a><a href="vapi/index.htm"><img
|
|
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
|
|
hspace="2" width="43" height="26"></a></td>
|
|
<td align="center" valign="top" rowspan="2" width="8%"><p
|
|
align="center"><img src="images/icoprinc.gif" width="59"
|
|
height="71"></p>
|
|
</td>
|
|
<td width="33%"><p align="center"><font color="#0000FF"
|
|
size="5"><strong>Documentation </strong><em><strong>VISION
|
|
(LDV)</strong></em></font></p>
|
|
</td>
|
|
<td align="center" valign="top" rowspan="2" width="8%"><p
|
|
align="center"><img src="images/icointro.gif" width="59"
|
|
height="71"></p>
|
|
</td>
|
|
<td valign="top" width="17%"><p align="left">Dernière
|
|
mise à jour : <!--webbot bot="Timestamp" startspan
|
|
s-type="EDITED" s-format="%d/%m/%y" -->03/06/01<!--webbot
|
|
bot="Timestamp" i-checksum="12434" endspan --></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="17%"><p align="center"><a
|
|
href="..\..\download/dvldv.zip">Télécharger la doc</a></p>
|
|
</td>
|
|
<td width="33%"><p align="center"><font size="4"><strong>7.
|
|
R E C O M M A N D A T I O N S</strong></font></p>
|
|
</td>
|
|
<td align="center" width="17%"> <!--webbot
|
|
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
|
|
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
|
|
BORDER=0></A>
|
|
<!--webbot
|
|
bot="HTMLMarkup" endspan --></td>
|
|
</tr>
|
|
</table>
|
|
</center></div>
|
|
|
|
<hr>
|
|
|
|
<p>Même si la gestion et la programmation des LDV reste simple,
|
|
elle doit respecter quelques règles de bon sens, on ne peut tout
|
|
de même pas se permettre n'importe quoi ! Voici quelques règles
|
|
et eclaircirssements sur quelques points pouvant être troublant
|
|
lorsque l'on programme ses premiers LDV:</p>
|
|
<div align="center"><center>
|
|
|
|
<table border="2" width="100%">
|
|
<tr>
|
|
<td align="center" width="5%"><strong>#</strong></td>
|
|
<td align="center" width="95%"><strong>Recommandation /
|
|
Conseil</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>1</strong></td>
|
|
<td width="95%">Si vous écrivez un LDV, envoyez le moi !
|
|
J'aimerais bien que le site de <em><strong>VISION</strong></em>
|
|
centralise tous les LDV crées. Vérifiez aussi que votre
|
|
LDV n'est pas compilé avec les informations de Debug !
|
|
Cela ne servirait à rien sinon à en réduire les
|
|
performances !</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>2</strong></td>
|
|
<td width="95%">Il serait sympa et profitable à tout le
|
|
monde de fournir les sources du LDV avec celui-ci.. Cela
|
|
peut donner de bonnes idées à certains...</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>3</strong></td>
|
|
<td width="95%">N'oubliez pas qu'au travers des fonctions
|
|
que <em><strong>VISION</strong></em> appelle, vous avez
|
|
un accès direct à la mémoire interne à <em><strong>VISION</strong></em>.
|
|
Donc si vous faites un peu n'importe quoi avec les
|
|
pointeurs passés, <em><strong>VISION</strong></em> a
|
|
toutes les chances de planter tôt ou tard...</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>4</strong></td>
|
|
<td width="95%">Si vous utilisez <a href="vapi/index.htm">VAPI</a>
|
|
(conseillé !), la même remarque s'applique, la variable
|
|
Vapi globale du LDV pointe directement sur la mémoire de
|
|
<em><strong>VISION</strong></em> et si vous écrivez dans
|
|
cette structure, c'est votre LDV qui risque de planter !
|
|
Je vous laisse imaginer les dégâts si vous modifiez
|
|
l'adresse de la fonction <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
|
|
et que vous l'appelez ensuite !</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>5</strong></td>
|
|
<td width="95%">L'ERREUR à ne pas commettre dans la
|
|
fonction <a href="descrip.htm#run">Run</a> est d'allouer
|
|
vous-même la mémoire pour l'image passée dans le
|
|
paramètre out. Pourquoi ? En faisant cela, déjà vous
|
|
écrasez le pointeur que <em><strong>VISION</strong></em>
|
|
a déjà alloué pour cela, mais en plus dès que <em><strong>VISION</strong></em>
|
|
voudra l'utiliser, cela va planter. En effet, votre LDV
|
|
est en gros "un PRG" lancé par <em><strong>VISION</strong></em>
|
|
et terminé lorsque <em><strong>VISION</strong></em>
|
|
(plus précisemment le gestionnaire LDG) le décide. A ce
|
|
moment, le compilateur ou le système libèrera la
|
|
mémoire que ce module avait allouée, même si vous ne
|
|
le faites pas explicitement. C'est pourquoi c'est
|
|
toujours <em><strong>VISION</strong></em>, par
|
|
l'intermédiaire la fonction <a href="descrip.htm#prerun">PreRun</a>
|
|
qui allouera la mémoire pour le LDV puisqu'il s'en
|
|
servira ensuite. La fonction <a href="descrip.htm#prerun">PreRun</a>
|
|
est vraiment essentielle !</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>6</strong></td>
|
|
<td width="95%">Si vous utilisez la fonction <a
|
|
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de <a
|
|
href="vapi/index.htm">VAPI</a> (vraiment TRES conseillé
|
|
à moins que votre LDV ne soit fulgurant !), évitez de
|
|
l'appeler trop souvent, comme par exemple à chaque
|
|
itération de boucle, cela ne sert à rien (si ça se
|
|
trouve le pourcentage n'a même pas changé !) et cela va
|
|
ralentir inutilement votre LDV. Faites précéder cet
|
|
appel d'un test du style <strong>if ( ( ++iter & 0x0F
|
|
) == 0x0F )</strong>, cela aura pour effet d'appeler la
|
|
fonction de progression seulement une fois sur seize, ce
|
|
qui devrait être amplement suffisant.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><strong>7</strong></td>
|
|
<td>Les fonctions <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
|
|
et <a href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a> de <a
|
|
href="vapi/index.htm">VAPI</a>, rendent temporairement la
|
|
main à l'AES. Cela permet de pouvoir déplacer les
|
|
fenêtres à ce moment. C'est aussi une des raisons pour
|
|
lesquelles il faut l'appeler un peu... mais pas trop !</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>8</strong></td>
|
|
<td width="95%">Si votre LDV est paramétrable (au plus 4
|
|
paramètres), vous devez utiliser un <a
|
|
href="descrip.htm#fichier ini">fichier INI associé</a>.
|
|
Je vous recommande d'associer systématiquement un
|
|
fichier INI à votre LDV, c'est vraiment très pratique
|
|
pour les traductions et pas difficile du tout ! Si votre
|
|
LDV nécessite vraiment une saisie de paramètre très
|
|
spécifique, vous pouvez définir la fonction <a
|
|
href="descrip.htm#getparams">GetParams</a> dans votre
|
|
LDV.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>9</strong></td>
|
|
<td width="95%">Si vous utilisez un <a
|
|
href="descrip.htm#fichier ini">fichier INI</a>, votre LDV
|
|
doit contrôler la validité des paramètres qui lui sont
|
|
passés et ne pas se vautrer lamentablement si un d'eux
|
|
est hors limites... Dans un tel cas, renvoyez simplement
|
|
le code d'erreur <a href="defines.htm#ELDV">ELDV_INVALIDPARAMETER</a>.
|
|
N'oubliez pas que le <a href="descrip.htm#fichier ini">fichier
|
|
INI</a> est un fichier texte, aisément modifiable par un
|
|
utilisateur...</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>10</strong></td>
|
|
<td width="95%">A priori les nombres flottants, bien que
|
|
prévus pour une extension future, ne sont pas
|
|
nécessaires au paramétrage des LDV. Imaginons que vous
|
|
deviez saisir une valeur entre 0.0 et 1.0, il vous suffit
|
|
d'indiquer comme plage de variation [0;1000] dans le <a
|
|
href="descrip.htm#fichier ini">fichier INI</a> (ce qui
|
|
vous donne tout de même une précision supérieure à
|
|
celle pouvant être saisie par l'interface), de convertir
|
|
le paramètre passé par <em><strong>VISION</strong></em>
|
|
en float puis de le diviser par 1000. Il doit exister des
|
|
cas tordus où il devient nécessaire d'utiliser des
|
|
flottants mais on doit s'en sortir très bien dans 99%
|
|
des cas !</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>11</strong></td>
|
|
<td width="95%">Je vous conseille, pour des
|
|
considérations de performance mémoire, de toujours
|
|
utiliser les flags <a href="defines.htm#LDVF">LDVF_OPINPLACE</a>
|
|
et <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
|
|
Allouez la mémoire que vous voulez dans le LDV (si vous
|
|
le pouvez...), et libérez la après son exécution.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>12</strong></td>
|
|
<td width="95%">Si vous ne travaillez que sur les lignes
|
|
et colonnes, utilisez le flag <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
|
|
La fonction VDI vr_cpyfm par exemple est faite pour cela.
|
|
Utiliser le flag <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>
|
|
ou <a href="defines.htm#LDVF">LDVF_STDFORMAT</a>
|
|
obligerait <em><strong>VISION</strong></em> à vous
|
|
allouer de la mémoire inutilement (d'autant plus que les
|
|
fonctions VDI travaillent TOUJOURS sur le format
|
|
spécifique de la machine : <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>
|
|
!)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>13</strong></td>
|
|
<td width="95%">Si vous êtes amené à manipuler les
|
|
indices TOS et/ou VDI, :<ul>
|
|
<li>Vous pouvez travailler par ligne ou paquet de n
|
|
lignes :<br>
|
|
Utilisez le format <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>,
|
|
et les fonctions de <a href="vapi/ra.htm">l'interface
|
|
Raster</a>. Cela minimisera la mémoire à
|
|
allouer</li>
|
|
<li>Vous êtes obligé d'avoir accès à n'importe
|
|
quel index à n'importe quel moment:<br>
|
|
Utilisez le format <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>,
|
|
et les fonctions de <a href="vapi/ra.htm">l'interface
|
|
Raster</a>. <em><strong>VISION</strong></em>
|
|
convertira l'image du format spécifique vers le
|
|
format ATARI bit-plan avant d'appeler <a
|
|
href="descrip.htm#prerun">PreRun</a> ou <a
|
|
href="descrip.htm#run">Run</a>.</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>14</strong></td>
|
|
<td width="95%">Même si l'utilisateur a sélectionné un
|
|
bloc comme zone d'application du LDV sur l'image, vous
|
|
n'êtes pas limité à la seule zone définie par ce
|
|
bloc. Vous avez accès à toute l'image, voire même plus
|
|
si vous décidez de modifier sa taille (champs
|
|
out->fd_w et out->fd_h de la fonction <a
|
|
href="descrip.htm#prerun">PreRun</a>). Par contre,
|
|
n'oubliez pas de mettre à jour les champs x1, x2, y1 et
|
|
y2 de la structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
|
|
fournie par la fonction <a href="descrip.htm#prerun">PreRun</a>,
|
|
afin que le buffer UNDO permette de revenir en arrière.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>15</strong></td>
|
|
<td width="95%">Si vous utilisez Magic Mac, vous allez
|
|
peut être avoir le problème "classique" du <a
|
|
href="../../download/fpupatch.lzh">FPUPATCH</a> : en
|
|
effet, la librairie PCSTDLIB.LIB du compilateur PURE C
|
|
provoque un blocage lors du lancement du programme (vrai
|
|
pour <em><strong>VISION</strong></em> et ses LDV). Il
|
|
faut donc le passer au travers de <a
|
|
href="../../download/fpupatch.lzh">FPUPATCH</a> ou encore
|
|
patcher directement le fichier PCSTDLIB.LIB.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="5%"><strong>16</strong></td>
|
|
<td width="95%">Depuis la version 4.0d de <em><strong>VISION</strong></em>,
|
|
vous pouvez obtenir des statistiques de performances
|
|
survotre LDV. Il suffit pour cela d'insérer la ligne
|
|
ShowPerf = 1 dans la section [LDV] de VISION.INI. Après
|
|
exécution du LDV, <em><strong>VISION</strong></em>
|
|
affichera diverses statistiques sur les temps de
|
|
traitement du LDV, vous permettant d'optimiser les
|
|
parties critiques.</td>
|
|
</tr>
|
|
</table>
|
|
</center></div>
|
|
|
|
<p> </p>
|
|
|
|
<p> </p>
|
|
|
|
<hr>
|
|
<div align="center"><center>
|
|
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td align="center" width="17%"><a href="kitdev.htm"><img
|
|
src="images/cprev.jpg" alt="Chapitre précédent"
|
|
border="0" hspace="2" width="46" height="26"></a><a
|
|
href="index.htm"><img src="images/csom.jpg"
|
|
alt="Retour au sommaire" border="0" hspace="2" width="26"
|
|
height="26"></a><a href="vapi/index.htm"><img
|
|
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
|
|
hspace="2" width="43" height="26"></a></td>
|
|
<td align="center" valign="top" rowspan="2" width="8%"><p
|
|
align="center"><img src="images/icoprinc.gif" width="59"
|
|
height="71"></p>
|
|
</td>
|
|
<td width="33%"><p align="center"><font color="#0000FF"
|
|
size="5"><strong>Documentation </strong><em><strong>VISION
|
|
(LDV)</strong></em></font></p>
|
|
</td>
|
|
<td align="center" valign="top" rowspan="2" width="8%"><p
|
|
align="center"><img src="images/icointro.gif" width="59"
|
|
height="71"></p>
|
|
</td>
|
|
<td valign="top" width="17%"><p align="left">Dernière
|
|
mise à jour : <!--webbot bot="Timestamp" startspan
|
|
s-type="EDITED" s-format="%d/%m/%y" -->03/06/01<!--webbot
|
|
bot="Timestamp" i-checksum="12434" endspan --></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="17%"><p align="center"><a
|
|
href="..\..\download/dvldv.zip">Télécharger la doc</a></p>
|
|
</td>
|
|
<td width="33%"><p align="center"><font size="4"><strong>7.
|
|
R E C O M M A N D A T I O N S</strong></font></p>
|
|
</td>
|
|
<td valign="top" width="17%"> </td>
|
|
</tr>
|
|
</table>
|
|
</center></div>
|
|
</body>
|
|
</html>
|