Files
FireBee_Setup/tools/vision/LDV/doc/hints.htm
2022-11-14 10:05:42 +01:00

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%">&nbsp; <!--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 &quot;un PRG&quot; 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 &amp; 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-&gt;fd_w et out-&gt;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 &quot;classique&quot; 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>&nbsp;</p>
<p>&nbsp;</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%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>