initial commit

This commit is contained in:
root
2023-06-12 09:14:09 +02:00
commit b4912f303e
2545 changed files with 209350 additions and 0 deletions

View File

@@ -0,0 +1,220 @@
<!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 (VAPI) : Configuration Interface</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="ra.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="in.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
(VAPI)</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<EFBFBD>re
mise <20> jour : 07/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>CONFIGURATION
INTERFACE</strong></font></p>
</td>
<td align="center" width="17%">&nbsp;&nbsp;<a href="http://www.estat.com/getstats?serial=1390118421">&nbsp;</a>&nbsp;<br></td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>R<EFBFBD>sum<EFBFBD></strong></td>
</tr>
<tr>
<td width="15%"><strong>Interface prefix</strong></td>
<td width="85%">Co</td>
</tr>
<tr>
<td width="15%"><strong>Number of functions</strong></td>
<td width="85%">3</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of functions giving access to&nbsp;<em><strong>VISION</strong></em>.'s configuration (paths, languages,...)</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="CoGetLDVPath"></a><strong>Prototype</strong></td>
<td width="85%">char* cdecl <strong>CoGetLDVPath</strong>(void)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">A pointer to string holding LDV path</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used
to know what is LDV path. Enables the LDV to load a file from there
(e.g. LOD, INI). This path is passed as a parameter to&nbsp;<a href="../descrip.htm#getparams">GetParams</a>
function (optional).</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%"><a href="index.htm">VAPI</a> returns a pointer to&nbsp;<em><strong>VISION</strong></em>.'x configuration.
You shall NOT change data from this pointer; make your own copy if you need !</td>
</tr>
<tr>
<td width="15%"><strong>VAPI&nbsp;</strong><strong>Version</strong></td>
<td width="85%">1.02 or more</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="CoGetCurrentLanguage"></a><strong>Prototype</strong></td>
<td width="85%">char* cdecl <strong>CoGetCurrentLanguage</strong>(void)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">A pointer to string holding&nbsp;<em><strong>VISION</strong></em>.''s current language<em><strong></strong></em></td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to know which language is currently used. Use with&nbsp;<a href="#CoGetLDVPath">CoGetLDVPath</a>, you can locate the INI file for this LDV, just concatenate both strings.</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%"><a href="index.htm">VAPI</a> returns a pointer to&nbsp;<em><strong>VISION</strong></em>.'x configuration.
You shall NOT change data from this pointer; make your own copy if you need !</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or more</td>
</tr>
</tbody></table>
</center></div>
<p>
</p><div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="CoGetFunctionOptimizations"></a><strong>Prototype</strong></td>
<td width="85%">unsigned long cdecl <strong>CoGetFunctionOptimizations</strong>(void
*function)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">Pointer to <a href="index.htm">VAPI</a> function for which you'd like to know if some optimization is available</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">A 32bit word which following bit meaning:<br>
Bit 0 set &nbsp;This function is 68030 optimized<br>
Bit 1 set : This function is DSP 56001 optimzed</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to know if a function has specific processor optimzations to let the progress window know about this (see&nbsp;<a href="pr.htm">Progress Interface</a> : <a href="pr.htm#PrOptimize">PrOptimize</a>). Not that useful but so sexy !</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">If
the machine running this call has no 68030 or DSP support, this call
won"t return any optimization, which is pretty logical as it won"t be
used even if exisitng.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI&nbsp;</strong><strong>Version</strong></td>
<td width="85%">1.03&nbsp;or more</td>
</tr>
</tbody></table>
</center></div>
<hr>&nbsp;
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="CoGetProcessors"></a><strong>Prototype</strong></td>
<td width="85%">unsigned long cdecl <strong>CoGetProcessors</strong>(void)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">Requests&nbsp;<em><strong>VISION</strong></em> what are the available processors</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">A 32bit word which following bit meaning:<br>0x02 : A 68030 or better is present<br>0x20 : A FPU (68881 or better) is present<br>0x200: A DSP 56001 is present</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to prepeare LDV to select appropriae routines depending on processors availability</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">The returned value may be filtered out by&nbsp;<span style="font-style: italic; font-weight: bold;">VISION</span>
if VISION.INI says so in&nbsp;Hide030, HideFPU or HideDSP
variables set to 1. Very useful to simulate LDV run on a lower configuration.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.04&nbsp;or more</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="ra.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="in.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
(VAPI)</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<EFBFBD>re
mise <20> jour : 07/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>CONFIGURATION
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,342 @@
<!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 (VAPI) : INI Interface</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="co.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="27" hspace="2" width="32"></a><a href="lo.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Chapitre suivant" hspace="2"></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
(VAPI)</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">Last update: 19/05/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>INI
INTERFACE</strong></font></p>
</td>
<td align="center" width="17%"></td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>Abstract</strong></td>
</tr>
<tr>
<td width="15%"><strong>Interface Prefix</strong></td>
<td width="85%">In</td>
</tr>
<tr>
<td width="15%"><strong>Number of functions</strong></td>
<td width="85%">6</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of functions to manipulate INI files. A maximum of 3 INI files can be simulataneously managed.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InOpen"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InOpen</strong>(char
*file)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> file : INI file name </td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">If &gt;= 0 : a INI handle<br>
If &lt; 0, No more INI handle available</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Reserve a INI handle to operate later on. If file does not exist, a valid handle is returned, file can then be saved by calling <a href="#InSaveAndClose">InSaveAndClose</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong><strong></strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InClose"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InClose</strong>(long
hini)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> hini : A INI handle previously returned by <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Success<br>
-1 : Invalid handle</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Free INI handle. Does not save modifications, use <a href="#InSaveAndClose">InSaveAndClose</a> to save them.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InSaveAndClose"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InSaveAndClose</strong>(long
hini, char *new_name)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> hini :&nbsp;A INI handle previously returned by <a href="in.htm#InOpen">InOpen</a><a href="#InOpen"></a><br>
<strong>[IN]</strong> new_name : new filename to use for saving. If NULL, this function will use the one passed to <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Success<br>
-1 : Invalid handle, won't save.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Generate a INI file by commiting all modifications made since last call to <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InGetKey"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InGetKey</strong>(long
hini, char *section, char *key, char *val_key)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> hini :&nbsp;A INI handle previously returned by <a href="in.htm#InOpen">InOpen</a><a href="#InOpen"></a><br>
<strong>[IN]</strong> section : section name<br>
<strong>[IN] </strong>key : key name<br>
<strong>[OUT]</strong> val_key : buffer which will hold the key value in&nbsp;ASCII</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Error : key or section does not exist<br>
1 : Success, ASCII value for this key in the section is hold in val_key</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Retrieves a specific key in a specific section</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InSetKey"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InSetKey</strong>(long
hini, char *section, char *key, char *val_key)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> hini :&nbsp;A INI handle previously returned by <a href="in.htm#InOpen">InOpen</a><br>
<strong>[IN]</strong> section : section name<br>
<strong>[IN] </strong>key : key name<br>
<strong>[OUT]</strong> val_key : buffer which&nbsp;holds the key value in&nbsp;ASCII</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Error : key or section could not be created or changed due to insufficient memory<br>
1 : Success</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Adds or modify a key within a section</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">If section r key does not exist, it is created</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="InGetOrSetKey"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InGetOrSetKey</strong>(long
hini, char *section, char *key, char *val_key)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> hini :&nbsp;A INI handle previously returned by <a href="in.htm#InOpen">InOpen</a><br>
<strong>[IN]</strong> section : section name<br>
<strong>[IN] </strong>key : key name<br>
<strong>[IN/OUT] </strong>val_key : buffer holding the default key value in ASCII [IN] or/and the key value [OUT]</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Key has been sucessfully retrieved<br>
1 : Key has been created.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to retrieve an existing key in a given section or create it with a default value.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Pretty useful!</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<pre><br></pre><div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><strong><a name="GetKeyFromFile"></a>Prototype</strong></td>
<td width="85%">long<strong>&nbsp;InGetKeyFromFile</strong>(char *file, char *section, char *key, char *val_key)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> file : INI file name<a href="in.htm#InOpen"></a><br>
<strong>[IN]</strong> section : section name<br>
<strong>[IN] </strong>key : key name<br>
<strong>[IN/OUT] </strong>val_key : buffer holding the default key value in ASCII [IN] or/and the key value [OUT]</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : Key could not be retrieved (filename, section or key not found)<br>
1 : Key has been succesfully read.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used
to read a key value directly from a file without the need to create the
key if not present (as previous function). Typically this is used to
read a setting from a file.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Pretty useful!</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.04 or greater</td>
</tr>
</tbody></table>
</center></div>
<font size="3"><br></font><pre><font size="3">Example: find a proprietary key in a LDV INI file<br>long hini, must_save ;<br>short angle = 90; </font><font color="#000080" size="3"><em>/* Default value */</em></font><font size="3">
char buffer[256] ;
char *path_ldv, *language ;
path_ldv = Vapi-&gt;</font><a href="co.htm#CoGetLDVPath"><font size="3">CoGetLDVPath</font></a><font size="3">() ; </font><font color="#000080" size="3">/* Get LDV current path */</font><font size="3">
language = Vapi-&gt;</font><a href="co.htm#CoGetCurrentLanguage"><font size="3">CoGetCurrentLanguage</font></a><font size="3">() ; </font><font color="#000080" size="3">/* Get current language */</font><font size="3">
if ( path_ldv &amp;&amp; language )
{
sprintf( buffer, "%s\\%s\\MYLDV.INI", path_ldv, language ) ;
hini = Vapi-&gt;</font><a href="#InOpen"><font size="3">InOpen</font></a><font size="3">( buffer ) ;<br> if ( hini &gt;= 0 )<br> {<br> sprintf( buffer, "%d", angle ) ; </font><font color="#000080" size="3"><em>/* Setting default value */</em></font><font size="3">
must_save = Vapi-&gt;</font><a href="#InGetOrSetKey"><font size="3">InGetOrSetKey</font></a><font size="3">( hini, "Parameters", "Angle", buffer ) ;<br> angle = atoi( buffer ) ; </font><font color="#000080" size="3"><em>/* Either angle will be set to 90 (default value), or value retrieved from INI file */</em></font><font size="3">
if ( must_save ) Vapi-&gt;</font><a href="#InSaveAndClose"><font size="3">InSaveAndClose</font></a><font size="3">( hini ) ; </font><font color="#000080" size="3"><em>/* Save if key did not exist */</em></font><font size="3">
else Vapi-&gt;</font><a href="#InClose"><font size="3">InClose</font></a><font size="3">( hini ) ; </font><font color="#000080" size="3"><em>/* Else regular close */</em></font><font size="3">
}
}</font></pre>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="co.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="lo.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Chapitre suivant" hspace="2"></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
(VAPI)</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">Last update&nbsp;: 19/05/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>INI
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,159 @@
<!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 (VAPI): Presentation</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="index.htm"><img src="../images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></a><a href="pr.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>(VAPI)</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: 07/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>V
A P I</strong></font></p>
</td>
<td align="center" width="17%"></td>
</tr>
</tbody></table>
</center></div>
<hr>
<p><a name="Pr<50>sentation"></a><font size="4"><strong>1.
Presentation</strong></font></p>
<p>VAPI (<em><strong>VISION's</strong></em> Application
Programmer Interface) is a part of <em><strong>VISION</strong></em>
designed to help you develop LDVs. You must have guessed that internally,
<em><strong>VISION</strong></em> uses numerous functions to handle images
(bit-planes conversions &lt;--&gt; TOS/VDI indexes, rasters handling,...)
as well as user interface functions (e.g., progress windows).<br>
The aim of VAPI is make available to LDVs these functions reserved, until
now, to the internal operations of <em><strong>VISION</strong></em>.
There are two interests for an LDV:</p>
<ul>
<li>Its author spares the time to develop again an existing function
</li>
<li>The LDV is lighter</li>
</ul>
<p>Of course, <em><strong>VISION</strong></em>
has numerous functions (more or less easy and elegant...), a choice must
then be made on which ones to export.
Furthermore, <font size="3"><em><strong>VISION</strong></em></font> could
also export its data such as the catalog, the image Browser, etc...<br>
Since it still takes a lot of time to design and make all this, I will
first ensure that <em><strong>VISION</strong></em> exports first a few
"basic" functions, then, if success increases, more will follow.
</p>
<p>&nbsp;</p>
<p><a name="dev-kit"></a><font size="4"><strong>2. Development kit
</strong></font></p>
<p>The VAPI development kit is identical to the LDV one.
You will find it <a href="../kitdev.htm">here</a>.</p>
<p>&nbsp;</p>
<p><a name="use"></a><font size="4"><strong>3. Use</strong></font></p>
<p>Using VAPI from an LDV is very simple: when <em><strong>VISION</strong></em>
call the GetLDVCapabilities function, it returns a pointer on a structure
of the type <a href="struct.htm#VAPI">VAPI</a>.
Without going into details, this stucture contains the following
information:</p>
<ul>
<li>A header of the type <a href="struct.htm#VAPI_HEADER">VAPI_HEADER</a></li>
<li>A list of "loose" functions. These functions are in fact
put together in groups (also called interfaces). Each group is
terminated by an unused memory area, which purpose is to host new
functions from the same group. If new groups are created, they will go
at the end of the structure, to garanty ascending compatibility.</li>
</ul>
<p>Now, to use a function from VAPI, it's very simple; imagine you want to
initialise the destination image raster passed as a parameter in the Run
function, with the colour white (in bit-plane or True Color); you just
have to insert the following line:</p>
<p><strong>Vapi-&gt;RaImgWhite( &amp;out-&gt;Raster ) ;</strong></p>
<p>This only suppose you maintained the VAPI pointer provided by
<em><strong>VISION</strong></em> through GetLDVCapabilities (done
automatically by the skeleton).</p>
<p>The list of all functions defined by the VAPI interface is available
here. Sorry, but all the interfaces and the function names are in English!
(Translator's note: this remark is obviously for French readers).</p>
<p>&nbsp;</p>
<p><a name="interfaces"></a><font size="4"><strong>4. Available interfaces
</strong></font></p>
<p><font size="3">Interfaces are grouping function having a common
interest. Here is the list (which I hope is not complete) of the current
interfaces:</font></p><table border="1" width="90%"><tbody><tr><td align="center" width="25%"><a href="pr.htm"><font size="3">Progress Interface</font></a></td>
<td align="center" width="25%"><a href="ra.htm"><font size="3">Raster Interface</font></a></td>
<td align="center" width="25%"><a href="co.htm">Configuration
Interface</a></td>
<td align="center" width="25%"><a href="in.htm">INI
Interface</a></td>
</tr>
<tr>
<td align="center"><a href="me.htm">MEM Interface</a></td>
<td align="center"><a href="lo.htm">Logging Interface</a>&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
</tbody></table>
<p>&nbsp;</p><p>&nbsp;</p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="index.htm"><img src="../images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></a><a href="pr.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>(VAPI)</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:&nbsp;07/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>V
A P I</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,151 @@
<!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 (VAPI) : Configuration Interface</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="in.htm"><img style="border: 0px solid ; width: 46px; height: 26px;" src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent" hspace="2"></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="struct.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Chapitre suivant" hspace="2"></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
(VAPI)</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">Last update&nbsp;: 08/26/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>LOGGING INTERFACE</strong></font></p>
</td>
<td align="center" width="17%">&nbsp;</td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>Abstract</strong></td>
</tr>
<tr>
<td width="15%"><strong>Interface Prefix</strong></td>
<td width="85%">Lo</td>
</tr>
<tr>
<td width="15%"><strong>Nomber of functions</strong></td>
<td width="85%">2</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of&nbsp; functions enabling logging from LDV</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="LoDoLog"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <span style="font-weight: bold;">L</span><strong>oDoLog</strong>(unsigned long level, char* format, ...)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">level:
bitmask defining the logging level of the message:: LL_FATAL, LL_ERROR,
LL_WARNING, LL_INFO, LL_PERF, LL_MEM, LL_GW2, LL_GW1, LL_DEBUG, LL_KCODE, LL_TMP2, LL_TMP1<br>format: format string for parameters passed after (just like sprintf)<br>...: dynamic list of parameters to pass (cf. <a href="https://en.wikipedia.org/wiki/Ellipsis_%28computer_programming%29">'C' ellipsis</a>)</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">Number of bytes written to logging file</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to send information to&nbsp;<em><strong>VISION</strong></em>'s logging file; typically for debugging, performance or error<br>Note that if level parameter does not match current&nbsp;<em><strong>VISION</strong></em>''s
logging level bitmask, this function will simply return without even
starting formatting data (which may have been CPU consuming)</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">Example:<br>Vapi-&gt;LoDoLog(LL_DEBUG, "%ld pixels computed or deduced", np) ;<br></td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.04 or more</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="LoGetLogLevel"></a><strong>Prototype</strong></td>
<td width="85%">unsigned long cdecl <span style="font-weight: bold;">L</span><strong>oGetLogLevel</strong>(void)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">The bitmask logging level currently used by <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to know what is the current&nbsp;<em><strong>VISION</strong></em>'s logging level in order to not proceed to some useless computation for some message which won't be logged anyway</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">Use
this function only if you may have extra computation before calling
LoDoLog as LoDoLog will return immediatly if logging level does not
match loggng level message.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.04 or more</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center><br></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="in.htm"><img style="border: 0px solid ; width: 46px; height: 26px;" src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent" hspace="2"></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="struct.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Chapitre suivant" hspace="2"></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
(VAPI)</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"></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>LOGGING</strong></font><font size="4"><strong>&nbsp;INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,201 @@
<!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 (VAPI) : MEM Interface</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="in.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="27" hspace="2" width="32"></a><a href="struct.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
(VAPI)</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">Last update&nbsp;:&nbsp;08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>MEM
INTERFACE</strong></font></p>
</td>
<td align="center" width="17%">&nbsp;&nbsp;</td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>Abstract</strong></td>
</tr>
<tr>
<td width="15%"><strong>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">Me</td>
</tr>
<tr>
<td width="15%"><strong>Nombre de fonctions</strong></td>
<td width="85%">3</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of functions allowing to manipulate memory areas, mostly image oriented</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="MeSCopyMemory8"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>MeSCopyMemory8</strong>(char
*dst, char *src, unsigned long nb_elems_dst, unsigned
long nb_elems_src)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointer to memory area to change<br>
<strong>[IN]</strong> src : Pointer to memory area to copy from<br>
<strong>[OUT]</strong> nb_elems_dst : Number of 8bit elements in destination area<br>
<strong>[IN]</strong> nb_elems_src :&nbsp;Number of 8bit elements in source area</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Copies
a 8bit memory area by respecting the number of elements in each zone.
Very useful to perform changes on a line. Not working with overlapping
zones.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Number of elements shall not be more than 65535 due to specific optimization. If a 68030 processor is available, <em><strong>VISION</strong></em>
will use automatically an optimzed routine.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="MeSCopyMemory16"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>MeSCopyMemory16</strong>(char
*dst, char *src, unsigned long nb_elems_dst, unsigned
long nb_elems_src)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointer to memory area to change<br>
<strong>[IN]</strong> src : Pointer to memory area to copy from<br>
<strong>[OUT]</strong> nb_elems_dst : Number of 16bit elements in destination area<br>
<strong>[IN]</strong> nb_elems_src :&nbsp;Number of 16bit elements in source area</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Copies a 16bit memory area by respecting the number of elements in each
zone. Very&nbsp;useful to perform changes on a line. Not working with
overlapping zones.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">Number of elements shall not be more than 32767 due to specific optimization. If a 68030 processor is available, <em><strong>VISION</strong></em>
will use automatically an optimzed routine.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="MeSCopyMemory32"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>MeSCopyMemory32</strong>(char
*dst, char *src, unsigned long nb_elems_dst, unsigned
long nb_elems_src)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointer to memory area to change<br>
<strong>[IN]</strong> src : Pointer to memory area to copy from<br>
<strong>[OUT]</strong> nb_elems_dst : Number of 32bit elements in destination area<br>
<strong>[IN]</strong> nb_elems_src :&nbsp;Number of 32bit elements in source area</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Copies a 32bit memory area by respecting the number of elements in each
zone. Very&nbsp;useful to perform changes on a line. Not working with
overlapping zones.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Number of elements shall not be more than 16383 due to specific optimization. If a 68030 processor is available, <em><strong>VISION</strong></em>
will use automatically an optimzed routine.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="in.htm"><img src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>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="struct.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
(VAPI)</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">Last update&nbsp;:&nbsp;08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>MEM
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,107 @@
<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 (VAPI): Content</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%"><img
src="../images/cprev.jpg" alt="Previous Chapter "
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="../images/csom.jpg" alt="Back to content "
border="0" hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="../images/csuiv.jpg"
alt="Next Chapter " 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><em>VISION </em>Documentation
<em>(VAPI)</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">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->09/09/00<!--webbot
bot="Timestamp" i-checksum="12366" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">Download documentation</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>C O N T
E N T</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>&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%"><img
src="../images/cprev.jpg" alt="Previous chapter "
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="../images/csom.jpg" alt="Back to content "
border="0" hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="../images/csuiv.jpg"
alt="Next Chapter " 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><em>VISION </em>Documentation
<em>(VAPI)</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">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->09/09/00<!--webbot
bot="Timestamp" i-checksum="12366" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">Download documentation</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>C O N T E
N T</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -0,0 +1,229 @@
<!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 (VAPI) : Progress Interface</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="index.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="ra.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>(VAPI)</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: 08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>PROGRESS
INTERFACE</strong></font></p>
</td>
<td align="center" width="17%">&nbsp;&nbsp;</td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>Summary</strong></td>
</tr>
<tr>
<td width="15%"><strong>Interface prefix</strong></td>
<td width="85%">Pr</td>
</tr>
<tr>
<td width="15%"><strong>Number of functions</strong></td>
<td width="85%">4</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of functions allowing an action on
<em><strong>VISION</strong></em>'s progress windows, to inform
user about work in progress.</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="PrSetProg"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>PrSetProg</strong>(long
pc)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> pc: percentage
of work done (0...100)</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Updates the percentage indicator in the progress
window</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">If the pc paramteter is out of limits, it will be
shifted to the nearest limit. The type long is used to ensure
compatibility between compilers.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="PrOptimize"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>PrOptimize</strong>(long
mask)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> cpu030: 68030 instructions
will be used when running<br>
<strong>[IN] </strong>mask: bit mask having the following meaning:
<br>
Bit 0: 68003 instructios will be used<br>
Bit 1: DSP will be used</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Indicates to the user that 68030 and/or DSP
optimisations will be used when running. This will display a
"030!" or "DSP!" in the progress window
</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">The type long is used to ensure
compatibility between compilers</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="PrOptimize"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>PrSetText</strong>(long
no_line, char *text)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> no_line : text area index (0, 1, or 2)<br>
<strong>[IN] </strong>text : pointer to string to be displayed</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Displays in the defined text area of the progress window, the specified text</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">The type long is used to ensure
compatibility between compilers. If no_line is not valid, nothing happens.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02&nbsp;or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<table border="2" width="100%"><tbody><tr>
<td width="15%"><a name="PrSetProgEx"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>PrSetProgEx</strong>(long
pc)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> pc :&nbsp;percentage
of work done (0...100)</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : User did not request cancel of current operation (Run)<br>
!= 0 : User requested to cancel the current operation</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Update current progress and retuns a non zero value if user wants to cancel the operation.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">If the pc paramteter is out of limits, it will be
shifted to the nearest limit. The type long is used to ensure
compatibility between compilers.<br>Used together with<a href="../../../ldv/defines.htm#LDVF"> LDVF_SUPPORTCANCEL</a> flag,
this function enables managing cancel from a LDV<a href="../../../ldv/descrip.htm#run">Run</a> call.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02&nbsp;or greater</td></tr></tbody></table><p></p><p></p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="index.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="ra.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>(VAPI)</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: 08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>PROGRESS
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,761 @@
<!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 (VAPI): Raster Index Interface</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="pr.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="27" hspace="2" width="32"></a><a href="co.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Next Chapter" hspace="2"></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>(VAPI)</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 08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>RASTER
INTERFACE</strong></font></p>
</td>
<td align="center" width="17%"></td>
</tr>
</tbody></table>
</center></div>
<hr>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td colspan="2" align="center"><strong>Summary</strong></td>
</tr>
<tr>
<td width="15%"><strong>Interface prefix</strong></td>
<td width="85%">Ra</td>
</tr>
<tr>
<td width="15%"><strong>Number of functions</strong></td>
<td width="85%">16</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Set of functions allowing to handle image rasters
under different formats (bit-plane, True Color, ATARI formats,
specific, standard...).</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaImgWhite"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaImgWhite</strong>(MFDB
*img)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img: pointer
on the image to process</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Initialise an image raster with the white colour.
The expected format is the <a href="../notions.htm#formats%20d%27images">ATARI format</a>.
In palette mode (img-&gt;fd_nplanes &lt;= 8), the raster is
initialised with bits set to 0 (TOS/VID index = 0), the 0 index of
the palette is usually set on the white colour.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">This function processes the transformation
"in place".</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaIs15Bits"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>RaIs15Bits</strong>(void)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0: True Color format on 16 bits or
number of bits of the graphic resolution not equal to
16<br>
1: Number of planes of the graphic resolution on 16 bits but pixel
coding on 15 bits (5 per component)</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Indicates whether the True Color coding of the
graphic resolution is on 15 or 16 bits</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">In cases where it is useful to know whether the
number of bits of coding for the green component is on 5 or 6
bits, it is possible, using this function, to know whether all the
16 bits of the True Color mode on 16 planes are used (green
component is then coded on 6 bits instead of 5 and RaIs51Bits
returns 0) or only 15 bits are used (green component is then coded
on 5 bits and RaIs15Bits returns 1)</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaTCConvert"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaTCConvert</strong>(MFDB
*img)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img: pointer
on the image to process</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Transforms a True Color raster of the specific
format of the graphic card to a True Color raster in
<a href="../notions.htm#formats%20d%27images">ATARI format</a></td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">This function processes the transformation
"in place". If <em><strong>VISION</strong></em>
recognises that the machine specific format is the ATARI format,
the function returns immediately, without any processing. This
function is the reverse of <a href="#RiTCInvConvert">RiTCInvConvert</a></td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaTCInvConvert"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaTCInvConvert</strong>(MFDB
*img)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img: pointer
on the image to process</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Transforms a True Color raster in
<a href="../notions.htm#formats%20d%27images">ATARI format</a>
to a True Color raster in the format specific to the graphic card</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">This function processes the transformation
"in place". If <em><strong>VISION</strong></em>
recognises that the machine specific format is the ATARI format,
the function returns immediately, without any processing.
This function is the reverse of <a href="#RiTCConvert">RiTCInvConvert</a></td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaInd2RasterInit"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaInd2RasterInit</strong>(MFDB
*img, long width)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img: pointer
on the image to process<br>
<strong>[IN] </strong>width: maximum width (in pixels).
width cannot be greater than 32767.
Coding on a 32 bits integer is only for ensuring compatibility
with 32 bits compilers.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Prepares index transfer operatios to an image
raster in <a href="../notions.htm#formats%20d%27images">ATARI format</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">The width may seem redundant with
img-&gt;fd_w but it is there because VISION always set
img-&gt;fd_w to a multiple of 16 (internal optimisations). Thus,
width allows not to be limited to a width multiple of 16 pixels.<br>
<u>Interesting</u> : if width is a multiple of 16, the
RaInd2Raster function will be much faster!</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaInd2Raster"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaInd2Raster</strong>(unsigned
char*indexes, long nb_indexes)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> indexes: pointer
on the TOS table indexes to convert to the raster previously
initialised with the <a href="#RaInd2RasterInit">RaInd2RasterInit</a> function<br>
<strong>[IN] </strong>nb_indexes: Number of indexes in the table
pointed by indexes</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Converts TOS indexes in raster bit-plane data</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Once the initialisation is done by the
<a href="#RaInd2RasterInit">RaInd2RasterInit</a> functio,
this function may be called as much as wanted to transform the
data flow (TOS indexes) to the image raster. VAPI memorises the
last position in the raster. For instance:
Vapi-&gt;RaInd2RasterInit( img, wished_width ) ;<br>
for ( y = 0; y &lt; img-&gt;fd_h; y++ )<br>
{<br>
GetTosIndexes( y, tab_indexes, &amp;nb_indexes ) ; /*
Get TOS indexes for line y */<br>
Vapi-&gt;RaInd2Raster( tab_indexes, nb_indexes ) ; /*
Send to the ATARI bit-plane format raster */<br>
}</td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaRaster2Ind"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaRaster2Ind</strong>(short
*pt_bitplan, long nb_pts, long nb_planes, unsigned char
*tos_indexes)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> pt_bitplan:
pointer on the beginning of raster data to convert
(start with a multiple of 16 pixels)<br>
<strong>[IN] </strong>nb_pts: Number of points to
convert<br>
<strong>[IN] </strong>nb_planes: Number of planes of
the image raster. nb_planes can only take values
1, 2, 4, or 8. Coding on a 32 bits integer is only for ensuring compatibility
with 32 bits compilers.<br>
<strong>[OUT] </strong>tos_indexes: pointer on the
TOS indexes table receiving the data (must be dimensioned to
nb_pts bytes)</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Converts bit-plane data from the raster to TOS
indexes</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Reverse function of <a href="#RaInd2Raster">RaInd2Raster</a></td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaGetTOS2VDIArray"></a><strong>Prototype</strong></td>
<td width="85%">unsigned char *cdecl <strong>RaGetTOS2VDIArray</strong>(long
nb_planes)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> nb_planes: Number
of plans. nb_planes can only take values 1, 2,
4, or 8. Coding on a 32 bits integer is only for ensuring
compatibility with 32 bits compilers.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">Pointeur on the conversion table
TOS index --&gt; VDI index</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Get the matching table between TOS and VDI
indexes, for a given number of planes</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Reverse function of <a href="#RaGetVDI2TOSArray">RaGetVDI2TOSArray</a></td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaGetVDI2TOSArray"></a><strong>Prototype</strong></td>
<td width="85%">unsigned char *cdecl <strong>RaGetVDI2TOSArray</strong>(long
nb_planes)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> nb_planes: Number
of planes. nb_planes can only take values 1, 2,
4, or 8. Coding on a 32 bits integer is only for ensuring compatibility
with 32 bits compilers.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">Pointeur on the conversion table
VDI index --&gt; TOS index</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Get the matching table between VDI and TOS
indexes, for a given number of planes</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">Reverse function of <a href="#RaGetTOS2VDIArray">RaGetTOS2VDIArray</a></td>
</tr>
<tr>
<td width="15%"><strong>VAPI version</strong></td>
<td width="85%">1.00 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaGetImgSize"></a><strong>Prototype</strong></td>
<td width="85%">unsigned long *cdecl <font size="3"><strong>RaGetImgSize</strong></font>(long
width, long height, long nplanes)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> width : Image width in pixels number<br>
<strong>[IN]</strong> height : Image height in pixels number<br>
<strong>[IN]</strong> nplanes : Number of planes per pixel<br>32bit variable sizes is just here for 32bit compilers compatibility.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">The required memory size, in bytes, to hold the image</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used to know the image size, the 16 pixels alignement taken into account</td>
</tr>
<tr>
<td width="15%"><strong>Comments</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02&nbsp;or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaRasterAlloc"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>RaRasterAlloc</strong>(MFDB
*raster)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> raster :
VDI structure defining an image</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">0 : OK, memory has been allocated (pointed out by fd_addr field of MFDB structure)<br>
!= 0 : Error (not enough memory)</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Allocate an image based on its definition (fd_w, fd_h and fd_nplanes MFDB structure fields).</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">Upon success, fd_addr points to image data (not initialized), else fd_addr is set to NULL.<br>
fd_wdwidth is updated, other fileds remain unchanged.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02&nbsp;or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaRasterFree"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaRasterFree</strong>(MFDB
*raster)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> raster :&nbsp;VDI structure defining an image</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Free previously allocated memory by<a href="ra.htm#RaRasterAlloc"> RaRasterAlloc</a></td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">All MFDB fileds are set to zero after memory being freed.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.02&nbsp;or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table style="width: 100%;" border="2">
<tbody><tr>
<td width="15%"><a name="RaTC15RemapColors"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaTC15RemapColors</strong>(<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> *rc)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> rc : Pointer to a&nbsp;<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
structure defining elementary color changes, first pixel to change and number of pixels to operate on.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Change the current color spreading of a 15bit True Color image. red, green and blue fields of&nbsp; <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> shall point to arrays of &nbsp;32 (32 = 2^5)&nbsp;elements,
each element being the value to substitute at this array index for instance the formula:<br>
red[i] = i ; (0 &lt;= i &lt; 32) does not change anything (i being replaced by i).<br>
Warining ! The new value to substitute shall belong to range [0,31].<br>
Another example:: rise lighting by 100% for all compounds:<br>
new_val = i * 2 ;<br>
if ( new_val &gt; 31) new_val = 31 ; /* Important ! */<br>
red[i] = green[i] = blue[i] = new_val ;</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">This function operates on <span style="text-decoration: underline;">Machine specific format </span>! You shall not call <a href="ra.htm#RaTCConvert">RaTCConvert</a> or <a href="ra.htm#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td style="width: 15%;"><strong>VAPI </strong><strong>Version</strong><strong>&nbsp;</strong></td>
<td width="85%">1.03 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaTC16RemapColors"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaTC16RemapColors</strong>(<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> *rc)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> rc : Pointer to a&nbsp;<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
structure defining elementary color changes, first pixel to change and number of pixels to operate on.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Change the current color spreading of a 16bit True Color image. red, green and blue fields of&nbsp; <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
shall point to arrays of &nbsp;32 (32 = 2^5)&nbsp;elements for red and
blue compounds and 64 (64=2^6) for green compound. Each element being
the value to substitute at this array index for instance the formula:<br>
red[i] = i ; (0 &lt;= i &lt; 32) does not change anything (i being replaced by i).<br>
Warining ! The new value to substitute shall belong to range [0,31] for red and blue and [0;63] for green.<br>
Another example:: rise lighting by 100% for green compound:<br>
new_val = i * 2 ;<br>
if ( new_val &gt; 63) new_val = 63 ; /* Important ! */<br>
green[i] = new_val ; /*&nbsp;For 0 &lt;= i &lt; 64) */<br></td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">This function operates on <span style="text-decoration: underline;">Machine specific format </span>! You shall not call <a href="ra.htm#RaTCConvert">RaTCConvert</a> or <a href="ra.htm#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.03 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaTC32RemapColors"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaTC32RemapColors</strong>(<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> *rc)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> rc :&nbsp;Pointer to a&nbsp;<a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
structure defining elementary color changes, first pixel to change and number of pixels to operate on.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Change the current color spreading of a 32bit True Color image. red, green and blue fields of&nbsp; <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
shall point to arrays of &nbsp;256 (256=2^8) elements&nbsp;each element
being the value to substitute at this array index for instance the
formula::<br>
red[i] = i ; (0 &lt;= i &lt; 256) does not change anything (i being replaced by i).<br>
Warining ! The new value to substitute shall belong to range [0,255].<br>
Another example:: lower lighting by 20% for all compounds:<br>
new_val = (80 * i) / 100 ;<br>
/* Note that we still stay in [0;255] range
...*/<br>
red[i] = green[i] = blue[i] = new_val ; /* For&nbsp;0 &lt;= i
&lt; 256) */</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">This function operates on <span style="text-decoration: underline;">Machine specific format </span>! You shall not call <a href="ra.htm#RaTCConvert">RaTCConvert</a> or <a href="ra.htm#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.03 or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaRasterRotateGetDstMFDB"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>RaRasterRotateGetDstMFDB</strong>(MFDB
*in, MFDB *out, long angle)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> in : MFDB
describing image to be rotated<br>
<strong>[OUT]</strong>out : destination MFDB<br>
<strong>[IN]</strong> angle : Angle in degrees for the rotation</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">None</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Used
to know the the width/height after rotation in order to proper allocate
the required memory. All fileds but fd_addr are set as the memory is
NOT allocated.</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">You should call this function right before the next one.</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.03&nbsp;or greater</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td width="15%"><a name="RaRasterRotate"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>RaRasterRotate</strong>(MFDB
*in, MFDB *out, long angle, long flags)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> in :&nbsp;MFDB
describing image to be rotated<br>
<strong>[OUT]</strong>out : Destination MFDB<br>
<strong>[IN]</strong> angle :&nbsp;Angle in degrees for the rotation<br>
<strong>[IN]</strong> flags : if bit#0 is set, inform&nbsp;<a href="index.htm">VAPI</a>
to display a progress window</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">ELDV_NOERROR : life's good<br>
ELDV_NOTENOUGHMEMORY : crystal clear...<br>
ELDV_CANCELLED : (only possible if progress window is requested)<br>
ELDV_GENERALFAILURE :&nbsp;crystal clear...</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Perform
the requested rotation. Destination MFDB should be allocated or this
function will allocate it. Note that this last option is a bit
dangerous as it is now up to the LDV to call&nbsp;<a href="ra.htm#RaRasterFree">RaRasterFree</a> to free it. Good news is that&nbsp;<a href="index.htm">VAPI</a> uses standard VDI format if necessary.</td>
</tr>
<tr>
<td width="15%"><strong>Remarks</strong></td>
<td width="85%">If angle is a multiple of 90degrees, specific routines will be called to avoid un-necessary sinus and cosinus computations</td>
</tr>
<tr>
<td width="15%"><strong>VAPI </strong><strong>Version</strong></td>
<td width="85%">1.03&nbsp;or greater</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="pr.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="co.htm"><img style="border: 0px solid ; width: 43px; height: 26px;" src="../images/csuiv.jpg" alt="Next Chapter" hspace="2"></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>(VAPI)</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&nbsp;08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>RASTER
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>

View File

@@ -0,0 +1,183 @@
<!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 (VAPI): Structures</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="ra.htm"><img src="../images/cprev.jpg" alt="Previous Chapter " border="0" height="26" hspace="2" width="46"></a><a href="sommaire.htm"><img src="../images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></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>(VAPI)</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 08/04/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip"><br></a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
T R U C T U R E S</strong></font></p>
</td>
<td align="center" width="17%"></td>
</tr>
</tbody></table>
</center></div>
<hr>
<p><a name="VAPI_HEADER"></a><font size="4"><strong> VAPI_HEADER</strong></font></p>
<p><strong>typedef struct<br>
{<br>
unsigned short Version ; <br>
unsigned short StrSize ;<br>
void *Global ;<br>
void cdecl (*GEMMessageLoop)(void *msg) ;<br>
char RFU[116] ;<br>
}<br>
VAPI_HEADER ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tbody><tr>
<td align="center" width="15%"><strong>Field</strong></td>
<td align="center" width="10%"><strong>Type</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%">Version</td>
<td align="center" width="10%">unsigned short</td>
<td width="75%">Of type 0x0101. This number is incremented for
each evolution. This version number will be used eventually by
the LDV to make controls. If the VAPI version does not contain
the necessary interfaces or functions, the LDV must return the
<a href="../defines.htm#ELDV">ELDV_BADVAPIVERSION</a> error code</td>
</tr>
<tr>
<td align="center">StrSize</td>
<td align="center">unsigned short</td>
<td>Size of the VAPI structure</td>
</tr>
<tr>
<td align="center">Global</td>
<td align="center">void *</td>
<td>Pointer on the global table (given by the AES) of <em><strong>VISION</strong></em>.
This table the allows the LDV to use MT_AES. For more details, see
the LDGs documentation. The type is void * and not int *, to avoid
conflicts with compilers (int is 16 bits under Pure C and 32 bits
under GCC).
It is then up to the LDV programer to
"cast" this pointer to the 16 bits type of a
particular compiler.</td>
</tr>
<tr>
<td align="center">GEMMessageLoop</td>
<td align="center">void cdecl (*)(void *)</td>
<td>Pointer on the GEM message loop function of
<em><strong>VISION</strong></em>. This allows the LDV,
if it uses AES, to filter, in the message it receives, those where
recipient is the LDV, and those where recipient is
<em><strong>VISION</strong></em>. Since the LDV is launched by
<em><strong>VISION</strong></em>, it receives the messsages where
recipient should be <em><strong>VISION</strong></em>, and thus
should forward them to <em><strong>VISION</strong></em> using this
function. This is especially useful for the Redraw messages,
otherwise <em><strong>VISION</strong></em> windows will not be
drawn while the LDV is running.
The msg parameter is of the type void * and not int *, for the same
reason as previously.</td>
</tr>
<tr>
<td align="center" width="15%">RFU</td>
<td align="center" width="10%">116 octets</td>
<td width="75%">Reserved for future use. Don't touch!</td>
</tr>
</tbody></table>
</center></div>
<p>&nbsp;</p>
<p><a name="VAPI"></a><font size="4"><strong> VAPI</strong></font></p>
<p><strong>typedef struct<br>
{<br>
</strong><a href="#VAPI_HEADER"><strong>VAPI_HEADER</strong></a><strong>
Header ;<br>
<br>
/* Progress Interface */<br>
....<br>
<br>
/* Raster Interface */<br>
...<br>
<br>
/* More interfaces to come! */<br>
}<br>
VAPI ;</strong></p>
<p>The raw description of this structure is not really of interest, let's
rather see the list of functions available.</p>
<p>&nbsp;
</p><p><a name="REMAP_COLORS"></a><font size="4"><strong>REMAP_COLORS</strong></font></p>
<pre><font size="4"><strong>typedef struct<br>{<br> unsigned char *red ;<br> unsigned char *green ;<br> unsigned char *blue ;<br> void *pt_img ;<br> long nb_pts ;<br>}<br>REMAP_COLORS ;</strong></font></pre>
<p>Such a pointer on this structure shall be passed to&nbsp;<a href="ra.htm#RaTC15RemapColors">RaTCxxRemapColors</a> functions.<br>
red, green and blue point to an array defining elementary values.<br>
pt_img points to the first pixel to change<br>
nb_pts is the number of pixels to change starting at pt_img and using ref, green and blue arrays.</p>
<br>
<p><a name="functions"></a><font size="4"><strong>Functions available
</strong></font></p>
<p>These functions are directly accessed through the VAPI pointer internal
to the LDVs, the desired functions have just to be called as follows:<br>
<strong>Vapi-&gt;FunctionName( ListeOfParameters ) ;</strong><br>
Do not forget to test the return value is the function may return one!
</p>
<p>Functions are grouped by interfaces in the following chapters. To find
easily the an interface, all the function names in the same group begin
with the same 2 letteres (e.g.,
"Pr" for functions of the progress group).</p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td align="center" width="17%"><a href="ra.htm"><img src="../images/cprev.jpg" alt="Previous chapter " border="0" height="26" hspace="2" width="46"></a><a href="sommaire.htm"><img src="../images/csom.jpg" alt="Back to content " border="0" height="26" hspace="2" width="26"></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>(VAPI)</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: 08/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>S
T R U C T U R E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</tbody></table>
</center></div>
</body></html>