Files
FireBee_Setup/tools/vision/ldv/doc/kitdev.htm
2022-11-25 03:00:01 +01:00

542 lines
22 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<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) : Kit de développement</title></head>
<body background="images/conc2.gif" bgcolor="#ffffff">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="struct.htm"><img src="images/cprev.jpg" alt="Chapitre précédent" border="0" height="26" hspace="2" width="46"></a><a href="index.htm"><img src="images/csom.jpg" alt="Retour au sommaire" border="0" height="26" hspace="2" width="26"></a><a href="hints.htm"><img src="images/csuiv.jpg" alt="Chapitre suivant" border="0" height="26" hspace="2" width="43"></a></td>
<td rowspan="2" align="center" valign="top" width="8%"><p align="center"><img src="images/icoprinc.gif" height="71" width="59"></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 rowspan="2" align="center" valign="top" width="8%"><p align="center"><img src="images/icointro.gif" height="71" width="59"></p>
</td>
<td valign="top" width="17%"><p align="left">Dernière
mise à jour :&nbsp;05/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">Télécharger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>6.
KIT DE DEVELOPPEMENT</strong></font></p>
</td>
<td align="center" width="17%"><br></td>
</tr>
</tbody></table>
</center></div>
<hr>
<p>.<a name="install"></a><font size="4"><strong>6.1 INSTALLATION</strong></font></p>
<p>Je vous recommande tout d'abord d'installer le kit LDG
accessible sur le <a href="http://ldg.atari.org">site officiel
des LDG</a>.<br>
Ensuite, télécharger <a href="..%5C..%5Cdownload%5Cvision40.zip">la
dernière version de VISION</a><br>
Pour réaliser un LDV, vous avez besoin:</p>
<ul>
<li>Des fichiers "header" LDG.H et MT_AES.H. .</li>
<li>Des fichiers "librairies" LDG.LIB et
MT_AES.LIB. Ces fichiers sont à récupérer depuis le
kit des LDG dans le répertoire associé à votre
compilateur C.</li>
</ul>
<p>Attention ! Par défaut le kit de développement fourni par <em><strong>VISION</strong></em>
inclut ces fichiers pour le compilateur PureC. Je vous recommande
vivement de remettre régulièrement à jour les .H et .LIB. en
fonction de l'évolution des LDG.</p>
<p>L'arborescence proposée dans le kit LDV de <em><strong>VISION</strong></em>
est la suivante:</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td align="center" width="15%"><strong>Dossier / Sous
dossier</strong></td>
<td align="center" width="85%"><strong>Fichiers présents</strong></td>
</tr>
<tr>
<td align="center" width="15%"><strong>&lt;..&gt;/LDV</strong></td>
<td width="85%"><em>Pour la gestion LDG:</em><br>
LDG.H : Librairies dynamiques GEM, fichier header .H<br>
MT_AES.H : Pour utiliser les LDG/LDV en OS multitache. En
fait, ce fichier ne sert que si vous utilisez l'AES dans
le LDV, ce qui est improbable actuellement, mais peu
être bientôt...<br>
LDG.LIB, MT_AES.LIB : à linker avec votre LDV<br>
<em>Pour la gestion LDV:</em><br>
LDV.H : Définition des structures et interfaces avec <em><strong>VISION</strong></em><br>
VAPI.H : Définition des structures et interfaces avec <a href="vapi/index.htm">VAPI</a></td>
</tr>
<tr>
<td align="center" width="15%"><strong>&lt;...&gt;/LDV/SRC</strong></td>
<td width="85%">Chaque LDV est présent dans un
répertoire associé à son nom. Dans un tel répertoire,
on trouve:<br>
&lt;nom du ldv&gt;.C : le fichier "source" du
LDV<br>
&lt;nom du ldv&gt;.PRJ : le fichier projet (Pure C)</td>
</tr>
<tr>
<td align="center"><strong>&lt;...&gt;/LDV/DOC</strong></td>
<td>Cette documentation</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<p>.<a name="squelette"></a><font size="4"><strong>6.2 SQUELETTE</strong></font></p>
<p>Vous pouvez utiliser comme fichier squelette d'un LDV
n'importe quel fichier source d'un LDV donné dans le kit. A vous
de voir quel fichier correspond le mieux au LDV que vous voulez
réaliser !</p>
<p>&nbsp;</p>
<p>.<a name="exemples"></a><font size="4"><strong>6.3 EXEMPLES</strong></font></p>
<p>Le kit <em><strong>VISION</strong></em> fournit les LDV
suivants ainsi que les sources (en PureC). Voici leurs
caractéristiques:</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="invert"></a><strong>INVERT.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Inversion des bits d'une image</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16, 24
et 32). Format de la machine. Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Sur place. On peut aussi retirer cette
propriété du define CAPS et forcer <em><strong>VISION</strong></em>
à allouer de la mémoire pour la destination (but
uniquement pédagogique !)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Non</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Très simple ! Met uniquement en oeuvre
la fonction VDI vro_cpyfm<br>
Pas de grand intérêt : <em><strong>VISION</strong></em>
propose déjà la fonction "Négatif" depuis la
version 1.0 ! Ne gère pas la possibilité d'annulation.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="xwave"></a><strong>XWAVE.LDV / </strong><a name="ywave"></a><strong>YWAVE.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Vagues sur l'axe X / Y</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16, 24
et 32). Format de la machine. Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Force <em><strong>VISION</strong></em> à
allouer de la mémoire pour la destination. On doit
pouvoir faire sans mais cela complique un peu le LDV...</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress</a> +
<a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Amusant et assez simple. Présente <a href="vapi/pr.htm">l'interface de progression VAPI</a> et
la fonction de mise à "blanc" d'une image (<a href="vapi/ra.htm#RaImgWhite">RaImgWhite</a>). Gère la
possibilité d'annulation.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="bw"></a><strong>BW.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Conversion d'une image (ou partie en True
Color) en une image en niveaux de gris</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16, 24
et 32). Format de la machine. Modifie la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Sur place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress</a> +
<a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Met en oeuvre les fonctions de conversion
de format en True Color (<a href="vapi/ra.htm#RaTCConvert">RaTCConvert</a> et <a href="vapi/ra.htm#RaTCInvConvert">RaTCInvConvert</a>).
Montre aussi comment modifier la palette. Par rapport à
la fonction équivalente de <em><strong>VISION</strong></em>
(Conversion N&amp;B), ce LDV permet d'agir sur un bloc
(mode True Color uniquement). En mode true Color, le LDV
est annulable.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="pixel"></a><strong>PIXEL.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Crée un effet de
"pixelisation" sur une image (ou partie)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Modes True Color uniquement (16 et 32
plans). Format ATARI.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Sur place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Bel effet et très éducatif : ce LDV ne
sait gérer QUE le format True Color ATARI et pourtant il
marchera sur votre MagicPC ! Il utilise la possibilité
donnée à <em><strong>VISION</strong></em> de s'occuper
des transformations entre formats et se concentre
uniquement sur un format..Gère la possibilité
d'annulation.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="ypersc"></a><strong>YPERSC.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Crée un effet de perspective sur une
image (ou partie)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16 et
32). Format ATARI. Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Force <em><strong>VISION</strong></em> à
allouer de la mémoire pour la destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>+ <a href="vapi/ra.htm">Raster Interface</a>
+ <a href="vapi/me.htm">MEM Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Crée un bel effet de perspective sur une
image ou une partie. Sur la partie, le bloc est alloué,
et repositionné par <em><strong>VISION</strong></em>
grâce au flag <a href="defines.htm#LDVF">LDVF_NOSELECTION</a>
(c'est très pénible à gérer sinon en mode bit-plan),
le LDV ne voit qu'une image et non pas une sélection à
l'intérieur de celle-ci. Les fonctions <a href="vapi/me.htm#MeSCopyMemory8">MeCopyMemoryxx</a> de <a href="vapi/me.htm">MEM Interface</a> sont utilisées afin
de changer l'echelle des lignes.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="light"></a><strong>LIGHT.LDV / </strong><a name="gamma"></a><strong>GAMMA.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Modifie la répartition des couleurs
rouge, vert, bleu de façon linéaire (light) ou suivant
une courbe gamma (gamma)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16 et
32). Format de la machine. Modifie la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Sur place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>+ <a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Remplace avantageusement les fonctions de
luminosité et de correction gamma déjà présentes dans
<em><strong>VISION</strong></em> (mais moins
évoluées)..En mode bit-plan, la palette est affectée.
Gère la possibilité d'annulation.<br>
Ces LDV sont très optimisés en mémoire : ils
effectuent la transformation "sur place",
travaillent sur le format spécifique de la machine et
peuvent travailler sur un bloc de l'image (en true color
seulement...).<br>
Ces 2 LDV sont très semblables : seule la fonction
interne ChangeColors change.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="rotate"></a><strong>ROTATE.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Effectue une rotation sur une image ou
une partie</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans (1, 2, 4, 8, 16 et
32). Format de la machine.&nbsp;Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Force <em><strong>VISION</strong></em> à
allouer de la mémoire pour la destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>+ <a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Ce LDV est sans doute le plus simple (à
comprendre...). En fait, il s'appuie entièrement sur les
fonctions <a href="vapi/ra.htm#RaRasterRotateGetDstMFDB">RaRasterRotateGetDstMFDB</a>
et <a href="vapi/ra.htm#RaRasterRotate">RaRasterRotate</a>
de <a href="vapi/ra.htm">l'interface Raster</a> de <a href="vapi/index.htm">VAPI</a>.<br>
Voyez aussi comment ce LDV utilise le flag <a href="defines.htm#LDVF">LDVF_NOSELECTION</a> afin de ne
pas se surcharger avec la gestion des blocs.</td>
</tr>
</tbody></table>
</center></div>
<p></p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="puzzle"></a><strong>PUZZLE.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Mélange des blocs de l'image générant
un ... puzzle</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans. Format de la
machine.&nbsp;Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Force <em><strong>VISION</strong></em> à
allouer de la mémoire pour la destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Pas grand chose à dire, ce LDV est sympa
et assez simple à coder. La petite astuce consiste en la
gestion de l'entropie, c'est à dire à la quantification
du désordre dans le mélange.</td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><a name="bhole"></a><strong>BHOLE.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Simule un trou noir dans l'image. Considérez-le comme un hommage à <a href="https://www.youtube.com/watch?v=A6HhDFskbXs">Stephen Hawking</a>.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacités</strong></td>
<td width="80%">Tout nombre de plans. Format de la
machine. Ne modifie pas la palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Force <em><strong>VISION</strong></em> à
allouer de la mémoire pour la destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="vapi/pr.htm">Progress
Interface</a>+<a href="vapi/co.htm">Config Interface</a>+<a href="vapi/lo.htm">Logging Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Oui (Anglais / Français)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Ce
LDV est le plus complet à ce jour. Il dispose d'optimisations
spécifiques en 68030 et 68881. Utilise la symétrie du trou noir pour
optimiser les calculs.</td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="struct.htm"><img src="images/cprev.jpg" alt="Chapitre précédent" border="0" height="26" hspace="2" width="46"></a><a href="index.htm"><img src="images/csom.jpg" alt="Retour au sommaire" border="0" height="26" hspace="2" width="26"></a><a href="hints.htm"><img src="images/csuiv.jpg" alt="Chapitre suivant" border="0" height="26" hspace="2" width="43"></a></td>
<td rowspan="2" align="center" valign="top" width="8%"><p align="center"><img src="images/icoprinc.gif" height="71" width="59"></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 rowspan="2" align="center" valign="top" width="8%"><p align="center"><img src="images/icointro.gif" height="71" width="59"></p>
</td>
<td valign="top" width="17%"><p align="left">Dernière
mise à jour : 05/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">Télécharger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>6.
KIT DE DEVELOPPEMENT</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>