moved from dev to prod

This commit is contained in:
root
2022-11-14 10:05:42 +01:00
parent ac142715b0
commit 43d589aa9b
1364 changed files with 27705 additions and 6101 deletions

View File

@@ -1,30 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Noir & Blanc
; LongName should not exceed 31 caracters
LongName = Conversion en niveaux de gris
; Description should not exceed 79 caracters
Description = Ce LDV transforme une image couleur en niveaux de gris
; Here comes the language parameters dependencies
; No Parameters !
;[Parameter1]
;Name = Amplitude
;Type = 1
;MinValue = 1
;DefaultValue = 50
;MaxValue = 1000

View File

@@ -1,50 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Gamma
; LongName should not exceed 31 caracters
LongName = Correction Gamma
; Description should not exceed 79 caracters
Description = Change le facteur Gamma sur les composantes rouge, vert, bleu
; Here comes the language parameters dependencies
[Parameter1]
Name = Rouge, Vert, Bleu
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter2]
Name = Rouge
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter3]
Name = Vert
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter4]
Name = Bleu
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200

View File

@@ -1,38 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Inversion (XOR)...
; LongName should not exceed 31 caracters
LongName = Inversion bit a bit d'un raster
; Description should not exceed 79 caracters
Description = Ce LDV (exemple) inverse chaque bit de l'image raster
; Viennent maintenant les dependances pour les parametres
;[Parameter1]
;Name = Axe X
;Type = 1
;MinValue = -10
;DefaultValue = 1
;MaxValue = 10
;[Parameter2]
;Name = Axe Y
;[Parameter3]
;Name = Axe Z
;[Parameter4]
;Name = Axe T

View File

@@ -1,50 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Luminosit<69>
; LongName should not exceed 31 caracters
LongName = Luminosit<69>
; Description should not exceed 79 caracters
Description = Change la luminosit<69> des composantes RVB
; Here comes the language parameters dependencies
[Parameter1]
Name = Rouge, Vert, Bleu
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter2]
Name = Rouge
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter3]
Name = Vert
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200
[Parameter4]
Name = Bleu
Type = 1
MinValue = 0
DefaultValue = 100
MaxValue = 200

View File

@@ -1,29 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Pixelisation
; LongName should not exceed 31 caracters
LongName = Pixelisation
; Description should not exceed 79 caracters
Description = Pixelise une image (ou partie)
; Here comes the language parameters dependencies
[Parameter1]
Name = Puissance
Type = 1
MinValue = 2
DefaultValue = 4
MaxValue = 16

View File

@@ -1,29 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Rotation
; LongName should not exceed 31 caracters
LongName = Rotation
; Description should not exceed 79 caracters
Description = Ce LDV effectue une rotation sur une image
; Here comes the language parameters dependencies
[Parameter1]
Name = Angle
Type = 1
MinValue = -180
DefaultValue = 0
MaxValue = 180

View File

@@ -1,36 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Vagues sur X
; LongName should not exceed 31 caracters
LongName = Vagues en sinus sur l'axe X
; Description should not exceed 79 caracters
Description = Ce LDV g<>n<EFBFBD>re des vagues en sinus sur l'axe X
; Here comes the language parameters dependencies
[Parameter1]
Name = Amplitude
Type = 1
MinValue = 1
DefaultValue = 50
MaxValue = 1000
[Parameter2]
Name = Frequence
Type = 1
MinValue = 1
DefaultValue = 40
MaxValue = 1000

View File

@@ -1,36 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Y-Perspective
; LongName should not exceed 31 caracters
LongName = Perspective sur l'axe Y
; Description should not exceed 79 caracters
Description = Ce LDV g<>n<EFBFBD>re une perspective sur l'axe Y
; Here comes the language parameters dependencies
[Parameter1]
Name = Angle-Y
Type = 1
MinValue = 0
DefaultValue = 0
MaxValue = 1000
[Parameter2]
Name = Profondeur
Type = 1
MinValue = 1
DefaultValue = 50
MaxValue = 100

View File

@@ -1,36 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Vagues sur Y
; LongName should not exceed 31 caracters
LongName = Vagues en sinus sur l'axe Y
; Description should not exceed 79 caracters
Description = Ce LDV g<>n<EFBFBD>re des vagues en sinus sur l'axe Y
; Here comes the language parameters dependencies
[Parameter1]
Name = Amplitude
Type = 1
MinValue = 1
DefaultValue = 50
MaxValue = 1000
[Parameter2]
Name = Frequence
Type = 1
MinValue = 1
DefaultValue = 40
MaxValue = 1000

View File

@@ -1,51 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Trou Noir
; LongName should not exceed 31 caracters
LongName = Trou Noir dans l'image!
; Description should not exceed 79 caracters
Description = Hommage a Stephen Hawking
; This section is only meant for bhole.ldv
; It controls symetry usage for black hole computations
; It should be faster to use symetry property but for
; Some reason, this is slower on Aranym, no idea why
; So on Aranym, better have 0 here
[Private]
UseSym=1
; Here comes the language parameters dependencies
[Parameter1]
Name = Rotation(V)
Type = 1
MinValue = 0
DefaultValue = 10
MaxValue = 500
[Parameter2]
Name = Centre X(%)
Type = 1
MinValue = 0
DefaultValue = 50
MaxValue = 100
[Parameter3]
Name = Centre Y(%)
Type = 1
MinValue = 0
DefaultValue = 50
MaxValue = 100

View File

@@ -1,43 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Puzzle
; LongName should not exceed 31 caracters
LongName = Puzzle
; Description should not exceed 79 caracters
Description = Melange des blocs dans l'image
; Here comes the language parameters dependencies
[Parameter1]
Name = Diviseur sur X
Type = 1
MinValue = 1
DefaultValue = 10
MaxValue = 50
[Parameter2]
Name = Diviseur sur Y
Type = 1
MinValue = 1
DefaultValue = 10
MaxValue = 50
[Parameter3]
Name = Entropie
Type = 1
MinValue = 0
DefaultValue = 5
MaxValue = 50

View File

@@ -1,289 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <math.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0102, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
};
#define BP_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_AFFECTPALETTE)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_SUPPORTCANCEL)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti/Olivier Landemarre", /* Auteurs */
{
{ 1, 1, BP_CAPS }, /* Capacites pour 1 plan */
{ 2, 2, BP_CAPS }, /* Capacites pour 2 plans */
{ 4, 4, BP_CAPS }, /* Capacites pour 4 plans */
{ 8, 8, BP_CAPS }, /* Capacites pour 8 plans */
{ 16, 16, TC_CAPS }, /* Capacites pour 16 plans */
{ 24, 24, TC_CAPS }, /* Capacites pour 24 plans */
{ 32, 32, TC_CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
/* Petites macros bien utiles ... */
#define RVB16( r, v, b ) ( (r << 11) + (v << 5) + (b) )
#define RVB32( r, v, b ) ( ((long)r << 24) + ((long)v << 16) + ((long)b << 8) )
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
}
/*
* Fonctions de la librairie
*/
int R4[256],G4[256],B4[256]; /*pr<70>calcul de luminescence 256 niveaux */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{ float valR=0,valG=0,valB=0; int i;
Vapi = vapi ;
for(i=0;i<256;i++)
{
R4[i]=(int)valR; /* methode rapide */
G4[i]=(int)valG;
B4[i]=(int)valB;
valR+=0.302;
valG+=0.589;
valB+=0.114;
}
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_PALETTE *vdi_palette = &in->Palette ;
VDI_ELEMENTPAL *vdi_epal ;
short vdi_index ;
short bw_value ;
short cancel = 0 ;
if ( in->Raster.fd_nplanes <= 8 )
{
if ( vdi_palette == NULL ) return( ELDV_GENERALFAILURE ) ;
vdi_epal = vdi_palette->Pal ;
if ( vdi_epal == NULL ) return( ELDV_GENERALFAILURE ) ;
for ( vdi_index = 0; vdi_index < vdi_palette->NbColors; vdi_index++, vdi_epal++ )
{
bw_value = ( vdi_epal->Red + vdi_epal->Green + vdi_epal->Blue ) / 3 ;
vdi_epal->Red = bw_value ;
vdi_epal->Green = bw_value ;
vdi_epal->Blue = bw_value ;
}
}
else
{
MFDB *img = &in->Raster ;
long nb_pts_in_line ;
short x, y, pc ;
if ( Vapi == NULL ) return( ELDV_GENERALFAILURE ) ;
/* Convertir l'image au format True Color "standard" ATARI */
/* Format specifique --> format "ATARI True Color" */
Vapi->RaTCInvConvert( img ) ;
nb_pts_in_line = img->fd_w ;
if ( nb_pts_in_line % 16 ) nb_pts_in_line = (16+nb_pts_in_line) & 0xFFF0 ; /* Toujours aligne sur 16 pixels ! */
if ( img->fd_nplanes == 16 )
{
unsigned short *ptu, red, green, blue, ugris, val, ubr ;
for ( y = params->y1; !cancel && (y <= params->y2); y++ )
{
ptu = (unsigned short *) img->fd_addr ;
ptu += nb_pts_in_line * y ;
ptu += params->x1 ;
for ( x = params->x1; x <= params->x2; x++ )
{
val = *ptu ;
red = ( val & 0x01F ) << 1 ; /* Sur 6 bits */
green = ( val & 0x07E0 ) >> 6 ; /* Sur 6 bits */
blue = ( val & 0xF800 ) >> 10 ; /* Sur 6 bits */
ugris = ( R4[red] + G4[green] + B4[blue] ) ;
ubr = ( ugris >> 1 ) ;
*ptu++ = RVB16( ubr, ugris, ubr ) ;
}
if ( ( y & 0x0F ) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * ( y - params->y1 ) ) / ( params->y2 - params->y1 ) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
}
else if ( img->fd_nplanes == 24 ) /* NON teste ! */
{
unsigned char *ptu ;
unsigned short red, green, blue, ugris ;
for ( y = params->y1; !cancel && (y <= params->y2); y++ )
{
ptu = (unsigned char *) img->fd_addr ;
ptu += 3 * nb_pts_in_line * y ;
ptu += 3 * params->x1 ;
for ( x = params->x1; x <= params->x2; x++ )
{
red = (unsigned short) (*ptu++) ;
green = (unsigned short) (*ptu++) ;
blue = (unsigned short) (*ptu++) ;
ugris = ( R4[red] + G4[green] + B4[blue] ) ;
*ptu-- = ugris ;
*ptu-- = ugris ;
*ptu-- = ugris ;
ptu += 3 ;
}
if ( ( y & 0x0F ) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * ( y - params->y1 ) ) / ( params->y2 - params->y1 ) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
}
else if ( img->fd_nplanes == 32 )
{
unsigned long *ptu, val ;
unsigned short red, green, blue, ugris ;
for ( y = params->y1; !cancel && (y <= params->y2); y++ )
{
ptu = (unsigned long *)img->fd_addr ;
ptu += nb_pts_in_line * y ;
ptu += params->x1 ;
for ( x = params->x1; x <= params->x2; x++ )
{
val = *ptu ;
val >>= 8 ;
blue = (unsigned short) (val & 0xFF) ;
val >>= 8 ;
green = (unsigned short) (val & 0xFF) ;
val >>= 8 ;
red = (unsigned short) (val & 0xFF) ;
ugris = ( R4[red] + G4[green] + B4[blue] ) ;
*ptu++ = RVB32( ugris, ugris, ugris ) ;
}
if ( ( y & 0x0F ) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * ( y - params->y1 ) ) / ( params->y2 - params->y1 ) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
}
/* Format "ATARI True Color" --> format specifique */
Vapi->RaTCConvert( img ) ;
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
bw.ldv
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
bw.c
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,156 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
} ;
/* Enlever le commentaire de la ligne suivante */
/* Pour que le LDV ne supporte plus la */
/* Transformation sur place (but uniquement */
/* Pedagogique ! */
/*#define NOTOPINPLACE*/
#ifndef NOTOPINPLACE
#define CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_OPINPLACE)
#else
#define CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW)
#endif
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, CAPS }, /* Capacites pour 1 plan */
{ 2, 2, CAPS }, /* Capacites pour 2 plans */
{ 4, 4, CAPS }, /* Capacites pour 4 plans */
{ 8, 8, CAPS }, /* Capacites pour 8 plans */
{ 16, 16, CAPS }, /* Capacites pour 16 plans */
{ 32, 32, CAPS }, /* Capacites pour 24 plans */
{ 24, 24, CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
}
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
int xy[8] ;
if ( VDIHandle == -1 ) VDIHandle = vdihandle() ;
#ifndef NOTOPINPLACE
{
/* Recopie le raster source vers la destination */
xy[0] = xy[4] = 0 ;
xy[1] = xy[5] = 0 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
#endif
xy[0] = params->x1 ;
xy[1] = params->y1 ;
xy[2] = params->x2 ;
xy[3] = params->y2 ;
memcpy( &xy[4], xy, 4*sizeof(int) ) ;
vro_cpyfm( VDIHandle, D_INVERT, xy, &out->Raster, &out->Raster ) ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

View File

@@ -1,11 +0,0 @@
invert.ldv
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
invert.c
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,346 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl GetParams(LDV_IMAGE *in, LDV_PARAMS *params, char *path) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
NULL, /* Fermeture, liberation de VDIHandle (inutilise) */
};
#define CAPS (LDVF_ATARIFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_OPINPLACE | LDVF_SUPPORTCANCEL)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 16, 16, CAPS }, /* Capacites pour 16 plans */
/* Qui le fera ? { 24, 24, CAPS }, */
{ 32, 32, CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
/* Ce LDV ne peut marcher qu'avec une versio de VAPI >= 1.02 */
/* Du <20> un bug dans la version 1.01 */
#define CHK_VAPIVERSION(vapi) if ( ( vapi == NULL ) || ( vapi->Header.Version < 0x102 ) ) return( ELDV_BADVAPIVERSION ) ;
/* Petites macros bien utiles ... */
#define RVB16( r, v, b ) ( (r << 11) + (v << 5) + (b) )
#define RVB32( r, v, b ) ( ((long)(r) << 24) + ((long)(v) << 16) + ((long)(b << 8)) )
VAPI *Vapi = NULL ;
unsigned short powerx, powery ;
unsigned long p2 ;
/*
Notez que ce LDV ne se sert pas de VDIHandle, OnClose... puisque aucune fonction VDI (vo_cpyfm par ex.) n'est utilisee
int VDIHandle = -1 ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
*/
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
CHK_VAPIVERSION( Vapi ) ;
/* La transformation se fait "sur place" */
return( ELDV_NOERROR ) ;
}
#pragma warn +par
unsigned short Pixelize16(unsigned short *pt, long nb_lpts)
{
unsigned short *last_pt = pt ;
unsigned long rsum = 0 ;
unsigned long gsum = 0 ;
unsigned long bsum = 0 ;
unsigned short pixel, *ptu ;
unsigned short red, green, blue ;
short x, y ;
for ( y = 0; y < powery; y++, last_pt += nb_lpts )
{
ptu = last_pt ;
for ( x = 0; x < powerx; x++, ptu++ )
{
pixel = *ptu ;
red = pixel >> 11 ; /* Sur 5 bits */
green = ( pixel >> 5 ) & 0x3F ; /* Sur 6 bits */
blue = pixel & 0x1F ; /* Sur 5 bits */
rsum += (unsigned long) red ;
gsum += (unsigned long) green ;
bsum += (unsigned long) blue ;
}
}
red = (unsigned short) (rsum / p2) ;
green = (unsigned short) (gsum / p2) ;
blue = (unsigned short) (bsum / p2) ;
pixel = RVB16( red, green, blue ) ;
return( pixel ) ;
}
LDV_STATUS Run16(LDV_IMAGE *in, LDV_PARAMS *params)
{
unsigned short new_pixel, *pt, *tmp_pt, *dpix ;
unsigned long po2 ;
long yoffset, nb_lpts ;
short power, x, y ;
short pc, cancel = 0 ;
short iter = 0 ;
power = params->Param[0].s ;
po2 = power * power ;
nb_lpts = in->Raster.fd_w ;
if ( nb_lpts % 16 ) nb_lpts++ ;
yoffset = nb_lpts * (long)(params->y1) ;
for ( y = params->y1; !cancel && (y < params->y2); y += power, yoffset += nb_lpts*power )
{
powerx = power ;
if ( y + power - 1 > params->y2 )
{
powery = 1 + params->y2 - y ;
p2 = powerx * powery ;
}
else
{
powery = power ;
p2 = po2 ;
}
pt = (unsigned short *)(in->Raster.fd_addr) + yoffset + params->x1 ;
for ( x = params->x1; x < params->x2 - powerx; x += powerx, pt += powerx )
{
new_pixel = Pixelize16( pt, nb_lpts ) ;
for ( tmp_pt = pt; tmp_pt < pt + powery*nb_lpts; tmp_pt += nb_lpts )
for ( dpix = tmp_pt; dpix < tmp_pt + powerx; dpix++ ) *dpix = new_pixel ;
}
/* Residuel sur x (evite un test pour chaque paquet power x power) */
if ( x < params->x2 )
{
powerx = params->x2 - x ;
p2 = powerx * powery ;
new_pixel = Pixelize16( pt, nb_lpts ) ;
for ( tmp_pt = pt; tmp_pt < pt + powery*nb_lpts; tmp_pt += nb_lpts )
for ( dpix = tmp_pt; dpix < tmp_pt + powerx; dpix++ ) *dpix = new_pixel ;
}
if ( Vapi && ( ( iter++ & 0x0F ) == 0x0F ) )
{
pc = (short) ( ( 100L * (long)(y - params->y1) ) / (long)(params->y2 - power- params->y1) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
unsigned long Pixelize32(unsigned long *pt, long nb_lpts)
{
unsigned long *last_pt = pt ;
unsigned long rsum = 0 ;
unsigned long gsum = 0 ;
unsigned long bsum = 0 ;
unsigned long pixel, *ptu ;
unsigned long red, green, blue ;
short x, y ;
for ( y = 0; y < powery; y++, last_pt += nb_lpts )
{
ptu = last_pt ;
for ( x = 0; x < powerx; x++, ptu++ )
{
pixel = *ptu ;
pixel >>= 8 ;
bsum += pixel & 0xFF ;
pixel >>= 8 ;
gsum += pixel & 0xFF ;
pixel >>= 8 ;
rsum += pixel ;
}
}
red = rsum / p2 ;
green = gsum / p2 ;
blue = bsum / p2 ;
pixel = RVB32( red, green, blue ) ;
return( pixel ) ;
}
LDV_STATUS Run32(LDV_IMAGE *in, LDV_PARAMS *params)
{
unsigned long new_pixel, *pt, *tmp_pt, *dpix ;
unsigned long po2 ;
long yoffset, nb_lpts ;
short power, x, y ;
short pc, cancel = 0 ;
short iter = 0 ;
power = params->Param[0].s ;
po2 = power * power ;
nb_lpts = in->Raster.fd_w ;
if ( nb_lpts % 16 ) nb_lpts++ ;
yoffset = nb_lpts * (long)(params->y1) ;
for ( y = params->y1; !cancel && (y < params->y2); y += power, yoffset += nb_lpts*power )
{
powerx = power ;
if ( y + power - 1 > params->y2 )
{
powery = 1 + params->y2 - y ;
p2 = powerx * powery ;
}
else
{
powery = power ;
p2 = po2 ;
}
pt = (unsigned long *)(in->Raster.fd_addr) + yoffset + params->x1 ;
for ( x = params->x1; x < params->x2 - powerx; x += powerx, pt += powerx )
{
new_pixel = Pixelize32( pt, nb_lpts ) ;
for ( tmp_pt = pt; tmp_pt < pt + powery*nb_lpts; tmp_pt += nb_lpts )
for ( dpix = tmp_pt; dpix < tmp_pt + powerx; dpix++ ) *dpix = new_pixel ;
}
/* Residuel sur x (evite un test pour chaque paquet power x power) */
if ( x < params->x2 )
{
powerx = params->x2 - x ;
p2 = powerx * powery ;
new_pixel = Pixelize32( pt, nb_lpts ) ;
for ( tmp_pt = pt; tmp_pt < pt + powery*nb_lpts; tmp_pt += nb_lpts )
for ( dpix = tmp_pt; dpix < tmp_pt + powerx; dpix++ ) *dpix = new_pixel ;
}
if ( Vapi && ( ( iter++ & 0x0F ) == 0x0F ) )
{
pc = (short) ( ( 100L * (long)(y - params->y1) ) / (long)(params->y2 - power- params->y1) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
#pragma warn -par
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_STATUS status ;
CHK_VAPIVERSION( Vapi ) ;
if ( ( in->RasterFormat & CAPS ) == 0 ) return( ELDV_IMGFORMATMISMATCH ) ;
/* if ( VDIHandle == -1 ) VDIHandle = vdihandle() ; (inutile) */
switch( in->Raster.fd_nplanes )
{
case 16 : status = Run16( in, params ) ;
break ;
/*
case 24 : status = Run24( in, params ) ;
break ;
*/
case 32 : status = Run32( in, params ) ;
break ;
default : status = ELDV_NBPLANESNOTSUPPORTED ;
break ;
}
return( status ) ;
}
#pragma warn +par
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
PIXEL.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
PIXEL.C
;PIXEL.S
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,74 +0,0 @@
.EXPORT Pixelize16
MACRO GET_FRGB16
MOVE.W (A0),D0
MOVE.W D0,D1
ROL.W #5,D1
ANDI.W #$1F,D1 ; D1.W = Composante ROUGE
MOVE.W D0,D2
LSR.W #5,D2
ANDI.W #$3F,D2 ; D2.W = Composante VERTE (0...63)
MOVE.W D0,D3
ANDI.W #$1F,D3 ; D3.W = Composante BLEU (0...31)
ENDM
MACRO SET_FRGB16
MOVE.W D3,D0 ; D3 = Composante Bleu
LSL.W #5,D2
ADD.W D2,D0 ; D0 += Composante Verte
ROR.W #5,D1
ADD.W D1,D0 ; D0 += Composante Rouge
ENDM
*unsigned short Pixelize16(unsigned short *pt, long nb_lpts, short powerx, short powery)
*
*{
* unsigned long rsum = 0 ;
* unsigned long gsum = 0 ;
* unsigned long bsum = 0 ;
* unsigned long p2 = powerx * powery ;
* unsigned short val, pixel, *ptu ;
* unsigned short red, green, blue ;
* short x, y ;
*
* for ( y = 0; y < powery; y++ )
* {
* ptu = pt + y * nb_lpts ;
* for ( x = 0; x < powerx; x++, ptu++ )
* {
* val = *ptu ;
* red = val >> 11 ; /* Sur 5 bits */
* green = ( val >> 5 ) & 0x3F ; /* Sur 6 bits */
* blue = val & 0x1F ; /* Sur 5 bits */
* rsum += (unsigned long) red ;
* gsum += (unsigned long) green ;
* bsum += (unsigned long) blue ;
* }
* }
*
* red = (unsigned short) (rsum / p2) ;
* green = (unsigned short) (gsum / p2) ;
* blue = (unsigned short) (bsum / p2) ;
* pixel = RVB16( red, green, blue ) ;
*
* return( pixel ) ;
}
* unsigned short Pixelize16(unsigned short *pt, long nb_lpts, long power)
* D0 A0 D0 D1
Pixelize16:
MOVEM.L D0-D7/A0-A6,-(SP)
MOVE.L D0,D4
MOVE.L D1,D5
MOVE.L A0,A1
GET_FRGB16
MOVEM.L (SP)+,D0-D7/A0-A6 ; Restauration du contexte

View File

@@ -1,187 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <math.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0101, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
};
#define CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, CAPS }, /* Capacites pour 1 plan */
{ 2, 2, CAPS }, /* Capacites pour 2 plans */
{ 4, 4, CAPS }, /* Capacites pour 4 plans */
{ 8, 8, CAPS }, /* Capacites pour 8 plans */
{ 16, 16, CAPS }, /* Capacites pour 16 plans */
{ 24, 24, CAPS }, /* Capacites pour 24 plans */
{ 32, 32, CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
}
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
float angle, phi ;
float amplitude ;
int xy[8] ;
short line ;
short xoffset ;
short pc, cancel = 0 ;
if ( VDIHandle == -1 ) VDIHandle = vdihandle() ;
if (
( params->x1 != 0 ) || ( params->x2 != in->Raster.fd_w -1 ) ||
( params->y1 != 0 ) || ( params->y2 != in->Raster.fd_h -1 )
)
{
/* Bloc a l'interieur de l'image */
xy[0] = xy[4] = 0 ;
xy[1] = xy[5] = 0 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
else
if ( Vapi && Vapi->RaImgWhite ) Vapi->RaImgWhite( &out->Raster ) ;
amplitude = (float)params->Param[0].s / 10.0 ;
phi = M_PI * (float)params->Param[1].s / 10.0 / (float)(params->y2 - params->y1) ;
for ( line = params->y1 ; !cancel && (line <= params->y2); line++ )
{
angle = (float) (line - params->y1) * phi ;
xoffset = (short) (amplitude * ( 1+ sin( angle ) ) ) ;
if ( params->x2 - xoffset < params->x1 ) xoffset = params->x2 - params->x1 ;
if ( params->x2 - xoffset > in->Raster.fd_w - 1 ) xoffset = params->x2 - in->Raster.fd_w + 1 ;
if ( params->x1 + xoffset > out->Raster.fd_w - 1 ) xoffset = out->Raster.fd_w - params->x1 - 1 ;
if ( params->x2 < params->x1 + xoffset ) xoffset = params->x2 - params->x1 ;
xy[0] = params->x1 ;
xy[1] = line ;
xy[2] = params->x2 - xoffset ;
xy[3] = line ;
xy[4] = params->x1 + xoffset ;
xy[5] = line ;
xy[6] = params->x2 ;
xy[7] = line ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
if ( Vapi && ( line & 0x0F) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * (long)(line - params->y1) ) / (long)(params->y2 - params->y1) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
xwave.ldv
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
xwave.c
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,269 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
};
#define BP_CAPS (LDVF_ATARIFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, BP_CAPS }, /* Capacites pour 1 plan */
{ 2, 2, BP_CAPS }, /* Capacites pour 2 plans */
{ 4, 4, BP_CAPS }, /* Capacites pour 4 plans */
{ 8, 8, BP_CAPS }, /* Capacites pour 8 plans */
{ 16, 16, TC_CAPS }, /* Capacites pour 16 plans */
{ 32, 32, TC_CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
}
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
MFDB dst_line ;
int xy[8] ;
long *pt32_in, *pt32_out ;
short *pt16_in, *pt16_out ;
unsigned char *pt8_in = NULL, *pt8_out ;
long wscale, wout, wpixel, xpixel ;
long angle, depth, src_line32, yoffset, lo_line_in, lo_line_out ;
short line, y1, y2 ;
short wlen, pc, cancel = 0 ;
if ( Vapi->Header.Version < 0x102 ) return( ELDV_BADVAPIVERSION ) ;
if ( VDIHandle == -1 ) VDIHandle = vdihandle() ;
if (
( params->x1 != 0 ) || ( params->x2 != in->Raster.fd_w -1 ) ||
( params->y1 != 0 ) || ( params->y2 != in->Raster.fd_h -1 )
)
{
xy[0] = xy[4] = 0 ;
xy[1] = xy[5] = 0 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
xy[0] = params->x1 ; xy[1] = params->y1 ;
xy[2] = params->x2 ; xy[3] = params->y2 ;
xy[4] = params->x1 ; xy[5] = params->y1 ;
xy[6] = params->x2 ; xy[7] = params->y2 ;
vro_cpyfm( VDIHandle, ALL_WHITE, xy, &in->Raster, &out->Raster ) ;
}
else
Vapi->RaImgWhite( &out->Raster ) ;
wpixel = 1+params->x2-params->x1 ;
lo_line_in = ALIGN16( in->Raster.fd_w ) ;
lo_line_out = ALIGN16( out->Raster.fd_w ) ;
angle = (long) params->Param[0].s ;
depth = (long) params->Param[1].s ;
y1 = (long) params->y1 + (long) ( ((long)(params->y2 - params->y1)*angle) / 1000 ) ;
y2 = (long) params->y1 + params->y2 - y1 ;
yoffset = ((long) (params->y2 - params->y1)) << 16 ;
yoffset /= (long) (y2 - y1 ) ;
if ( y1 > y2 )
{
short tmp ;
tmp = y1 ;
y1 = y2 ;
y2 = tmp ;
src_line32 = params->y2 ;
src_line32 <<= 16 ;
}
else
{
src_line32 = params->y1 ;
src_line32 <<= 16 ;
}
/* Mode bitplan : allocation memoire pour conversion index <--> format ATARI */
/* pt16_... est utilise pour le mode 16 bits et le mode bit-plan (avec reajustement) */
if ( in->Raster.fd_nplanes <= 8 )
{
size_t win, wout ;
win = ALIGN16( in->Raster.fd_w ) ;
wout = ALIGN16( out->Raster.fd_w ) ;
pt8_in = (unsigned char *) malloc( win + wout ) ; /* Car on alloue aussi pour la remise a l'echelle */
if ( pt8_in == NULL ) return ELDV_NOTENOUGHMEMORY ;
pt8_out = pt8_in + in->Raster.fd_w ;
/* Pour conversions conversion index --> format ATARI (Vapi->RaInd2raster) */
memcpy( &dst_line, &out->Raster, sizeof(MFDB) ) ;
dst_line.fd_h = 1 ;
lo_line_in /= ( 16 / in->Raster.fd_nplanes ) ;
lo_line_out /= ( 16 / in->Raster.fd_nplanes ) ;
pt16_in = (short *) in->Raster.fd_addr ;
pt16_out = (short *) out->Raster.fd_addr ;
pt16_out += (long)(y1) * lo_line_out ;
}
else if ( in->Raster.fd_nplanes == 16 )
{
pt16_in = (short *) in->Raster.fd_addr ;
pt16_out = (short *) out->Raster.fd_addr ;
pt16_out += (long)(y1) * lo_line_out ;
}
else
{
pt32_in = (long *) in->Raster.fd_addr ;
pt32_out = (long *) out->Raster.fd_addr ;
pt32_out += (long)(y1) * lo_line_out ;
}
wscale = ( wpixel * depth ) / 100L ;
wlen = ALIGN16( 1+params->x2 ) ;
for ( line = y1 ; !cancel && (line <= y2); line++, src_line32 += yoffset )
{
wout = wpixel - ( wscale * (line-y1) / (y2-y1) ) ;
xpixel = params->x1 + ( ( wpixel - wout ) >> 1 ) ;
switch( in->Raster.fd_nplanes )
{
case 1 :
case 2 :
case 4 :
case 8 :
Vapi->RaRaster2Ind( pt16_in + (src_line32 >> 16) * lo_line_in, wlen, in->Raster.fd_nplanes, pt8_in ) ;
memset( pt8_out, 0, xpixel ) ;
Vapi->MeSCopyMemory8( pt8_out + xpixel, pt8_in + params->x1, wout, wpixel ) ;
dst_line.fd_addr = pt16_out ;
Vapi->RaInd2RasterInit( &dst_line, xpixel+wout-1 ) ;
Vapi->RaInd2Raster( pt8_out, xpixel+wout-1 ) ;
pt16_out += lo_line_out ;
break ;
case 16 : Vapi->MeSCopyMemory16( pt16_out + xpixel,
pt16_in + (long)params->x1 + (src_line32 >> 16) * lo_line_in,
wout, wpixel ) ;
pt16_out += lo_line_out ;
break ;
case 32 : Vapi->MeSCopyMemory32( pt32_out + xpixel,
pt32_in + (long)params->x1 + (src_line32 >> 16) * lo_line_in,
wout, wpixel ) ;
pt32_out += lo_line_out ;
default: break ;
}
if ( Vapi && ( line & 0x0F) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * (long)(line - y1) ) / (long)(y2 - y1) ) ;
cancel = Vapi->PrSetProgEx( pc ) ;
}
}
if ( pt8_in ) free( pt8_in ) ;
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

View File

@@ -1,12 +0,0 @@
YPERSC.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
YPERSC.C
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,187 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <math.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
};
#define CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, CAPS }, /* Capacites pour 1 plan */
{ 2, 2, CAPS }, /* Capacites pour 2 plans */
{ 4, 4, CAPS }, /* Capacites pour 4 plans */
{ 8, 8, CAPS }, /* Capacites pour 8 plans */
{ 16, 16, CAPS }, /* Capacites pour 16 plans */
{ 24, 24, CAPS }, /* Capacites pour 24 plans */
{ 32, 32, CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
}
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
float angle, phi ;
float amplitude ;
int xy[8] ;
short row ;
short yoffset ;
short pc, cancel = 0 ;
if ( VDIHandle == -1 ) VDIHandle = vdihandle() ;
if (
( params->x1 != 0 ) || ( params->x2 != in->Raster.fd_w -1 ) ||
( params->y1 != 0 ) || ( params->y2 != in->Raster.fd_h -1 )
)
{
/* Bloc a l'interieur de l'image */
xy[0] = xy[4] = 0 ;
xy[1] = xy[5] = 0 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
else
if ( Vapi && Vapi->RaImgWhite ) Vapi->RaImgWhite( &out->Raster ) ;
amplitude = (float)params->Param[0].s / 10.0 ;
phi = M_PI * (float)params->Param[1].s / 10.0 / (float)(params->x2 - params->x1) ;
for ( row = params->x1 ; !cancel && (row <= params->x2); row++ )
{
angle = (float) (row - params->x1) * phi ;
yoffset = (short) (amplitude * ( 1+ sin( angle ) ) ) ;
if ( params->y2 - yoffset < params->y1 ) yoffset = params->y2 - params->y1 ;
if ( params->y2 - yoffset > in->Raster.fd_h - 1 ) yoffset = params->y2 - in->Raster.fd_h + 1 ;
if ( params->y1 + yoffset > out->Raster.fd_h - 1 ) yoffset = out->Raster.fd_h - params->y1 - 1 ;
if ( params->y2 < params->y1 + yoffset ) yoffset = params->y2 - params->y1 ;
xy[0] = row ;
xy[1] = params->y1 ;
xy[2] = row ;
xy[3] = params->y2 - yoffset ;
xy[4] = row ;
xy[5] = params->y1 + yoffset ;
xy[6] = row ;
xy[7] = params->y2 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
if ( Vapi && ( row & 0x0F) == 0x0F )
{
/* Appelle la routine de progression une fois sur 16 */
/* NB : en mode preview, VISION ignorera cet appel, */
/* inutile donc de s'en soucier */
pc = (short) ( ( 100L * (long)(row - params->x1) ) / (long)(params->x2 - params->x1) ) ;
if ( Vapi->PrSetProgEx )
{
cancel = Vapi->PrSetProgEx( pc ) ;
}
else
Vapi->PrSetProg( pc ) ;
}
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
ywave.ldv
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
ywave.c
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,852 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <stdio.h> /* Forget this and sprintf will badly format numbers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "LDV Capabilities", (void *)GetLDVCapabilities,
"PreRun", "Run Initiliaze", (void *)PreRun,
"Run", "LDV Feature", (void *)Run,
"Preview", "Preview", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* LDV version */
4, /* Number of functions in the lib */
Proc, /* Pointers to LDV functions */
Info, /* Library Information */
0x0, /* Lib flags, mandatory */
OnClose, /* Closing, free VDIHandle */
};
#define BP_CAPS (LDVF_ATARIFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Size of this structure */
TLDV_MODIFYIMG, /* LDV Type */
"Jean Lusetti", /* Authors */
{
{ 1, 1, BP_CAPS }, /* 1 bit-plane capabilities */
{ 2, 2, BP_CAPS }, /* 2 bit-plane capabilities */
{ 4, 4, BP_CAPS }, /* 4 bit-plane capabilities */
{ 8, 8, BP_CAPS }, /* 8 bit-plane capabilities */
{ 16, 16, TC_CAPS }, /* 16 bit-plane capabilities */
{ 32, 32, TC_CAPS }, /* 32 bit-plane capabilities */
{ 0, 0, 0UL } /* End of capabilities list */
},
} ;
VAPI *Vapi = NULL ;
#define ITRIGO_ARRAY_NBITS 14
#define ITRIGO_ARRAY_SIZE (1 << ITRIGO_ARRAY_NBITS)
#define ITRIGO_ANGLE_MAX (ITRIGO_ARRAY_SIZE-1)
#define QUARTER (ITRIGO_ARRAY_SIZE/4)
#define ANGLE_ADD (M_PI/2.0/(double)QUARTER) ;
long* pre_cosin = NULL ; /* Array of pre-computed cosinus/sinus values */
long* pre_loffset = NULL ; /* To hold pre-computation of line offsets */
int lo_w=0, lo_h=0, lo_nplanes=0 ; /* Current parameters for line offset */
unsigned long VapiLogLevel = LL_DISABLED ;
unsigned long ProcMask = 0L ;
short UseSym = -1 ; /* By default use symmetry to save CPU calculations */
/* On Aranym, this is usually slower, so there is a */
/* Setting in bhole.ini to force no symetry usage */
/* Macro to access pre-computed cosinus/sinus array */
/* Sinus is right after cosinus value */
#define COS(i) (pre_cosin[(i)<<1])
#define SIN(i) (pre_cosin[1 + ( (i)<<1 )])
/* Back Hole computation parameters are not passed to speed up calculations, */
/* They are global to the module */
/* Black Hole symmetry rotation */
typedef struct _RECT
{
short x ;
short y ;
short w ;
short h ;
}
RECT, *PRECT ;
typedef struct _BH_SPROPERTIES
{
short estdpc ; /* Estimated duration in % (100 being the one without using symmetry) */
short nrect ;
short nsym ;
RECT rect[9] ;
}
BH_SPROPERTIES, *PBH_SPROPERTIES ;
extern long bh_xd, bh_yd, bh_rd2, bh_xs, bh_ys, bh_ref ;
extern long bh_xc, bh_yc ;
extern short bh_out_w, bh_out_h, bh_in_w, bh_in_h ;
extern short bh_out_x, bh_out_y ;
short bh_pc, bh_nrect ;
/* This is the routine address that will operate on a line basis */
static void (*BHLRoutine)(short use_sym, void* in, void* out) ;
/* Specific 68030 and FPU routines */
/* In BHOLE.S */
extern void BHL32_68030(short use_sym, void* in, void* out) ;
extern void BHL16_68030(short use_sym, void* in, void* out) ;
extern void BHLInd_68030(short use_sym, void* in, void* out) ;
extern void BHL32_F68030(short use_sym, void* in, void* out) ;
extern void BHL16_F68030(short use_sym, void* in, void* out) ;
extern void BHLInd_F68030(short use_sym, void* in, void* out) ;
extern void lcosin_fpu(long i, long* pcs) ;
/* GET/SET pixel macros for True Color 16 and 32bit */
#define SET_TCPIXEL(p,x,y,val) (p[pre_loffset[y]+x]=val)
#define GET_TCPIXEL(p,x,y) (p[pre_loffset[y]+x])
/* Rotation by 90° macro */
#define R90(x,y) { long _x=x; x=-y; y=_x; }
/* Macro to initialize calculations for a line */
#define BH_INIT_LINE\
bh_xd = bh_out_x-bh_xc ;\
bh_rd2 = (bh_xd*bh_xd + bh_yd*bh_yd) ;\
/* This is the routine that computes the resulting pixel (bh_xs,bh_ys) in source image */
/* From the pixel (bh_xd, bh_yd) in destination image */
/* (bh_xc,bh_yc) is the center pixel of the back hole */
/* This routine also returns if the resulting pixel is in the source image */
int rBH_68000(void)
{
int not_in_range = 1 ;
long alpha ;
bh_rd2 += ( bh_xd << 1 ) + 1 ;
alpha = bh_ref / (1+bh_rd2) ;
alpha &= ITRIGO_ANGLE_MAX ;
bh_xs = bh_xd * COS(alpha) - bh_yd * SIN(alpha) ;
bh_xs >>= 16 ;
if ( (bh_xs >= -bh_xc) && (bh_xs < -bh_xc+bh_in_w) )
{
bh_ys = bh_xd * SIN(alpha) + bh_yd * COS(alpha) ;
bh_ys >>= 16 ;
if ( (bh_ys >= -bh_yc) && (bh_ys < -bh_yc+bh_in_h) )
not_in_range = 0 ;
}
return not_in_range ;
}
/* For 68000/bit-planes organization: */
/* This routine returns the value of the pixel index in the source image */
/* Assuming (bh_xs,bh_ys) is within the source image */
#pragma warn -par
void BHLInd_68000(short use_sym, void* in, void* out)
{
unsigned char* in_ptr = (unsigned char*) in ;
unsigned char* out_ptr = (unsigned char*) out ;
short x ;
for ( x = bh_out_x; x < bh_out_w; x++, bh_xd++ )
{
if ( rBH_68000() == 0 )
out_ptr[x] = in_ptr[pre_loffset[bh_ys+bh_yc] + bh_xs+bh_xc] ;
else
out_ptr[x] = 0 ;
}
}
#pragma warn +par
/* For 68000/16bit TrueColor organization: */
/* This routine returns the value of the pixel index in the source image */
/* Assuming (bh_xs,bh_ys) is within the source image */
void BHL16_68000(short use_sym, void* in, void* out)
{
unsigned int* in_ptr = (unsigned int*) in ;
unsigned int* out_ptr = (unsigned int*) out ;
short x ;
if (use_sym)
{
unsigned long save_bh_xd, save_bh_yd ;
short n ;
for ( x = bh_out_x; x <= bh_out_x+bh_out_w/2; x++, bh_xd++ )
{
/* Save bh_xd and bh_yd as they will change */
save_bh_xd = bh_xd ;
save_bh_yd = bh_yd ;
if ( rBH_68000() == 0 ) /* Compute 1st pixel with Black Hole formula */
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)) ;
else
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, 0xFFFF) ;
/* Deduce 2nd, 3rd and 4th pixel */
for (n=0; n < 3; n++)
{
R90(bh_xd, bh_yd) ;
R90(bh_xs, bh_ys) ;
if ( (bh_xd>=-bh_xc) && (bh_xd < -bh_xc+bh_in_w) && (bh_yd >= -bh_yc) && (bh_yd < -bh_yc+bh_in_h))
{
if ( (bh_xs>=-bh_xc) && (bh_xs < -bh_xc+bh_in_w) && (bh_ys >= -bh_yc) && (bh_ys < -bh_yc+bh_in_h))
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)) ;
else
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, 0xFFFF) ;
}
}
/* Restore bh_xd and bh_yd */
bh_xd = save_bh_xd ;
bh_yd = save_bh_yd ;
}
}
else
{
for ( x = bh_out_x; x < bh_out_x+bh_out_w; x++, bh_xd++ )
{
if ( rBH_68000() == 0 )
out_ptr[x] = in_ptr[pre_loffset[bh_ys+bh_yc] + bh_xs+bh_xc] ;
else
out_ptr[x] = 0xFFFF ;
}
}
}
/* For 68000/32bit TrueColor organization: */
/* This routine returns the value of the pixel index in the source image */
/* Assuming (bh_xs,bh_ys) is within the source image */
void BHL32_68000(short use_sym, void* in, void* out)
{
unsigned long* in_ptr = (unsigned long*) in ;
unsigned long* out_ptr = (unsigned long*) out ;
short x ;
if (use_sym)
{
unsigned long save_bh_xd, save_bh_yd ;
short n ;
for ( x = bh_out_x; x <= bh_out_x+bh_out_w/2; x++, bh_xd++ )
{
/* Save bh_xd and bh_yd as they will change */
save_bh_xd = bh_xd ;
save_bh_yd = bh_yd ;
if ( rBH_68000() == 0 ) /* Compute 1st pixel with Black Hole formula */
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)) ;
else
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, 0xFFFFFFFFL) ;
/* Deduce 2nd, 3rd and 4th pixel */
for (n=0; n < 3; n++)
{
R90(bh_xd, bh_yd) ;
R90(bh_xs, bh_ys) ;
if ( (bh_xd>=-bh_xc) && (bh_xd < -bh_xc+bh_in_w) && (bh_yd >= -bh_yc) && (bh_yd < -bh_yc+bh_in_h))
{
if ( (bh_xs>=-bh_xc) && (bh_xs < -bh_xc+bh_in_w) && (bh_ys >= -bh_yc) && (bh_ys < -bh_yc+bh_in_h))
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)) ;
else
SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, 0xFFFFFFFFL) ;
}
}
/* Restore bh_xd and bh_yd */
bh_xd = save_bh_xd ;
bh_yd = save_bh_yd ;
}
}
else
{
for ( x = bh_out_x; x < bh_out_x+bh_out_w; x++, bh_xd++ )
{
if ( rBH_68000() == 0 )
out_ptr[x] = in_ptr[pre_loffset[bh_ys+bh_yc] + bh_xs+bh_xc] ;
else
out_ptr[x] = 0xFFFFFFFFL ;
}
}
}
void lcosin(long i, long* pcs)
{
double angle = i*ANGLE_ADD ;
pcs[0] = (long) (65536.0 * cos(angle)) ;
pcs[1] = (long) (65536.0 * sin(angle)) ;
}
int InitTrigo(int fpu)
{
void (*rlcosin)(long i, long* pcs) ;
long cs[2] ;
long q, i;
clock_t t0 ;
/* if ( pre_cosin[0] == 65536L ) return 0 ; Used to detect init done before dynamic allocation design */
if ( pre_cosin ) return 0 ;
pre_cosin = (long*) calloc( ITRIGO_ARRAY_SIZE, 2*sizeof(long) ) ;
if ( pre_cosin == NULL ) return -1 ;
t0 = clock() ;
if (fpu) rlcosin = lcosin_fpu ;
else rlcosin = lcosin ;
for ( i = 0; i < QUARTER; i++ )
{
rlcosin( i, cs ) ;
COS(i) = cs[0] ;
SIN(i) = cs[1] ;
q = QUARTER ;
/* Set [PI/2;PI] */
COS(q+i) = -SIN(i) ;
SIN(q+i) = COS(i) ;
q += QUARTER ;
/* Set [PI;3*PI/2] */
COS(q+i) = -COS(i) ;
SIN(q+i) = -SIN(i) ;
q += QUARTER ;
/* Set [3*PI/2; 2*PI] */
COS(q+i) = COS(i) ;
SIN(q+i) = -SIN(i) ;
}
if (Vapi && Vapi->LoDoLog)
Vapi->LoDoLog(LL_INFO, "IniTrigo%s done in %ldms", fpu ? "(FPU)":"", 1000L * (clock()-t0)/CLK_TCK) ;
return 0 ;
}
/* Called when LDV is loaded, take this opportunity to get some */
/* Info about system: VAPI version and CPU/FPU availability */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
VapiLogLevel = LL_DISABLED ;
if ( Vapi && (Vapi->Header.Version >= 0x0104) && Vapi->LoDoLog && Vapi->LoGetLogLevel )
{
VapiLogLevel = Vapi->LoGetLogLevel() ;
if (Vapi->CoGetProcessors)
ProcMask = Vapi->CoGetProcessors() ;
if (ProcMask & CO_HAS_030)
Vapi->LoDoLog(LL_INFO, "%s", "68030 processor available") ;
if (ProcMask & CO_HAS_FPU)
Vapi->LoDoLog(LL_INFO, "%s", "Floating Point unit available") ;
}
return( &LdvInfos ) ;
}
/* Free allocated RunTime stuff */
void OnClose(void)
{
if ( pre_cosin ) free( pre_cosin ) ;
pre_cosin = NULL ;
if ( pre_loffset ) free( pre_loffset ) ;
pre_loffset = NULL ;
}
/* Pre-compute line offsets from source to speed-up computations */
int compute_loffset(MFDB* in, long** ppre_lo, int* plo_w, int* plo_h, int* plo_nplanes)
{
/* Sanity checks */
if ( (ppre_lo == NULL) || (plo_w == NULL) || (plo_h == NULL) || (plo_nplanes == NULL) )
return -2 ;
if ( *ppre_lo && (*plo_w == in->fd_w) && (*plo_h == in->fd_h) && (*plo_nplanes == in->fd_nplanes) )
{
/* Current line offsets are still valid */
return 0 ;
}
else
{
/* Need to compute line offsets */
*plo_w = *plo_h = *plo_nplanes = 0 ;
if (*ppre_lo) free(*ppre_lo) ;
*ppre_lo = (long*) malloc(sizeof(long) * (long)in->fd_h) ;
if (*ppre_lo)
{
long* pt_off ;
long add = (long) ALIGN16( in->fd_w ) ;
long offset = 0L ;
int y ;
pt_off = *ppre_lo ;
for ( y = 0; y < in->fd_h; y++ )
{
*pt_off++ = offset ;
offset += add ;
}
*plo_w = in->fd_w ;
*plo_h = in->fd_h ;
*plo_nplanes = in->fd_nplanes ;
return 0 ;
}
}
return -1 ;
}
#pragma warn -par
/* Just say that output image has same width/length than source */
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
#pragma warn +par
/* Update progression window 1 time on 16 */
char check_prog(short y, short ymax)
{
char cancel = 0 ;
if ( ( y & 0x0F ) == 0 )
{
int pc = (short) ( ( 100L * (long)y ) / (long)ymax ) ;
cancel = Vapi->PrSetProgEx( bh_pc+pc/bh_nrect ) ;
}
return cancel ;
}
/* Initialize global variables for calculation */
void init_computation(short xc, short yc, long angle, MFDB* in, RECT* rect)
{
long maxrd2 ;
bh_xd = -xc ;
bh_yd = -yc ;
maxrd2 = bh_xd*bh_xd + bh_yd*bh_yd ;
if ( (ProcMask & (CO_HAS_030|CO_HAS_FPU)) == (CO_HAS_030|CO_HAS_FPU) )
maxrd2 = (long) sqrt(maxrd2) ;
bh_ref = (angle * maxrd2) ;
bh_xc = xc ;
bh_yc = yc ;
bh_in_w = in->fd_w ;
bh_in_h = in->fd_h ;
bh_out_x = rect->x ;
bh_out_y = rect->y ;
bh_out_w = rect->w ;
bh_out_h = rect->h ;
bh_yd = bh_out_y-bh_yc ;
}
/* 68000 routine for bit-plane images */
LDV_STATUS bpRun(MFDB *in, long angle, short xc, short yc, MFDB *out, RECT* rect, short use_sym)
{
MFDB dst_line ;
LDV_STATUS status = ELDV_NOERROR ;
size_t size_indexes, size_dst_line ;
short y ;
long wout, sizelout ;
unsigned char *index_in, *index_out, *out_ptr ;
char cancel = 0 ;
/* We will convert the whole image in indexes */
/* Allocate memory to convert then to bitplanes */
/* A line to destination tion */
size_indexes = (long) ALIGN16( in->fd_w ) ;
size_indexes *= (long) in->fd_h ;
size_dst_line = (long) ALIGN16( out->fd_w ) ;
index_in = (unsigned char *) malloc( size_indexes ) ;
if ( index_in == NULL ) return ELDV_NOTENOUGHMEMORY ;
index_out = (unsigned char *) malloc(size_dst_line) ;
if ( index_out == NULL )
{
free(index_in) ;
return ELDV_NOTENOUGHMEMORY ;
}
/* Convert all source to indexes */
Vapi->RaRaster2Ind( in->fd_addr, size_indexes, (long)in->fd_nplanes, index_in ) ;
memcpy( &dst_line, out, sizeof(MFDB) ) ;
dst_line.fd_wdwidth = out->fd_w / 16 ;
if ( out->fd_w % 16 ) dst_line.fd_wdwidth++ ;
dst_line.fd_h = 1 ;
wout = (long) ALIGN16( out->fd_w ) ;
out_ptr = out->fd_addr ;
sizelout = Vapi->RaGetImgSize( (long) dst_line.fd_w, (long) dst_line.fd_h, (long) out->fd_nplanes ) ;
init_computation(xc, yc, angle, in, rect) ;
for ( y = 0; !cancel && (y < out->fd_h); y++, bh_yd++, out_ptr += sizelout )
{
BH_INIT_LINE ;
BHLRoutine(use_sym, index_in, index_out) ;
dst_line.fd_addr = out_ptr ;
Vapi->RaInd2RasterInit( &dst_line, wout ) ;
Vapi->RaInd2Raster( index_out, wout ) ;
cancel = check_prog(y, out->fd_h) ;
}
free(index_in) ;
free(index_out) ;
if ( cancel ) status = ELDV_CANCELLED ;
return( status ) ;
}
/* 68000 routine for 16bit True Color images */
LDV_STATUS Run16(MFDB *in, long angle, short xc, short yc, MFDB *out, RECT* rect, short use_sym)
{
LDV_STATUS status = ELDV_NOERROR ;
unsigned int *in_ptr, *out_ptr ;
unsigned long sizelout = 0 ;
short y, hy ;
char cancel = 0 ;
in_ptr = (unsigned int*) in->fd_addr ;
out_ptr = (unsigned int*) out->fd_addr ;
init_computation(xc, yc, angle, in, rect) ;
hy = bh_out_y+bh_out_h/2 ;
if (!use_sym)
{
sizelout = (long) ALIGN16( out->fd_w ) ;
out_ptr += sizelout*(long)rect->y ;
hy = bh_out_y+bh_out_h ;
}
for ( y = bh_out_y; !cancel && (y < hy); y++, bh_yd++, out_ptr += sizelout )
{
BH_INIT_LINE ;
BHLRoutine(use_sym, in_ptr, out_ptr) ;
cancel = check_prog(y, hy-bh_out_y) ;
}
if ( cancel ) status = ELDV_CANCELLED ;
return( status ) ;
}
/* 68000 routine for 32bit True Color images */
LDV_STATUS Run32(MFDB *in, long angle, short xc, short yc, MFDB *out, RECT* rect, short use_sym)
{
LDV_STATUS status = ELDV_NOERROR ;
unsigned long *in_ptr, *out_ptr ;
unsigned long sizelout = 0 ;
short y, hy ;
char cancel = 0 ;
in_ptr = (unsigned long*) in->fd_addr ;
out_ptr = (unsigned long*) out->fd_addr ;
init_computation(xc, yc, angle, in, rect) ;
hy = bh_out_y+bh_out_h/2 ;
if (!use_sym)
{
sizelout = (long) ALIGN16( out->fd_w ) ;
out_ptr += sizelout*(long)rect->y ;
hy = bh_out_y+bh_out_h ;
}
for ( y = bh_out_y; !cancel && (y < hy); y++, bh_yd++, out_ptr += sizelout )
{
BH_INIT_LINE ;
BHLRoutine(use_sym, in_ptr, out_ptr) ;
cancel = check_prog(y, hy-bh_out_y) ;
}
if ( cancel ) status = ELDV_CANCELLED ;
return( status ) ;
}
int MayAddRect(RECT* subRect, BH_SPROPERTIES* sgProps)
{
int add = (subRect->w && subRect->h) ;
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"MayAddRect (%d,%d,%d,%d)", subRect->x, subRect->y, subRect->w, subRect->h);
if ( add ) /* Sub Rectangle not empty */
memcpy( &sgProps->rect[sgProps->nrect++], subRect, sizeof(RECT) ) ;
return( add ) ;
}
/* Estimation of the expected gain by using rotation symmetry */
void SymmetrySplit(MFDB* img, short xc, short yc, BH_SPROPERTIES* sgProps)
{
long npts_insym, npts_total, npts_to_compute ;
short sw = 0 ;
if ( UseSym && ( (img->fd_nplanes == 16) || (img->fd_nplanes == 32) ) )
{
/* Bitplane organization would have make things too complicated */
/* By the way, who is using bitplanes nowadays ? */
sw = xc ;
if ( img->fd_w-xc < sw ) sw = img->fd_w-xc ;
if ( yc < sw ) sw = yc ;
if ( img->fd_h-yc < sw ) sw = img->fd_h-yc ;
if ( img->fd_h-yc < sw ) sw = img->fd_h-yc ;
/* Let's build the rectangle arrays to define the image */
/* First rectangle (square actually) is the one to use for symmetry */
/* On this one only 25% of pixels will be computed with Black Hole formula */
sgProps->nrect = 1 ;
sgProps->nsym = 0 ;
sgProps->rect[0].x = xc-sw ;
sgProps->rect[0].y = yc-sw ;
sgProps->rect[0].w = 2*sw ;
sgProps->rect[0].h = 2*sw ;
}
npts_total = (long)img->fd_w*(long)img->fd_h ;
npts_insym = 4L*(long)sw*(long)sw ;
npts_to_compute = npts_total-((3L*npts_insym)/4L) ;
sgProps->estdpc = (100L*npts_to_compute)/npts_total ;
if ( sgProps->estdpc > 70 )
{
/* Not worth make things complicated for that gain */
sgProps->nrect = 1 ;
sgProps->nsym = -1 ;
sgProps->rect[0].x = 0 ;
sgProps->rect[0].y = 0 ;
sgProps->rect[0].w = img->fd_w ;
sgProps->rect[0].h = img->fd_h ;
}
else
{
/* Let's build the remaining rectangles */
RECT* sRect = &sgProps->rect[0] ; /* Symmetry Rectangle */
RECT subRect ;
/*
|----------------------------------------|
| R1 | R2 | R3 |
|----------------------------------------|
| ****** |
| R4 ****** R5 |
| ****** |
| ****** |
|----------------------------------------|
| R6 | R7 | R8 |
|----------------------------------------|
*/
/* R1 */
subRect.x = 0 ; subRect.y = 0 ;
subRect.w = sRect->x ; subRect.h = sRect->y ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R1(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R2 */
subRect.x = sRect->x ; subRect.y = 0 ;
subRect.w = sRect->w ; subRect.h = sRect->y ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R2(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R3 */
subRect.x = sRect->x+sRect->w ; subRect.y = 0 ;
subRect.w = img->fd_w-sRect->x-sRect->w ; subRect.h = sRect->y ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R3(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R4 */
subRect.x = 0 ; subRect.y = sRect->y ;
subRect.w = sRect->x ; subRect.h = sRect->h ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R4(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R5 */
subRect.x = sRect->x+sRect->w ; subRect.y = sRect->y ;
subRect.w = img->fd_w-sRect->x-sRect->w ; subRect.h = sRect->h ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R5(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R6 */
subRect.x = 0 ; subRect.y = sRect->y+sRect->h ;
subRect.w = sRect->x ; subRect.h = img->fd_h-sRect->y-sRect->h ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R6(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R7 */
subRect.x = sRect->x ; subRect.y = sRect->y+sRect->h ;
subRect.w = sRect->w ; subRect.h = img->fd_h-sRect->y-sRect->h ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R7(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
/* R8 */
subRect.x = sRect->x+sRect->w ; subRect.y = sRect->y+sRect->h ;
subRect.w = img->fd_w-sRect->x-sRect->w ; subRect.h = img->fd_h-sRect->y-sRect->h ;
if (MayAddRect( &subRect, sgProps ))
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG,"Adding R8(%d,%d,%d,%d)", subRect.x, subRect.y, subRect.w, subRect.h);
}
}
short GetSymetryUsageFromIni(void)
{
short use_sym = 1 ; /* Unless INI file say no, assume symetry usage */
long found = 0 ;
char *path_ldv, *language ;
char val_key[64] ;
path_ldv = Vapi->CoGetLDVPath() ;
language = Vapi->CoGetCurrentLanguage() ;
if ( path_ldv && language && Vapi->InGetKeyFromFile )
{
char filename[256] ;
sprintf( filename, "%s\\%s\\BHOLE.INI", path_ldv, language ) ;
if ( Vapi->LoDoLog ) Vapi->LoDoLog(LL_INFO,"Looking into %s to see symetry usage...", filename) ;
found = Vapi->InGetKeyFromFile( filename, "Private", "UseSym", val_key ) ;
if ( !found )
{
sprintf( filename, "%s\\BHOLE.INI", path_ldv ) ;
if ( Vapi->LoDoLog ) Vapi->LoDoLog(LL_INFO,"Looking into non language specific %s to see symetry usage...", filename) ;
found = Vapi->InGetKeyFromFile( filename, "Private", "UseSym", val_key ) ;
}
}
else if ( Vapi->LoDoLog ) Vapi->LoDoLog(LL_WARNING,"Can't access LDV (%s) or language path (%s)!", path_ldv, language) ;
if ( found ) use_sym = atoi( val_key ) ;
if ( Vapi->LoDoLog ) Vapi->LoDoLog(LL_INFO,"Symetry usage: %d (found=%ld)", use_sym, found) ;
return use_sym ;
}
/* LDV Run routine */
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
BH_SPROPERTIES sgProps ;
LDV_STATUS (*RunRoutine)(MFDB *in, long angle, short xc, short yc, MFDB *out, RECT* rect, short use_sym) ;
LDV_STATUS status = ELDV_NOERROR ;
long angle, np=0 ;
short xc, yc, n ;
if ( Vapi->Header.Version < 0x102 ) return ELDV_BADVAPIVERSION ;
if ( InitTrigo((ProcMask & CO_HAS_FPU) == CO_HAS_FPU) != 0 ) return ELDV_NOTENOUGHMEMORY ;
if ( compute_loffset(&in->Raster, &pre_loffset, &lo_w, &lo_h, &lo_nplanes) ) return ELDV_NOTENOUGHMEMORY ;
if ( UseSym == -1 ) UseSym = GetSymetryUsageFromIni() ;
if ( in->Raster.fd_nplanes <= 8 ) { BHLRoutine = BHLInd_68000 ; RunRoutine = bpRun ; }
else if ( in->Raster.fd_nplanes == 16 ) { BHLRoutine = BHL16_68000 ; RunRoutine = Run16 ; }
else if ( in->Raster.fd_nplanes == 32 ) { BHLRoutine = BHL32_68000 ; RunRoutine = Run32 ; }
else return ELDV_IMGFORMATMISMATCH ;
if (ProcMask & CO_HAS_030)
{
if (ProcMask & CO_HAS_FPU)
{
/* Note that FPU requires also a 68030 here */
/* To avoid having another set of macros in bhole.s */
/* And convert even 68000 routines to ASM */
/* FPU won't speed-up computations; it will just */
/* Make the angle proportional to the distance to */
/* Black Hole Center instead of its square */
Vapi->PrOptimize(0x05) ;
if ( in->Raster.fd_nplanes <= 8 ) BHLRoutine = BHLInd_F68030 ;
else if ( in->Raster.fd_nplanes == 16 ) BHLRoutine = BHL16_F68030 ;
else if ( in->Raster.fd_nplanes == 32 ) BHLRoutine = BHL32_F68030 ;
}
else
{
/* CPU 030 'only', note that it is about 2 times faster than 68000 */
/* Routine mostly because of 32x32x-->32 MULS.L instruction */
Vapi->PrOptimize(0x01) ;
if ( in->Raster.fd_nplanes <= 8 ) BHLRoutine = BHLInd_68030 ;
else if ( in->Raster.fd_nplanes == 16 ) BHLRoutine = BHL16_68030 ;
else if ( in->Raster.fd_nplanes == 32 ) BHLRoutine = BHL32_68030 ;
}
}
angle = (long) params->Param[0].s ;
xc = ((long)params->Param[1].s * (long)in->Raster.fd_w)/100L ;
yc = ((long)params->Param[2].s * (long)in->Raster.fd_h)/100L ;
SymmetrySplit(&in->Raster, xc, yc, &sgProps) ;
if (Vapi->LoDoLog)
{
Vapi->LoDoLog(LL_DEBUG, "100 being the time without using symmetry, using symmetry would be %d", sgProps.estdpc) ;
Vapi->LoDoLog(LL_DEBUG, "Image source : (0,0,+%d,+%d); %ld pixels", in->Raster.fd_w, in->Raster.fd_h, (long)in->Raster.fd_w * (long)in->Raster.fd_h) ;
Vapi->LoDoLog(LL_DEBUG, "Symmetry zone : (%d,%d,+%d,+%d), index:%d", sgProps.rect[0].x, sgProps.rect[0].y, sgProps.rect[0].w, sgProps.rect[0].h, sgProps.nsym) ;
}
bh_nrect = sgProps.nrect ;
for ( n=0; (status != ELDV_CANCELLED) && (n < sgProps.nrect); n++)
{
long npix ;
bh_pc = (100*n)/sgProps.nrect ; /* For progression indicator as we may have multiple loops */
npix = (long)sgProps.rect[n].w * (long)sgProps.rect[n].h ;
np += npix ;
if ( VapiLogLevel >= LL_PERF)
{
size_t t0, tms ;
t0 = clock() ;
status = RunRoutine( &in->Raster, angle, xc, yc, &out->Raster, &sgProps.rect[n], (sgProps.nsym == n) ) ;
tms = (1000L * (clock() - t0) ) / CLK_TCK ;
if (tms == 0 ) tms = 1 ;
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_PERF, "Run zone %d: (%d,%d,+%d,+%d), use_sym=%d, %ld pixels, done in %ldms, %ld Kpixels/s",
n, sgProps.rect[n].x, sgProps.rect[n].y, sgProps.rect[n].w, sgProps.rect[n].h, (sgProps.nsym == n), (long)sgProps.rect[n].w * (long)sgProps.rect[n].h, tms, npix/tms) ;
}
else
status = RunRoutine( &in->Raster, angle, xc, yc, &out->Raster, &sgProps.rect[n], (sgProps.nsym == n) ) ;
}
if (Vapi->LoDoLog)
Vapi->LoDoLog(LL_DEBUG, "%ld pixels computed or deduced", np) ;
return( status ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +0,0 @@
BHOLE.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
BHOLE.C
BHOLE.S
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
;..\..\mt_aes.lib

View File

@@ -1,635 +0,0 @@
.IMPORT pre_cosin ; array of 2*ITRIGO_ARRAY_SIZE longs
.IMPORT pre_loffset ; long*
.EXPORT bh_xd, bh_yd, bh_rd2 ; long
.EXPORT bh_xs, bh_ys, bh_ref ; long
.EXPORT bh_xc, bh_yc ; long
.EXPORT bh_out_w, bh_out_h ; short
.EXPORT bh_in_w, bh_in_h ; short
.EXPORT bh_out_x, bh_out_y ; short
.EXPORT BHL32_68030,BHL16_68030,BHLInd_68030
.EXPORT BHL32_F68030,BHL16_F68030,BHLInd_F68030
.EXPORT lcosin_fpu
ITRIGO_ARRAY_SIZE EQU (1 << 14)
ITRIGO_ANGLE_MAX EQU (ITRIGO_ARRAY_SIZE-1)
QUARTER EQU (ITRIGO_ARRAY_SIZE/4)
; The black hole transformation consists of:
; Rotate the destination pixel around the black hole center
; The closest we are to the black hole, the bigger the rotation angle is
; We have 2 or 3 parts of computation angle for black hole transformation:
; 1: Just before dividing the maximum possible angle (depending on LDV paramter Rotation angle) by:
; CPU: the square of distance to black hole center
; FPU: the distance to black hole center; here we need 68881 instruction FSQRT
; So there are 3 parts in macro calculations:
; 1. Before dividing by distance or its square
; 1a. (FPU only) Compute distance
; 3. Divide by either distance or its square and state if the resulting pixel is in source image
; Dividing by distance instead of its square gives better visual results
MACRO BH_COMP_1
MOVE.L A6,D0 ; Remember A6=bh_xd
ADD.L D0,D0
ADDQ.L #1,D0
MOVE.L A5,D1 ; Remember A5=bh_rd2
ADD.L D0,D1 ; bh_rd2(D1)=1+2*bh_xd(D0)
MOVE.L bh_ref(PC),D2
MOVE.L D1,A5 ; Save bh_rd2, free D1
ADDQ.L #1,D1 ; We need bh_rd2+1 for divide
ENDM
MACRO BH_COMP_2 bail_out_addr
DIVU.L D1,D2 ; alpha(D2)=bh_ref/(1+bh_rd2)
ANDI.L #ITRIGO_ANGLE_MAX,D2 ; alpha &= ITRIGO_ANGLE_MAX
LSL.L #3,D2 ; D2=offset for pre_cosin array
MOVE.L A6,D0 ; D0=bh_xd
MOVE.L bh_yd(PC),D1 ; D1=bh_yd
MOVE.L 4(A2,D2.L),D3 ; A2->pre_cosin, D3.L=SIN(alpha)
MOVE.L (A2,D2.L),D2 ; A2->pre_cosin, D2.L=COS(alpha)
MOVEQ.L #16,D6 ; Prepare shifts/assume not in range
MOVE.L D0,D4
MULS.L D2,D4 ; D4=bh_xd * pre_cos[alpha]
MOVE.L D1,D5
MULS.L D3,D5 ; D5=bh_yd * pre_sin[alpha]
SUB.L D5,D4 ; D4=bh_xd * pre_cos[alpha] - bh_yd * pre_sin[alpha]
ASR.L D6,D4
ADD.L bh_xc(PC),D4 ; D6=16, assume pixel not in range
BLT.S bail_out_addr ; xs < 0: not in range
CMP.W bh_in_w(PC),D4
BGE.S bail_out_addr ; xs >= bh_in_w: not in range
MOVE.L D4,A3 ; A3=bh_xs= (D4 >> 16)
MOVE.L D0,D4
MULS.L D3,D4 ; D4=bh_xd * pre_sin[alpha]
MOVE.L D1,D5
MULS.L D2,D5 ; D5=bh_yd * pre_cos[alpha]
ADD.L D5,D4 ; D4=bh_xd * pre_sin[alpha] + bh_yd * pre_cos[alpha]
ASR.L D6,D4
ADD.L bh_yc(PC),D4 ; D4.L=bh_ys
BLT.S bail_out_addr ; ys < 0: not in range
CMP.W bh_in_h(PC),D4
BGE.S bail_out_addr ; ys >= bh_in_h: not in range
MOVEQ.L #0,D6 ; pixel in range
ENDM
; Macro for CPU 68030
MACRO BH_COMPUTE_CPU bail_out_addr
BH_COMP_1
BH_COMP_2 bail_out_addr
ENDM
; Macro for using FPU
; What we do with FPU is to compute the square root of D1 which
; Is then the distance to the back hole center instead of its square
MACRO BH_COMPUTE_FPU bail_out_addr
BH_COMP_1
FMOVE.L D1,FP0
FSQRT FP0
FMOVE.L FP0,D1
BH_COMP_2 bail_out_addr
ENDM
; Init parameters valid for the entire call
MACRO INIT_BHL
MOVE.L pre_cosin,A2
MOVE.L pre_loffset,A4 ; A4-->preoffset
MOVE.L bh_rd2(PC),A5 ; A5=bh_rd2
MOVE.L bh_xd(PC),A6 ; A6=bh_xd
MOVE.W bh_out_w(PC),D7
SUBQ.W #1,D7 ; For DBF
ENDM
MACRO INIT_BHL_SYM
MOVE.L pre_cosin,A2
MOVE.L pre_loffset,A4 ; A4-->preoffset
MOVE.L bh_rd2(PC),A5 ; A5=bh_rd2
MOVE.L bh_xd(PC),A6 ; A6=bh_xd
MOVE.W bh_out_w(PC),D7
LSR.W #1,D7 ; loop to bh_out_w/2 counts
ADD.W A6,D7 ; starting from bh_xd
MOVE.W D7,last_xd
ENDM
; Get pixel TC32 -->dest (Dx)
; A4-->pre_loffset
MACRO GET_TCPIXEL32 p,x,y,dest
MOVE.L (A4,y.L*4),dest
ADD.L x,dest
MOVE.L (p,dest.L*4),dest
ENDM
; Set pixel TC32 val(Dx) -->dest
; A4-->pre_loffset
; scratch_Dx scratch variable
MACRO SET_TCPIXEL32 p,x,y,val,scratch_Dx
MOVE.L (A4,y.L*4),scratch_Dx
ADD.L x,scratch_Dx
MOVE.L val,(p,scratch_Dx.L*4)
ENDM
; Get pixel TC16 -->dest (Dx)
; A4-->pre_loffset
MACRO GET_TCPIXEL16 p,x,y,dest
MOVE.L (A4,y.L*4),dest
ADD.L x,dest
MOVE.W (p,dest.L*2),dest
ENDM
; Set pixel TC16 val(Dx) -->dest
; A4-->pre_loffset
; scratch_Dx scratch variable
MACRO SET_TCPIXEL16 p,x,y,val,scratch_Dx
MOVE.L (A4,y.L*4),scratch_Dx
ADD.L x,scratch_Dx
MOVE.W val,(p,scratch_Dx.L*2)
ENDM
; Rotate 90
; x,y,scratch_Dx : registers, y has to be Dx
; #define R90(x,y) { long _x=x; x=-y; y=_x; }
MACRO R90 x,y,scratch_Dx
MOVE.L x,scratch_Dx
NEG.L y
MOVE.L y,x
MOVE.L scratch_Dx,y
ENDM
MACRO PIXINIMG x,y,w,h,bailout
TST.W x
BLT.S bailout
TST.W y
BLT.S bailout
CMP.W w,x
BGE.S bailout
CMP.W h,y
BGE.S bailout
ENDM
; On sample file 00_1480ms.jpg, Aranym 32bit:
; BHL32_68000 takes about 1450ms
; BHL32_68030 takes about 740ms
; 68030 routine for True Color 32bit
; BHL32_68030(short use_sym, void* in, void* out)
; D0, A0 A1
BHL32_68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
TST.W D0
BNE BHL32_68030_sym
MOVEQ.L #0,D7
MOVE.W bh_out_x(PC),D7
LSL.L #2,D7
ADD.L D7,A1 ; A1-->&out[bh_out_x]
INIT_BHL
bhl32_l030:
BH_COMPUTE_CPU bhl32_tpir_030 ; -->D6=0:pixel in range
bhl32_tpir_030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl32_setpix_030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
MOVE.L (A0,D0.L*4),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhl32_setpix_030:
MOVE.L D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhl32_l030
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
BHL32_68030_sym:
INIT_BHL_SYM
bhl32_l030_sym:
BH_COMPUTE_CPU bhl32_tpir_030_sym ; -->D6=0:pixel in range
bhl32_tpir_030_sym:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl32_setpix_030_sym
GET_TCPIXEL32 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
bhl32_setpix_030_sym:
MOVE.L A6,-(SP) ; Save bh_xd
MOVE.L bh_xc(PC),D2 ; D2=bh_xc
MOVE.L bh_yc(PC),D3 ; D3=bh_yc
ADD.L D2,A6 ; A6=bh_xd+bh_xc
MOVE.L bh_yd(PC),D7
ADD.L D3,D7 ; D7=bh_yd+bh_yc
SET_TCPIXEL32 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
MOVEQ.L #2,D1 ; 3 loops, -1 for DBF
deduc32_030:
SUB.L D2,A3 ; We need now bh_xs(A3) and bh_ys(D4) relative to
SUB.L D3,D4 ; Black Hole center to use R90
SUB.L D2,A6 ; We need now bh_xd(A6) and bh_yd(D7) relative to
SUB.L D3,D7 ; Black Hole center to use R90
R90 A6,D7,D0 ; Rotate (xd,yd) by PI/4
R90 A3,D4,D0 ; Rotate (xs,ys) by PI/4
ADD.L D2,A3 ; Now we need coords in image raster
ADD.L D3,D4
ADD.L D2,A6
ADD.L D3,D7
PIXINIMG A6,D7,bh_in_w(PC),bh_in_h(PC),dnotinimg32_030 ; Check if pixel in dest is within bounds
MOVEQ.L #-1,D0 ; Assume out of range
PIXINIMG A3,D4,bh_in_w(PC),bh_in_h(PC),plotdest32_030 ; Check if pixel in src is within bounds
GET_TCPIXEL32 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
plotdest32_030:
SET_TCPIXEL32 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
dnotinimg32_030:
DBF D1,deduc32_030
MOVE.L (SP)+,A6 ; Restore bh_xd
ADD.L #1,A6 ; bh_xd++
CMP.W last_xd(PC),A6
BLE bhl32_l030_sym
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
; 68030 routine for True Color 16bit
; BHL16_68030(short use_sym, void* in, void* out)
; D0, A0 A1
BHL16_68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
TST.W D0
BNE BHL16_68030_sym
MOVEQ.L #0,D7
MOVE.W bh_out_x(PC),D7
ADD.L D7,D7
ADD.L D7,A1 ; A1-->&out[bh_out_x]
INIT_BHL
bhl16_l030:
BH_COMPUTE_CPU bhl16_tpir_030 ; -->D6=0:pixel in range
bhl16_tpir_030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl16_setpix_030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
MOVE.W (A0,D0.L*2),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhl16_setpix_030:
MOVE.W D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhl16_l030
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
BHL16_68030_sym:
INIT_BHL_SYM
bhl16_l030_sym:
BH_COMPUTE_CPU bhl16_tpir_030_sym ; -->D6=0:pixel in range
bhl16_tpir_030_sym:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl16_setpix_030_sym
GET_TCPIXEL16 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
bhl16_setpix_030_sym:
MOVE.L A6,-(SP) ; Save bh_xd
MOVE.L bh_xc(PC),D2 ; D2=bh_xc
MOVE.L bh_yc(PC),D3 ; D3=bh_yc
ADD.L D2,A6 ; A6=bh_xd+bh_xc
MOVE.L bh_yd(PC),D7
ADD.L D3,D7 ; D7=bh_yd+bh_yc
SET_TCPIXEL16 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
MOVEQ.L #2,D1 ; 3 loops, -1 for DBF
deduc16_030:
SUB.L D2,A3 ; We need now bh_xs(A3) and bh_ys(D4) relative to
SUB.L D3,D4 ; Black Hole center to use R90
SUB.L D2,A6 ; We need now bh_xd(A6) and bh_yd(D7) relative to
SUB.L D3,D7 ; Black Hole center to use R90
R90 A6,D7,D0 ; Rotate (xd,yd) by PI/4
R90 A3,D4,D0 ; Rotate (xs,ys) by PI/4
ADD.L D2,A3 ; Now we need coords in image raster
ADD.L D3,D4
ADD.L D2,A6
ADD.L D3,D7
PIXINIMG A6,D7,bh_in_w(PC),bh_in_h(PC),dnotinimg16_030 ; Check if pixel in dest is within bounds
MOVEQ.L #-1,D0 ; Assume out of range
PIXINIMG A3,D4,bh_in_w(PC),bh_in_h(PC),plotdest16_030 ; Check if pixel in src is within bounds
GET_TCPIXEL16 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
plotdest16_030:
SET_TCPIXEL16 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
dnotinimg16_030:
DBF D1,deduc16_030
MOVE.L (SP)+,A6 ; Restore bh_xd
ADD.L #1,A6 ; bh_xd++
CMP.W last_xd(PC),A6
BLE bhl16_l030_sym
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
; 68030 routine for bitplances images, converted to indexes
; BHLInd_68030(short use_sym, void* in, void* out)
; D0, A0 A1
BHLInd_68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
INIT_BHL
bhlind_l030:
BH_COMPUTE_CPU bhlind_tpir_030 ; -->D6=0:pixel in range
bhlind_tpir_030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhlind_setpix_030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
MOVE.B (A0,D0.L),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhlind_setpix_030:
MOVE.B D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhlind_l030
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
.EVEN
bh_xd:
DC.L 0
bh_yd:
DC.L 0
bh_rd2:
DC.L 0
bh_xs:
DC.L 0
bh_ys:
DC.L 0
bh_ref:
DC.L 0
bh_xc:
DC.L 0
bh_yc:
DC.L 0
bh_out_w:
DC.W 0
bh_out_h:
DC.W 0
bh_in_w:
DC.W 0
bh_in_h:
DC.W 0
bh_out_x:
DC.W 0
bh_out_y:
DC.W 0
last_xd:
DC.W 0
; 68030/FPU routine for True Color 32bit
; BHL32_F68030(short use_sym, void* in, void* out)
; D0, A0 A1
;BHL32_F68030:
; MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
; FMOVE.X FP0,-(SP)
;
; INIT_BHL
;bhl32_lf030:
; BH_COMPUTE_FPU bhl32_tpir_f030 ; -->D6=0:pixel in range
;bhl32_tpir_f030:
; MOVEQ.L #-1,D0 ; Assume out of range
; TST.W D6
; BNE.S bhl32_setpix_f030
; MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
; ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
; MOVE.L (A0,D0.L*4),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
;bhl32_setpix_f030:
; MOVE.L D0,(A1)+
; ADD.L #1,A6 ; bh_xd++
; DBF D7,bhl32_lf030
;
; FMOVE.X (SP)+,FP0
; MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
; RTS
BHL32_F68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
FMOVE.X FP0,-(SP)
TST.W D0
BNE BHL32_F68030_sym
MOVEQ.L #0,D7
MOVE.W bh_out_x(PC),D7
LSL.L #2,D7
ADD.L D7,A1 ; A1-->&out[bh_out_x]
INIT_BHL
bhl32_lf030:
BH_COMPUTE_FPU bhl32_tpir_f030 ; -->D6=0:pixel in range
bhl32_tpir_f030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl32_setpix_f030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
MOVE.L (A0,D0.L*4),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhl32_setpix_f030:
MOVE.L D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhl32_lf030
FMOVE.X (SP)+,FP0
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
BHL32_F68030_sym:
INIT_BHL_SYM
bhl32_lf030_sym:
BH_COMPUTE_FPU bhl32_tpir_f030_sym ; -->D6=0:pixel in range
bhl32_tpir_f030_sym:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl32_setpix_f030_sym
GET_TCPIXEL32 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
bhl32_setpix_f030_sym:
MOVE.L A6,-(SP) ; Save bh_xd
MOVE.L bh_xc(PC),D2 ; D2=bh_xc
MOVE.L bh_yc(PC),D3 ; D3=bh_yc
ADD.L D2,A6 ; A6=bh_xd+bh_xc
MOVE.L bh_yd(PC),D7
ADD.L D3,D7 ; D7=bh_yd+bh_yc
SET_TCPIXEL32 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
MOVEQ.L #2,D1 ; 3 loops, -1 for DBF
deduc32_f030:
SUB.L D2,A3 ; We need now bh_xs(A3) and bh_ys(D4) relative to
SUB.L D3,D4 ; Black Hole center to use R90
SUB.L D2,A6 ; We need now bh_xd(A6) and bh_yd(D7) relative to
SUB.L D3,D7 ; Black Hole center to use R90
R90 A6,D7,D0 ; Rotate (xd,yd) by PI/4
R90 A3,D4,D0 ; Rotate (xs,ys) by PI/4
ADD.L D2,A3 ; Now we need coords in image raster
ADD.L D3,D4
ADD.L D2,A6
ADD.L D3,D7
PIXINIMG A6,D7,bh_in_w(PC),bh_in_h(PC),dnotinimg32_f030 ; Check if pixel in dest is within bounds
MOVEQ.L #-1,D0 ; Assume out of range
PIXINIMG A3,D4,bh_in_w(PC),bh_in_h(PC),plotdest32_f030 ; Check if pixel in src is within bounds
GET_TCPIXEL32 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
plotdest32_f030:
SET_TCPIXEL32 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
dnotinimg32_f030:
DBF D1,deduc32_f030
MOVE.L (SP)+,A6 ; Restore bh_xd
ADD.L #1,A6 ; bh_xd++
CMP.W last_xd(PC),A6
BLE bhl32_lf030_sym
FMOVE.X (SP)+,FP0
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
BHL16_F68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
FMOVE.X FP0,-(SP)
TST.W D0
BNE BHL16_f68030_sym
MOVEQ.L #0,D7
MOVE.W bh_out_x(PC),D7
ADD.L D7,D7
ADD.L D7,A1 ; A1-->&out[bh_out_x]
INIT_BHL
bhl16_lf030:
BH_COMPUTE_FPU bhl16_tpir_f030 ; -->D6=0:pixel in range
bhl16_tpir_f030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl16_setpix_f030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs(A3)
MOVE.W (A0,D0.L*2),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhl16_setpix_f030:
MOVE.W D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhl16_lf030
FMOVE.X (SP)+,FP0
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
BHL16_f68030_sym:
INIT_BHL_SYM
bhl16_lf030_sym:
BH_COMPUTE_FPU bhl16_tpir_f030_sym ; -->D6=0:pixel in range
bhl16_tpir_f030_sym:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhl16_setpix_f030_sym
GET_TCPIXEL16 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
bhl16_setpix_f030_sym:
MOVE.L A6,-(SP) ; Save bh_xd
MOVE.L bh_xc(PC),D2 ; D2=bh_xc
MOVE.L bh_yc(PC),D3 ; D3=bh_yc
ADD.L D2,A6 ; A6=bh_xd+bh_xc
MOVE.L bh_yd(PC),D7
ADD.L D3,D7 ; D7=bh_yd+bh_yc
SET_TCPIXEL16 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
MOVEQ.L #2,D1 ; 3 loops, -1 for DBF
deduc16_f030:
SUB.L D2,A3 ; We need now bh_xs(A3) and bh_ys(D4) relative to
SUB.L D3,D4 ; Black Hole center to use R90
SUB.L D2,A6 ; We need now bh_xd(A6) and bh_yd(D7) relative to
SUB.L D3,D7 ; Black Hole center to use R90
R90 A6,D7,D0 ; Rotate (xd,yd) by PI/4
R90 A3,D4,D0 ; Rotate (xs,ys) by PI/4
ADD.L D2,A3 ; Now we need coords in image raster
ADD.L D3,D4
ADD.L D2,A6
ADD.L D3,D7
PIXINIMG A6,D7,bh_in_w(PC),bh_in_h(PC),dnotinimg16_f030 ; Check if pixel in dest is within bounds
MOVEQ.L #-1,D0 ; Assume out of range
PIXINIMG A3,D4,bh_in_w(PC),bh_in_h(PC),plotdest16_f030 ; Check if pixel in src is within bounds
GET_TCPIXEL16 A0,A3,D4,D0 ; A0-->in_ptr, A3=bh_xs+bh_xc, D4=bh_ys+bh_yc
; D0=GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc)
plotdest16_f030:
SET_TCPIXEL16 A1,A6,D7,D0,D5 ; SET_TCPIXEL(out_ptr, bh_xd+bh_xc, bh_yd+bh_yc, GET_TCPIXEL(in_ptr, bh_xs+bh_xc, bh_ys+bh_yc))
dnotinimg16_f030:
DBF D1,deduc16_f030
MOVE.L (SP)+,A6 ; Restore bh_xd
ADD.L #1,A6 ; bh_xd++
CMP.W last_xd(PC),A6
BLE bhl16_lf030_sym
FMOVE.X (SP)+,FP0
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
; 68030/FPU routine for bitplances images, converted to indexes
; BHLInd_F68030(short use_sym, void* in, void* out)
; D0, A0 A1
BHLInd_F68030:
MOVEM.L D0-D7/A2-A6,-(SP) ; Save context
FMOVE.X FP0,-(SP)
INIT_BHL
bhlInd_lf030:
BH_COMPUTE_FPU bhlInd_tpir_f030 ; -->D6=0:pixel in range
bhlInd_tpir_f030:
MOVEQ.L #-1,D0 ; Assume out of range
TST.W D6
BNE.S bhlInd_setpix_f030
MOVE.L (A4,D4.L*4),D0 ; D4=bh_ys, D0=pre_loffset[bh_ys]
ADD.L A3,D0 ; D0=pre_loffset[bh_ys] + bh_xs
MOVE.B (A0,D0.L),D0 ; D0=in_ptr[pre_loffset[bh_ys] + bh_xs]
bhlInd_setpix_f030:
MOVE.B D0,(A1)+
ADD.L #1,A6 ; bh_xd++
DBF D7,bhlInd_lf030
FMOVE.X (SP)+,FP0
MOVEM.L (SP)+,D0-D7/A2-A6 ; Restore context
RTS
; Pre-calculation of cosinus/sinus table using FPU
; void lcosin_fpu(long i, long* pcs)
; D0 A0
; double angle = i*ANGLE_ADD ;
; pcs[0] = 65536.0 * cos( angle ) ;
; pcs[1] = 65536.0 * sin( angle ) ;
lcosin_fpu:
FMOVEM.X FP0-FP2,-(SP)
FMOVE D0,FP0
; 3.8349519697141030742952189737299e-4=M_PI/2.0/(double)QUARTER
; For some reason, I did not manage to use EQU with floating point constants
FMUL.X #3.8349519697141030742952189737299e-4,FP0
FSINCOS.X FP0,FP1:FP2
FMUL.X #65536.0,FP1
FMUL.X #65536.0,FP2
FMOVE.L FP1,(A0)+
FMOVE.L FP2,(A0)
FMOVEM.X (SP)+,FP0-FP2
RTS

View File

@@ -1,86 +0,0 @@
68000, TC32, 2016x1508
MagicC, SYM:
25/02/18 18:31:38 [INFO] MayAddRect (0,0,254,0)
25/02/18 18:31:38 [INFO] MayAddRect (254,0,1508,0)
25/02/18 18:31:38 [INFO] MayAddRect (1762,0,254,0)
25/02/18 18:31:38 [INFO] MayAddRect (0,0,254,1508)
25/02/18 18:31:38 [INFO] Adding R4(0,0,254,1508)
25/02/18 18:31:38 [INFO] MayAddRect (1762,0,254,1508)
25/02/18 18:31:38 [INFO] Adding R5(1762,0,254,1508)
25/02/18 18:31:38 [INFO] MayAddRect (0,1508,254,0)
25/02/18 18:31:38 [INFO] MayAddRect (254,1508,1508,0)
25/02/18 18:31:38 [INFO] MayAddRect (1762,1508,254,0)
25/02/18 18:31:38 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 18:31:38 [INFO] Image source : (0,0,+2016,+1508); 3040128 pixels
25/02/18 18:31:38 [INFO] Symmetry zone : (254,0,+1508,+1508), index:0
25/02/18 18:31:40 [INFO] Run zone 0: (254,0,+1508,+1508), use_sym=1, 2274064 pixels, done in 850ms, 2675 Kpixels/s
25/02/18 18:31:40 [INFO] Run zone 1: (0,0,+254,+1508), use_sym=0, 383032 pixels, done in 295ms, 1298 Kpixels/s
25/02/18 18:31:40 [INFO] Run zone 2: (1762,0,+254,+1508), use_sym=0, 383032 pixels, done in 295ms, 1298 Kpixels/s
25/02/18 18:31:40 [INFO] 3040128 pixels computed or deduced
25/02/18 18:31:40 [PERF] LDV Run took 1445ms
MagicC, NO SYM:
25/02/18 18:36:52 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 18:36:52 [INFO] Image source : (0,0,+2016,+1508); 3040128 pixels
25/02/18 18:36:52 [INFO] Symmetry zone : (0,0,+2016,+1508), index:-1
25/02/18 18:36:54 [INFO] Run zone 0: (0,0,+2016,+1508), use_sym=0, 3040128 pixels, done in 2270ms, 1339 Kpixels/s
25/02/18 18:36:54 [INFO] 3040128 pixels computed or deduced
25/02/18 18:36:54 [PERF] LDV Run took 2275ms
Aranym, NO SYM:
25/02/18 18:38:54 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 18:38:54 [INFO] Image source : (0,0,+2016,+1508); 3040128 pixels
25/02/18 18:38:54 [INFO] Symmetry zone : (0,0,+2016,+1508), index:-1
25/02/18 18:38:54 [INFO] Run zone 0: (0,0,+2016,+1508), use_sym=0, 3040128 pixels, done in 1710ms, 1777 Kpixels/s
25/02/18 18:38:54 [INFO] 3040128 pixels computed or deduced
25/02/18 18:38:54 [PERF] LDV Run took 1710ms
Aranym, SYM:
25/02/18 18:41:12 [INFO] MayAddRect (0,0,254,0)
25/02/18 18:41:12 [INFO] MayAddRect (254,0,1508,0)
25/02/18 18:41:12 [INFO] MayAddRect (1762,0,254,0)
25/02/18 18:41:12 [INFO] MayAddRect (0,0,254,1508)
25/02/18 18:41:12 [INFO] Adding R4(0,0,254,1508)
25/02/18 18:41:12 [INFO] MayAddRect (1762,0,254,1508)
25/02/18 18:41:12 [INFO] Adding R5(1762,0,254,1508)
25/02/18 18:41:12 [INFO] MayAddRect (0,1508,254,0)
25/02/18 18:41:12 [INFO] MayAddRect (254,1508,1508,0)
25/02/18 18:41:12 [INFO] MayAddRect (1762,1508,254,0)
25/02/18 18:41:12 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 18:41:12 [INFO] Image source : (0,0,+2016,+1508); 3040128 pixels
25/02/18 18:41:12 [INFO] Symmetry zone : (254,0,+1508,+1508), index:0
25/02/18 18:41:14 [INFO] Run zone 0: (254,0,+1508,+1508), use_sym=1, 2274064 pixels, done in 500ms, 4548 Kpixels/s
25/02/18 18:41:14 [INFO] Run zone 1: (0,0,+254,+1508), use_sym=0, 383032 pixels, done in 900ms, 425 Kpixels/s
25/02/18 18:41:14 [INFO] Run zone 2: (1762,0,+254,+1508), use_sym=0, 383032 pixels, done in 890ms, 430 Kpixels/s
25/02/18 18:41:14 [INFO] 3040128 pixels computed or deduced
25/02/18 18:41:14 [PERF] LDV Run took 2300ms
HATARI, Falcon 32Mhz, TC16, SYM:
25/02/18 19:07:02 [DEBUG] Running LDV with w=1008, h=754, P0=10, P1=50, P2=50
25/02/18 19:07:04 [INFO] MayAddRect (0,0,127,0)
25/02/18 19:07:04 [INFO] MayAddRect (127,0,754,0)
25/02/18 19:07:04 [INFO] MayAddRect (881,0,127,0)
25/02/18 19:07:04 [INFO] MayAddRect (0,0,127,754)
25/02/18 19:07:04 [INFO] Adding R4(0,0,127,754)
25/02/18 19:07:04 [INFO] MayAddRect (881,0,127,754)
25/02/18 19:07:04 [INFO] Adding R5(881,0,127,754)
25/02/18 19:07:04 [INFO] MayAddRect (0,754,127,0)
25/02/18 19:07:04 [INFO] MayAddRect (127,754,754,0)
25/02/18 19:07:04 [INFO] MayAddRect (881,754,127,0)
25/02/18 19:07:04 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 19:07:04 [INFO] Image source : (0,0,+1008,+754); 760032 pixels
25/02/18 19:07:04 [INFO] Symmetry zone : (127,0,+754,+754), index:0
25/02/18 19:07:20 [INFO] Run zone 0: (127,0,+754,+754), use_sym=1, 568516 pixels, done in 17260ms, 32 Kpixels/s
25/02/18 19:07:26 [INFO] Run zone 1: (0,0,+127,+754), use_sym=0, 95758 pixels, done in 6350ms, 15 Kpixels/s
25/02/18 19:07:34 [INFO] Run zone 2: (881,0,+127,+754), use_sym=0, 95758 pixels, done in 6400ms, 14 Kpixels/s
25/02/18 19:07:34 [INFO] 760032 pixels computed or deduced
25/02/18 19:07:34 [PERF] LDV Run took 30030ms
HATARI, Falcon 32Mhz, TC16, NO SYM:
25/02/18 19:11:00 [DEBUG] Running LDV with w=1008, h=754, P0=10, P1=50, P2=50
25/02/18 19:11:00 [INFO] 100 being the time without using symmetry, using symmetry would be 43
25/02/18 19:11:00 [INFO] Image source : (0,0,+1008,+754); 760032 pixels
25/02/18 19:11:00 [INFO] Symmetry zone : (0,0,+1008,+754), index:-1
25/02/18 19:11:46 [INFO] Run zone 0: (0,0,+1008,+754), use_sym=0, 760032 pixels, done in 46625ms, 16 Kpixels/s
25/02/18 19:11:46 [INFO] 760032 pixels computed or deduced
25/02/18 19:11:46 [PERF] LDV Run took 46901ms

View File

@@ -1,222 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <math.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
NULL, /* Fermeture, liberation de VDIHandle */
};
#define BP_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_AFFECTPALETTE | LDVF_REALTIMEPARAMS)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_SUPPORTCANCEL | LDVF_REALTIMEPARAMS)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, BP_CAPS }, /* Capacites pour 1 plan */
{ 2, 2, BP_CAPS }, /* Capacites pour 2 plans */
{ 4, 4, BP_CAPS }, /* Capacites pour 4 plans */
{ 8, 8, BP_CAPS }, /* Capacites pour 8 plans */
{ 16, 16, TC_CAPS }, /* Capacites pour 16 plans */
{ 32, 32, TC_CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
double gamma_rgb = 100.0 ;
double gamma_red = -1.0 ;
double gamma_green = -1.0 ;
double gamma_blue = -1.0 ;
unsigned char RedRemap[256] ; /* Tables de reaffectation des couleurs en True Color */
unsigned char GreenRemap[256] ;
unsigned char BlueRemap[256] ;
#define CHECK_VAPI(vapi) if ( (vapi == NULL ) || (vapi->Header.Version < 0x103) ) return( ELDV_BADVAPIVERSION ) ;
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( ELDV_NOERROR ) ;
}
double GammaFunc(double val, double val_max, double gamma)
{
return( val_max * pow( val/val_max, gamma ) ) ;
}
void ChangeColors(double gamma, unsigned char *tab, unsigned short nb_bits)
{
unsigned char *pnew_val = tab ;
double max_val = (double) ((1 << nb_bits) - 1) ;
unsigned short i ;
for ( i = 0; i <= max_val; i++, pnew_val++ )
*pnew_val = (short) ( 0.5 + GammaFunc( i, max_val, gamma ) ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_PALETTE *vdi_palette = &in->Palette ;
VDI_ELEMENTPAL *vdi_epal ;
double rgamma, ggamma, bgamma ;
short vdi_index ;
short cancel = 0 ;
if ( (params->Param[0].s / 100.0) != gamma_rgb )
{
gamma_rgb = params->Param[0].s / 100.0 ;
params->Param[1].s = params->Param[0].s ;
params->Param[2].s = params->Param[0].s ;
params->Param[3].s = params->Param[0].s ;
}
rgamma = params->Param[1].s / 100.0 ;
ggamma = params->Param[2].s / 100.0 ;
bgamma = params->Param[3].s / 100.0 ;
if ( in->Raster.fd_nplanes <= 8 )
{
if ( vdi_palette == NULL ) return( ELDV_GENERALFAILURE ) ;
vdi_epal = vdi_palette->Pal ;
if ( vdi_epal == NULL ) return( ELDV_GENERALFAILURE ) ;
for ( vdi_index = 0; vdi_index < vdi_palette->NbColors; vdi_index++, vdi_epal++ )
{
vdi_epal->Red = (short) ( 0.5 + GammaFunc( vdi_epal->Red, 1000.0, rgamma ) ) ;
if ( ggamma == rgamma ) vdi_epal->Green = vdi_epal->Red ;
else vdi_epal->Green = (short) ( 0.5 + GammaFunc( vdi_epal->Green, 1000.0, ggamma ) ) ;
if ( bgamma == rgamma ) vdi_epal->Blue = vdi_epal->Red ;
else vdi_epal->Blue = (short) ( 0.5 + GammaFunc( vdi_epal->Blue, 1000.0, bgamma ) ) ;
}
}
else
{
REMAP_COLORS rc ;
MFDB *img = &in->Raster ;
long *pt_line32, nb_pts_in_line ;
short *pt_line16, y, pc, is_15bits, cancel=0 ;
unsigned short nb_bits_red=8, nb_bits_green=8, nb_bits_blue=8 ; /* Sur 32 bits par defaut */
CHECK_VAPI(Vapi) ;
rc.red = RedRemap ;
rc.green = GreenRemap ;
rc.blue = BlueRemap ;
rc.nb_pts = (long) (1 + params->x2 - params->x1) ;
is_15bits = Vapi->RaIs15Bits() ;
if ( img->fd_nplanes == 16 )
{
nb_bits_red = 5 ;
nb_bits_green = is_15bits ? 5:6 ;
nb_bits_blue = 5 ;
}
/* Remet a jour les precalculs de pourcentage sur les composantes si necessaire */
if ( rgamma != gamma_red ) ChangeColors( rgamma, RedRemap, nb_bits_red ) ;
if ( ggamma != gamma_green ) ChangeColors( ggamma, GreenRemap, nb_bits_green ) ;
if ( bgamma != gamma_blue ) ChangeColors( bgamma, BlueRemap, nb_bits_blue ) ;
nb_pts_in_line = ALIGN16(img->fd_w) ;
pt_line16 = (short *) img->fd_addr ;
pt_line16 += (long)(params->y1) * nb_pts_in_line ;
pt_line16 += params->x1 ;
pt_line32 = (long *) img->fd_addr ;
pt_line32 += (long)(params->y1) * nb_pts_in_line ;
pt_line32 += params->x1 ;
for ( y = params->y1; !cancel && (y <= params->y2); y++ )
{
if ( img->fd_nplanes == 16 )
{
rc.pt_img = pt_line16 ;
pt_line16 += nb_pts_in_line ;
if ( is_15bits ) Vapi->RaTC15RemapColors( &rc ) ;
else Vapi->RaTC16RemapColors( &rc ) ;
}
else
{
rc.pt_img = pt_line32 ;
pt_line32 += nb_pts_in_line ;
Vapi->RaTC32RemapColors( &rc ) ;
}
if ( ( y & 0x0F ) == 0x0F )
{
pc = (short) ( ( 100L * (long)(y - params->y1) ) / (long)(params->y2 - params->y1) ) ;
cancel = Vapi->PrSetProgEx( pc ) ;
}
}
}
gamma_red = rgamma ;
gamma_green = ggamma ;
gamma_blue = bgamma ;
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
GAMMA.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
GAMMA.C
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,223 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0101, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
NULL, /* Fermeture, liberation de VDIHandle */
};
#define BP_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_AFFECTPALETTE | LDVF_REALTIMEPARAMS)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_OPINPLACE | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_SUPPORTCANCEL | LDVF_REALTIMEPARAMS)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, BP_CAPS }, /* Capacites pour 1 plan */
{ 2, 2, BP_CAPS }, /* Capacites pour 2 plans */
{ 4, 4, BP_CAPS }, /* Capacites pour 4 plans */
{ 8, 8, BP_CAPS }, /* Capacites pour 8 plans */
{ 16, 16, TC_CAPS }, /* Capacites pour 16 plans */
{ 32, 32, TC_CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
short pc_rgb = 100 ;
short pc_red = -1 ; /* Pourcentages de lumiere sur les comosantes rouge, verte et bleue */
short pc_green = -1 ;
short pc_blue = -1 ;
unsigned char RedRemap[256] ; /* Tables de reaffectation des couleurs en True Color */
unsigned char GreenRemap[256] ;
unsigned char BlueRemap[256] ;
#define CHECK_VAPI(vapi) if ( (vapi == NULL ) || (vapi->Header.Version < 0x103) ) return( ELDV_BADVAPIVERSION ) ;
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( ELDV_NOERROR ) ;
}
void ChangeColors(unsigned short percent, unsigned char *tab, unsigned short nb_bits)
{
unsigned char *pnew_val = tab ;
unsigned short max_val = (1 << nb_bits) - 1 ;
unsigned short val, i ;
for ( i = 0; i <= max_val; i++, pnew_val++ )
{
val = ( i * percent ) / 100 ;
if ( val > max_val ) *pnew_val = max_val ;
else *pnew_val = val ;
}
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_PALETTE *vdi_palette = &in->Palette ;
VDI_ELEMENTPAL *vdi_epal ;
short vdi_index ;
short cancel = 0 ;
if ( params->Param[0].s != pc_rgb )
{
pc_rgb = params->Param[0].s ;
params->Param[1].s = pc_rgb ;
params->Param[2].s = pc_rgb ;
params->Param[3].s = pc_rgb ;
}
if ( in->Raster.fd_nplanes <= 8 )
{
long red_pc, green_pc, blue_pc ; /* Pour la palette */
if ( vdi_palette == NULL ) return( ELDV_GENERALFAILURE ) ;
vdi_epal = vdi_palette->Pal ;
if ( vdi_epal == NULL ) return( ELDV_GENERALFAILURE ) ;
red_pc = (long) params->Param[1].s ;
green_pc = (long) params->Param[2].s ;
blue_pc = (long) params->Param[3].s ;
for ( vdi_index = 0; vdi_index < vdi_palette->NbColors; vdi_index++, vdi_epal++ )
{
/* Le calcul se fait sur des entiers 32 bits pour eviter d'exploser la plage -32K...32K */
vdi_epal->Red = (short) ( ( (long)vdi_epal->Red * red_pc ) / 100L ) ;
if ( vdi_epal->Red > 1000 ) vdi_epal->Red = 1000 ;
vdi_epal->Green = (short) ( ( (long)vdi_epal->Green * green_pc ) / 100L ) ; ;
if ( vdi_epal->Green > 1000 ) vdi_epal->Green = 1000 ;
vdi_epal->Blue = (short) ( ( (long)vdi_epal->Blue * blue_pc ) / 100L ) ; ;
if ( vdi_epal->Blue > 1000 ) vdi_epal->Blue = 1000 ;
}
}
else
{
REMAP_COLORS rc ;
MFDB *img = &in->Raster ;
long *pt_line32, nb_pts_in_line ;
short *pt_line16, y, pc, is_15bits, cancel=0 ;
unsigned short nb_bits_red=8, nb_bits_green=8, nb_bits_blue=8 ; /* Sur 32 bits par defaut */
CHECK_VAPI(Vapi) ;
rc.red = RedRemap ;
rc.green = GreenRemap ;
rc.blue = BlueRemap ;
rc.nb_pts = (long) (1 + params->x2 - params->x1) ;
is_15bits = Vapi->RaIs15Bits() ;
if ( img->fd_nplanes == 16 )
{
nb_bits_red = 5 ;
nb_bits_green = is_15bits ? 5:6 ;
nb_bits_blue = 5 ;
}
/* Remet a jour les precalculs de pourcentage sur les composantes si necessaire */
if ( pc_red != params->Param[1].s ) ChangeColors( (unsigned short) (params->Param[1].s), RedRemap, nb_bits_red ) ;
if ( pc_green != params->Param[2].s ) ChangeColors( (unsigned short) (params->Param[2].s), GreenRemap, nb_bits_green ) ;
if ( pc_blue != params->Param[3].s ) ChangeColors( (unsigned short) (params->Param[3].s), BlueRemap, nb_bits_blue ) ;
pc_red = params->Param[1].s ;
pc_green = params->Param[2].s ;
pc_blue = params->Param[3].s ;
nb_pts_in_line = ALIGN16(img->fd_w) ;
pt_line16 = (short *) img->fd_addr ;
pt_line16 += (long)(params->y1) * nb_pts_in_line ;
pt_line16 += params->x1 ;
pt_line32 = (long *) img->fd_addr ;
pt_line32 += (long)(params->y1) * nb_pts_in_line ;
pt_line32 += params->x1 ;
for ( y = params->y1; !cancel && (y <= params->y2); y++ )
{
if ( img->fd_nplanes == 16 )
{
rc.pt_img = pt_line16 ;
pt_line16 += nb_pts_in_line ;
if ( is_15bits ) Vapi->RaTC15RemapColors( &rc ) ;
else Vapi->RaTC16RemapColors( &rc ) ;
}
else
{
rc.pt_img = pt_line32 ;
pt_line32 += nb_pts_in_line ;
Vapi->RaTC32RemapColors( &rc ) ;
}
if ( ( y & 0x0F ) == 0x0F )
{
pc = (short) ( ( 100L * (long)(y - params->y1) ) / (long)(params->y2 - params->y1) ) ;
cancel = Vapi->PrSetProgEx( pc ) ;
}
}
}
return( cancel ? ELDV_CANCELLED : ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

Binary file not shown.

View File

@@ -1,12 +0,0 @@
LIGHT.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
LIGHT.C
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,224 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
OnClose, /* Fermeture, liberation de VDIHandle */
};
#define CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, CAPS }, /* Capacites pour 1 plan */
{ 2, 2, CAPS }, /* Capacites pour 2 plans */
{ 4, 4, CAPS }, /* Capacites pour 4 plans */
{ 8, 8, CAPS }, /* Capacites pour 8 plans */
{ 16, 16, CAPS }, /* Capacites pour 16 plans */
{ 24, 24, CAPS }, /* Capacites pour 24 plans */
{ 32, 32, CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
int VDIHandle = -1 ;
short *ToBeMixed = NULL ; /* Tableau (1,2,...) a melanger */
short Nw, Nh, Entropy ;
void OnClose(void)
{
if ( VDIHandle != -1 ) v_clsvwk( VDIHandle ) ;
VDIHandle = -1 ;
if ( ToBeMixed ) free( ToBeMixed ) ;
ToBeMixed = NULL ;
}
/*
* Fonctions de la librairie
*/
LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
int vdihandle(void)
{
int work_in[11], work_out[57], i ;
for ( i = 0; i < 10; work_in[i++] = 1 ) ;
work_in[10] = 2 ;
v_opnvwk( work_in, &i, work_out ) ;
return( i ) ;
}
void SetMixedArray(short Nw, short Nh, short entropy)
{
short nb = Nw * Nh ;
if ( ToBeMixed ) free( ToBeMixed ) ;
ToBeMixed = (short *) malloc( nb * sizeof(short) ) ;
if ( ToBeMixed )
{
short i, j, k, l, *pt ;
pt = ToBeMixed ;
for ( i = 0; i < nb; i++ ) *pt++ = i ; /* Un tableau bien trie ... */
for ( i = 0; i < entropy*entropy; i++ )
{
j = rand() % nb ; /* On prend 2 elements au hasard */
k = rand() % nb ;
l = ToBeMixed[j] ; /* Et on les permute ... */
ToBeMixed[j] = ToBeMixed[k] ;
ToBeMixed[k] = l ;
}
}
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
Nw = params->Param[0].s ;
Nh = params->Param[1].s ;
Entropy = params->Param[2].s ;
out->Raster.fd_w = in->Raster.fd_w ;
out->Raster.fd_h = in->Raster.fd_h ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_STATUS status = ELDV_NOERROR ;
long cancel, pc ;
short *src_num = ToBeMixed ;
short dst_num ;
int xy[8] ;
int x, y, w, h ;
int nw, nh, mw, mh ;
if ( ToBeMixed == NULL ) return( ELDV_NOTENOUGHMEMORY ) ;
if ( VDIHandle == -1 ) VDIHandle = vdihandle() ;
cancel = 0 ;
w = in->Raster.fd_w / Nw ;
h = in->Raster.fd_h / Nh ;
mw = in->Raster.fd_w % Nw ;
if ( mw )
{
/* Les "restes" de bloc sont recopies tels quels */
xy[0] = xy[4] = in->Raster.fd_w - mw - 1 ;
xy[1] = xy[5] = 0 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
mh = in->Raster.fd_h % Nh ;
if ( mh )
{
/* Les "restes" de bloc sont recopies tels quels */
xy[0] = xy[4] = 0 ;
xy[1] = xy[5] = in->Raster.fd_h - mh - 1 ;
xy[2] = xy[6] = in->Raster.fd_w - 1 ;
xy[3] = xy[7] = in->Raster.fd_h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
y = 0 ;
for ( nh = 0; !cancel && ( nh < Nh ); nh++, y += h )
{
xy[1] = y ;
xy[3] = y + h - 1 ;
x = 0 ;
for ( nw = 0; nw < Nw; nw++, x += w )
{
dst_num = *src_num++ ;
xy[0] = x ;
xy[2] = x + w - 1 ;
xy[4] = ( dst_num % Nw ) * w ;
xy[5] = ( dst_num / Nw ) * h ;
xy[6] = xy[4] + w - 1 ;
xy[7] = xy[5] + h - 1 ;
vro_cpyfm( VDIHandle, S_ONLY, xy, &in->Raster, &out->Raster ) ;
}
pc = ( 100L * y ) / in->Raster.fd_h ;
cancel = Vapi->PrSetProgEx( pc ) ;
}
if ( cancel ) status = ELDV_CANCELLED ;
return( status ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
SetMixedArray( Nw, Nh, Entropy ) ;
if ( ToBeMixed == NULL ) return( ELDV_NOTENOUGHMEMORY ) ;
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
srand( 256 ) ;
return( 0 ) ;
}

View File

@@ -1,11 +0,0 @@
PUZZLE.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
PUZZLE.C
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,128 +0,0 @@
/*
*
*
* Version PureC / Gcc
*/
#define PCGEMLIB 1 /* mettre 1 si les utilisateurs de Pure C
* utilise les librairies GEM Pure C */
/* Fichiers headers */
#include <portab.h>
#if PCGEMLIB
#include <aes.h>
#include <vdi.h>
#else
#include <aesbind.h>
#include <vdibind.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "..\..\ldg.h"
#include "..\..\vapi.h"
#include "..\..\ldv.h"
#include "..\..\mt_aes.h"
/* Prototypages */
LDV_INFOS* cdecl GetLDVCapabilities(VAPI *vapi) ;
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ;
void OnClose(void) ;
/* Variables globales */
PROC Proc[] = {
"GetLDVCapabilities", "Capacit<EFBFBD>s du LDV", (void *)GetLDVCapabilities,
"PreRun", "Init du Run", (void *)PreRun,
"Run", "Fonction du LDV", (void *)Run,
"Preview", "Pre-Visu", (void *)Preview,
} ;
char Info[] = "LDV";
LDGLIB Ldg[] = {
0x0100, /* version de la lib, recommand<6E> */
4, /* nombre de fonction dans la lib */
Proc, /* Pointeurs vers nos fonctions */
Info, /* Information sur la lib */
0x0, /* Flags de la lib, obligatoire */
NULL,
};
#define BP_CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
#define TC_CAPS (LDVF_SPECFORMAT | LDVF_SUPPORTPREVIEW | LDVF_SUPPORTPROG | LDVF_REALTIMEPARAMS | LDVF_SUPPORTCANCEL | LDVF_NOSELECTION)
LDV_INFOS LdvInfos = {
(short) sizeof(LDV_INFOS), /* Taille de cette structure */
TLDV_MODIFYIMG, /* Type du LDV */
"Jean Lusetti", /* Auteurs */
{
{ 1, 1, BP_CAPS }, /* Capacites pour 1 plan */
{ 2, 2, BP_CAPS }, /* Capacites pour 2 plans */
{ 4, 4, BP_CAPS }, /* Capacites pour 4 plans */
{ 8, 8, BP_CAPS }, /* Capacites pour 8 plans */
{ 16, 16, TC_CAPS }, /* Capacites pour 16 plans */
{ 32, 32, TC_CAPS }, /* Capacites pour 32 plans */
{ 0, 0, 0UL } /* Fin de la liste des capacites */
},
} ;
VAPI *Vapi = NULL ;
/* Petite macro de verification pour VAPI */
#define CHECK_VAPI(vapi) if ( ( vapi == NULL ) || ( vapi->Header.Version < 0x0103 ) ) return( ELDV_BADVAPIVERSION ) ;
/*
* Fonctions de la librairie
*/
LDV_INFOS* cdecl GetLDVCapabilities(VAPI *vapi)
{
Vapi = vapi ;
return( &LdvInfos ) ;
}
#pragma warn -par
LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
long angle ;
CHECK_VAPI( Vapi ) ;
angle = (long) params->Param[0].s ;
Vapi->RaRasterRotateGetDstMFDB( &in->Raster, &out->Raster, angle ) ;
return( ELDV_NOERROR ) ;
}
LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
LDV_STATUS status ;
long angle ;
CHECK_VAPI( Vapi ) ;
angle = (long) params->Param[0].s ;
status = Vapi->RaRasterRotate( &in->Raster, &out->Raster, angle, 0x03 ) ; /* 0x03 = 0x01 (progress) | 0x02 (cancel) */
return( status ) ;
}
LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
{
return( Run( in, params, out ) ) ;
}
#pragma warn +par
int main(void)
{
ldg_init( Ldg ) ;
return( 0 ) ;
}

View File

@@ -1,12 +0,0 @@
ROTATE.LDV
;.C[-Y- -G+]
;.L[-Y-]
=
pcstart.o
ROTATE.C
pcgemlib.lib
pcstdlib.lib
pctoslib.lib
pcfltlib.lib
..\..\ldg.lib
..\..\mt_aes.lib

View File

@@ -1,51 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Black Hole
; LongName should not exceed 31 caracters
LongName = Black Hole on image!
; Description should not exceed 79 caracters
Description = Tribute to Stephen Hawking
; This section is only meant for bhole.ldv
; It controls symetry usage for black hole computations
; It should be faster to use symetry property but for
; Some reason, this is slower on Aranym, no idea why
; So on Aranym, better have 0 here
[Private]
UseSym=1
; Here comes the language parameters dependencies
[Parameter1]
Name = Rotation speed
Type = 1
MinValue = 0
DefaultValue = 10
MaxValue = 500
[Parameter2]
Name = X-Center (%)
Type = 1
MinValue = 0
DefaultValue = 50
MaxValue = 100
[Parameter3]
Name = Y-Center (%)
Type = 1
MinValue = 0
DefaultValue = 50
MaxValue = 100

Binary file not shown.

View File

@@ -1,30 +0,0 @@
; This is a basic INI file used
; To setup a language for a LDV
; Module for VISION 4.0 or older
; For example, if your module is
; Named SOGOOD.LDV, you should create
; SOGOOD.INI (default file, this may be the English version) in LDV folder
; SOGOOD.INI in the FRANCAIS folder for the French version
; SOGOOD.INI in the ENGLISH folder for the English version
; SOGOOD.INI in the SVENSKA folder for the Swedish version
; ... and so on ...
; Now you just have to fill in the ShortName, LongName and Description fields
; Note that VISION will search for the INI file associated to the LDV file
; In the folder defined by the language setup (same as in LANGUES folder)
[Informations]
; ShortName should not exceed 15 caracters
ShortName = Black & White
; LongName should not exceed 31 caracters
LongName = Black & White Transform
; Description should not exceed 79 caracters
Description = This LDV converts a colored image into a grey leveled one
; Here comes the language parameters dependencies
; No Parameters !
;[Parameter1]
;Name = Amplitude
;Type = 1
;MinValue = 1
;DefaultValue = 50
;MaxValue = 1000

Binary file not shown.

View File

@@ -1,329 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Defines</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="descrip.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="struct.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->24/07/01<!--webbot
bot="Timestamp" i-checksum="12454" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>4.
D E F I N E S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p><a name="LDV_STATUS"></a><font size="4"><strong>4.1 Type de
code de retour</strong></font></p>
<p><font size="4"><strong>typedef long LDV_STATUS</strong></font></p>
<p><font size="3">Le type de code de retour des fonctions LDV est
un entier 32 bits. Pourquoi ? Tout d'abord parce que certains
compilateurs (GCC par exemple) retournent un entier 32 bits m<>me
si on sp<73>cifie une entier 16 bits (short). Ensuite, cela permet
de pr<70>voir une extension du code de retour, pour une <20>volution
future, dans les bits restant.</font></p>
<p>&nbsp;</p>
<p><a name="ELDV"></a><font size="4"><strong>4.2 Codes de retour</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">ELDV_NOERROR</td>
<td width="75%">Pas d'erreur. La fonction a fonctionn<6E>
correctement</td>
</tr>
<tr>
<td align="center" width="10%">ELDV_INVALIDPARAMETER</td>
<td width="75%">Au moins un des param<61>tres est invalide</td>
</tr>
<tr>
<td align="center" width="10%">ELDV_NBPLANESNOTSUPPORTED</td>
<td width="75%">La fonction ne supporte pas le nombre de
plans pass<73> en param<61>tre</td>
</tr>
<tr>
<td align="center">ELDV_NOTENOUGHMEMORY</td>
<td>M<EFBFBD>moire insuffisante</td>
</tr>
<tr>
<td align="center">ELDV_PREVIEWNOTSUPPORTED</td>
<td>La fonction Preview n'est pas d<>finie (pointe sur
NULL)</td>
</tr>
<tr>
<td align="center">ELDV_RUNNOTSUPPORTED</td>
<td>La fonction Run n'est pas d<>finie (pointe sur NULL).
Je me demande bien qui serait suffisamment naze pour
<20>crire un LDV ne faisant rien !</td>
</tr>
<tr>
<td align="center">ELDV_BADVAPIVERSION</td>
<td>La version de <a href="vapi/index.htm#Pr<50>sentation">VAPI</a>
disponible ne permet pas d'utiliser le LDV (il manque
certaines fonctions ou interfaces)</td>
</tr>
<tr>
<td align="center">ELDV_IMGFORMATMISMATCH</td>
<td>Les formats d'images g<>r<EFBFBD>s par le LDV ne permettent
pas <20> <em><strong>VISION</strong></em> de fournir une
image compatible avec un des formats attendus. Cela est
<20> priori une erreur du LDV.</td>
</tr>
<tr>
<td align="center">ELDV_CANCELLED</td>
<td>L'op<6F>ration en cours a <20>t<EFBFBD> annul<75>e par
l'utilisateur</td>
</tr>
<tr>
<td align="center">ELDV_GENERALFAILURE</td>
<td>Echec g<>n<EFBFBD>ral, raison non pr<70>cis<69>e</td>
</tr>
</table>
</center></div>
<p>Ces codes peuvent <20>tre renvoy<6F>s par les fonctions du LDV ou
par <em><strong>VISION</strong></em> vers l'utilisateur afin
d'afficher le message d'erreur correspondant. Pensez aussi <20>
utiliser la macro LDV_SUCCESS qui vous indique si le code pass<73>
en param<61>tre correspond <20> un succes ou une erreur.</p>
<p>&nbsp;</p>
<p><a name="TLDV"></a><font size="4"><strong>4.3 Types de modules</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">TLDV_MODIFYIMG</td>
<td width="75%">Module modificateur d'image. Peut
<20>galement servir <20> initialiser une image en <20>crasant
compl<70>tement son contenu afin d'en g<>n<EFBFBD>rer une
nouvelle, sans prendre en compte les donn<6E>es actuelles.</td>
</tr>
<tr>
<td align="center" width="10%">TLDV_LOADIMG</td>
<td width="75%">Module de chargement d'image. <em><strong>VISION</strong></em>
ne le g<>re pas encore</td>
</tr>
<tr>
<td align="center" width="10%">TLDV_SAVEIMG</td>
<td width="75%">Module de sauvegarde d'image. <em><strong>VISION</strong></em>
ne le g<>re pas encore</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDVF"></a><font size="4"><strong>4.4 Informations sur
les capacit<69>s</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">LDVF_STDFORMAT</td>
<td width="75%">Le LDV accepte le format image standard
d<>fini par ATARI (bit-plans <20> la suite les uns des
autres). Ce format n'est pas valable en True Color.</td>
</tr>
<tr>
<td align="center" width="10%">LDVF_ATARIFORMAT</td>
<td width="75%">Le LDV accepte le format ATARI (bit-plans
entrelac<61>s (ST), modes True Color du Falcon)</td>
</tr>
<tr>
<td align="center">LDVF_SPECFORMAT</td>
<td>Le LDV accepte le format sp<73>cifique de la carte
graphique</td>
</tr>
<tr>
<td align="center">LDVF_SUPPORTPREVIEW</td>
<td>Le LDV fournit la fonction Preview (fortement
conseill<6C> m<>me si elle appelle Run)</td>
</tr>
<tr>
<td align="center">LDVF_AFFECTPALETTE</td>
<td>Le LDV modifie la palette (modes bit-plans
uniquement). En ce cas, l'op<6F>ration sur la palette doit
toujours se faire &quot;sur place&quot;. <em><strong>VISION</strong></em>
sauvegardera syst<73>matiquement la palette de l'image dans
le tampon undo.</td>
</tr>
<tr>
<td align="center">LDVF_SUPPORTPROG</td>
<td>Le LDV appellera la fonction <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de l'interface
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a>
(conseill<6C> si le traitement dure plus de 2 secondes).
Avant d'appeler <a href="descrip.htm#run">Run</a>, <em><strong>VISION</strong></em>
affichera une fen<65>tre de progression pour le LDV et la
fera disparaitre ensuite. En appelant <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de l'interface
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a>, le LDV
pourra informer l'utilisateur de la progression du
traitement.</td>
</tr>
<tr>
<td align="center">LDVF_OPINPLACE</td>
<td>Le LDV sait travailler sur l'image source, sans que <em><strong>VISION</strong></em>
alloue la destination (on dit que la transformation se
fait sur place). En ce cas, le param<61>tre out de la
fonction <a href="descrip.htm#run">Run</a> est le m<>me
que in. Dans la mesure du possible, utilisez ce flag,
cela <20>conomise de la m<>moire. La pr<70>sence de ce flag
impose <20>videmment que le LDV ne modifie pas la taille de
l'image.</td>
</tr>
<tr>
<td align="center">LDVF_REALTIMEPARAMS</td>
<td>Le LDV effectue assez rapidement la fonction <a
href="descrip.htm#run">Run</a> en mode Preview (image
petite affich<63>e par la boite de dialogue de <em><strong>VISION</strong></em>),
pour que la modification des param<61>tres du LDV par les
ascenseurs soit suffisamment fluide (au moins 1 image par
seconde). En ce cas, <em><strong>VISION</strong></em>
appelera la fonction Preview lorsque l'utilisateur agira
sur un ascenseur de contr<74>le de param<61>tre, sans que
celui-ci soit oblig<69> d'appuyer sur le bouton
&quot;Pr<EFBFBD>-Viualisation&quot;</td>
</tr>
<tr>
<td align="center">LDVF_SUPPORTCANCEL</td>
<td>La fonction <a href="descrip.htm#run">Run</a> peut
<20>tre annul<75>e en cours d'ex<65>cution. <em><strong>VISION</strong></em>
permet alors <20> la fen<65>tre de progression d'<27>tre
ferm<72>e par le bouton de fermeture de fen<65>tre GEM
(CLOSER) et par Control-C. D<>s que le LDV supporte la
progression, je vous conseille d'ajouter (et de g<>rer
..) ce flag, c'est bien utile et <a
href="descrip.htm#run">pas compliqu<71> <20> impl<70>menter</a>.</td>
</tr>
<tr>
<td><p align="center">LDVF_NOSELECTION</p>
</td>
<td>Ce LDV ne peut pas travailler sur un bloc <20>
l'int<6E>rieur de l'image (s<>lection). En ce cas, <em><strong>VISION</strong></em>
invalide la possibilit<69> de sp<73>cifier la s<>lection lors
de l'application du LDV.<br>
Remarque : depuis la version 4.0e, <em><strong>VISION</strong></em>
cr<63>e une image &quot;bloc&quot; faisant ainsi croire au
LDV qu'il travaille sur un bloc. <em><strong>VISION</strong></em>
replace ensuite le bloc modifi<66> dans l'image d'origine
sans que le LDV ait <20> se pr<70>occuper des sp<73>cificit<69>s
du travail sur un bloc. En bref, si vous ne voulez pas
vous emb<6D>ter <20> g<>rer le travail sur un bloc,
positionnez ce flag, <em><strong>VISION</strong></em> se
charge de tout !</td>
</tr>
</table>
</center></div>
<p><font size="3">Ces flags sont <20> combiner avec le &quot;ou
logique&quot; (|).</font></p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="descrip.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="struct.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->24/07/01<!--webbot
bot="Timestamp" i-checksum="12454" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>D
E F I N E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,523 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Description</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="notions.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="defines.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->06/05/01<!--webbot
bot="Timestamp" i-checksum="12424" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>3.
D E S C R I P T I O N</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>Pour r<>sumer, voici ce qui se passe entre <em><strong>VISION</strong></em>
et un LDV :</p>
<p>0. Init (fait une seule fois au premier appel de l'utilisateur
mettant en oeuvre les LDV). <em><strong>VISION</strong></em>
charge la fonction <a href="#capacit<69>s">GetLDVCapabilities</a>
de chaque LDV, appelle la fonction et m<>morise les capacit<69>s de
chaque LDV afin de limiter les futurs acc<63>s disque, puis
d<EFBFBD>charge chaque LDV</p>
<p>1. <em><strong>VISION</strong></em> charge le LDV</p>
<p>2. Si sp<73>cifi<66>e, <em><strong>VISION</strong></em> appelle la
fonction GetParams</p>
<p>3. <em><strong>VISION</strong></em> appelle la fonction PreRun</p>
<p>4. <em><strong>VISION</strong></em> appelle la fonction Run
(ou Preview)</p>
<p>5. <em><strong>VISION</strong></em> d<>charge le LDV</p>
<p>&nbsp;</p>
<p><a name="capacit<69>s"></a><font size="4"><strong>3.1 Capacit<69>s
du LDV</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="struct.htm#LDV_INFOS">LDV_INFOS</a>
* cdecl GetLDVCapabilities(<a href="vapi/struct.htm#VAPI">VAPI</a>
*vapi)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN] </strong>vapi : pointeur sur
l'interface <a href="vapi/index.htm#Pr<50>sentation">VAPI</a>
fournie par <em><strong>VISION</strong></em>. Ce pointeur
doit <20>tre m<>moris<69> pour un usage futur.</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Un pointeur sur la structure <a
href="struct.htm#LDV_INFOS">LDV_INFOS</a> stock<63>e dans
le LDV (le squelette d<>clare la variable LdvInfos de
type <a href="struct.htm#LDV_INFOS">LDV_INFOS</a>)</td>
</tr>
<tr>
<td width="15%"><strong>Responsabilit<EFBFBD>s</strong></td>
<td width="85%">Cette fonction est enti<74>rement ecrie
dans le squelette, le travail <20> faire r<>side dans le
remplissage de la structure de type <a
href="struct.htm#LDV_INFOS">LDV_INFOS</a> du squelette
LDV.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="prerun"></a><font size="4"><strong>3.2 Fonction
PreRun</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl PreRun(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> in : pointeur sur
la structure <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
d<>crivant l'image de <em><strong>VISION<br>
</strong></em><strong>[IN / OUT]</strong> params :
pointeur sur une structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a> indiquant la
zone <20> modifier</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%"><a href="defines.htm#ELDV">Un code de
succ<63>s ou d'erreur</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsabilit<EFBFBD>s</strong></td>
<td width="85%">Doit signaler <20> <em><strong>VISION</strong></em>
la m<>moire <20> allouer et la partie <20> sauvegarder pour
la fonction UNDO :<ol>
<li>Si le LDV en a besoin (<a href="defines.htm#LDVF">LDVF_OPINPLACE</a>
non d<>fini dans la structure <a
href="struct.htm#LDV_CAPS">LDV_CAPS</a>),
out-&gt;Raster.fd_w et out-&gt;Raster.fd_h
doivent contenir la taille de l'image <20> allouer
pour la destination. C'est cette image qui sera
ensuite affich<63>e par <em><strong>VISION</strong></em>
dans la fen<65>tre associ<63>e.</li>
<li>Au besoin, indiquer dans les champs x1, x2, y1 et
y2 de la structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>, la
zone <20> sauvegarde dans le buffer UNDO de l'image
afin de pouvoir revenir en arri<72>re. Avant
l'appel, <em><strong>VISION</strong></em>
positionne ces champs en fonction de la
s<>lection de l'utilisateur (bloc ou image
enti<74>re)</li>
</ol>
<p>Par d<>faut :</p>
<ol>
<li><em><strong>VISION</strong></em> n'allouera
aucune m<>moire pour le LDV et supposera que la
transformation se fera &quot;sur place&quot;</li>
<li><em><strong>VISION</strong></em> sauvegardera
dans le buffer UNDO la partie pr<70>cis<69>e par
champs x1, x2, y1 et y2 de la structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
(image enti<74>re ou s<>lection si un bloc est
s<>lectionn<6E>)</li>
</ol>
</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="run"></a><font size="4"><strong>3.3 Fonction Run</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl Run(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> in : pointeur sur
la structure <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
d<>crivant l'image source de <em><strong>VISION<br>
</strong></em><strong>[IN]</strong> params : pointeur sur
une structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
indiquant la zone <20> modifier<br>
<strong>[OUT]</strong> out : pointeur sur l'image
destination, allou<6F>e par <em><strong>VISION</strong></em>
gr<67>ce <20> un appel pr<70>c<EFBFBD>dent <20> PreRun</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%"><a href="defines.htm#ELDV">Un code de
succ<63>s ou d'erreur</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsabilit<EFBFBD>s / Remarques</strong></td>
<td width="85%">Doit effectuer l'op<6F>ration pr<70>vue pour
le LDV.<br>
<em><strong>VISION</strong></em> choisit automatiquement
le format le plus adapt<70> en essayant de minimiser la
m<>moire et en tenant compte du ou des formats g<>r<EFBFBD>s
par le LDV (sachant que le plus <20>conome est <a
href="defines.htm#LDVF">LDVF_SPECFORMAT</a>)<br>
Le LDV peut modifier une autre zone que celle donn<6E>e
dans les champs x1, y1, x2 et y2 de params <20> condition
de l'avoir signal<61> auparavant par la fonction PreRun<br>
Ne <strong><u>JAMAIS</u></strong> allouer dans le LDV de
la m<>moire <20> destination de <em><strong>VISION</strong></em>,
car celle-ci sera lib<69>r<EFBFBD>e d<>s que <em><strong>VISION</strong></em>
d<>chargera le LDV (m<>me si vous ne le faites pas
explicitement, le compilateur ou le syst<73>me s'en
chargera).Par contre, rien ne vous interdit d'allouer de
la m<>moire <20> usage interne pour effectuer cette
fonction, n'oubliez pas de la lib<69>rer !<br>
Depuis la version 1.02 de <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>, on peut
maintenant annuler le traitement en cours depuis
l'interface utilisateur (il suffit de fermer la fen<65>tre
de progression ou d'appuyer sur Control-C), pour cela :<br>
* Ajouter <a href="defines.htm#LDVF">LDVF_SUPPORTCANCEL</a>
dans le champ Flags de la structure <a
href="struct.htm#LDV_CAPS">LDV_CAPS</a> pr<70>sente dans la
variable LdvInfos du LDV<br>
* Tester la valeur renvoy<6F>e par la fonction <a
href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a>, si elle
est non nulle, l'annulation est demand<6E>e<br>
* Sortir du traitement du LDV (ne pas oublier de lib<69>rer
l'<27>ventuelle m<>moire allou<6F>e en interne)<br>
* Sortir de la fonction Run en renvoyant <a
href="defines.htm#ELDV">ELDV_CANCELLED</a><br>
Notes :<br>
D<>s que la fonction <a href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a>
a retourn<72> une valeur non nulle, la fen<65>tre de
progression est d<>truite, la demande d'annulation n'est
donc pas seulement une demande mais une obligation !<br>
Ne vous souciez pas de la lib<69>ration de l'image
destination ou de restaurer l'image source, <em><strong>VISION</strong></em>
g<>re cela au travers du Undo.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="preview"></a><font size="4"><strong>3.4 Fonction
Preview</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl Preview(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%">Identiques <20> ceux de la fonction <a
href="#run">Run</a></td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%"><a href="defines.htm#ELDV">Un code de
succ<63>s ou d'erreur</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsabilit<EFBFBD>s / Remarques</strong></td>
<td width="85%">Cette fonction est identique <20> la
fonction <a href="#run">Run</a>, sauf qu'elle op<6F>re sur
des images plus petites (112 x 112 en moyenne). Si la
fonction <a href="#run">Run</a> est suffisamment rapide
pour afficher le r<>sultat en moins de 1 seconde, la
fonction Preview devrait simplement l'appeler. Dans le
cas contraire, on peut se permettre certaines
approximations ou pr<70>-calculs pour revenir en de<64>a de
la seconde.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="getparams"></a><font size="4"><strong>3.5 Fonction
GetParams</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl GetParams(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*img, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, char *path)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> img : pointeur sur
la structure <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
d<>crivant l'image source de <em><strong>VISION<br>
</strong></em><strong>[IN]</strong> params : pointeur sur
une structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
indiquant la zone <20> modifier<br>
<strong>[IN]</strong> path: chemin de chargement du LDV</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%"><a href="defines.htm#ELDV">ELDV_NOERROR</a>
ou <a href="defines.htm#ELDV">ELDV_CANCELLED</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsabilit<EFBFBD>s / Remarques</strong></td>
<td width="85%">Cette fonction est <strong><u>optionnelle</u></strong>.
Si votre LDV l'exporte, <em><strong>VISION</strong></em>
l'appellera en lieu et place de sa fonction interne de
saisie des param<61>tres.<br>
Si <a href="defines.htm#ELDV">ELDV_NOERROR</a> est
renvoy<6F>, <em><strong>VISION</strong></em> appellera
ensuite la fonction <a href="#run">Run</a><br>
Si <a href="defines.htm#ELDV">ELDV_CANCELLED</a> est
renvoy<6F>, la saisie est annul<75>e (comme si vous aviez
annul<75> la saisie au travers du formulaire standard
propos<6F> par <em><strong>VISION</strong></em>).<br>
Le param<61>tre params devient transparent pour <em><strong>VISION</strong></em>,
il sera renvoy<6F> sans changement lors de l'appel <20> la
fonction <a href="#run">Run</a>. Votre LDV peut s'en
servir pour stocker ses param<61>tres ou peut choisir de
les m<>moriser en interne.<br>
path permet de r<>cup<75>rer le fichier INI associ<63> pour
la description multi-langue des param<61>tres. Vous pouvez
au choix utiliser un fichier INI (ou tout autre, c'est
maintenant vous qui <20>tes ma<6D>tre). Si vous voulez g<>rer
la description multi-langues, n'oubliez pas de scruter
les r<>pertoires de langues <20> partir de path.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="fichier ini"></a><font size="4"><strong>3.6 Le
fichier INI associ<63></strong></font></p>
<p><font size="3">Le fichier INI associ<63> <20> un LDV a deux buts:</font></p>
<ol>
<li><font size="3">Rassembler toutes les informations
relatives <20> la langue comme son nom et sa description</font></li>
<li><font size="3">D<EFBFBD>finir le param<61>trage du LDV</font></li>
</ol>
<p>&nbsp;</p>
<p><a name="langues"></a><font size="4"><strong>3.6.1
Informations sur la langue</strong></font></p>
<p><font size="3">Les LDV sont multi-langues, c'est <20> dire que
si vous avez d<>fini une langue dans les pr<70>f<EFBFBD>rences, <em><strong>VISION</strong></em>
est capable d'exploiter cette information <20>galement pour les
LDV, si l'information est disponible. Dans le r<>pertoire LDV de <em><strong>VISION</strong></em>,
on trouve les .LDV ainsi que les .INI associ<63>s. Par exemple, le
fichier INVERT.INI est associ<63> au fichier INVERT.LDV.Dans ce
dossier LDV, doivent figurer les .INI les plus standards, c'est
<EFBFBD> dire en langue anglaise. Si par exemple, vous avez d<>fini la
langue &quot;Fran<EFBFBD>ais&quot; dans les pr<70>f<EFBFBD>rences de <em><strong>VISION</strong></em>,
il suffit de cr<63>er le sous-r<>pertoire &quot;Fran<EFBFBD>ais&quot;
dans le dossier LDV, et d'y inclure le fichier INVERT.INI traduit
en fran<61>ais pour que <em><strong>VISION</strong></em> aille le
chercher <20> la place de son <20>quivalent directement sous le
r<EFBFBD>pertoire LDV.</font></p>
<p><font size="3">Dans la section [Informations], <em><strong>VISION</strong></em>
attend les cl<63>s suivantes:</font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Nom de la cl<63></strong></td>
<td align="center" width="10%"><strong>Taille</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">ShortName</font></td>
<td align="center" width="10%">15 caract<63>res max.</td>
<td width="75%">Nom court du module apparaissant dans la
liste des modules <20> s<>lectionner</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">LongName</font></td>
<td align="center" width="10%">31 caract<63>res max.</td>
<td width="75%">Nom apparaissant lorsque on demande des
d<>tails sur ce LDV</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Description</font></td>
<td align="center" width="10%">79 caract<63>res max.</td>
<td width="75%">Description compl<70>te du module sur 3
lignes</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="parametrage"></a><font size="4"><strong>3.6.2
Param<EFBFBD>trage du LDV</strong></font></p>
<p><font size="3"><em><strong>VISION</strong></em> permet la
saisie de jusqu'<27> 4 param<61>tres pour un LDV. Ces param<61>tres
sont saisis <20> l'aide d'ascenseurs GEM apparaissant ou non
suivant le nombre de param<61>tres que le LDV accepte en entr<74>e.<br>
Pour que <em><strong>VISION</strong></em> accepte d'afficher un
param<EFBFBD>tre,une section nomm<6D>e [ParameterN] (1 &lt;= N &lt;= 4)
doit <20>tre cr<63>ee avec les cl<63>s suivantes:</font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Nom de la cl<63></strong></td>
<td align="center" width="85%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Name</font></td>
<td width="85%">Nom de ce param<61>tre (15 caract<63>res
max.). Si le nom est absent, ce param<61>tre n'apparaitra
pas</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Type</font></td>
<td width="85%">1 : entier 16 bits (-32768 --&gt; +32767)<br>
2 : float (non g<>r<EFBFBD> actuellement)</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">MinValue</font></td>
<td width="85%">Valeur minimale admissible pour ce
param<61>tre</td>
</tr>
<tr>
<td align="center">DefautValue</td>
<td>Valeur par d<>faut pr<70>sent<6E> avec l'interface de <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td align="center">MaxValue</td>
<td>Valeur maximale admissible pour ce param<61>tre</td>
</tr>
</table>
</center></div>
<p>Si cela ne peut convenir au LDV que vous d<>veloppez, vous
pouvez sp<73>cifier une fonction de saisie sp<73>cifique avec la
fonction <a href="#getparams">GetParams</a>.</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="notions.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="defines.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->06/05/01<!--webbot
bot="Timestamp" i-checksum="12424" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>3.
D E S C R I P T I O N</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,290 +0,0 @@
<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): Defines</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="descrip.htm"><img
src="images/cprev.jpg" alt="Previous Chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="struct.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>4.
D E F I N E S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p><a name="LDV_STATUS"></a><font size="4"><strong>4.1 Type of return codes
</strong></font></p>
<p><font size="4"><strong>typedef long LDV_STATUS</strong></font></p>
<p><font size="3">The type of LDV functions return code is a 32 bits
integer. Why? First, because some compilers (e.g., GCC) return a 32 bits
integer even when specifying a 16 bits integer (short). Secondly, this
allows for future extensions of the return code in the remaining bits.
</font></p>
<p>&nbsp;</p>
<p><a name="ELDV"></a><font size="4"><strong>4.2 Return codes</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">ELDV_NOERROR</td>
<td width="75%">No error. The function worked correctly
</td>
</tr>
<tr>
<td align="center" width="10%">ELDV_INVALIDPARAMETER</td>
<td width="75%">At least one of the parameters is not valid</td>
</tr>
<tr>
<td align="center" width="10%">ELDV_NBPLANESNOTSUPPORTED</td>
<td width="75%">The function does not support the number of planes
passed in parameters</td>
</tr>
<tr>
<td align="center">ELDV_NOTENOUGHMEMORY</td>
<td>Not enough memory</td>
</tr>
<tr>
<td align="center">ELDV_PREVIEWNOTSUPPORTED</td>
<td>The Preview function is not defined (points to
NULL)</td>
</tr>
<tr>
<td align="center">ELDV_RUNNOTSUPPORTED</td>
<td>The Run function is not defined (points to NULL
I wonder who would be dumb enough to write an LDV that does
nothing!</td>
</tr>
<tr>
<td align="center">ELDV_BADVAPIVERSION</td>
<td>The available version of <a href="vapi/index.htm#Pr<50>sentation">VAPI</a>
does not allow to use the LDV (some functions or interfaces
are missing)</td>
</tr>
<tr>
<td align="center">ELDV_IMGFORMATMISMATCH</td>
<td>The image formats handled by the LDV do not allow VISION to
provide an image compatible with one of the expected formats.
Normally, the error comes from the LDV.</td>
</tr>
<tr>
<td align="center">ELDV_GENERALFAILURE</td>
<td>General failure, reason not specified.</td>
</tr>
</table>
</center></div>
<p>These codes can be sent back by LDV functions or by
<em><strong>VISION</strong></em> to the user to display the corresponding
error messsage. Think also to use the LDV_SUCCESS macro which indicates
whether the code passed as a parameter is a success or an error.
</p>
<p>&nbsp;</p>
<p><a name="TLDV"></a><font size="4"><strong>4.3 Module types</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">TLDV_MODIFYIMG</td>
<td width="75%">Image modifier module. Can also be used to
initialise an image by overwriting completely its content, without
taking into account the current data.</td>
</tr>
<tr>
<td align="center" width="10%">TLDV_LOADIMG</td>
<td width="75%">Image loader module.
<em><strong>VISION</strong></em>
does not handle it yet</td>
</tr>
<tr>
<td align="center" width="10%">TLDV_SAVEIMG</td>
<td width="75%">Image saving module. <em><strong>VISION</strong></em>
does not handle it yet</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDVF"></a><font size="4"><strong>4.4 Information on possibilities</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Define</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="10%">LDVF_STDFORMAT</td>
<td width="75%">The LDV accepts the standard image format as
defined by ATARI (bitplanes one after the others). This format is
not available in True Color.</td>
</tr>
<tr>
<td align="center" width="10%">LDVF_ATARIFORMAT</td>
<td width="75%">The LDV accept ATARI format (interlaced bitplanes
(ST), Falcon True Color mode)</td>
</tr>
<tr>
<td align="center">LDVF_SPECFORMAT</td>
<td>The LDV accepts the specific format of the graphic card</td>
</tr>
<tr>
<td align="center">LDVF_SUPPORTPREVIEW</td>
<td>The LDV provides a Preview function (highly recommanded, even
if it calls Run)</td>
</tr>
<tr>
<td align="center">LDVF_AFFECTPALETTE</td>
<td>The LDV modifies the palette (bitplanes modes only). In this
case, operation on palette must always be done &quot;in
place&quot;. <em><strong>VISION</strong></em> will systematically
save the palette of the image in the Undo buffer.</td>
</tr>
<tr>
<td align="center">LDVF_SUPPORTPROG</td>
<td>The LDV will call function <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> of the
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a> interface
(recommanded is the process takes more than 2 secondes).
Before calling <a href="descrip.htm#run">Run</a>, <em><strong>VISION</strong></em>
will display a progess bar for the LDV and will make it disapear
afterwards. By calling <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> from the
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a> interface, the LDV
will be able to inform user on the progress of the process.</td>
</tr>
<tr>
<td align="center">LDVF_OPINPLACE</td>
<td>The LDV knows how to work on the source image, without
<em><strong>VISION</strong></em> having to allocate the
destination (the transformation is said to occur in place). In
this case, the out parameter of the <a
href="descrip.htm#run">Run</a> function is the same as in. As far
as possible, use this flag, this spares memory. The presence of
this flag impose obviously that the LDV does not modify the size
of the image.</td>
</tr>
<tr>
<td align="center">LDVF_REALTIMEPARAMS</td>
<td>The LDV does the <a
href="descrip.htm#run">Run</a> function fast enough in Preview
mode (small image displayed by the
<em><strong>VISION</strong></em>) dialog box for the modification
of the LDV parameters done with the sliders to be smooth enough
(at least 1 image per second). In this case,
<em><strong>VISION</strong></em> will call the Prewiew function
when the user modifies a parameter control slider, without any
need to press the &quot;Preview&quot; button</td>
</tr>
</table>
</center></div>
<p><font size="3">These flags must be combined with the &quot;logical
or&quot; (|).
</font></p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="descrip.htm"><img
src="images/cprev.jpg" alt="Previous chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="struct.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>D
E F I N E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,427 +0,0 @@
<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): Description</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="notions.htm"><img
src="images/cprev.jpg" alt="Previous Chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="defines.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>3.
D E S C R I P T I O N</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>To summarise, here is what happens between
<em><strong>VISION</strong></em> and an LDV:</p>
<p>0. Init (done a single time at the first user call using LDVs).
<em><strong>VISION</strong></em>
loads the <a href="#capacit<69>s">GetLDVCapabilities</a> function of each
LDV, calls the function and memorizes the capabilities of each LDV to limit
future hard drive accesses, then launches each LDV</p>
<p>1. <em><strong>VISION</strong></em> loads the LDV</p>
<p>2. <em><strong>VISION</strong></em> calls the PreRun function</p>
<p>3. <em><strong>VISION</strong></em> calls the Run
(or Preview) function</p>
<p>4. <em><strong>VISION</strong></em> unloads the LDV</p>
<p>&nbsp;</p>
<p><a name="capacit<69>s"></a><font size="4"><strong>3.1 LDV Capabilities
</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="struct.htm#LDV_INFOS">LDV_INFOS</a>
* cdecl GetLDVCapabilities(<a href="vapi/struct.htm#VAPI">VAPI</a>
*vapi)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN] </strong>vapi: pointer on the
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a> interface
provided by <em><strong>VISION</strong></em>. This pointer must
be memorized for future use.</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%">A pointer on the structure <a
href="struct.htm#LDV_INFOS">LDV_INFOS</a> stored in the
LDV (the skeleton declares the LdvInfos variable of the type
<a href="struct.htm#LDV_INFOS">LDV_INFOS</a>)</td>
</tr>
<tr>
<td width="15%"><strong>Responsibilities</strong></td>
<td width="85%">This function is completely written in the
skeleton. The works to be done is to fill the structure of the
type <ahref="struct.htm#LDV_INFOS">LDV_INFOS</a> of the LDV
skeleton.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="prerun"></a><font size="4"><strong>3.2 PreRun function
</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl PreRun(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> in: pointer on
the structure <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
describing the image of <em><strong>VISION<br>
</strong></em><strong>[IN / OUT]</strong> params:
pointeur on a structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a> indicating the
area to modify</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%"><a href="defines.htm#ELDV">A success or error
code</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsibilities</strong></td>
<td width="85%">Must mention to <em><strong>VISION</strong></em>
the memory to allocate and the part to be saved by the UNDO
function:<ol>
<li>If the LDV needs it (<a href="defines.htm#LDVF">LDVF_OPINPLACE</a>
not defined in the structure <a
href="struct.htm#LDV_CAPS">LDV_CAPS</a>),
out-&gt;Raster.fd_w and out-&gt;Raster.fd_h
must contain the size of the image to allocate for the
destination. This is this image that will be displayed by
<em><strong>VISION</strong></em>
in the associated window.</li>
<li>If needed, indicate in the fields, x1, x2, y1 and
y2 of the structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>, the
area to be backed up in the UNDO buffer of the image to
be able to undo. Before the call,
<em><strong>VISION</strong></em>
sets these fields according to the user selection (block
or full image)</li>
</ol>
<p>By default:</p>
<ol>
<li><em><strong>VISION</strong></em> will allow
no memory for the LDV and will suppose the
transformation will take place &quot;in place&quot;</li>
<li><em><strong>VISION</strong></em> will backup in the
UNDO buffer the part specified by the fields
x1, x2, y1 and y2 of the structure <a
href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
(full image or selection if a block is selected)</li>
</ol>
</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="run"></a><font size="4"><strong>3.3 Run function</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl Run(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%"><strong>[IN]</strong> in: pointer on the
structure <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
describing the source image of
<em><strong>VISION<br>
</strong></em><strong>[IN]</strong> params: pointer on
a structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
indicating the area to modify<br>
<strong>[OUT]</strong> out: pointer of the destination image
, allocate by <em><strong>VISION</strong></em>
with a previous call to PreRun</td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%"><a href="defines.htm#ELDV">A success or error
code</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsibilities / Comments</strong></td>
<td width="85%">Must do the operation forecasted for
the LDV.<br>
<em><strong>VISION</strong></em> choses automatically
the most adapted format while trying to minimise the memory,
taking into account the format(s) handled by the LDV (knowing the
most economical is <a
href="defines.htm#LDVF">LDVF_SPECFORMAT</a>)<br>
The LDV can modify another area than the one given in the fields
x1, y1, x2 and y2 of params if it was mentionned previously by
the PreRun function<br>
<strong><u>NEVER</u></strong> allocate in the LDV memory for
<em><strong>VISION</strong></em>,
because it will be freed as soon as
<em><strong>VISION</strong></em> will unload the LDV (even if you
do not do it explicitely, the compiler of the system will do it).
On the other hand, nothing prevents you from allocating memory for
internal usage related to this function, but do not forget to free
it!</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="preview"></a><font size="4"><strong>3.4 Preview
function</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><strong>Prototype</strong></td>
<td width="85%"><a href="defines.htm#LDV_STATUS">LDV_STATUS</a>
cdecl Preview(<a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*in, <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
*params, <a href="struct.htm#LDV_IMAGE">LDV_IMAGE</a>
*out)</td>
</tr>
<tr>
<td width="15%"><strong>Parameters</strong></td>
<td width="85%">Identical to those of the function <a
href="#run">Run</a></td>
</tr>
<tr>
<td width="15%"><strong>Return</strong></td>
<td width="85%"><a href="defines.htm#ELDV">A success or error
code</a></td>
</tr>
<tr>
<td width="15%"><strong>Responsibilities / Comments</strong></td>
<td width="85%">This function is identical to the
function <a href="#run">Run</a>, but it operates on
smaller images (112 x 112 on average). If the function
<a href="#run">Run</a> is fast enough to display the result
in less than 1 second, the Preview function should simply call
it. Otherwise, it is possible to do some approximations or
pre-computation to be back below a second.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="fichier ini"></a><font size="4"><strong>3.5 The
associated INI file</strong></font></p>
<p><font size="3">The INI file associated to an LDV has two purposes:</font></p>
<ol>
<li><font size="3">Gather all the information related to the language
such as its name and description</font></li>
<li><font size="3">Define parameters of the LDV</font></li>
</ol>
<p>&nbsp;</p>
<p><a name="langues"></a><font size="4"><strong>3.5.1
Language information</strong></font></p>
<p><font size="3">LDVs are multi-lingual, i.e., if a language has been
defined in preferences,
<em><strong>VISION</strong></em>
is able to use this information also for the LDVs, provided the information is
available. The .LDV and the associated .INI are located in the LDV
directory of <em><strong>VISION</strong></em>. For instance, the file
INVERT.INI is associated to the file INVERT.LDV. In the LDV folder, the
more standard LDVs must be found, i.e., in English. If, for instance, you
have defined &quot;Fran<EFBFBD>ais&quot; in the preferences of <em><strong>VISION</strong></em>,
you just have to create the directory &quot;Fran<EFBFBD>ais&quot;
in the folder LDV, and to include the file INVERT.INI translated in French
in this directory, for <em><strong>VISION</strong></em> to seek this file
instead of the one included directly in the LDV directory.</font></p>
<p><font size="3">In the [Informations] section, <em><strong>VISION</strong></em>
expects the following entries:</font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Name of entry</strong></td>
<td align="center" width="10%"><strong>Size</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">ShortName</font></td>
<td align="center" width="10%">Max. 15 characters</td>
<td width="75%">Short name of the module appearing in the list of
modules to select</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">LongName</font></td>
<td align="center" width="10%">Max. 31 characters</td>
<td width="75%">Name appearing when details are required on this
LDV</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Description</font></td>
<td align="center" width="10%">Max. 79 characters</td>
<td width="75%">Complete description of the module on 3 lines</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="parametrage"></a><font size="4"><strong>3.5.2
Parameters of the LDV</strong></font></p>
<p><font size="3"><em><strong>VISION</strong></em> allows to enter up to 4
parameters in an LDV. These parameters are entered using GEM sliders that
appear or not according to the number of input parameters of the LDV.<br>
For <em><strong>VISION</strong></em> to accept to display a parameter,
a section named [ParameterN] (1 &lt;= N &lt;= 4)
must be created with the following entries:</font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Name of entry</strong></td>
<td align="center" width="85%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Name</font></td>
<td width="85%">Name of this parameter (max. 15 characters). If
the name is not given, this parameter will not appear</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">Type</font></td>
<td width="85%">0: 16 bits integer(-32768 --&gt; +32767)<br>
1: float (not handled currently)</td>
</tr>
<tr>
<td align="center" width="15%"><font size="3">MinValue</font></td>
<td width="85%">Minimum allowed value for this parameter</td>
</tr>
<tr>
<td align="center">DefautValue</td>
<td>Default value given in <em><strong>VISION</strong></em> GUI</td>
</tr>
<tr>
<td align="center">MaxValue</td>
<td>Maximum allowed value for this parameter</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="notions.htm"><img
src="images/cprev.jpg" alt="Previous chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="defines.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>3.
D E S C R I P T I O N</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>

View File

@@ -1,286 +0,0 @@
<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): Recommendations</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="kitdev.htm"><img
src="images/cprev.jpg" alt="Previous Chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->17/09/00<!--webbot
bot="Timestamp" i-checksum="12363" 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>7.
R E C O M M E N D A T I O N S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p>Even if managing and programming LDVs is simple, it must respect some
common sense rules, one cannot simply do whatever he wants!
Here are some rules and clarification on some points which might be
troubling when one programs his first LDVs:</p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="5%"><strong>#</strong></td>
<td align="center" width="95%"><strong>Recommendations /
Advises</strong></td>
</tr>
<tr>
<td align="center" width="5%"><strong>1</strong></td>
<td width="95%">If you write an LDV, send it to me!
I would like <em><strong>VISION</strong></em> site to centralise
all the LDVs created. Verify also that your LDV is not compiled
with debug information!
It would be to no use, except reduce the performances!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>2</strong></td>
<td width="95%">It would be nice and useful for everyone to give
the sources of the LDV with the LDV itself... This could give some
good ideas to some people...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>3</strong></td>
<td width="95%">Do not forget that, by the means of the functions
called by <em><strong>VISION</strong></em>, you have
a direct access to <em><strong>VISION</strong></em> internal
memory. Thus, if you act a little randomly with the pointers
provided, <em><strong>VISION</strong></em> will most likely crash
sooner or later...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>4</strong></td>
<td width="95%">If you use <a href="vapi/index.htm">VAPI</a>
(recommended!), the same remark applies, the global Vapi variable
of the LDV points directly on <em><strong>VISION</strong></em>
memory. If you write into this structure, your LDV might crash!
I let you imagine the consequences if you modify the address of
the function <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
and then try and call it!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>5</strong></td>
<td width="95%">The ERROR to avoid in the function
<a href="descrip.htm#run">Run</a> is to allocate yourself the
memory for the image passed in the out parameter. Why? Doing this,
first, you overwrite the pointer <em><strong>VISION</strong></em>
has already allocated to that. Furthermore, as soon as <em><strong>VISION</strong></em>
will try to use it, it will crash. If fact, your LDV is more or
less &quot;a PRG&quot; launched by
<em><strong>VISION</strong></em> and terminated when
<em><strong>VISION</strong></em> (more excactly the LDG manager)
decides it. At this moment, the compiler or the system will free
the memory allocated by this module, even if you do not do it
explicitely. That is why that is always
<em><strong>VISION</strong></em>, using the function
<a href="descrip.htm#prerun">PreRun</a> that will allocate the
memory for the LDV, since it will use it after that. The function
<a href="descrip.htm#prerun">PreRun</a> is really essential!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>6</strong></td>
<td width="95%">If you use the function <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> from <a
href="vapi/index.htm">VAPI</a> (really WARMLY recommended, unless
your LDV is fast as light!), try not to call it too often, for
instance inside a loop, it has no use (it may happen that the
percentage has not even changed!) and this will slow unecesseraly
your LDV. Before your call, put a test such as <strong>if ( ( iter &amp; 0x0F )
== x0F )</strong>, it will call the progress function only one out
of sixteen times, this should be largely enough.</td>
</tr>
<tr>
<td align="center"><strong>7</strong></td>
<td>The function <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
from <a href="vapi/index.htm">VAPI</a>, gives control temporarily
to the AES. This will allow to move windows at that moment. That
is also one of the reasons why this function must be called a
little... but not too much!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>8</strong></td>
<td width="95%">If your LDV has parameters (at most 4 parameters),
you must use an <a
href="descrip.htm#fichier ini">associated INI file</a>.
I recommend to associate systematically an INI file to your LDV.
It's really handy for translations, and not difficult at all!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>9</strong></td>
<td width="95%">If you use an
<a
href="descrip.htm#fichier ini">INI file</a>, your LDV must control
the validity of passed parameters, and not crash stupidely if one
of them is out of bounds... In such a case, just return the
<a href="defines.htm#ELDV">ELDV_INVALIDPARAMETER</a> error code.
Do not forget that the<a href="descrip.htm#fichier ini">
INI file</a> is a text file, which can be easily modified by a
user...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>10</strong></td>
<td width="95%">Floating numbers, while forecasted for a future
exxtension, are not necessary for LDV parameters. Let's say you
must enter a value between 0.0 and 1.0. All you have to do is to
indicate a range of [0;1000] in the <a
href="descrip.htm#fichier ini">INI file</a> (which still gives you
more precision that what can be entered in the GUI), to convert
the parameter given by <em><strong>VISION</strong></em> to float,
and then to divide it by 1000. There must exist weird cases where
floats are necessary, but one should do without them in 99% of
the cases!</td>
</tr>
<tr>
<td align="center" width="5%"><strong>11</strong></td>
<td width="95%">I advise, for memory performances reasons, to
allways use <a href="defines.htm#LDVF">LDVF_OPINPLACE</a> and <a
href="defines.htm#LDVF">LDVF_SPECFORMAT</a> flags. Allocate the
memory you want in the LDV (if you can...) and free it after its
execution.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>12</strong></td>
<td width="95%">If you work only on lines and columns, use the
<a href="defines.htm#LDVF">LDVF_SPECFORMAT</a> flag.
The VDI function vr_cpyfm is made for that purpose. Using the
<a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>
or <a href="defines.htm#LDVF">LDVF_STDFORMAT</a> flags would
oblige
<em><strong>VISION</strong></em> to allocate memory unecessarily
(furthermore, the VDI functions ALWAYS work on the machine
specific format: <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>!)</td>
</tr>
<tr>
<td align="center" width="5%"><strong>13</strong></td>
<td width="95%">If you have to handle TOS and/or VDI indexes:<ul>
<li>You can work by lines or packets of n lines:<br>
Use the format <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>,
and the functions of the <a href="vapi/ra.htm">
Raster interface</a>. This will minimise the memory to
allocate</li>
<li>You are obliged to have access to any index at any time:<br>
Use the format <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>,
and the functions of the <a href="vapi/ra.htm">
Raster interface</a>. <em><strong>VISION</strong></em>
will convert the image from the specific format to the
ATARI bitplan format before calling <a
href="descrip.htm#prerun">PreRun</a> or <a
href="descrip.htm#run">Run</a>.</li>
</ul>
</td>
</tr>
<tr>
<td align="center" width="5%"><strong>14</strong></td>
<td width="95%">Even if the user has selected a block as an area
to apply the LDV on the image, you are not limited to the area
defined by this block. You have access to the whole image, even
more if you decide to enlarge its size (fields out-&gt;fd_w and
out-&gt;fd_h of the function <a
But do not forget to update the fields x1, x2, y1 and
y2 of the structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
given by the function <a href="descrip.htm#prerun">PreRun</a>,
and also to UNDO buffer, to be able to go back.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>15</strong></td>
<td width="95%">&nbsp;</td>
</tr>
<tr>
<td align="center" width="5%"><strong>16</strong></td>
<td width="95%">&nbsp;</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="kitdev.htm"><img
src="images/cprev.jpg" alt="Previous chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->17/09/00<!--webbot
bot="Timestamp" i-checksum="12363" 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>7.
R E C O M M E N D A T I O N S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

View File

@@ -1,159 +0,0 @@
<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): 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%"><a href="index.htm"><img
src="images/csom.jpg" alt="Back to content " border="0"
hspace="2" width="26" height="26"></a><a href="intro.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->17/09/00<!--webbot
bot="Timestamp" i-checksum="12363" 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=DocVision"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p align="left"><a href="intro.htm"><strong>1. INTRODUCTION</strong></a></p>
<p align="left"><a href="notions.htm"><strong>2. ESSENTIAL NOTIONS
</strong></a></p>
<blockquote>
<p align="left"><a href="notions.htm#formats d'images">2.1
Images formats</a></p>
<p align="left"><a href="notions.htm#prog">2.2 Programmation</a></p>
</blockquote>
<p><a href="descrip.htm"><strong>3. DESCRIPTION</strong></a></p>
<blockquote>
<p><a href="descrip.htm#capacit<69>s">3.1 Possibilities of LDV</a></p>
<p><a href="descrip.htm#prerun">3.2 PreRun function</a></p>
<p><a href="descrip.htm#run">3.3 Run function</a></p>
<p><a href="descrip.htm#preview">3.4 Preview function</a></p>
<p><a href="descrip.htm#fichier ini">3.5 Associated INI
file</a></p>
<blockquote>
<p><a href="descrip.htm#langues"><em>3.5.1 Information
on language</em></a></p>
<p><a href="descrip.htm#parametrage"><em>3.5.2
Configuration of LDV</em></a></p>
</blockquote>
</blockquote>
<p><a href="defines.htm"><font size="3"><strong>4. DEFINES</strong></font></a></p>
<blockquote>
<p><a href="defines.htm#ELDV">4.1 Type of return codes</a></p>
<p><a href="defines.htm#ELDV">4.2 Return codes</a></p>
<p><a href="defines.htm#TLDV">4.3 Module types</a></p>
<p><a href="defines.htm#LDVF">4.4 Information on possibilities
</a></p>
</blockquote>
<p><a href="struct.htm"><strong>5. STRUCTURES</strong></a></p>
<blockquote>
<p><a href="struct.htm#LDV_INFOS">5.1 LDV_INFOS</a></p>
<p><a href="struct.htm#LDV_CAPS">5.2 LDV_CAPS</a></p>
<p><a href="struct.htm#LDV_IMAGE">5.3 LDV_IMAGE</a></p>
<p><a href="struct.htm#LDV_PALETTE">5.4 LDV_PALETTE</a></p>
<p><a href="struct.htm#LDV_VDIELEMENTALPAL">5.5
LDV_VDIELEMENTALPAL</a></p>
<p><a href="struct.htm#LDV_PARAMS">5.6 LDV_PARAMS</a></p>
<p><a href="struct.htm#LDV_BASICPARAM">5.7 LDV_BASICPARAM</a></p>
</blockquote>
<p><a href="kitdev.htm"><strong>6. DEVELOPMENT KIT</strong></a></p>
<blockquote>
<p><a href="kitdev.htm#install">6.1 Installation</a></p>
<p><a href="kitdev.htm#squelette">6.2 Skeleton</a></p>
</blockquote>
<p><a href="hints.htm"><strong>7. RECOMMANDATIONS</strong></a></p>
<p><a href="vapi/index.htm"><strong>APPENDIX: VAPI</strong></a></p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Back to content " border="0"
hspace="2" width="26" height="26"></a><a href="intro.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->17/09/00<!--webbot
bot="Timestamp" i-checksum="12363" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\download/dvision.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

@@ -1,177 +0,0 @@
<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): Introduction</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Back to content " border="0"
hspace="2" width="26" height="26"></a><a
href="notions.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->02/10/00<!--webbot
bot="Timestamp" i-checksum="12216" 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>1.
I N T R O D U C T I O N</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>At last! After several years, <em><strong>VISION</strong></em>
eventually becomes modular! Roughly, the essential purpose of LDVs
(Librairies Dynamiques for <em><strong>VISION</strong></em>) is to allow
to add your own functions.
Typically, an LDV allows to enhance the functions of <em><strong>VISION</strong></em>,
for instance by adding an image distortion module.
Here are the characteristics of LDVs:</p>
<ul>
<li>Direct access to <em><strong>VISION</strong></em> images</li>
<li>Multi-lingual (with optionnal INI file)</li>
<li>UNDO management (transparent for LDV programmer)</li>
<li>Management of the input of 4 parameters by
<em><strong>VISION</strong></em>, which can be sent to the LDV</li>
<li>Progress bar management during LDV computation</li>
<li>Preview management</li>
<li>Can be applied on an image or on a block inside an image</li>
<li><em><strong>VISION</strong></em> provides an API (VAPI)
giving image modification functions</li>
</ul>
<p>&nbsp;</p>
<p>At the development level, the programmer must:</p>
<ul>
<li>Know what he wants to do!</li>
<li>Define the capabilities of the LDV (number of plans that can be
managed, expected image format, ...)</li>
<li>Write 4 functions (2 of them being written 100% by an LDV
skeleton!):</li>
</ul>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="20%">GetLDVCapabilities</td>
<td width="80%">Already written. Return to <em><strong>VISION</strong></em>
what the LDV can do</td>
</tr>
<tr>
<td width="20%">PreRun</td>
<td width="80%">To be written. Ask <em><strong>VISION</strong></em>
to allocate the resources necessary to the function
Run</td>
</tr>
<tr>
<td width="20%">Run</td>
<td width="80%">To be written. The function that does something!</td>
</tr>
<tr>
<td width="20%">Preview</td>
<td width="80%">To be written or not. Similar to Run, but in
Preview mode, if computation time is too long, and if it is
possible to do less computation. Very often, Run is called instead
(this is what the skeleton does).</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p>Of course, writing an LDV requires some notions on images, their
formats and programming. See <a
href="notions.htm">essential notions</a>.</p>
<p>Last, I do hope to extend that principle by proposing LDV to load and
save images (possibly even more...).
However, given the time needed to include this concept in
<em><strong>VISION</strong></em>, it will require some persons to be
interested before I start with it!</p>
<p>LDVs are based on LDGs (Librairies Dynamiques GEM) developed by
Olivier Landemarre and Dominique B<>r<EFBFBD>ziat: <a
href="http://ldg.atari.org">ldg.atari.org</a></p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Back to content " border="0"
hspace="2" width="26" height="26"></a><a
href="notions.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->02/10/00<!--webbot
bot="Timestamp" i-checksum="12216" 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>1.
I N T R O D U C T I O N</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,506 +0,0 @@
<!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>

View File

@@ -1,107 +0,0 @@
<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): 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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">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

@@ -1,218 +0,0 @@
<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): Essential notions</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="intro.htm"><img
src="images/cprev.jpg" alt="Previous Chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="descrip.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/10/00<!--webbot
bot="Timestamp" i-checksum="12214" 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>2.
ESSENTIAL NOTIONS</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><a name="formats d'images"></a><font size="4"><strong>2.1 Images
formats</strong></font></p>
<p>I cannot explain here the bit to bit encoding of an image. Roughly, for
a number of plans up to 8, a pixel is associated to a colour index in a
palette. Thus, this index points to the true colour of the pixel. Starting
with 15 plans, we are in True Color, i.e., each pixel is associated with
its colour value (thus with 15, 16, 24 or 32 bits). While in True Color,
it's fairly easy, in palette mode (bit-plane) it becomes quickly complex,
because each pixel has one of its bits coded in a 16 bits word. This bit
should be searched, the different bits from one pixel should be put
together, etc... This becomes quickly tiring and, to be fast, this
requires assembly optimisation. Thankfully, <em><strong>VISION</strong></em>
proposes functions to simplify your work with
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a>.</p>
<p><em><strong>VISION</strong></em>'s LDVs can work in any of the 3
following formats (note that there is no interesst for your LDV to handle
the 3 formats, <em><strong>VISION</strong></em> will transmit the required
format):</p>
<ul>
<li>Standard format</li>
<li>ATARI format</li>
<li>Specific format</li>
</ul>
<p>This little table specifies these different formats ((R = Red, G =
Green, B = Blue):</p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Format</strong></td>
<td align="center" width="10%"><strong>Number of bits /
pixel</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%">Standard</td>
<td align="center" width="10%">1, 2, 4, 8</td>
<td width="75%">Standard format defined by ATARI. The pixel planes
(16 pixels) are following each other. In True-Color, this format
maybe exists, but I prefer not to know!</td>
</tr>
<tr>
<td align="center" width="15%">ATARI</td>
<td align="center" width="10%">1, 2, 4, 8</td>
<td width="75%">ATARI bit-plane format. Very classical,
this is the format of ST-Low, ST-Medium and ST-High, then, by
extension, the format of Falcon's bit-plane modes. Contrary to
Standard mode, planes are interlaced ((Plan0 - Plan1 - Plan2 -
Plan 3, for instance for 16 colours))</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">16</td>
<td width="75%">FALCON True Color mode. Each pixel
is coded in a 16 bits word such as the following:<br>
RRRRRVVVVV0BBBBB<br>
15 --&gt; 0 Bit #<br>
In fact, the actual encoding is on 15 or 1 pixels. The level of
green can be coded on 6 bits (65K) instead of 5 (32K).</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">24</td>
<td width="75%">Sadly <em><strong>VISION</strong></em>
does not handle this format!</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">32</td>
<td width="75%">RGB0, R, G, B = red, green or
blue component on 8 bits (0...255)</td>
</tr>
<tr>
<td align="center" width="15%">Specific</td>
<td align="center" width="10%">1, 2, 4, 8, 16, 24, 32</td>
<td width="75%">Specific to the graphic card. No
hypothesis on the bit encoding for a pixel can be made.</td>
</tr>
</table>
</center></div>
<p>As far as possible, use the specific format, because it uses the less
memory. If your LDV has only to handle lines and columns, you don't have
to pay attention to internal pixel coding, the vro_... VDI functions will
handle it.</p>
<p>If you have to handle pixels, I recommand to use the ATARI format,
because <em><strong>VISION</strong></em> allows to get very easily the
indexes through its <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>.</p>
<p>The standard format is not very useful, except internally in
<em><strong>VISION</strong></em> to display the images correctly. except
if you have developed equivalent functions to those proposed in
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a>, I would advise not to use
this format.</p>
<p>&nbsp;</p>
<p><a name="prog"></a><font size="4"><strong>2.2 Programing</strong></font></p>
<p>You have to know how to program in C! Normally, LDVs do not depend on
the compiler (I did my best but, as I use only Pure C, I cannot be really
sure).</p>
<p>You have to be fluent in C and not be afraid of handling pointers on
structures and functions.</p>
<p>If you know LDGs, this will be useful but it is not mandatory, the LDV
skeleton hides them fairly well.</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="intro.htm"><img
src="images/cprev.jpg" alt="Previous chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="descrip.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/10/00<!--webbot
bot="Timestamp" i-checksum="12214" 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>2.
ESSENTIAL NOTIONS</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,464 +0,0 @@
<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): Structures</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="defines.htm"><img
src="images/cprev.jpg" alt="Previous Chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="kitdev.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last update:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>5.
S T R U C T U R E S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p>.<a name="LDV_INFOS"></a><font size="4"><strong>5.1 LDV_INFOS</strong></font></p>
<p><font size="3"><strong>typedef struct<br>
{<br>
short StrSize ;<br>
short Type ;<br>
char Authors[1+45] ;<br>
<br>
LDV_CAPS Caps[10] ;<br>
<br>
char RFU[16] ;<br>
}<br>
LDV_INFOS ;</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">StrSize</td>
<td align="center" width="15%">short</td>
<td width="75%">LDV_INFOS structure size. Must be
initialised with sizeof(LDV_INFOS). The aim of this field
is to prevent <em><strong>VISION</strong></em> from exploding its
internal data if the size of this structure should change.</td>
</tr>
<tr>
<td align="center" width="10%">Type</td>
<td align="center" width="15%">short</td>
<td width="75%">Must be equal to <a href="defines.htm#TLDV">TLDV_MODIFYIMG</a>,
<a href="defines.htm#TLDV">TLDV_LOADIMG</a> or <a
href="defines.htm#TLDV">TLDV_SAVEIMG</a>, or even more in the
future. Currently, only the <a
href="defines.htm#TLDV">TLDV_MODIFYIMG</a> type is accepted
by <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td align="center" width="10%">Authors</td>
<td align="center" width="15%">char[1+45]</td>
<td width="75%">Name of the author(s). 45 characters are available
for this purpose.</td>
</tr>
<tr>
<td align="center" width="10%">Caps</td>
<td align="center" width="15%"><a href="#LDV_CAPS">LDV_CAPS</a>[10]</td>
<td width="75%">Table describing the capabilities of the LDV for
each number of plane. The LDV can handle a maximum of 9 differents
planes because the structure table must end with a structure where
fields are initialised with 0.</td>
</tr>
<tr>
<td align="center" width="10%">RFU</td>
<td align="center" width="15%">char[16]</td>
<td width="75%">Reserved for future use. Don't touch!</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_CAPS"></a><font size="4"><strong>5.2 LDV_CAPS</strong></font></p>
<p><font size="3"><strong>typedef struct<br>
{<br>
char NbPlanes ; <br>
char NbPlanesOut ;<br>
unsigned long Flags ; <br>
}<br>
LDV_CAPS ;</strong></font></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">NbPlanes</td>
<td align="center" width="15%">char</td>
<td width="75%">Number of planes for this capability (1,
2, 4, 8 , 16, 24 (not handled), 32)</td>
</tr>
<tr>
<td align="center" width="10%">NbPlanesOut</td>
<td align="center" width="15%">char</td>
<td width="75%">Number of planes on output for this capability.
For a <a href="defines.htm#TLDV">TLDV_MODIFYIMG</a> LDV type,
this field must be equal to NbPlanes</td>
</tr>
<tr>
<td align="center" width="10%">Flags</td>
<td align="center" width="15%">unsigned long</td>
<td width="75%">Combination (| symbol) of the following masks:<ul>
<li><a href="defines.htm#LDVF">LDVF_STDFORMAT</a>:
LDV accepts the standard format</li>
<li><a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>:
LDV accepts the ATARI format</li>
<li><a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>:
LDV accepts the format specific to the graphic
card</li>
<li><a href="defines.htm#LDVF">LDVF_SUPPORTPREVIEW</a>:
LDV has a Preview function (highly recommanded,
even if it only calls Run)</li>
<li><a href="defines.htm#LDVF">LDVF_AFFECTPALETTE</a>:
LDV modifies the palette (NbPlanes must be less than or
equal to 8)</li>
<li><a href="defines.htm#LDVF">LDVF_SUPPORTPROG</a>:
LDV will call the <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> function of
<a
href="vapi/index.htm#Pr<50>sentation">VAPI</a> interface
(recommanded if the processing takes more than 2 seconds)</li>
<li><a href="defines.htm#LDVF">LDVF_OPINPLACE</a>:
LDV knows how to work on the source image, without the
need for <em><strong>VISION</strong></em> to allocate the
destination (it is said the transformation in done in
place). In this case, the out parameter of the Run
function is the same as the in parameter. As far as
possible, use this flag, this will lessen the memory
consumption.</li>
<li><a href="defines.htm#LDVF">LDVF_REALTIMEPARAMS</a>:
LDV does Preview (small image displayed by the
<em><strong>VISION</strong></em> dialogue) fast enough for
the modification of LDV's parameters by the sliders to be
smooth (at least 1 image per second)</li>
</ul>
</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_IMAGE"></a><font size="4"><strong>5.3 LDV_IMAGE</strong></font></p>
<p><strong>typedef struct<br>
{<br>
short RasterFormat ;<br>
MFDB Raster ; <br>
LDV_PALETTE Palette ; /* Structure given if Raster.fd_nplanes
&lt;= 8 */<br>
}<br>
LDV_IMAGE ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">RasterFormat</td>
<td align="center" width="15%">short</td>
<td width="75%"><a href="defines.htm#LDVF">LDVF_STDFORMAT</a>,
<a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a> or <a
href="defines.htm#LDVF">LDVF_SPECFORMAT</a></td>
</tr>
<tr>
<td align="center" width="10%">Raster</td>
<td align="center" width="15%">MFDB</td>
<td width="75%">The classical ATARI MFDB describing
the image data (excluding the palette)</td>
</tr>
<tr>
<td align="center" width="10%">Palette</td>
<td align="center" width="15%"><a href="#LDV_PALETTE">LDV_PALETTE</a></td>
<td width="75%">Pointer on a structure <a
href="#LDV_PALETTE">LDV_PALETTE</a> describing the palette
associated with the image if the number of bits is less than
or equal to 8.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_PALETTE"></a><font size="4"><strong>5.4
LDV_PALETTE</strong></font></p>
<p><strong>typedef struct<br>
{<br>
short NbColors ; <br>
VDI_ELEMENTPAL *Pal ;<br>
}<br>
LDV_PALETTE ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">NbColors</td>
<td align="center" width="15%">short</td>
<td width="75%">The number of elements in the table pointed by
Palette (i.e., 2, 4, 16 ou 256 colours)</td>
</tr>
<tr>
<td align="center" width="10%">Pal</td>
<td align="center" width="15%"><a
href="#LDV_VDIELEMENTALPAL">VDI_ELEMENTALPAL</a> *</td>
<td width="75%">Pointer on a table of NbColors
elements of the type VDI_ELEMENTPAL. The proposed palette is
indexed by VDI indexes (those used by the VDI functions such as
line drawing) and not TOS ones (those you get from
<a href="vapi/index.htm#Pr<50>sentation">VAPI</a> raster functions).
Thankfully, <a href="vapi/index.htm#Pr<50>sentation">VAPI</a> has
functions to convert VDI to TOS indexes in both directions.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_VDIELEMENTALPAL"></a><font size="4"><strong>5.5
VDI_ELEMENTALPAL</strong></font></p>
<p><strong>typedef struct<br>
{<br>
short Red ;<br>
short Green ;<br>
short Blue ;<br>
}<br>
VDI_ELEMENTPAL ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">Red</td>
<td align="center" width="15%">short</td>
<td width="75%">Component <font color="#FF0000">Red</font>
of the VDI index of the palette (0 &lt;= index &lt;= 1000)</td>
</tr>
<tr>
<td align="center">Green</td>
<td align="center">short</td>
<td>Component <font color="#00FF00">Green</font> of the VDI
index of the palette (0 &lt;= index &lt;= 1000)</td>
</tr>
<tr>
<td align="center">Blue</td>
<td align="center">short</td>
<td>Component <font color="#0000FF">Blue</font>
of the VDI index of the palette (0 &lt;= index &lt;= 1000)</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_PARAMS"></a><font size="4"><strong>5.6 LDV_PARAMS</strong></font></p>
<p><strong>typedef struct<br>
{<br>
short x1, y1, x2, y2 ;<br>
short NbParams ;<br>
LDV_BASICPARAM Param[LDVNBMAX_PARAMETERS] ;<br>
}<br>
LDV_PARAMS ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">x1</td>
<td align="center" width="15%">short</td>
<td width="75%">X position of the left top border of the
rectangle to be processed
(0 for a full image)</td>
</tr>
<tr>
<td align="center">y1</td>
<td align="center">short</td>
<td>Y position of the left top border of the
rectangle to be processed
(0 for a full image)</td>
</tr>
<tr>
<td align="center">x2</td>
<td align="center">short</td>
<td>X position of the right bottom border of the rectable
to be processed
(image width - 1 for a full image)</td>
</tr>
<tr>
<td align="center">y2</td>
<td align="center">short</td>
<td>YX position of the right bottom border of the rectable
to be processed
(image height - 1 for a full image)</td>
</tr>
<tr>
<td align="center">NbParams</td>
<td align="center">short</td>
<td>Number of valid parameters in the Param table</td>
</tr>
<tr>
<td align="center">Param</td>
<td align="center"><a href="#LDV_BASICPARAM">LDV_BASICPARAM</a></td>
<td>Table containing the parameters entered from the
<em><strong>VISION</strong></em> user interface</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_BASICPARAM"></a><font size="4"><strong>5.7
LDV_BASICPARAM (UNION)</strong></font></p>
<p><strong>typedef union<br>
{<br>
short s ;<br>
float f ;<br>
}<br>
LDV_BASICPARAM ;</strong></p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Field</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Comments</strong></td>
</tr>
<tr>
<td align="center" width="10%">s</td>
<td align="center" width="15%">short</td>
<td width="75%">Parameter value (if this parameter, defined in the
<a href="descrip.htm#fichier ini"> associated .INI
</a> is an integer)</td>
</tr>
<tr>
<td align="center">f</td>
<td align="center">float</td>
<td>Parameter value (if this parameter, defined in the
<a href="descrip.htm#fichier ini"> associated .INI
</a> is a Float. Currently, the type Float is not handled, and
since compilers can differ in the way they code floats, I
strongly recommend to use Shorts).</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="defines.htm"><img
src="images/cprev.jpg" alt="Previous chapter "
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Back to content " border="0" hspace="2" width="26"
height="26"></a><a href="kitdev.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>(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Last updpate:
<!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->29/10/00<!--webbot
bot="Timestamp" i-checksum="12232" 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>S
T R U C T U R E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,220 +0,0 @@
<!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

@@ -1,342 +0,0 @@
<!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

@@ -1,159 +0,0 @@
<!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

@@ -1,151 +0,0 @@
<!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

@@ -1,201 +0,0 @@
<!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

@@ -1,107 +0,0 @@
<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

@@ -1,229 +0,0 @@
<!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

@@ -1,761 +0,0 @@
<!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

@@ -1,183 +0,0 @@
<!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>

View File

@@ -1,325 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Recommandations</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="kitdev.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="vapi/index.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->03/06/01<!--webbot
bot="Timestamp" i-checksum="12434" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>7.
R E C O M M A N D A T I O N S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p>M<EFBFBD>me si la gestion et la programmation des LDV reste simple,
elle doit respecter quelques r<>gles de bon sens, on ne peut tout
de m<>me pas se permettre n'importe quoi ! Voici quelques r<>gles
et eclaircirssements sur quelques points pouvant <20>tre troublant
lorsque l'on programme ses premiers LDV:</p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="5%"><strong>#</strong></td>
<td align="center" width="95%"><strong>Recommandation /
Conseil</strong></td>
</tr>
<tr>
<td align="center" width="5%"><strong>1</strong></td>
<td width="95%">Si vous <20>crivez un LDV, envoyez le moi !
J'aimerais bien que le site de <em><strong>VISION</strong></em>
centralise tous les LDV cr<63>es. V<>rifiez aussi que votre
LDV n'est pas compil<69> avec les informations de Debug !
Cela ne servirait <20> rien sinon <20> en r<>duire les
performances !</td>
</tr>
<tr>
<td align="center" width="5%"><strong>2</strong></td>
<td width="95%">Il serait sympa et profitable <20> tout le
monde de fournir les sources du LDV avec celui-ci.. Cela
peut donner de bonnes id<69>es <20> certains...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>3</strong></td>
<td width="95%">N'oubliez pas qu'au travers des fonctions
que <em><strong>VISION</strong></em> appelle, vous avez
un acc<63>s direct <20> la m<>moire interne <20> <em><strong>VISION</strong></em>.
Donc si vous faites un peu n'importe quoi avec les
pointeurs pass<73>s, <em><strong>VISION</strong></em> a
toutes les chances de planter t<>t ou tard...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>4</strong></td>
<td width="95%">Si vous utilisez <a href="vapi/index.htm">VAPI</a>
(conseill<6C> !), la m<>me remarque s'applique, la variable
Vapi globale du LDV pointe directement sur la m<>moire de
<em><strong>VISION</strong></em> et si vous <20>crivez dans
cette structure, c'est votre LDV qui risque de planter !
Je vous laisse imaginer les d<>g<EFBFBD>ts si vous modifiez
l'adresse de la fonction <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
et que vous l'appelez ensuite !</td>
</tr>
<tr>
<td align="center" width="5%"><strong>5</strong></td>
<td width="95%">L'ERREUR <20> ne pas commettre dans la
fonction <a href="descrip.htm#run">Run</a> est d'allouer
vous-m<>me la m<>moire pour l'image pass<73>e dans le
param<61>tre out. Pourquoi ? En faisant cela, d<>j<EFBFBD> vous
<20>crasez le pointeur que <em><strong>VISION</strong></em>
a d<>j<EFBFBD> allou<6F> pour cela, mais en plus d<>s que <em><strong>VISION</strong></em>
voudra l'utiliser, cela va planter. En effet, votre LDV
est en gros &quot;un PRG&quot; lanc<6E> par <em><strong>VISION</strong></em>
et termin<69> lorsque <em><strong>VISION</strong></em>
(plus pr<70>cisemment le gestionnaire LDG) le d<>cide. A ce
moment, le compilateur ou le syst<73>me lib<69>rera la
m<>moire que ce module avait allou<6F>e, m<>me si vous ne
le faites pas explicitement. C'est pourquoi c'est
toujours <em><strong>VISION</strong></em>, par
l'interm<72>diaire la fonction <a href="descrip.htm#prerun">PreRun</a>
qui allouera la m<>moire pour le LDV puisqu'il s'en
servira ensuite. La fonction <a href="descrip.htm#prerun">PreRun</a>
est vraiment essentielle !</td>
</tr>
<tr>
<td align="center" width="5%"><strong>6</strong></td>
<td width="95%">Si vous utilisez la fonction <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de <a
href="vapi/index.htm">VAPI</a> (vraiment TRES conseill<6C>
<20> moins que votre LDV ne soit fulgurant !), <20>vitez de
l'appeler trop souvent, comme par exemple <20> chaque
it<69>ration de boucle, cela ne sert <20> rien (si <20>a se
trouve le pourcentage n'a m<>me pas chang<6E> !) et cela va
ralentir inutilement votre LDV. Faites pr<70>c<EFBFBD>der cet
appel d'un test du style <strong>if ( ( ++iter &amp; 0x0F
) == 0x0F )</strong>, cela aura pour effet d'appeler la
fonction de progression seulement une fois sur seize, ce
qui devrait <20>tre amplement suffisant.</td>
</tr>
<tr>
<td align="center"><strong>7</strong></td>
<td>Les fonctions <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
et <a href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a> de <a
href="vapi/index.htm">VAPI</a>, rendent temporairement la
main <20> l'AES. Cela permet de pouvoir d<>placer les
fen<65>tres <20> ce moment. C'est aussi une des raisons pour
lesquelles il faut l'appeler un peu... mais pas trop !</td>
</tr>
<tr>
<td align="center" width="5%"><strong>8</strong></td>
<td width="95%">Si votre LDV est param<61>trable (au plus 4
param<61>tres), vous devez utiliser un <a
href="descrip.htm#fichier ini">fichier INI associ<63></a>.
Je vous recommande d'associer syst<73>matiquement un
fichier INI <20> votre LDV, c'est vraiment tr<74>s pratique
pour les traductions et pas difficile du tout ! Si votre
LDV n<>cessite vraiment une saisie de param<61>tre tr<74>s
sp<73>cifique, vous pouvez d<>finir la fonction <a
href="descrip.htm#getparams">GetParams</a> dans votre
LDV.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>9</strong></td>
<td width="95%">Si vous utilisez un <a
href="descrip.htm#fichier ini">fichier INI</a>, votre LDV
doit contr<74>ler la validit<69> des param<61>tres qui lui sont
pass<73>s et ne pas se vautrer lamentablement si un d'eux
est hors limites... Dans un tel cas, renvoyez simplement
le code d'erreur <a href="defines.htm#ELDV">ELDV_INVALIDPARAMETER</a>.
N'oubliez pas que le <a href="descrip.htm#fichier ini">fichier
INI</a> est un fichier texte, ais<69>ment modifiable par un
utilisateur...</td>
</tr>
<tr>
<td align="center" width="5%"><strong>10</strong></td>
<td width="95%">A priori les nombres flottants, bien que
pr<70>vus pour une extension future, ne sont pas
n<>cessaires au param<61>trage des LDV. Imaginons que vous
deviez saisir une valeur entre 0.0 et 1.0, il vous suffit
d'indiquer comme plage de variation [0;1000] dans le <a
href="descrip.htm#fichier ini">fichier INI</a> (ce qui
vous donne tout de m<>me une pr<70>cision sup<75>rieure <20>
celle pouvant <20>tre saisie par l'interface), de convertir
le param<61>tre pass<73> par <em><strong>VISION</strong></em>
en float puis de le diviser par 1000. Il doit exister des
cas tordus o<> il devient n<>cessaire d'utiliser des
flottants mais on doit s'en sortir tr<74>s bien dans 99%
des cas !</td>
</tr>
<tr>
<td align="center" width="5%"><strong>11</strong></td>
<td width="95%">Je vous conseille, pour des
consid<69>rations de performance m<>moire, de toujours
utiliser les flags <a href="defines.htm#LDVF">LDVF_OPINPLACE</a>
et <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
Allouez la m<>moire que vous voulez dans le LDV (si vous
le pouvez...), et lib<69>rez la apr<70>s son ex<65>cution.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>12</strong></td>
<td width="95%">Si vous ne travaillez que sur les lignes
et colonnes, utilisez le flag <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
La fonction VDI vr_cpyfm par exemple est faite pour cela.
Utiliser le flag <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>
ou <a href="defines.htm#LDVF">LDVF_STDFORMAT</a>
obligerait <em><strong>VISION</strong></em> <20> vous
allouer de la m<>moire inutilement (d'autant plus que les
fonctions VDI travaillent TOUJOURS sur le format
sp<73>cifique de la machine : <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>
!)</td>
</tr>
<tr>
<td align="center" width="5%"><strong>13</strong></td>
<td width="95%">Si vous <20>tes amen<65> <20> manipuler les
indices TOS et/ou VDI, :<ul>
<li>Vous pouvez travailler par ligne ou paquet de n
lignes :<br>
Utilisez le format <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>,
et les fonctions de <a href="vapi/ra.htm">l'interface
Raster</a>. Cela minimisera la m<>moire <20>
allouer</li>
<li>Vous <20>tes oblig<69> d'avoir acc<63>s <20> n'importe
quel index <20> n'importe quel moment:<br>
Utilisez le format <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>,
et les fonctions de <a href="vapi/ra.htm">l'interface
Raster</a>. <em><strong>VISION</strong></em>
convertira l'image du format sp<73>cifique vers le
format ATARI bit-plan avant d'appeler <a
href="descrip.htm#prerun">PreRun</a> ou <a
href="descrip.htm#run">Run</a>.</li>
</ul>
</td>
</tr>
<tr>
<td align="center" width="5%"><strong>14</strong></td>
<td width="95%">M<EFBFBD>me si l'utilisateur a s<>lectionn<6E> un
bloc comme zone d'application du LDV sur l'image, vous
n'<27>tes pas limit<69> <20> la seule zone d<>finie par ce
bloc. Vous avez acc<63>s <20> toute l'image, voire m<>me plus
si vous d<>cidez de modifier sa taille (champs
out-&gt;fd_w et out-&gt;fd_h de la fonction <a
href="descrip.htm#prerun">PreRun</a>). Par contre,
n'oubliez pas de mettre <20> jour les champs x1, x2, y1 et
y2 de la structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
fournie par la fonction <a href="descrip.htm#prerun">PreRun</a>,
afin que le buffer UNDO permette de revenir en arri<72>re.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>15</strong></td>
<td width="95%">Si vous utilisez Magic Mac, vous allez
peut <20>tre avoir le probl<62>me &quot;classique&quot; du <a
href="../../download/fpupatch.lzh">FPUPATCH</a> : en
effet, la librairie PCSTDLIB.LIB du compilateur PURE C
provoque un blocage lors du lancement du programme (vrai
pour <em><strong>VISION</strong></em> et ses LDV). Il
faut donc le passer au travers de <a
href="../../download/fpupatch.lzh">FPUPATCH</a> ou encore
patcher directement le fichier PCSTDLIB.LIB.</td>
</tr>
<tr>
<td align="center" width="5%"><strong>16</strong></td>
<td width="95%">Depuis la version 4.0d de <em><strong>VISION</strong></em>,
vous pouvez obtenir des statistiques de performances
survotre LDV. Il suffit pour cela d'ins<6E>rer la ligne
ShowPerf = 1 dans la section [LDV] de VISION.INI. Apr<70>s
ex<65>cution du LDV, <em><strong>VISION</strong></em>
affichera diverses statistiques sur les temps de
traitement du LDV, vous permettant d'optimiser les
parties critiques.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="kitdev.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="vapi/index.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->03/06/01<!--webbot
bot="Timestamp" i-checksum="12434" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>7.
R E C O M M A N D A T I O N S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

View File

@@ -1,160 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Sommaire</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a href="intro.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/05/01<!--webbot
bot="Timestamp" i-checksum="12414" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</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=DocVision"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p align="left"><a href="intro.htm"><strong>1. INTRODUCTION</strong></a></p>
<p align="left"><a href="notions.htm"><strong>2. NOTIONS
ESSENTIELLES</strong></a></p>
<blockquote>
<p align="left"><a href="notions.htm#formats d'images">2.1
Les formats d'image</a></p>
<p align="left"><a href="notions.htm#prog">2.2 Programmation</a></p>
</blockquote>
<p><a href="descrip.htm"><strong>3. DESCRIPTION</strong></a></p>
<blockquote>
<p><a href="descrip.htm#capacit<69>s">3.1 Capacit<69>s du LDV</a></p>
<p><a href="descrip.htm#prerun">3.2 Fonction PreRun</a></p>
<p><a href="descrip.htm#run">3.3 Fonction Run</a></p>
<p><a href="descrip.htm#preview">3.4 Fonction Preview </a></p>
<p><a href="descrip.htm#getparams">3.5 Fonction GetParams</a></p>
<p><a href="descrip.htm#fichier ini">3.6 Le fichier INI
associ<63></a></p>
<blockquote>
<p><a href="descrip.htm#langues"><em>3.6.1 Informations
sur la langue</em></a></p>
<p><a href="descrip.htm#parametrage"><em>3.6.2
Param<61>trage du LDV</em></a></p>
</blockquote>
</blockquote>
<p><a href="defines.htm"><font size="3"><strong>4. DEFINES</strong></font></a></p>
<blockquote>
<p><a href="defines.htm#ELDV">4.1 Type de codes de retour</a></p>
<p><a href="defines.htm#ELDV">4.2 Codes de retour</a></p>
<p><a href="defines.htm#TLDV">4.3 Types de modules</a></p>
<p><a href="defines.htm#LDVF">4.4 Informations sur les
capacit<69>s</a></p>
</blockquote>
<p><a href="struct.htm"><strong>5. STRUCTURES</strong></a></p>
<blockquote>
<p><a href="struct.htm#LDV_INFOS">5.1 LDV_INFOS</a></p>
<p><a href="struct.htm#LDV_CAPS">5.2 LDV_CAPS</a></p>
<p><a href="struct.htm#LDV_IMAGE">5.3 LDV_IMAGE</a></p>
<p><a href="struct.htm#LDV_PALETTE">5.4 LDV_PALETTE</a></p>
<p><a href="struct.htm#LDV_VDIELEMENTALPAL">5.5
LDV_VDIELEMENTALPAL</a></p>
<p><a href="struct.htm#LDV_PARAMS">5.6 LDV_PARAMS</a></p>
<p><a href="struct.htm#LDV_BASICPARAM">5.7 LDV_BASICPARAM</a></p>
</blockquote>
<p><a href="kitdev.htm"><strong>6. LE KIT DE DEVELOPPEMENT</strong></a></p>
<blockquote>
<p><a href="kitdev.htm#install">6.1 Installation</a></p>
<p><a href="kitdev.htm#squelette">6.2 Squelette</a></p>
</blockquote>
<p><a href="hints.htm"><strong>7. RECOMMANDATIONS</strong></a></p>
<p><a href="vapi/index.htm"><strong>ANNEXE : VAPI</strong></a></p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a href="intro.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/05/01<!--webbot
bot="Timestamp" i-checksum="12414" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\download/dvision.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,187 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Introduction</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a
href="notions.htm"><img src="images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->16/05/01<!--webbot
bot="Timestamp" i-checksum="12425" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>1.
I N T R O D U C T I O N</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>Enfin ! Apr<70>s plusieurs ann<6E>es, <em><strong>VISION</strong></em>
devient finalement modulaire ! En gros, le but essentiel des LDV
(Librairies Dynamiques pour <em><strong>VISION</strong></em>) est
de vous permettre d'y ajouter vos propres fonctionnalit<69>s.
Typiquement, un LDV permet d'<27>largir les fonctions de <em><strong>VISION</strong></em>,
comme par exemple l'ajout d'un module de d<>formation d'image.
Voici les caract<63>ristiques des LDV:</p>
<ul>
<li>Acc<EFBFBD>s direct aux images de <em><strong>VISION</strong></em></li>
<li>Concept multi-langages (par fichier INI optionnel)</li>
<li>Gestion du UNDO (transparente pour le programmeur de LDV)</li>
<li>Support de la saisie de 4 param<61>tres par <em><strong>VISION</strong></em>
pouvant <20>tre envoy<6F>s au LDV</li>
<li>Support de la progression lors du calcul du LDV</li>
<li>Support de la pr<70>-visualisation</li>
<li>Peut agir sur une image ou un bloc <20> l'int<6E>rieur de
celle-ci</li>
<li><em><strong>VISION</strong></em> fournit une API (<a
href="vapi/index.htm">VAPI</a>) qui offre des fonctions
de manipulation d'image</li>
</ul>
<p>&nbsp;</p>
<p>Au niveau du d<>veloppement, le programmeur doit:</p>
<ul>
<li>Savoir ce qu'il veut faire !</li>
<li>D<EFBFBD>finir les capacit<69>s du LDV (nombre de plans pouvant
<20>tre trait<69>s, format d'image attendu, ...)</li>
<li>Ecrire 4 fonctions (dont 2 sont <20>crites <20> 100% par le
squelette d'un LDV !):</li>
</ul>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="20%"><a href="descrip.htm#capacit<69>s">GetLDVCapabilities</a></td>
<td width="80%">D<EFBFBD>j<EFBFBD> ecrie. Renvoie <20> <em><strong>VISION</strong></em>
ce que le LDV sait faire</td>
</tr>
<tr>
<td width="20%"><a href="descrip.htm#prerun">PreRun</a></td>
<td width="80%">A <20>crire. Demande <20> <em><strong>VISION</strong></em>
l'allocation des ressources n<>cessaires <20> la fonction
Run</td>
</tr>
<tr>
<td width="20%"><a href="descrip.htm#run">Run</a></td>
<td width="80%">A <20>crire. La fonction qui fait quelque
chose !</td>
</tr>
<tr>
<td width="20%"><a href="descrip.htm#preview">Preview</a></td>
<td width="80%">A <20>crire ou non. Identique <20> Run mais
en mode Preview, si le temps de calcul est trop grand et
que l'on peut se permettre de ne pas effectuer tous les
calculs n<>cessaires.Tr<54>s souvent on appelle Run (ce que
fait le squelette).</td>
</tr>
<tr>
<td><a href="descrip.htm#getparams">GetParams</a></td>
<td>Optionnelle. Cette fonction ne sert que si votre LDV
admet un param<61>trage particulier et/ou que les quatre
param<61>tres du formulaire de saisie de <em><strong>VISION</strong></em>
ne suffisent pas.</td>
</tr>
</table>
</center></div>
<p>Bien sur, <20>crire un LDV n<>cessite quelques notions sur les
images, leur format et la programmation. Voyez les <a
href="notions.htm">notions essentielles</a>.</p>
<p>Enfin, j'esp<73>re bien <20>tendre ce principe en proposant des
LDV de chargement et de sauvegarde d'images (voire plus...).
Cependant, <20>tant donn<6E> le temps de d<>veloppement pour inclure
ce concept dans <em><strong>VISION</strong></em>, il va falloir
que quelques personnes s'y int<6E>ressent avant que je ne me lance
dedans !</p>
<p>Les LDV s'appuient sur les LDG (Librairies Dynamiques GEM)
d<EFBFBD>velopp<EFBFBD>es par Olivier Landemarre et Dominique B<>r<EFBFBD>ziat : <a
href="http://ldg.atari.org">ldg.atari.org</a></p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a
href="notions.htm"><img src="images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->16/05/01<!--webbot
bot="Timestamp" i-checksum="12425" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>1.
I N T R O D U C T I O N</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>

View File

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

View File

@@ -1,107 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Sommaire</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="Chapitre pr<70>c<EFBFBD>dent"
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->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">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</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="Chapitre pr<70>c<EFBFBD>dent"
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="images/csom.jpg" alt="Retour au sommaire" border="0"
hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->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">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,226 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Notions essentielles</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="intro.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="descrip.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/10/00<!--webbot
bot="Timestamp" i-checksum="12214" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>2.
NOTIONS ESSENTIELLES</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><a name="formats d'images"></a><font size="4"><strong>2.1 Les
formats d'images</strong></font></p>
<p>Je ne peux pas i<>i expliquer le codage bit <20> bit des pixels
d'une image. En gros, pour les nombres de plans jusqu'<27> 8, un
pixel est associ<63> <20> un index de couleur dans une palette.Cet
index pointe donc sur la vraie couleur du pixel. A partir de 15
plans, on est en True Color, c'est <20> dire que chaque pixel est
associ<EFBFBD> <20> sa valeur de couleur (donc sur 15, 16, 24 ou 32
bits). Autant en True Color, on s'en sort assez bien, autant en
mode palette (bit-plan), cela devient rapidement complexe car
chaque pixel voit un des bits de son index cod<6F> sur un mot 16
bits. Il faudrait donc rechercher ce bit, rassembler les m<>mes
bits d'un pixel pour reconsitituer son index, etc... Cela devient
rapidement lassant et pour aller vite, cela n<>cessite des
optimisations en assembleur. Heureusement, <em><strong>VISION</strong></em>
propose des fonctions vous simplifiant le travail avec <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>.</p>
<p>Les LDV de <em><strong>VISION</strong></em> peuvent au choix
travailler dans un des 3 formats suivants (notez bien que votre
LDV n'a aucun int<6E>r<EFBFBD>t <20> g<>rer les 3 formats, <em><strong>VISION</strong></em>
lui passera le format qu'il souhaite):</p>
<ul>
<li>Format Standard</li>
<li>Format ATARI</li>
<li>Format Sp<53>cifique</li>
</ul>
<p>Ce petit tableau pr<70>cise ces diff<66>rents formats (R = Rouge,
V = Vert, B = Bleu):</p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Format</strong></td>
<td align="center" width="10%"><strong>Nombre de bits /
pixel</strong></td>
<td align="center" width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td align="center" width="15%">Standard</td>
<td align="center" width="10%">1, 2, 4, 8</td>
<td width="75%">Format standard d<>fini par ATARI. Les
plans de pixels (16 pixels) sont mis les uns <20> la suite
des autres. En True-Color, ce format existe peut <20>tre
mais j'aime autant pas le savoir !</td>
</tr>
<tr>
<td align="center" width="15%">ATARI</td>
<td align="center" width="10%">1, 2, 4, 8</td>
<td width="75%">Format bit-plan ATARI. Tr<54>s classique,
c'est le format des modes ST-Basse, ST-Moyenne et
ST-Haute, puis par extension, le format des modes
bit-plan du Falcon. Contrairement au mode Standard, les
plans sont entrelac<61>s (Plan0 - Plan1 - Plan2 - Plan 3,
par exemple pour 16 couleurs (4 bits, soit 4 plans))</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">16</td>
<td width="75%">Mode True Color du FALCON. Chaque pixel
est cod<6F> sur un mot 16 bits de la fa<66>on suivante:<br>
RRRRRVVVVV0BBBBB<br>
15 --&gt; 0 Bit #<br>
En fait le codage effectif est sur 15 ou 16 pixels. Le
niveau de vert peut <20>tre cod<6F> sur 6 bits (65K) au lieu
de 5 (32K).</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">24</td>
<td width="75%">Dommage que <em><strong>VISION</strong></em>
ne le g<>re pas !</td>
</tr>
<tr>
<td align="center" width="15%">&nbsp;</td>
<td align="center" width="10%">32</td>
<td width="75%">RVB0, R, V, B = composante rouge,verte ou
bleue sur 8 bits (0...255)</td>
</tr>
<tr>
<td align="center" width="15%">Sp<EFBFBD>cifique</td>
<td align="center" width="10%">1, 2, 4, 8, 16, 24, 32</td>
<td width="75%">Sp<EFBFBD>cifique <20> la carte graphique. Aucune
hypoth<74>se sur le codage des bits d'un pixel ne peut
<20>tre faite.</td>
</tr>
</table>
</center></div>
<p>Privil<EFBFBD>giez au maximum le format sp<73>cifique car c'est le
plus <20>conome en m<>moire. Si votre LDV ne doit manipuler que des
lignes et des colonnes, vous n'avez pas <20> vous soucier du codage
interne des pixels, les fonctions VDI vro_... s'en chargent.</p>
<p>Si vous devez manipuler des pixels, je vous conseille
d'utiliser le format ATARI car <em><strong>VISION</strong></em>
vous permet de r<>cup<75>rer facilement les index au travers de <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>.</p>
<p>Le format standard ne sert pas <20> grand chose, si ce n'est en
interne <20> <em><strong>VISION</strong></em> pour afficher les
images correctement. Donc, <20> moins que vous n'ayez d<>velopp<70>
des routines <20>quivalentes <20> celles propos<6F>es dans <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>, je vous
d<EFBFBD>conseille l'utilisation de ce format.</p>
<p>&nbsp;</p>
<p><a name="prog"></a><font size="4"><strong>2.2 Programmation</strong></font></p>
<p>Vous devez savoir programmer en C ! Les LDV ne d<>pendent pas
<EFBFBD> priori du compilateur (j'ai fait au mieux mais comme je
n'utilise que Pure C, je ne peux pas <20>tre cat<61>gorique).</p>
<p>Vous devez <20>tre <20> l'aise en C et ne pas <20>tre effray<61> par
la manipulation des pointeurs sur les structures et fonctions.</p>
<p>Si vous connaisez les LDG, ce sera utile mais pas obligatoire,
le squelette de LDV les cachent assez bien.</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="intro.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="descrip.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->01/10/00<!--webbot
bot="Timestamp" i-checksum="12214" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>2.
NOTIONS ESSENTIELLES</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,496 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Structures</title>
</head>
<body background="images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="defines.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="kitdev.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->16/05/01<!--webbot
bot="Timestamp" i-checksum="12425" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>5.
S T R U C T U R E S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p>.<a name="LDV_INFOS"></a><font size="4"><strong>5.1 LDV_INFOS</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
short StrSize ;
short Type ;
char Authors[1+45] ;
LDV_CAPS Caps[10] ;
char RFU[16] ;
}
LDV_INFOS ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">StrSize</td>
<td align="center" width="15%">short</td>
<td width="75%">Taille de la structure LDV_INFOS. Doit
<20>tre initialis<69> <20> sizeof(LDV_INFOS). Le but de ce
champ est de permettre <20> <em><strong>VISION</strong></em>
de ne pas exploser ses donn<6E>es internes si la taille de
cette structure est amen<65>e <20> changer.</td>
</tr>
<tr>
<td align="center" width="10%">Type</td>
<td align="center" width="15%">short</td>
<td width="75%">Doit valoir <a href="defines.htm#TLDV">TLDV_MODIFYIMG</a>,
<a href="defines.htm#TLDV">TLDV_LOADIMG</a> ou <a
href="defines.htm#TLDV">TLDV_SAVEIMG</a>, voire plus <20>
venir. Actuellement, seul le type <a
href="defines.htm#TLDV">TLDV_MODIFYIMG</a> est accept<70>
par <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td align="center" width="10%">Authors</td>
<td align="center" width="15%">char[1+45]</td>
<td width="75%">Noms du ou des auteurs. 45 caract<63>res
sont disponibles <20> cet effet.</td>
</tr>
<tr>
<td align="center" width="10%">Caps</td>
<td align="center" width="15%"><a href="#LDV_CAPS">LDV_CAPS</a>[10]</td>
<td width="75%">Tableau d<>crivant les capacit<69>s du LDV
pour chaque nombre de plans. Au maximum le LDV peut
g<>rer 9 nombres de plans diff<66>rents car le tableau de
structures doit se terminer par une struture avec des
champs initialis<69>s <20> z<>ro.</td>
</tr>
<tr>
<td align="center" width="10%">RFU</td>
<td align="center" width="15%">char[16]</td>
<td width="75%">Pour usage futur. Ne pas toucher !</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_CAPS"></a><font size="4"><strong>5.2 LDV_CAPS</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
char NbPlanes ;
char NbPlanesOut ;
unsigned long Flags ;
}
LDV_CAPS ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">NbPlanes</td>
<td align="center" width="15%">char</td>
<td width="75%">Nombre de plans pour cette capacit<69> (1,
2, 4, 8 , 16, 24 (non g<>r<EFBFBD>), 32)</td>
</tr>
<tr>
<td align="center" width="10%">NbPlanesOut</td>
<td align="center" width="15%">char</td>
<td width="75%">Nombre de plans en sortie pour cette
capacit<69>. Pour un LDV de type <a href="defines.htm#TLDV">TLDV_MODIFYIMG</a>,
ce champ doit <20>galer NbPlanes</td>
</tr>
<tr>
<td align="center" width="10%">Flags</td>
<td align="center" width="15%">unsigned long</td>
<td width="75%">Combinaison (symbole |) des masques
suivants:<ul>
<li><a href="defines.htm#LDVF">LDVF_STDFORMAT</a> :
le LDV accepte le format standard</li>
<li><a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a> :
le LDV accepte le format ATARI</li>
<li><a href="defines.htm#LDVF">LDVF_SPECFORMAT</a> :
le LDV accepte le format sp<73>cifique de la carte
graphique</li>
<li><a href="defines.htm#LDVF">LDVF_SUPPORTPREVIEW</a>
: le LDV fournit la fonction Preview (fortement
conseill<6C> m<>me si elle ne fait qu'appeller Run)</li>
<li><a href="defines.htm#LDVF">LDVF_AFFECTPALETTE</a>
: le LDV modifie la palette (NbPlanes doit <20>tre
inf<6E>rieur ou <20>gal <20> 8)</li>
<li><a href="defines.htm#LDVF">LDVF_SUPPORTPROG</a> :
le LDV appellera la fonction <a
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de
l'interface <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>
(conseill<6C> si le traitement dure plus de 2
secondes)</li>
<li><a href="defines.htm#LDVF">LDVF_OPINPLACE</a> :
le LDV sait travailler sur l'image source, sans
que <em><strong>VISION</strong></em> alloue la
destination (on dit que la transformation se fait
sur place). En ce cas, le param<61>tre out de la
fonction Run est le m<>me que in. Dans la mesure
du possible, utilisez ce flag, cela <20>conomise de
la m<>moire.</li>
<li><a href="defines.htm#LDVF">LDVF_REALTIMEPARAMS</a>
: le LDV effectue assez rapidement la fonction
Preview (image petite affich<63>e par la boite de
dialogue de <em><strong>VISION</strong></em>),
pour que la modification des param<61>tres du LDV
par les ascenseurs soit suffisamment fluide (au
moins 1 image par seconde)</li>
<li><a href="defines.htm#LDVF">LDVF_SUPPORTCANCEL</a>
: la fonction <a href="descrip.htm#run">Run</a>
peut <20>tre annul<75>e par l'utilisateur (<28>
utiliser conjointement avec la fonction <a
href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a> de
l'interface <a href="vapi/pr.htm">Progress</a> de
<a href="vapi/index.htm">VAPI</a>)</li>
</ul>
</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_IMAGE"></a><font size="4"><strong>5.3 LDV_IMAGE</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
short RasterFormat ;
MFDB Raster ;
LDV_PALETTE Palette ; /* Structure fournie si Raster.fd_nplanes &lt;= 8 */
}
LDV_IMAGE ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">RasterFormat</td>
<td align="center" width="15%">short</td>
<td width="75%"><a href="defines.htm#LDVF">LDVF_STDFORMAT</a>,
<a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a> ou <a
href="defines.htm#LDVF">LDVF_SPECFORMAT</a></td>
</tr>
<tr>
<td align="center" width="10%">Raster</td>
<td align="center" width="15%">MFDB</td>
<td width="75%">Le MFDB classique ATARI d<>crivant les
donn<6E>es de l'image (hors palette)</td>
</tr>
<tr>
<td align="center" width="10%">Palette</td>
<td align="center" width="15%"><a href="#LDV_PALETTE">LDV_PALETTE</a></td>
<td width="75%">Pointeur sur une structure <a
href="#LDV_PALETTE">LDV_PALETTE</a> d<>crivant la palette
assoic<69>e <20> l'image si le nombre de bits est inf<6E>rieur
ou <20>gal <20> 8.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_PALETTE"></a><font size="4"><strong>5.4
LDV_PALETTE</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
short NbColors ;
VDI_ELEMENTPAL* Pal ;
}
LDV_PALETTE ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">NbColors</td>
<td align="center" width="15%">short</td>
<td width="75%">Le nombre d'<27>l<EFBFBD>ments dans le tableau
point<6E> par Palette (soit 2, 4, 16 ou 256 couleurs)</td>
</tr>
<tr>
<td align="center" width="10%">Pal</td>
<td align="center" width="15%"><a
href="#LDV_VDIELEMENTALPAL">VDI_ELEMENTALPAL</a> *</td>
<td width="75%">Pointeur sur un tableau de NbColors
<20>l<EFBFBD>ments de type VDI_ELEMENTPAL. La palette propos<6F>e
est index<65>e sur les indices VDI (ceux utilis<69>s par les
fonctions VDI comme le trac<61> d'une ligne) et non TOS
(ceux que vous r<>cup<75>rerez par les fonctions raster de <a
href="vapi/index.htm#Pr<50>sentation">VAPI</a>).
Heureusement, <a href="vapi/index.htm#Pr<50>sentation">VAPI</a>
propose des fonctions pour transformer les indices VDI en
indices TOS et vice-versa.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_VDIELEMENTALPAL"></a><font size="4"><strong>5.5
VDI_ELEMENTALPAL</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
short Red ;
short Green ;
short Blue ;
}
VDI_ELEMENTPAL ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">Red</td>
<td align="center" width="15%">short</td>
<td width="75%">Composante <font color="#FF0000">Rouge</font>
de l'index VDI de la palette (0 &lt;= index &lt;= 1000)</td>
</tr>
<tr>
<td align="center">Green</td>
<td align="center">short</td>
<td>Composante <font color="#00FF00">Verte</font> de
l'index VDI de la palette (0 &lt;= index &lt;= 1000)</td>
</tr>
<tr>
<td align="center">Blue</td>
<td align="center">short</td>
<td>Composante <font color="#0000FF">Bleue</font> de
l'index VDI de la palette (0 &lt;= index &lt;= 1000)</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_PARAMS"></a><font size="4"><strong>5.6 LDV_PARAMS</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
short x1, y1, x2, y2 ;
short NbParams ;
LDV_BASICPARAM Param[LDVNBMAX_PARAMETERS] ;
void* UserParam ;
}
LDV_PARAMS ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">x1</td>
<td align="center" width="15%">short</td>
<td width="75%">Position X du bord haut-gauche du
rectangle <20> traiter (0 si image enti<74>re)</td>
</tr>
<tr>
<td align="center">y1</td>
<td align="center">short</td>
<td>Position Y du bord haut-gauche du rectangle <20>
traiter (0 si image enti<74>re)</td>
</tr>
<tr>
<td align="center">x2</td>
<td align="center">short</td>
<td>Position X du bord bas-droit du rectangle <20> traiter
(largeur image - 1 si image enti<74>re)</td>
</tr>
<tr>
<td align="center">y2</td>
<td align="center">short</td>
<td>Position Y du bord bas-droit du rectangle <20> traiter
(hauteur image - 1 si image enti<74>re)</td>
</tr>
<tr>
<td align="center">NbParams</td>
<td align="center">short</td>
<td>Nombre de param<61>tres valides dans le tableau Param</td>
</tr>
<tr>
<td align="center">Param</td>
<td align="center"><a href="#LDV_BASICPARAM">LDV_BASICPARAM</a></td>
<td>Tableau contenant les param<61>tres saisis depuis
l'interface de <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td align="center">UserParam</td>
<td align="center">void *</td>
<td>Si votre LDV a besoin de stocker des donn<6E>es
suppl<70>mentaires lors d'un appel <20> <a
href="descrip.htm#getparams">GetParams</a>, ce pointeur
peut <20>tre utilis<69> pour <20>a. Par exemple si votre LDV
prend en pararm<72>tre un tableau de matrice 4x4, c'est
clair que la structure &quot;de base&quot; LDV_PARAMS ne
peut convenir. Il vous suffit alors de faire pointer
UserParam sur votre matrice lors de l'appel <20> <a
href="descrip.htm#getparams">GetParams</a>, vous
retrouverez cette m<>me valeur lorsque <em><strong>VISION</strong></em>
appellera la fonction <a href="descrip.htm#run">Run</a>.
Vous pouvez m<>me d<>cider d'allouer dynamiquement la
structure qui vous convient lors de l'appel <20> <a
href="descrip.htm#getparams">GetParams</a>, puis de
l'utiliser (et de la lib<69>rer...) lors de l'appel <20> <a
href="descrip.htm#run">Run</a>.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="LDV_BASICPARAM"></a><font size="4"><strong>5.7
LDV_BASICPARAM (UNION)</strong></font></p>
<pre><font size="4"><strong>typedef union
{
short s ;
float f ;
}
LDV_BASICPARAM ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="10%"><strong>Champ</strong></td>
<td align="center" width="15%"><strong>Type</strong></td>
<td align="center" width="75%"><strong>Remarques</strong></td>
</tr>
<tr>
<td align="center" width="10%">s</td>
<td align="center" width="15%">short</td>
<td width="75%">Valeur du param<61>tre (si ce param<61>tre,
d<>fini dans le <a href="descrip.htm#fichier ini">.INI
associ<63></a> est de type entier)</td>
</tr>
<tr>
<td align="center">f</td>
<td align="center">float</td>
<td>Valeur du param<61>tre (si ce param<61>tre, d<>fini dans
le <a href="descrip.htm#fichier ini">.INI associ<63></a>
est de type float). Actuellement le type float n'est pas
g<>r<EFBFBD> et <20>tant donn<6E> que les compilateurs peuvent ne
pas coder les float suivant le m<>me format, je vous
recommande fortement d'utiliser le type short.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="defines.htm"><img
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="kitdev.htm"><img
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icoprinc.gif" width="59"
height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(LDV)</strong></em></font></p>
</td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="images/icointro.gif" width="59"
height="71"></p>
</td>
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->16/05/01<!--webbot
bot="Timestamp" i-checksum="12425" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
T R U C T U R E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,248 +0,0 @@
<!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 :&nbsp;18/03/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">Co</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%">Ensemble de fonctions permettant
d'acc<63>der <20> la configuration de <em><strong>VISION</strong></em>
(chemins, langues, ...)</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>Param<EFBFBD>tres</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Un pointeur sur la chaine contenant le
chemin des LDV</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de connaitre le r<>pertoire de
stockage des LDV. Cela permet par exemple de charger un
fichier depuis le LDV (fichier de code DSP, fichier INI,
...). Ce chemin est <20>galement pass<73> en param<61>tre <20> la
fonction <a href="../descrip.htm#getparams">GetParams</a>
(optionnelle).</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%"><a href="index.htm">VAPI</a> vous
retourne un pointeur sur la configuration de <em><strong>VISION</strong></em>.
Vous ne <strong>DEVEZ PAS</strong> modifier les donn<6E>es
accessibles par ce pointeur, si vous en avez besoin,
faites une copie !</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Un pointeur sur la chaine contenant la
langue actuellement utilis<69>e par <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de connaitre la langue courante.
utilis<69> avec <a href="#CoGetLDVPath">CoGetLDVPath</a>,
cela permet de rep<65>rer le fichier INI associ<63> <20> ce LDV
pour cette langue, il suffit de concat<61>ner ces 2
cha<68>nes.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%"><a href="index.htm">VAPI</a> vous
retourne un pointeur sur la configuration de <em><strong>VISION</strong></em>.
Vous ne <strong>DEVEZ PAS</strong> modifier les donn<6E>es
accessibles par ce pointeur, si vous en avez besoin,
faites une copie !</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%">Pointeur sur la fonction <a href="index.htm">VAPI</a> dont on veut connaitre les
optimisations et si celles-ci seront utilis<69>es</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Un mot long dont les bits ont les
significations suivantes:<br>
Bit 0 positionn<6E> : Cette fonction poss<73>de une
optimisation en code 68030<br>
Bit 1 positionn<6E> : Cette fonction poss<73>de une
optimisation en code DSP 56001</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de savoir si une fonction poss<73>de
les optimisations sp<73>ciales afin de pouvoir l'indiquer
dans la fen<65>tre de progression (voir la fonction de <a href="pr.htm">l'interface Progress</a> : <a href="pr.htm#PrOptimize">PrOptimize</a>). Ce n'est pas
super utile mais <20>a en jette !</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si la machine sur laquelle cet appel est
effectu<74> ne poss<73>de pas le processeur ou le DSP en
question, la fonction retournera qu'elle ne poss<73>de pas
cette optimisation, c'est un peu logique puisque qu'elle
ne risque pas d'<27>tre utilis<69>e...</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%">Demande <20> <span style="font-style: italic; font-weight: bold;">VISION</span> quels processeurs sont <20> disposition</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Un mot long dont le masque de bits a les
significations suivantes:<br>0x02 : Un 68030 ou mieux est pr<70>sent<br>0x20 : Un FPU (68881 ou mieux) ou mieux est pr<70>sent<br>0x200: Un DSP 56001 est pr<70>sent</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de pr<70>parer le LDV <20> utiliser ses routines sp<73>cifiques selon les processeurs disponibles.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Le masque remont<6E> peut <20>tre filtr<74> par <span style="font-style: italic; font-weight: bold;">VISION</span>
si dans le fichier VISION.INI les variables Hide030, HideFPU ou HideDSP
sont position<6F>es <20> 1 Cela est pratique pour simuler le fonctionement du
LDV sur un hardware diff<66>rent.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.04 ou sup<75>rieure</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 : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->18/03/18<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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

@@ -1,379 +0,0 @@
<!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">Derni<EFBFBD>re
mise <20> jour : 19/05/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>INI
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>R<EFBFBD>sum<EFBFBD></strong></td>
</tr>
<tr>
<td width="15%"><strong>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">In</td>
</tr>
<tr>
<td width="15%"><strong>Nombre de fonctions</strong></td>
<td width="85%">6</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Ensemble de fonctions permettant de
manipuler des fichiers au format INI. Le nombre de
fichiers INI pouvant <20>tre g<>r<EFBFBD>s sumultan<61>ment est de
3.</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> file : Nom du
fichier INI </td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Si &gt;= 0 : un identifiant de fichier
INI<br>
Si &lt; 0, il n'y a plus d'identifiant INI disponible
(les 3 sont d<>j<EFBFBD> utilis<69>s)</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">R<EFBFBD>serve un identifiant INI en vue
d'op<6F>rations sur un fichier INI. Si le fichier file
n'existe pas, un identifiant est tout de m<>me renvoy<6F>,
le fichier devra ensuite <20>tre sauv<75> par la fonction <a href="#InSaveAndClose">InSaveAndClose</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> hini : un
identifiant de fichier INI pr<70>c<EFBFBD>demment renvoy<6F> par <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : Succ<63>s<br>
-1 : Identifiant invalide</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Lib<EFBFBD>re l'identifiant de fichier INI. Ne
sauve pas les modifications, pour cela utiliser <a href="#InSaveAndClose">InSaveAndClose</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> hini : un
identifiant de fichier INI pr<70>c<EFBFBD>demment renvoy<6F> par <a href="#InOpen">InOpen</a><br>
<strong>[IN]</strong> new_name : nouveau nom de
sauvegarde. NULL si inchang<6E> par rapport <20> l'appel <20> <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : Succ<63>s<br>
-1 : Identifiant invalide ou sauvegarde impossible</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">G<EFBFBD>n<EFBFBD>re un fichier INI en validant
d<>finitivement toutes les modifications apport<72>es
depuis l'appel <20> <a href="#InOpen">InOpen</a></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> hini : un
identifiant de fichier INI pr<70>c<EFBFBD>demment renvoy<6F> par <a href="#InOpen">InOpen</a><br>
<strong>[IN]</strong> section : nom de la section<br>
<strong>[IN] </strong>key : nom de la cl<63><br>
<strong>[OUT]</strong> val_key : buffer destin<69> <20>
recevoir la valeur de la cl<63> en ASCII</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : Echec : la cl<63> ou la section n'ont
pas <20>t<EFBFBD> trouv<75>es<br>
1 : Succ<63>s, la valeur ASCII de la cl<63> de cette section
est pr<70>sente dans val_key</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Recherche une cl<63> particuli<6C>re dans une
section particuli<6C>re</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> hini : un
identifiant de fichier INI pr<70>c<EFBFBD>demment renvoy<6F> par <a href="#InOpen">InOpen</a><br>
<strong>[IN]</strong> section : nom de la section<br>
<strong>[IN] </strong>key : nom de la cl<63><br>
<strong>[IN] </strong>val_key : buffer contenant la
valeur de la cl<63> en ASCII</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : Echec : la cl<63> ou la section n'ont
pas pu <20>tre cr<63>es ou modifi<66>es par manque de m<>moire<br>
1 : Succ<63>s</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Ajoute ou modifie une section et/ou une
cl<63></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si la section ou la cl<63> nexiste pas,
elle est cr<63>e</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> hini : un
identifiant de fichier INI pr<70>c<EFBFBD>demment renvoy<6F> par <a href="#InOpen">InOpen</a><br>
<strong>[IN]</strong> section : nom de la section<br>
<strong>[IN] </strong>key : nom de la cl<63><br>
<strong>[IN/OUT] </strong>val_key : buffer contenant la
valeur par d<>faut de la cl<63> en ASCII (<strong>[IN]</strong>)
et/ou la valeur lue de la cl<63> (<strong>[OUT]</strong>)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : La cl<63> a <20>t<EFBFBD> relue avec succ<63>s<br>
1 : La cl<63> a du <20>tre cr<63>ee.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de retrouver la valeur d'une cl<63>
dans une section et, si cette cl<63> ou cette section
n'existe pas de la mettre en place avec une valeur par
d<>faut.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Tr<EFBFBD>s pratique !</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</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="InGetKeyFromFile"></a><strong>Prototype</strong></td>
<td width="85%">long cdecl <strong>InGetKeyFromFile</strong>(char *file, char *section, char *key, char *val_key)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> file : Nom du
fichier INI<a href="in.htm#InOpen"></a><br>
<strong>[IN]</strong> section : nom de la section<br>
<strong>[IN] </strong>key : nom de la cl<63><br>
<strong>[IN/OUT] </strong>val_key : buffer contenant la
valeur par d<>faut de la cl<63> en ASCII (<strong>[IN]</strong>)
et/ou la valeur lue de la cl<63> (<strong>[OUT]</strong>)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : La cl<63> n'a pu <20>tre retrouv<75>e (fichier/section/cl<63> inexistant)<br>
1 : La cl<63> a <20>t<EFBFBD> relue avec succ<63>s.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet
de retrouver la valeur d'une cl<63> dans une section directement sans
cr<EFBFBD>rer la cl<63> comme dans la fonction pr<70>c<EFBFBD>dente (pratique pour juste
relire une valeur ponctuellement)</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Tr<EFBFBD>s pratique !</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.04 ou sup<75>rieure</td>
</tr>
</tbody></table>
</center></div>
<font size="3"><br></font><pre><font size="3">Exemple d'utilisation: retrouver une cl<63> propri<72>taire dans un LDV<br>long hini, must_save ;<br>short angle = 90; </font><font color="#000080" size="3"><em>/* Valeur par d<>faut */</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">/* R<>cup<75>re le chemin courant des LDV */</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">/* R<>cup<75>re la langue actuelle */</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>/* Mise en place de la valeur par d<>faut */</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>/* Soit angle vaudra 90 (valeur par d<>faut), soit la valeur donn<6E>e par le fichier INI */</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>/* Sauvegarde si la cl<63> n'existait pas */</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>/* Fermeture normale sinon */</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">Derni<EFBFBD>re
mise <20> jour : 19/05/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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

@@ -1,177 +0,0 @@
<!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) : Pr<50>sentation</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="Retour au sommaire" border="0" height="26" hspace="2" width="26"></a><a href="pr.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 : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->18/03/18<!--webbot
bot="Timestamp" i-checksum="12442" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><a href="http://www.estat.com/getstats?serial=1390118421">&nbsp;</a>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</tbody></table>
</center></div>
<hr>
<p><a name="Pr<50>sentation"></a><font size="4"><strong>1.
Pr<EFBFBD>sentation</strong></font></p>
<p>VAPI (<em><strong>VISION's</strong></em> Application
Programmer Interface) est une partie de <em><strong>VISION</strong></em>
destin<EFBFBD>e <20> vous aider dans le d<>veloppement des LDV. Vous
devez bien vous douter qu'en interne <em><strong>VISION</strong></em>
utilise un tas de fonctions permettant la gestion des images
(conversions bit-plan &lt;--&gt; index TOS/VDI, manipulation de
rasters,...) ainsi que des fonctions d'interface utilisateur
(fen<65>tres de progression par exemple).<br>
L'id<69>e de VAPI est de rendre disponible aux LDV ces fonctions
jusqu'i<>i r<>serv<72>es au fonctionnement interne de <em><strong>VISION</strong></em>.
Pour un LDV, l'int<6E>r<EFBFBD>t est double:</p>
<ul>
<li>Son auteur <20>vite de re-d<>velopper des fonctions d<>j<EFBFBD>
existantes</li>
<li>Le LDV s'en trouve plus l<>ger</li>
</ul>
<p>Bien entendu, <em><strong>VISION</strong></em> dispose de
pleins de fonctions (plus ou moins ais<69>es et <20>l<EFBFBD>gantes...), il
s'agit donc de faire un choix pour savoir lesquelles exporter.
D'autant plus que l'on peut imaginer que <font size="3"><em><strong>VISION</strong></em></font>
exporte aussi ses donn<6E>es comme le catalogue, le Browser
d'images, etc...<br>
Etant donn<6E> que cela prend quand m<>me pas mal de temps <20>
concervoir et <20> r<>aliser, je ferais en sorte que <em><strong>VISION</strong></em>
exporte tout d'abord quelques fonctions
"<22>l<EFBFBD>mentaires", puis, si le succ<63>s grandit, d'autres
viendront.</p>
<p>&nbsp;</p>
<p><a name="dev-kit"></a><font size="4"><strong>2. Kit de
d<EFBFBD>veloppement</strong></font></p>
<p>Le kit de d<>veloppement VAPI est identique <20> celui des LDV.
Vous le trouverez <a href="../kitdev.htm">ici</a>.</p>
<p>&nbsp;</p>
<p><a name="use"></a><font size="4"><strong>3. Utilisation</strong></font></p>
<p>Utiliser VAPI depuis un LDV est tr<74>s simple : lorsque <em><strong>VISION</strong></em>
appelle la fonction <a href="../descrip.htm#capacit%E9s">GetLDVCapabilities</a>
du LDV, il vous fournit un pointeur sur une structure de type <a href="struct.htm#VAPI">VAPI</a>. Sans entrer dans le d<>tail,
cette structure rassemble les informations suivantes:</p>
<ul>
<li>Un ent<6E>te de type <a href="struct.htm#VAPI_HEADER">VAPI_HEADER</a></li>
<li>Une liste de fonctions "en vrac". Ces fonctions
sont en fait rassembl<62>es par groupe (<28>galement appel<65>e
interface). Chaque groupe <20>tant termin<69> par une zone
m<>moire non utilis<69>e destin<69>e <20> recevoir d'autres
fonctions du m<>me groupe. Si de nouveaux groupes sont
cr<63>es, ils viendront <20> la fin de cette structure afin
de garantir la compatibilit<69> ascendante.</li>
</ul>
<p>Maintenant, pour utiliser une fonction de VAPI, c'est tr<74>s
simple, imaginez que vous vouliez initialiser le raster image
destination fourni pass<73> en param<61>tre dans la fonction Run,
avec la couleur blanche (en bit-plans ou True Color), il vous
suffit d'ins<6E>rer la ligne suivante:</p>
<p><strong>Vapi-&gt;RaImgWhite( &amp;out-&gt;Raster ) ;</strong></p>
<p>Cela suppose uniquement que vous avez r<>cup<75>r<EFBFBD> le pointeur
Vapi fourni par <em><strong>VISION</strong></em> au travers de <a href="../descrip.htm#capacit%E9s">GetLDVCapabilities</a>
(automatiquement fait par le squelette).</p>
<p>La liste de toutes des fonctions d<>finies par l'interface
VAPI sont disponibles ici. D<>sol<6F>, mais toutes les interfaces
et les noms de fonctions poss<73>dent des noms en anglais !</p>
<p>&nbsp;</p>
<p><a name="interfaces"></a><font size="4"><strong>4. Interfaces
disponibles</strong></font></p>
<p><font size="3">Les interfaces regroupent des fonctions du
m<EFBFBD>me centre d'int<6E>r<EFBFBD>t. Voici la liste (que j'esp<73>re
non-exhaustive) des interfaces actuelles:</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>
<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="Retour au sommaire" border="0" height="26" hspace="2" width="26"></a><a href="pr.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 : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->18/03/18<!--webbot
bot="Timestamp" i-checksum="12442" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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

@@ -1,160 +0,0 @@
<!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">Derni<EFBFBD>re
mise <20> jour : 26/08/18</p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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>R<EFBFBD>sum<EFBFBD></strong></td>
</tr>
<tr>
<td width="15%"><strong>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">Lo</td>
</tr>
<tr>
<td width="15%"><strong>Nombre de fonctions</strong></td>
<td width="85%">2</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Ensemble de fonctions permettant
d'envoyer des informations <20> un fichier de logging</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>Param<EFBFBD>tres</strong></td>
<td width="85%">level:
bitmask composant le niveau de logging du message: LL_FATAL, LL_ERROR,
LL_WARNING, LL_INFO, LL_PERF, LL_MEM, LL_GW2, LL_GW1, LL_DEBUG,LL_KCODE,&nbsp; LL_TMP2, LL_TMP1<br>format: chaine de formatage des donne<6E>s pass<73>es ensuite (identique <20> format de sprintf)<br>...: liste dynamique des param<61>tres <20> passer (cf. <a href="https://en.wikipedia.org/wiki/Ellipsis_%28computer_programming%29">'C' ellipsis</a>)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Nombre d'octets <20>crits dans le fichier de logging</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet
d'envoyer un message vers le fichier de logging typiquement <20> des fins
de debug, d'informations de performance ou d'erreur.<br>Notez que si le param<61>tre level n'est pas dans le bitmask en cours pour le logging <span style="font-weight: bold; font-style: italic;">VISION</span><span style="font-style: italic;"> (</span>voir
fonction suivante), cette fonction retournera tout de suite sans
proc<EFBFBD>der <20> un formatage style printf qui pourrait s'av<61>rer couteux en temps
CPU.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%"><a href="index.htm"></a>Exemple d'utilisation:<br>Vapi-&gt;LoDoLog(LL_DEBUG, "%ld pixels computed or deduced", np) ;<br></td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.04 ou sup<75>rieure</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>Param<EFBFBD>tres</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Le bitmask de valeurs LL_... actuellement utilis<69> par <em><strong>VISION</strong></em></td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet
de connaitre le niveau de logging actuel afin de ne pas effectuer de
calcul inutile si le niveau en cours implique que le prochain appel <20>
LoDoLog n'<27>crira rien dans le fichier de logging.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">N'utilisez
cette fonction que si vous avez des calculs un peu lourd <20> effectuer
avant d'appeler LoDoLog. LoDoLog ne fera pas de formatage inutile si le
niveau de logging est insuffisant pour g<>n<EFBFBD>rer un message quelconque
dans le fichier de logging.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.04 ou sup<75>rieure</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"><br></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a href="..%5C..%5C..%5Cdownload/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</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

@@ -1,276 +0,0 @@
<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%">
<tr>
<td align="center" width="17%"><a href="in.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="32"
height="27"></a><a href="struct.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>MEM
INTERFACE</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>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" colspan="2"><strong>R<EFBFBD>sum<EFBFBD></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%">Ensemble de fonctions permettant de
manipuler des zones m<>moires, plut<75>t orient<6E> image.</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointeur sur
la zone m<>moire <20> <20>crire<br>
<strong>[IN]</strong> src : Pointeur sur la zone m<>moire
<20> recopier<br>
<strong>[OUT]</strong> nb_elems_dst : Nombre d'<27>l<EFBFBD>ments
8 bits contenus dans la zone de destination<br>
<strong>[IN]</strong> nb_elems_src : Nombre d'<27>l<EFBFBD>ments
8 bits contenus dans la zone <20> recopier</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Recopie une zone m<>moire constitu<74>e
d'elements 8 bits en respectant le facteur d'<27>chelle
donn<6E> par le nombre d'<27>l<EFBFBD>ments de chaque zone. Tr<54>s
pratique pour effectuer des changements d'echelle sur une
ligne. Ne g<>re pas le chevauchement des zones source et
destination.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Bien que le nombre d'<27>l<EFBFBD>ments soit
cod<6F> sur un entier 32 bits, ce nombre d'<27>l<EFBFBD>ments ne
doit pas d<>passer 65535 pour des raisons d'optimisation
interne sur le facteur d'<27>chelle. Si un CPU 030 ou
sup<75>rieur est d<>tect<63>, <em><strong>VISION</strong></em>
utilise automatiquement une routine plus optimis<69>e.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointeur sur
la zone m<>moire <20> <20>crire<br>
<strong>[IN]</strong> src : Pointeur sur la zone m<>moire
<20> recopier<br>
<strong>[OUT]</strong> nb_elems_dst : Nombre d'<27>l<EFBFBD>ments
16 bits contenus dans la zone de destination<br>
<strong>[IN]</strong> nb_elems_src : Nombre d'<27>l<EFBFBD>ments
16 bits contenus dans la zone <20> recopier</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Recopie une zone m<>moire constitu<74>e
d'elements 16 bits en respectant le facteur d'<27>chelle
donn<6E> par le nombre d'<27>l<EFBFBD>ments de chaque zone. Tr<54>s
pratique pour effectuer des changements d'echelle sur une
ligne. Ne g<>re pas le chevauchement des zones source et
destination.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Bien que le nombre d'<27>l<EFBFBD>ments soit
cod<6F> sur un entier 32 bits, ce nombre d'<27>l<EFBFBD>ments ne
doit pas d<>passer 32767 pour des raisons d'optimisation
interne sur le facteur d'<27>chelle. Si un CPU 030 ou
sup<75>rieur est d<>tect<63>, <em><strong>VISION</strong></em>
utilise automatiquement une routine plus optimis<69>e.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[OUT]</strong> dst : Pointeur sur
la zone m<>moire <20> <20>crire<br>
<strong>[IN]</strong> src : Pointeur sur la zone m<>moire
<20> recopier<br>
<strong>[OUT]</strong> nb_elems_dst : Nombre d'<27>l<EFBFBD>ments
32 bits contenus dans la zone de destination<br>
<strong>[IN]</strong> nb_elems_src : Nombre d'<27>l<EFBFBD>ments
32 bits contenus dans la zone <20> recopier</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Recopie une zone m<>moire constitu<74>e
d'elements 32 bits en respectant le facteur d'<27>chelle
donn<6E> par le nombre d'<27>l<EFBFBD>ments de chaque zone. Tr<54>s
pratique pour effectuer des changements d'echelle sur une
ligne. Ne g<>re pas le chevauchement des zones source et
destination.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Bien que le nombre d'<27>l<EFBFBD>ments soit
cod<6F> sur un entier 32 bits, ce nombre d'<27>l<EFBFBD>ments ne
doit pas d<>passer 16383 pour des raisons d'optimisation
interne sur le facteur d'<27>chelle. Si un CPU 030 ou
sup<75>rieur est d<>tect<63>, <em><strong>VISION</strong></em>
utilise automatiquement une routine plus optimis<69>e.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="in.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="struct.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>MEM
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,107 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Documentation VISION (LDV) : Sommaire</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="Chapitre pr<70>c<EFBFBD>dent"
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="../images/csom.jpg" alt="Retour au sommaire"
border="0" hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="../images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--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">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</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="Chapitre pr<70>c<EFBFBD>dent"
hspace="2" width="46" height="26"><a href="sommaire.htm"><img
src="../images/csom.jpg" alt="Retour au sommaire"
border="0" hspace="2" width="26" height="26"></a><a
href="preambule.htm"><img src="../images/csuiv.jpg"
alt="Chapitre suivant" border="0" hspace="2" width="43"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--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">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
O M M A I R E</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,290 +0,0 @@
<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) : Progress Interface</title>
</head>
<body background="../images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="ra.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>PROGRESS
INTERFACE</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>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" colspan="2"><strong>R<EFBFBD>sum<EFBFBD></strong></td>
</tr>
<tr>
<td width="15%"><strong>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">Pr</td>
</tr>
<tr>
<td width="15%"><strong>Nombre de fonctions</strong></td>
<td width="85%">4</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Ensemble de fonctions permettant d'agir
sur les fen<65>tres de progression de <em><strong>VISION</strong></em>
afin de pr<70>venir l'utilisateur de la progression du
travail</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> pc : pourcentage de
travail accompli (0...100)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Met <20> jour l'indicateur de pourcentage
de la fen<65>tre de progression</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si le param<61>tre pc est hors limite, il
sera ramen<65> <20> sa limite la plus proche. Le type long
est utilis<69> pour assurer la comptabilit<69> entre
compilateurs</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td width="15%"><a name="PrSetText"></a><strong>Prototype</strong></td>
<td width="85%">void cdecl <strong>PrOptimize</strong>(long
mask)</td>
</tr>
<tr>
<td width="15%"><strong>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN] </strong>mask : masque de
bits ayant la signification suivante:<br>
Bit 0 : des instructions 68030 seront utilis<69>es<br>
Bit 1 : le DSP sera utilis<69></td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Indique <20> l'utilisateur que des
optimisations en 68030 et/ou DSP seront utilis<69>es lors
du travail. Cela a pour effet d'afficher un
&quot;030!&quot; ou &quot;DSP!&quot; dans la fen<65>tre de
progression.<br>
Si votre LDV comporte plusieurs phases dans le
traitement, vous pouvez aussi bien valider qu'invalider
l'affichage des optimisations, il suffit d'appeler cette
fonction avec le bon masque en param<61>tre (valable pour
toute version de VAPI <20> partir de la 1.02).</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Le type long est utilis<69> pour assurer la
comptabilit<69> entre compilateurs</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> no_line : index de
la zone de texte concern<72>e (0, 1, ou 2)<br>
<strong>[IN] </strong>text : pointeur sur la chaine de
caract<63>res <20> afficher</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Affiche dans la zone de texte concern<72>e
de la fen<65>tre de progression le texte sp<73>cifi<66></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Le type long est utilis<69> pour assurer la
comptabilit<69> entre compilateurs. Si le param<61>tre
no_line est hors limite, rien ne se passe.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> pc : pourcentage de
travail accompli (0...100)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : L'utilisateur n'a pas demand<6E>
l'annulation de l'op<6F>ration en cours (Run <20> priori)<br>
!= 0 : L'utilisateur a demand<6E> l'annulation</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Met <20> jour l'indicateur de pourcentage
de la fen<65>tre de progression et renvoit en retour une
valeur non nulle si une demande d'annulation a <20>t<EFBFBD>
demand<6E>e par l'utilisateur</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si le param<61>tre pc est hors limite, il
sera ramen<65> <20> sa limite la plus proche. Le type long
est utilis<69> pour assurer la comptabilit<69> entre
compilateurs.<br>
Utilis<69> avec le flag <a href="../defines.htm#LDVF">LDVF_SUPPORTCANCEL</a>,
cette fonction permet de g<>rer l'annulation de la
fonction <a href="../descrip.htm#run">Run</a> d'un LDV.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="index.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="ra.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>PROGRESS
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>

View File

@@ -1,900 +0,0 @@
<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) : 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%">
<tr>
<td align="center" width="17%"><a href="pr.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="32"
height="27"></a><a href="co.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>RASTER
INTERFACE</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>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" colspan="2"><strong>R<EFBFBD>sum<EFBFBD></strong></td>
</tr>
<tr>
<td width="15%"><strong>Pr<EFBFBD>fixe de l'interface</strong></td>
<td width="85%">Ra</td>
</tr>
<tr>
<td width="15%"><strong>Nombre de fonctions</strong></td>
<td width="85%">16</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Ensemble de fonctions permettant de
manipuler des rasters image sous diff<66>rents formats
(bit-plan, True Color, formats ATARI, sp<73>cifique,
standard...).</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img : pointeur
sur l'image <20> traiter</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Initialise un raster image avec la
couleur blanche. Le format attendu est le <a
href="../notions.htm#formats d'images">format ATARI</a>.
En mode palette (img-&gt;fd_nplanes &lt;= 8), le raster
est initialis<69> avec des bits mis <20> 0 (index TOS/VDI =
0), l'indice 0 de la palette est g<>n<EFBFBD>ralement
positionn<6E> sur la couleur blanche.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Cette fonction effectue la transformation
&quot;sur place&quot;.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : Format True Color sur 16 bits ou
nombre de bits de la r<>solution graphique diff<66>rent de
16<br>
1 : Nombre de plans de la r<>solution graphique sur 16
bits mais codage des pixels sur 15 bits (5 par
composante)</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Indique si le codage True Color de la
r<>solution graphique courante est sur 15 ou 16 bits</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Au cas o<> il est important de savoir si
le nombre de bits de codage de la composante verte est
sur 5 ou 6 bits, on peut par cette fonction savoir si
tous les 16 bits du mode True Color sur 16 plans sont
utilis<69>s (la composante verte est alors cod<6F>e sur 6
bits au lieu de 5 et RaIs15Bits renvoie 0) ou si seuls 15
bits sont utiles (la composante verte est alors cod<6F>e
sur 5 bits et RaIs15Bits renvoie 1)</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img : pointeur
sur l'image <20> traiter</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Transforme un raster True Color au format
sp<73>cifique de la carte graphique en un raster True Color
au <a href="../notions.htm#formats d'images">format ATARI</a></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Cette fonction effectue la transformation
&quot;sur place&quot;. Si <em><strong>VISION</strong></em>
se rend compte que le format sp<73>cifique de la machine
est le format ATARI, la fonction rend imm<6D>diatement la
main, sans effectuer de traitement. Cette fonction est
l'inverse de <a href="#RiTCInvConvert">RaTCInvConvert</a></td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img : pointeur
sur l'image <20> traiter</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Transforme un raster True Color au <a
href="../notions.htm#formats d'images">format ATARI</a>
en un raster True Color au format sp<73>cifique de la carte
graphique</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Cette fonction effectue la transformation
&quot;sur place&quot;. Si <em><strong>VISION</strong></em>
se rend compte que le format sp<73>cifique de la machine
est le format ATARI, la fonction rend imm<6D>diatement la
main, sans effectuer de traitement. Cette fonction est
l'inverse de <a href="#RiTCConvert">RaTCInvConvert</a></td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> img : pointeur
sur l'image <20> traiter<br>
<strong>[IN] </strong>width : largeur (en pixels)
maximale <20> ne pas d<>passer. width ne peut d<>passer
32767. Le codage sur un entier 32 bits ne sert qu'<27>
assurer la compatibilit<69> avec les compilateurs 32 bits.</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Pr<EFBFBD>pare des op<6F>rations de transfert
d'index vers un raster image au <a
href="../notions.htm#formats d'images">format ATARI</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Le param<61>tre width peut para<72>tre
redondant avec img-&gt;fd_w mais il est l<> parce que <em><strong>VISION</strong></em>
positionne toujours img-&gt;fd_w <20> un multiple de 16
(optimisations internes). width permet donc de ne pas
<20>tre limit<69> <20> une largeur multiple de 16 pixels.<br>
<u>Int<EFBFBD>ressant</u> : si width est multiple de 16, la
fonction RaInd2Raster sera bien plus rapide !</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> indexes : pointeur
sur le tableau d'indices TOS <20> converir vers le raster
pr<70>c<EFBFBD>demment initialis<69> avec la fonction <a
href="#RaInd2RasterInit">RaInd2RasterInit</a><br>
<strong>[IN] </strong>nb_indexes : Nombre d'index dans le
tableau point<6E> par indexes</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Convertit les indices TOS en donn<6E>es
bit-plan du raster</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Une fois l'initialisation faite par la
fonction <a href="#RaInd2RasterInit">RaInd2RasterInit</a>,
on peut appeler cette fonction autant de fois qu'on le
veut afin de transformer le flux de donn<6E>es (indices
TOS) vers le raster image. VAPI m<>morise la derni<6E>re
position atteinte dans le raster. Par exemple :<br>
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 ) ; /*
Recupere les indices TOS pour la ligne y */<br>
Vapi-&gt;RaInd2Raster( tab_indexes, nb_indexes ) ; /*
Envoi vers le raster au format ATARI bit-plan */<br>
}</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> pt_bitplan :
pointeur sur le d<>but des donn<6E>es raster <20> convertir
(d<>marrage sur un multiple de 16 pixels)<br>
<strong>[IN] </strong>nb_pts : Nombre de points <20>
convertir<br>
<strong>[IN] </strong>nb_planes : Nombre de plans du
raster image. nb_planes ne peut prendre que les valeurs
1, 2, 4, ou 8. Le codage sur un entier 32 bits ne sert
qu'<27> assurer la compatibilit<69> avec les compilateurs 32
bits.<br>
<strong>[OUT] </strong>tos_indexes : pointeur vers le
tableau d'indices TOS recevant les donn<6E>es (doit <20>tre
dimensionn<6E> <20> nb_pts octets)</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Convertit des donn<6E>es bit-plan du raster
en indices TOS</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Fonction r<>ciproque de <a
href="#RaInd2Raster">RaInd2Raster</a>. Attention ! A
cause des optimisations internes de la fonction, nb_pts
DOIT <20>tre multiple de 16, sinon vous n'aurez pas les
derneiers points (si vous sp<73>cifiez 35 points, vous n'en
n'aurez que 32 en retour). Il vous faut donc ajuster
nb_pts avant l'appel et sur-dimensionner de 16 points
votre buffer tos_indexes de r<>ception pour <20>tre
tranquille...</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> nb_planes : Nombre
de plans. nb_planes ne peut prendre que les valeurs 1, 2,
4, ou 8. Le codage sur un entier 32 bits ne sert qu'<27>
assurer la compatibilit<69> avec les compilateurs 32 bits.</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Pointeur sur le tableau de converion
index TOS --&gt; index VDI</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">R<EFBFBD>cup<EFBFBD>rer le tableau de correspondance
entre les indices TOS et VDI, pour un nombre de plans
donn<6E></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Fonction r<>ciproque de <a
href="#RaGetVDI2TOSArray">RaGetVDI2TOSArray</a></td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> nb_planes : Nombre
de plans. nb_planes ne peut prendre que les valeurs 1, 2,
4, ou 8. Le codage sur un entier 32 bits ne sert qu'<27>
assurer la compatibilit<69> avec les compilateurs 32 bits.</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Pointeur sur le tableau de converion
index VDI --&gt; index TOS</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">R<EFBFBD>cup<EFBFBD>rer le tableau de correspondance
entre les indices VDI et TOS, pour un nombre de plans
donn<6E></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Fonction r<>ciproque de <a
href="#RaGetTOS2VDIArray">RaGetTOS2VDIArray</a></td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.00 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> width : Largeur de
l'image en nombre de pixels<br>
<strong>[IN]</strong> height : Hauteur de l'image en
nombre de pixels<br>
<strong>[IN]</strong> nplanes : Nombre de plans pour
coder un pixel<br>
Le codage sur un entier 32 bits ne sert qu'<27> assurer la
compatibilit<69> avec les compilateurs 32 bits.</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">La taille m<>moire n<>cessaire (en
octets) pour contenir une telle image.</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de connaitre la taille d'une image
compte tenu des contraintes d'alignement VDI sur 16
pixels.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">&nbsp;</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> raster :
Structure VDI d<>crivant une image</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">0 : OK, l'image a <20>t<EFBFBD> allou<6F>e (point<6E>
par le champ fd_addr de la structure MFDB)<br>
!= 0 : Erreur (m<>moire)</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Alloue une image d'apr<70>s les champs
fd_w, fd_h et fd_nplanes de la strucuture MFDB.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si succ<63>s le champ fd_addr pointe vers
les donn<6E>es image (non initialis<69>es), sinon fd_addr
vaut NULL<br>
fd_wdwidth est aussi mis <20> jour. Les autres champs
restent inchang<6E>s.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN/OUT]</strong> raster :
Structure VDI d<>crivant une image</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Lib<EFBFBD>re une image pr<70>c<EFBFBD>demment allou<6F>e
par <a href="#RaRasterAlloc">RaRasterAlloc</a></td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Tous les champs de la structure MFDB sont
remis <20> z<>ro apr<70>s lib<69>ration.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.02 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> rc : Pointeur sur
une structure de type <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
d<>finissant la table de red<65>finition des couleurs
<20>l<EFBFBD>mentaires, le d<>but du buffer <20> modifier et le
nombre de points</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Modifie la r<>partition actuelle des
couleurs d'une suite de points en True Color 15 bits. Les
champs red, green et blue de la structure <a
href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> doivent
pointer sur des tableaux de 32 (32 = 2^5) <20>l<EFBFBD>ments,
chaque <20>l<EFBFBD>ment du tableau devant d<>finir la valeur <20>
substituer <20> l'indice de ce tableau, par exemple la
formule:<br>
red[i] = i ; (0 &lt;= i &lt; 32) ne change rien pour la
table de la composante rouge (i sera remplac<61> par i).<br>
Attention ! La nouvelle valeur substitu<74> doit appartenir
<20> l'intervalle [0,31].<br>
Exemple tout b<>te : augmenter la luminosit<69> de 100% sur
toutes les composantes:<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>Remarques</strong></td>
<td width="85%">Cette fonction travaille sur le <u>format
sp<73>cifique de la machine</u> ! Inutile donc de passer
par les fonctions <a href="#RaTCConvert">RaTCConvert</a>
et <a href="#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> rc : Pointeur sur
une structure de type <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
d<>finissant la table de red<65>finition des couleurs
<20>l<EFBFBD>mentaires, le d<>but du buffer <20> modifier et le
nombre de points</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Modifie la r<>partition actuelle des
couleurs d'une suite de points en True Color 16 bits. Les
champs red, green et blue de la structure <a
href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> doivent
pointer sur des tableaux de 32 (32 = 2^5) <20>l<EFBFBD>ments pour
red et blue, et 64 (64=2^6) pour green, chaque <20>l<EFBFBD>ment
du tableau devant d<>finir la valeur <20> substituer <20>
l'indice de ce tableau, par exemple la formule:<br>
red[i] = i ; (0 &lt;= i &lt; 32) ne change rien pour la
table de la composante rouge (i sera remplac<61> par i).<br>
Attention ! La nouvelle valeur substitu<74> doit appartenir
<20> l'intervalle [0,31] pour red et blue et [0,63] pour
green.<br>
Exemple tout b<>te : augmenter la luminosit<69> de 100% sur
la composante verte:<br>
new_val = i * 2 ;<br>
if ( new_val &gt; 63) new_val = 63 ; /* Important ! */<br>
green[i] = new_val ; /* Pour 0 &lt;= i &lt; 64) */</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Cette fonction travaille sur le <u>format
sp<73>cifique de la machine</u> ! Inutile donc de passer
par les fonctions <a href="#RaTCConvert">RaTCConvert</a>
et <a href="#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> rc : Pointeur sur
une structure de type <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
d<>finissant la table de red<65>finition des couleurs
<20>l<EFBFBD>mentaires, le d<>but du buffer <20> modifier et le
nombre de points</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Modifie la r<>partition actuelle des
couleurs d'une suite de points en True Color 32 bits. Les
champs red, green et blue de la structure <a
href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> doivent
pointer sur des tableaux de 256 (256=2^8) <20>l<EFBFBD>ments,
chaque <20>l<EFBFBD>ment du tableau devant d<>finir la valeur <20>
substituer <20> l'indice de ce tableau, par exemple la
formule:<br>
red[i] = i ; (0 &lt;= i &lt; 256) ne change rien pour la
table de la composante rouge (i sera remplac<61> par i).<br>
Attention ! La nouvelle valeur substitu<74> doit appartenir
<20> l'intervalle [0,255].<br>
Exemple tout b<>te : baisser la luminosit<69> de 20% sur
toutes les composantes:<br>
new_val = (80 * i) / 100 ;<br>
/* Notons que on retombe forc<72>ment dans la plage [0;255]
...*/<br>
red[i] = green[i] = blue[i] = new_val ; /* Pour 0 &lt;= i
&lt; 256) */</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Cette fonction travaille sur le <u>format
sp<73>cifique de la machine</u> ! Inutile donc de passer
par les fonctions <a href="#RaTCConvert">RaTCConvert</a>
et <a href="#RaTCInvConvert">RaTCInvConvert</a>.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> in : MFDB
d<>crivant l'image dont on veut effectuer la rotation<br>
<strong>[OUT]</strong>out : MFDB de destination<br>
<strong>[IN]</strong> angle : angle en degr<67>s de la
rotation</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">Aucun</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Permet de connaitre la taille de l'image
apr<70>s rotation en vue d'une allocation par exemple. tous
les champs du MFDB out sont mis <20> jour SAUF fd_addr car
l'image destination n'est pas allou<6F>e.</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">G<EFBFBD>n<EFBFBD>ralement, cette fonction est
appel<65>e avant la fonction suivante</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<div align="center"><center>
<table border="2" width="100%">
<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>Param<EFBFBD>tres</strong></td>
<td width="85%"><strong>[IN]</strong> in : MFDB
d<>crivant l'image dont on veut effectuer la rotation<br>
<strong>[OUT]</strong>out : MFDB de destination<br>
<strong>[IN]</strong> angle : angle en degr<67>s de la
rotation<br>
<strong>[IN]</strong> flags : drapeau dont les bits ont
la signification suivante:<br>
Bit 0 positionn<6E> : Demande <20> <a href="index.htm">VAPI</a>
d'afficher une barre de progression</td>
</tr>
<tr>
<td width="15%"><strong>Retour</strong></td>
<td width="85%">ELDV_NOERROR : tout va bien<br>
ELDV_NOTENOUGHMEMORY : pas assez de m<>moire<br>
ELDV_CANCELLED : (possible seulement si la progression a
<20>t<EFBFBD> demand<6E>e)<br>
ELDV_GENERALFAILURE : erreur inconnue</td>
</tr>
<tr>
<td width="15%"><strong>Description</strong></td>
<td width="85%">Efectue la rotation d'angle sp<73>cifi<66> su
le MFDB source. Le MFDB destination doit avoir <20>t<EFBFBD>
allou<6F>, sinon la fonction l'allouera. Notez que cette
derni<6E>re solution est un peu dangereuse car c'est
maintenant au LDV de g<>rer sa lib<69>ration par <a
href="#RaRasterFree">RaRasterFree</a>.<br>
La bonne nouvelle c'est que <a href="index.htm">VAPI</a>
se charge de prendre en compte le format VDI standard si
n<>cessaire !</td>
</tr>
<tr>
<td width="15%"><strong>Remarques</strong></td>
<td width="85%">Si l'angle est multiple de 90<39>, des
routines sp<73>ciales sont appel<65>es afin d'<27>viter des
calculs approximatifs et inutiles de sinus et cosinus.</td>
</tr>
<tr>
<td width="15%"><strong>Version VAPI</strong></td>
<td width="85%">1.03 ou sup<75>rieure</td>
</tr>
</table>
</center></div>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="pr.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="index.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a><a href="co.htm"><img
src="../images/csuiv.jpg" alt="Chapitre suivant"
border="0" hspace="2" width="43" height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>RASTER
INTERFACE</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

View File

@@ -1,235 +0,0 @@
<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) : Structures</title>
</head>
<body background="../images/conc2.gif" bgcolor="#FFFFFF">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="in.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="sommaire.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
T R U C T U R E S</strong></font></p>
</td>
<td align="center" width="17%">&nbsp; <!--webbot
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
BORDER=0></A>
<!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</center></div>
<hr>
<p><a name="VAPI_HEADER"></a><font size="4"><strong> VAPI_HEADER</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
unsigned short Version ;
unsigned short StrSize ;
void* Global ;
void cdecl (*GEMMessageLoop)(void *msg) ;
char RFU[116] ;
}
VAPI_HEADER ;</strong></font></pre>
<div align="center"><center>
<table border="2" width="100%">
<tr>
<td align="center" width="15%"><strong>Champ</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%">Du type 0x0101. Ce num<75>ro est
incr<63>ment<6E> <20> chaque <20>volution. Ce num<75>ro de version
est destin<69> <20> effectuer <20>ventuellement des contr<74>les
par le LDV. Si la version de VAPI ne contient pas les
interfaces ou fonctions n<>cessaires, le LDV doit
renvoyer le code d'erreur <a href="../defines.htm#ELDV">ELDV_BADVAPIVERSION</a></td>
</tr>
<tr>
<td align="center">StrSize</td>
<td align="center">unsigned short</td>
<td>Taille de la structure VAPI</td>
</tr>
<tr>
<td align="center">Global</td>
<td align="center">void *</td>
<td>Pointeur sur le tableau global (fourni par l'AES) de <em><strong>VISION</strong></em>.
Ce tableau permet au LDV d'utiliser ensuite MT_AES. Pour
plus de d<>tails, consultez la documentation des LDG. Le
type est void * et non pas int * pour ne pas risquer de
rentrer en conflit avec le compilateur utilis<69> (int a
une taille de 16 bits sous PURE C et 32 bits sous GCC).
Il appartient donc au programmeur de LDV de
&quot;caster&quot; ce pointeur vers le type entier 16
bits convenant au compilateur.</td>
</tr>
<tr>
<td align="center">GEMMessageLoop</td>
<td align="center">void cdecl (*)(void *)</td>
<td>Pointeur sur la fonction de boucle de messages GEM de
<em><strong>VISION</strong></em>. Cela permet au LDV,
s'il utilise l'AES, de filtrer parmi les messages qu'il
re<72>oit, ceux qui lui sont destin<69>s et ceux destin<69>s <20>
<em><strong>VISION</strong></em>. Comme le LDV est lanc<6E>
par <em><strong>VISION</strong></em>, c'est lui qui
re<72>oit les messages destin<69>s <20> <em><strong>VISION</strong></em>
et devrait donc les renvoyer vers <em><strong>VISION</strong></em>
au travers de cette fonction. Cela est surtout utile pour
les messages de type Redraw, sinon les fen<65>tres de <em><strong>VISION</strong></em>
ne seront plus dessin<69>es pendant que le LDV a la main.
Le param<61>tre msg est de type void * et non pas int *
pour la m<>me raison que pr<70>c<EFBFBD>demment.</td>
</tr>
<tr>
<td align="center" width="15%">RFU</td>
<td align="center" width="10%">116 octets</td>
<td width="75%">Pour usage futur. Ne pas toucher !</td>
</tr>
</table>
</center></div>
<p>&nbsp;</p>
<p><a name="VAPI"></a><font size="4"><strong> VAPI</strong></font></p>
<pre><font size="4"><strong>typedef struct
{
</strong></font><a href="#VAPI_HEADER"><font size="4"><strong>VAPI_HEADER</strong></font></a><font
size="4"><strong> Header ;
/* Progress Interface */
....
/* Raster Interface */
...
/* More interfaces to come ! */
}
VAPI ;</strong></font></pre>
<p>La description brute de cette structure ne pr<70>sente que peu
d'int<6E>r<EFBFBD>t, voyez plut<75>t la liste des fonctions disponibles.</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
{
unsigned char *red ;
unsigned char *green ;
unsigned char *blue ;
void *pt_img ;
long nb_pts ;
}
REMAP_COLORS ;</strong></font></pre>
<p>Un pointeur sur une telle structure doit <20>tre pass<73> aux
fonctions <a href="ra.htm#RaTC15RemapColors">RaTCxxRemapColors</a>.<br>
red, green et blue pointent sur un tableau d<>finisant les
valeurs des composantes <20>l<EFBFBD>mentaires.<br>
pt_img pointe sur le premier pixel <20> modifier<br>
nb_pts est le nombre de points <20> partir de pt_img <20> modifier
suivant les tableaux red, green et blue.</p>
<p>&nbsp;</p>
<p><a name="fonctions"></a><font size="4"><strong> Fonctions
disponibles</strong></font></p>
<p>Ces fonctions sont directement accessibles au travers du
pointeur vapi interne aux LDV, il suffit d'appeler ainsi les
fonctions d<>sir<69>es:<br>
<strong>Vapi-&gt;NomDeLaFonction( ListeDesParam<61>tres ) ;</strong><br>
N'oubliez pas de tester la valeur de retour si la fonction est
suceptible d'en renvoyer une !</p>
<p>Les fonctions sont regroup<75>es en interfaces dans les
chapitres suivants. Afin de retrouver facilement l'interface
d'appartenance de fonctions, tous les noms de fonctions du m<>me
groupe commencent par les m<>mes 2 lettres (par exemple
&quot;Pr&quot; pour les fonctions du groupe de progression).</p>
<p>&nbsp;</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" width="17%"><a href="in.htm"><img
src="../images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
border="0" hspace="2" width="46" height="26"></a><a
href="sommaire.htm"><img src="../images/csom.jpg"
alt="Retour au sommaire" border="0" hspace="2" width="26"
height="26"></a></td>
<td align="center" valign="top" rowspan="2" width="8%"><p
align="center"><img src="../images/icoprinc.gif"
width="59" height="71"></p>
</td>
<td width="33%"><p align="center"><font color="#0000FF"
size="5"><strong>Documentation </strong><em><strong>VISION
(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">Derni<EFBFBD>re
mise <20> jour : <!--webbot bot="Timestamp" startspan
s-type="EDITED" s-format="%d/%m/%y" -->04/01/02<!--webbot
bot="Timestamp" i-checksum="12484" endspan --></p>
</td>
</tr>
<tr>
<td width="17%"><p align="center"><a
href="..\..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
</td>
<td width="33%"><p align="center"><font size="4"><strong>S
T R U C T U R E S</strong></font></p>
</td>
<td valign="top" width="17%">&nbsp; </td>
</tr>
</table>
</center></div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More