initial commit
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<70>c<EFBFBD>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<EFBFBD>re
|
||||
mise <20> 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<EFBFBD>l<EFBFBD>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<EFBFBD>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 <20>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 <20>crivez un LDV, envoyez le moi !
|
||||
J'aimerais bien que le site de <em><strong>VISION</strong></em>
|
||||
centralise tous les LDV cr<63>es. V<>rifiez aussi que votre
|
||||
LDV n'est pas compil<69> avec les informations de Debug !
|
||||
Cela ne servirait <20> rien sinon <20> 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 <20> tout le
|
||||
monde de fournir les sources du LDV avec celui-ci.. Cela
|
||||
peut donner de bonnes id<69>es <20> 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<63>s direct <20> la m<>moire interne <20> <em><strong>VISION</strong></em>.
|
||||
Donc si vous faites un peu n'importe quoi avec les
|
||||
pointeurs pass<73>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<6C> !), 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 <20>crivez dans
|
||||
cette structure, c'est votre LDV qui risque de planter !
|
||||
Je vous laisse imaginer les d<>g<EFBFBD>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 <20> 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<73>e dans le
|
||||
param<61>tre out. Pourquoi ? En faisant cela, d<>j<EFBFBD> vous
|
||||
<20>crasez le pointeur que <em><strong>VISION</strong></em>
|
||||
a d<>j<EFBFBD> allou<6F> 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<6E> par <em><strong>VISION</strong></em>
|
||||
et termin<69> lorsque <em><strong>VISION</strong></em>
|
||||
(plus pr<70>cisemment le gestionnaire LDG) le d<>cide. A ce
|
||||
moment, le compilateur ou le syst<73>me lib<69>rera la
|
||||
m<>moire que ce module avait allou<6F>e, m<>me si vous ne
|
||||
le faites pas explicitement. C'est pourquoi c'est
|
||||
toujours <em><strong>VISION</strong></em>, par
|
||||
l'interm<72>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<6C>
|
||||
<20> moins que votre LDV ne soit fulgurant !), <20>vitez de
|
||||
l'appeler trop souvent, comme par exemple <20> chaque
|
||||
it<69>ration de boucle, cela ne sert <20> rien (si <20>a se
|
||||
trouve le pourcentage n'a m<>me pas chang<6E> !) et cela va
|
||||
ralentir inutilement votre LDV. Faites pr<70>c<EFBFBD>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 <20>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 <20> l'AES. Cela permet de pouvoir d<>placer les
|
||||
fen<65>tres <20> 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<61>trable (au plus 4
|
||||
param<61>tres), vous devez utiliser un <a
|
||||
href="descrip.htm#fichier ini">fichier INI associ<63></a>.
|
||||
Je vous recommande d'associer syst<73>matiquement un
|
||||
fichier INI <20> votre LDV, c'est vraiment tr<74>s pratique
|
||||
pour les traductions et pas difficile du tout ! Si votre
|
||||
LDV n<>cessite vraiment une saisie de param<61>tre tr<74>s
|
||||
sp<73>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<74>ler la validit<69> des param<61>tres qui lui sont
|
||||
pass<73>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<69>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<70>vus pour une extension future, ne sont pas
|
||||
n<>cessaires au param<61>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<70>cision sup<75>rieure <20>
|
||||
celle pouvant <20>tre saisie par l'interface), de convertir
|
||||
le param<61>tre pass<73> 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<74>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<69>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<69>rez la apr<70>s son ex<65>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> <20> vous
|
||||
allouer de la m<>moire inutilement (d'autant plus que les
|
||||
fonctions VDI travaillent TOUJOURS sur le format
|
||||
sp<73>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 <20>tes amen<65> <20> 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 <20>
|
||||
allouer</li>
|
||||
<li>Vous <20>tes oblig<69> d'avoir acc<63>s <20> n'importe
|
||||
quel index <20> 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<73>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<EFBFBD>me si l'utilisateur a s<>lectionn<6E> un
|
||||
bloc comme zone d'application du LDV sur l'image, vous
|
||||
n'<27>tes pas limit<69> <20> la seule zone d<>finie par ce
|
||||
bloc. Vous avez acc<63>s <20> 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 <20> 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<72>re.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>15</strong></td>
|
||||
<td width="95%">Si vous utilisez Magic Mac, vous allez
|
||||
peut <20>tre avoir le probl<62>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<6E>rer la ligne
|
||||
ShowPerf = 1 dans la section [LDV] de VISION.INI. Apr<70>s
|
||||
ex<65>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<70>c<EFBFBD>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<EFBFBD>re
|
||||
mise <20> 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<EFBFBD>l<EFBFBD>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