moved from dev to prod
This commit is contained in:
325
tools/vision/LDV/doc/hints.htm
Normal file
325
tools/vision/LDV/doc/hints.htm
Normal file
@@ -0,0 +1,325 @@
|
||||
<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>
|
||||
Reference in New Issue
Block a user