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

506 lines
21 KiB
HTML
Raw Blame History

<!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>VISION Documentation (LDV): Development kit</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="Previous Chapter " border="0" height="26" hspace="2" width="46"></a><a href="index.htm"><img src="images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></a><a href="hints.htm"><img src="images/csuiv.jpg" alt="Next Chapter " 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><em>VISION </em>Documentation
<em>(LDV)</em></strong></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">Last update: 05/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">Download documentation</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>6.
DEVELOPMENT KIT</strong></font></p>
</td>
<td align="center" width="17%">&nbsp;<br></td>
</tr>
</tbody></table>
</center></div>
<hr>
<p>.<a name="install"></a><font size="4"><strong>6.1 INSTALLATION</strong></font></p>
<p>First, I recommend to install the LDG kit available on the
<a href="http://ldg.atari.org">official LDG site</a>.<br>
Next, download the<a href="..%5C..%5Cdownload/dvldv.zip">
LDV kit+documentation</a><br>
To make an LDV, you need:
</p><ul>
<li>Files "header" LDG.H and MT_AES.H. .</li>
<li>"Library" files LDG.LIB and
MT_AES.LIB. These files are to be taken in the LDG kit in the
folder associated to your C compiler.</li>
</ul>
<p>Warning! By default, the development kit provided by
<em><strong>VISION</strong></em> includes these files for the PureC
compiler. I strongly recommend to update regularly the .H and .LIB
according to the evolution of LDGs.</p>
<p>The tree proposed in <em><strong>VISION</strong></em> LDV kit is the
following:</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td align="center" width="15%"><strong>Folder / Sub
folder</strong></td>
<td align="center" width="85%"><strong>Files</strong></td>
</tr>
<tr>
<td align="center" width="15%"><strong>&lt;..&gt;/LDV</strong></td>
<td width="85%"><em>For LDG management:</em><br>
LDG.H: Librairies dynamiques GEM, header file .H<br>
MT_AES.H: To use LDG/LDV under a multi tasking OS. In fact, this
file is useful only if you use AES in the LDV, which is unlikely
at the moment, but perhaps soon...<br>
LDG.LIB, MT_AES.LIB: to be linked with your LDV<br>
<em>For LDV management:</em><br>
LDV.H: Definition of structures and interfaces with <em><strong>VISION</strong></em><br>
VAPI.H: Definition of structures and interfaces with <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%">Each LDV is there in a directory associated with
its name. In such a directory, there is:<br>
&lt;name of ldv&gt;.C: the "source" file of the
LDV<br>
&lt;name of ldv&gt;.PRJ: the project file (Pure C)</td>
</tr>
<tr>
<td align="center"><strong>&lt;...&gt;/LDV/DOC</strong></td>
<td>This documentation</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<p>.<a name="squelette"></a><font size="4"><strong>6.2 SKELETON</strong></font></p>
<p>You can use for the skeleton of an LDV any source of an LDV found in
the kit. It is up to you to see which file suits best the LDV you want to
make!</p>
<p>&nbsp;</p>
<p>.<a name="exemples"></a><font size="4"><strong>6.3 EXAMPLES</strong></font></p>
<p>The <em><strong>VISION</strong></em> kit provides the following LDVs
as well as the sources (in PureC). Here are their characteristics:</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center" width="20%"><strong>INVERT.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Inversion of bits of an image</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capabilities</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Does not modify the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Transformation type
</strong></td>
<td width="80%">In place. This property can also be suppressed
from the CAPS define, and <em><strong>VISION</strong></em> can be
forced to allocate memory for the destination (teaching only
purpose!)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Uses VAPI</strong></td>
<td width="80%">No</td>
</tr>
<tr>
<td align="center"><strong>INI file</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Comment</strong></td>
<td width="80%">Very simple! Uses only vro_cpyfm VDI function<br>
Not really useful: <em><strong>VISION</strong></em>
already provides the "N<>gative" function since version
1.0!</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%"><strong>XWAVE.LDV
/ YWAVE.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Waves on X / Y axis</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capabilities</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Does not modify the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Transformation
type</strong></td>
<td width="80%">Forces <em><strong>VISION</strong></em> to
allocate memory for destination. It must be possible to do
without, but this complicates a little the LDV...</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Uses VAPI</strong></td>
<td width="80%">Yes (<a href="vapi/pr.htm">Progress</a> +
<a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>INI file</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Comment</strong></td>
<td width="80%">Amusing and quite simple. Presents <a href="vapi/pr.htm">the VAPI progress interface</a> and the
function to "clear" an image (<a href="vapi/ra.htm#RaImgWhite">RaImgWhite</a>).</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%"><strong>BW.LDV</strong></td>
</tr>
<tr>
<td align="center" width="20%"><strong>Description</strong></td>
<td width="80%">Conversion of an image (or part in True colour) to
an image in shades of grey</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capabilities</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Modifies the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Transformation
type</strong></td>
<td width="80%">In place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Uses VAPI</strong></td>
<td width="80%">Yes (<a href="vapi/pr.htm">Progress</a> +
<a href="vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>INI file</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Comment</strong></td>
<td width="80%">Uses True colour conversion format functions (<a href="vapi/ra.htm#RaTCConvert">RaTCConvert</a> and <a href="vapi/ra.htm#RaTCInvConvert">RaTCInvConvert</a>).
Shows also how to modify the palette. Compared to the equivalent <em><strong>VISION</strong></em>
(B&amp;W conversion) function, this LDV allows to do it on a
block (True Colour mode only)</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%">Performs a pixelization on an image or part of it</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">True Color modes only (16 and 32
planes).&nbsp;ATARI. format</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">In place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Yes (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Nice
effect and good for learning: this&nbsp;LDV only considers True Color
ATARI format and it will nevertheless run on your MagicPC ! It makes
use of&nbsp; <em><strong>VISION</strong></em> feature to deal with format handling and only focuses on a specific format. Hadnles cancel feature.</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%">Performs a perspective effect&nbsp;on an image or part of it</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). ATARI format. Does not change palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Forces <em><strong>VISION</strong></em> to
allocate memory for destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Oui (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>+ <a href="../../ldv/vapi/ra.htm">Raster Interface</a>
+ <a href="../../ldv/vapi/me.htm">MEM Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Nice perspective effect. When operating on selection, the allocation bloc is set thanks to&nbsp;<a href="../../ldv/defines.htm#LDVF">LDVF_NOSELECTION</a>
flag (pretty painful to handle in bitplane mode). This LDV only gets an image and not bloc selection.<a href="../../ldv/vapi/me.htm">MEM Interface</a>&nbsp;function <a href="../../ldv/vapi/me.htm#MeSCopyMemory8">MeCopyMemoryxx</a> is used to scale lines.</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%">Change red, green, blue color spreading using a line (light) or a gamma curve (gamma).</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Modifies the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">In place</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Yes (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>+ <a href="../../ldv/vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Smart replace for old embedded functions in
<em><strong>VISION</strong></em>..In bitplane mode, palette is changed. Handles cancel.<br>
These LDVs are pretty optimized for memory performances: they operate
in place on machine specific format and can work on a bloc inside the
image.(true colro only).<br>
These LDVs are very similar : only internal function ChangeColors is specific to a LDV.</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%">Performs a rotation on the image or part of it.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Does not change the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Forces <em><strong>VISION</strong></em> to
allocate memory for destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Yes (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>+ <a href="../../ldv/vapi/ra.htm">Raster Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">This LDV is very simple. Actually it just calls&nbsp;<a href="../../ldv/vapi/ra.htm#RaRasterRotateGetDstMFDB">RaRasterRotateGetDstMFDB</a> and <a href="../../ldv/vapi/ra.htm#RaRasterRotate">RaRasterRotate</a>
functions in&nbsp;<a href="../../ldv/vapi/index.htm">VAPI</a> <a href="../../ldv/vapi/ra.htm">Raster interface</a>&nbsp;<a href="../../ldv/vapi/index.htm"></a>.<br>
Have a look how&nbsp;<a href="../../ldv/defines.htm#LDVF">LDVF_NOSELECTION</a> flag is used in order to not complicate things with 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%">Mix image blocs to generate a puzzle</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Does not change the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Forces <em><strong>VISION</strong></em> to
allocate memory for destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Yes (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Fun LDV easy to code. Smartest thing is entropy handling i.e. how much disorder there is in the mix.</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%">Simulates a black hole in an image. Consider it as a tribute to <a href="https://www.youtube.com/watch?v=A6HhDFskbXs">Stephen Hawking</a>.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Capacit<EFBFBD>s</strong></td>
<td width="80%">Any number of bitplans (1, 2, 4, 8, 16, 24
and 32). Machine format. Does not change the palette.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Type de
transformation</strong></td>
<td width="80%">Forces <em><strong>VISION</strong></em> to
allocate memory for destination.</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Utilise VAPI</strong></td>
<td width="80%">Yes (<a href="../../ldv/vapi/pr.htm">Progress
Interface</a>+<a href="../../ldv/vapi/co.htm">Config Interface</a>+<a href="../../ldv/vapi/lo.htm">Logging Interface</a>)</td>
</tr>
<tr>
<td align="center"><strong>Fichier INI</strong></td>
<td>Yes (English / French)</td>
</tr>
<tr>
<td align="center" width="20%"><strong>Remarque</strong></td>
<td width="80%">Most complicated LDV so far. Has its own optimzations for 68030 and 68881. Uses black hole symetry to speed up computations.</td>
</tr>
</tbody></table>
</center></div>
<hr>
<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="Previous chapter " border="0" height="26" hspace="2" width="46"></a><a href="index.htm"><img src="images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></a><a href="hints.htm"><img src="images/csuiv.jpg" alt="Next Chapter " 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><em>VISION </em>Documentation
<em>(LDV)</em></strong></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">Last update: 05/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">Download documentation</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>6.
DEVELOPMENT KIT</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>