moved from dev to prod
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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 ) ;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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%"> <!--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> </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> </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> </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 "sur place". <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
|
||||
"Pr<EFBFBD>-Viualisation"</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 "bloc" 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 "ou
|
||||
logique" (|).</font></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="17%"><a href="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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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->Raster.fd_w et out->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 "sur place"</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> </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> </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> </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> </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> </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 "Fran<EFBFBD>ais" dans les pr<70>f<EFBFBD>rences de <em><strong>VISION</strong></em>,
|
||||
il suffit de cr<63>er le sous-r<>pertoire "Fran<EFBFBD>ais"
|
||||
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> </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 <= N <= 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 --> +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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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> </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 "in
|
||||
place". <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 "Preview" button</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p><font size="3">These flags must be combined with the "logical
|
||||
or" (|).
|
||||
</font></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="17%"><a href="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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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->Raster.fd_w and out->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 "in place"</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> </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> </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> </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> </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 "Fran<EFBFBD>ais" in the preferences of <em><strong>VISION</strong></em>,
|
||||
you just have to create the directory "Fran<EFBFBD>ais"
|
||||
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> </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 <= N <= 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 --> +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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</center></div>
|
||||
@@ -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%"> <!--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 "a PRG" 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 & 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->fd_w and
|
||||
out->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%"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>16</strong></td>
|
||||
<td width="95%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="17%"><a href="kitdev.htm"><img
|
||||
src="images/cprev.jpg" alt="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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 726 B |
|
Before Width: | Height: | Size: 518 B |
|
Before Width: | Height: | Size: 703 B |
|
Before Width: | Height: | Size: 492 B |
|
Before Width: | Height: | Size: 413 B |
@@ -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%"> <!--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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <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><..>/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><...>/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>
|
||||
<name of ldv>.C: the "source" file of the
|
||||
LDV<br>
|
||||
<name of ldv>.PRJ: the project file (Pure C)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><strong><...>/LDV/DOC</strong></td>
|
||||
<td>This documentation</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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> </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> </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> </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&W conversion) function, this LDV allows to do it on a
|
||||
block (True Colour mode only)</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="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). 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 LDV only considers True Color
|
||||
ATARI format and it will nevertheless run on your MagicPC ! It makes
|
||||
use of <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> </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 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 <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> function <a href="../../ldv/vapi/me.htm#MeSCopyMemory8">MeCopyMemoryxx</a> is used to scale lines.</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="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> </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 <a href="../../ldv/vapi/ra.htm#RaRasterRotateGetDstMFDB">RaRasterRotateGetDstMFDB</a> and <a href="../../ldv/vapi/ra.htm#RaRasterRotate">RaRasterRotate</a>
|
||||
functions in <a href="../../ldv/vapi/index.htm">VAPI</a> <a href="../../ldv/vapi/ra.htm">Raster interface</a> <a href="../../ldv/vapi/index.htm"></a>.<br>
|
||||
Have a look how <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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--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> </p>
|
||||
|
||||
<p> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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%"> </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 --> 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%"> </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%"> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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
|
||||
<= 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> </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> </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 <= index <= 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 <= index <= 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 <= index <= 1000)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <a href="http://www.estat.com/getstats?serial=1390118421"> </a> <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 <em><strong>VISION</strong></em>.'s configuration (paths, languages,...)</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 <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 <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="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 <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 <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 <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 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 <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 </strong><strong>Version</strong></td>
|
||||
<td width="85%">1.03 or more</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<hr>
|
||||
<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 <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 <span style="font-style: italic; font-weight: bold;">VISION</span>
|
||||
if VISION.INI says so in 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 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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> </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 >= 0 : a INI handle<br>
|
||||
If < 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%"> </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> </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%"> </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> </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 : 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%"> </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> </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 : 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 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%"> </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> </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 : 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 holds the key value in 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> </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 : 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> 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-></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-></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 && language )
|
||||
{
|
||||
sprintf( buffer, "%s\\%s\\MYLDV.INI", path_ldv, language ) ;
|
||||
hini = Vapi-></font><a href="#InOpen"><font size="3">InOpen</font></a><font size="3">( buffer ) ;<br> if ( hini >= 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-></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-></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-></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 : 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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 <--> 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> </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> </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->RaImgWhite( &out->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> </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> </td>
|
||||
<td align="center"> </td>
|
||||
<td align="center"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<p> </p><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/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 valign="top" width="17%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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 : 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%"> </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 functions enabling logging from LDV</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 <em><strong>VISION</strong></em>'s logging file; typically for debugging, performance or error<br>Note that if level parameter does not match current <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->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> </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 <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> </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> INTERFACE</strong></font></p>
|
||||
</td>
|
||||
<td valign="top" width="17%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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 : 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%"> </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> </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 : 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> </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 : 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 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> </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 : 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 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> </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 : 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--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> </p>
|
||||
|
||||
<p> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> </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> </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> </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> </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 or greater</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 : 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 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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> </p>
|
||||
|
||||
<p> </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->fd_nplanes <= 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> </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> </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> </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> </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->fd_w but it is there because VISION always set
|
||||
img->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> </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->RaInd2RasterInit( img, wished_width ) ;<br>
|
||||
for ( y = 0; y < img->fd_h; y++ )<br>
|
||||
{<br>
|
||||
GetTosIndexes( y, tab_indexes, &nb_indexes ) ; /*
|
||||
Get TOS indexes for line y */<br>
|
||||
Vapi->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> </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> </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 --> 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> </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 --> 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> </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%"> </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> </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 or greater</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 : 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 or greater</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 <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 <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a> shall point to arrays of 32 (32 = 2^5) elements,
|
||||
each element being the value to substitute at this array index for instance the formula:<br>
|
||||
red[i] = i ; (0 <= i < 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 > 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> </strong></td>
|
||||
<td width="85%">1.03 or greater</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 <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 <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
|
||||
shall point to arrays of 32 (32 = 2^5) 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 <= i < 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 > 63) new_val = 63 ; /* Important ! */<br>
|
||||
green[i] = new_val ; /* For 0 <= i < 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> </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 : Pointer to a <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 <a href="struct.htm#REMAP_COLORS">REMAP_COLORS</a>
|
||||
shall point to arrays of 256 (256=2^8) elements each element
|
||||
being the value to substitute at this array index for instance the
|
||||
formula::<br>
|
||||
red[i] = i ; (0 <= i < 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 0 <= i
|
||||
< 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> </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 or greater</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 : MFDB
|
||||
describing image to be rotated<br>
|
||||
<strong>[OUT]</strong>out : Destination MFDB<br>
|
||||
<strong>[IN]</strong> angle : Angle in degrees for the rotation<br>
|
||||
<strong>[IN]</strong> flags : if bit#0 is set, inform <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 : 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 <a href="ra.htm#RaRasterFree">RaRasterFree</a> to free it. Good news is that <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 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 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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> </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>
|
||||
|
||||
</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 <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->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> </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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--webbot
|
||||
bot="HTMLMarkup" startspan --><A HREF="http://www.estat.com/getstats?serial=1390118421">
|
||||
<IMG SRC="http://perso.estat.com/cgi-bin/perso/1390118421?page=DocVisionLDV"
|
||||
BORDER=0></A>
|
||||
<!--webbot
|
||||
bot="HTMLMarkup" endspan --></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>M<EFBFBD>me si la gestion et la programmation des LDV reste simple,
|
||||
elle doit respecter quelques r<>gles de bon sens, on ne peut tout
|
||||
de m<>me pas se permettre n'importe quoi ! Voici quelques r<>gles
|
||||
et eclaircirssements sur quelques points pouvant <20>tre troublant
|
||||
lorsque l'on programme ses premiers LDV:</p>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="2" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>#</strong></td>
|
||||
<td align="center" width="95%"><strong>Recommandation /
|
||||
Conseil</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>1</strong></td>
|
||||
<td width="95%">Si vous <20>crivez un LDV, envoyez le moi !
|
||||
J'aimerais bien que le site de <em><strong>VISION</strong></em>
|
||||
centralise tous les LDV cr<63>es. V<>rifiez aussi que votre
|
||||
LDV n'est pas compil<69> avec les informations de Debug !
|
||||
Cela ne servirait <20> rien sinon <20> en r<>duire les
|
||||
performances !</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>2</strong></td>
|
||||
<td width="95%">Il serait sympa et profitable <20> tout le
|
||||
monde de fournir les sources du LDV avec celui-ci.. Cela
|
||||
peut donner de bonnes id<69>es <20> certains...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>3</strong></td>
|
||||
<td width="95%">N'oubliez pas qu'au travers des fonctions
|
||||
que <em><strong>VISION</strong></em> appelle, vous avez
|
||||
un acc<63>s direct <20> la m<>moire interne <20> <em><strong>VISION</strong></em>.
|
||||
Donc si vous faites un peu n'importe quoi avec les
|
||||
pointeurs pass<73>s, <em><strong>VISION</strong></em> a
|
||||
toutes les chances de planter t<>t ou tard...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>4</strong></td>
|
||||
<td width="95%">Si vous utilisez <a href="vapi/index.htm">VAPI</a>
|
||||
(conseill<6C> !), la m<>me remarque s'applique, la variable
|
||||
Vapi globale du LDV pointe directement sur la m<>moire de
|
||||
<em><strong>VISION</strong></em> et si vous <20>crivez dans
|
||||
cette structure, c'est votre LDV qui risque de planter !
|
||||
Je vous laisse imaginer les d<>g<EFBFBD>ts si vous modifiez
|
||||
l'adresse de la fonction <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
|
||||
et que vous l'appelez ensuite !</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>5</strong></td>
|
||||
<td width="95%">L'ERREUR <20> ne pas commettre dans la
|
||||
fonction <a href="descrip.htm#run">Run</a> est d'allouer
|
||||
vous-m<>me la m<>moire pour l'image pass<73>e dans le
|
||||
param<61>tre out. Pourquoi ? En faisant cela, d<>j<EFBFBD> vous
|
||||
<20>crasez le pointeur que <em><strong>VISION</strong></em>
|
||||
a d<>j<EFBFBD> allou<6F> pour cela, mais en plus d<>s que <em><strong>VISION</strong></em>
|
||||
voudra l'utiliser, cela va planter. En effet, votre LDV
|
||||
est en gros "un PRG" lanc<6E> par <em><strong>VISION</strong></em>
|
||||
et termin<69> lorsque <em><strong>VISION</strong></em>
|
||||
(plus pr<70>cisemment le gestionnaire LDG) le d<>cide. A ce
|
||||
moment, le compilateur ou le syst<73>me lib<69>rera la
|
||||
m<>moire que ce module avait allou<6F>e, m<>me si vous ne
|
||||
le faites pas explicitement. C'est pourquoi c'est
|
||||
toujours <em><strong>VISION</strong></em>, par
|
||||
l'interm<72>diaire la fonction <a href="descrip.htm#prerun">PreRun</a>
|
||||
qui allouera la m<>moire pour le LDV puisqu'il s'en
|
||||
servira ensuite. La fonction <a href="descrip.htm#prerun">PreRun</a>
|
||||
est vraiment essentielle !</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>6</strong></td>
|
||||
<td width="95%">Si vous utilisez la fonction <a
|
||||
href="vapi/pr.htm#PrSetProg">PrSetProg</a> de <a
|
||||
href="vapi/index.htm">VAPI</a> (vraiment TRES conseill<6C>
|
||||
<20> moins que votre LDV ne soit fulgurant !), <20>vitez de
|
||||
l'appeler trop souvent, comme par exemple <20> chaque
|
||||
it<69>ration de boucle, cela ne sert <20> rien (si <20>a se
|
||||
trouve le pourcentage n'a m<>me pas chang<6E> !) et cela va
|
||||
ralentir inutilement votre LDV. Faites pr<70>c<EFBFBD>der cet
|
||||
appel d'un test du style <strong>if ( ( ++iter & 0x0F
|
||||
) == 0x0F )</strong>, cela aura pour effet d'appeler la
|
||||
fonction de progression seulement une fois sur seize, ce
|
||||
qui devrait <20>tre amplement suffisant.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><strong>7</strong></td>
|
||||
<td>Les fonctions <a href="vapi/pr.htm#PrSetProg">PrSetProg</a>
|
||||
et <a href="vapi/pr.htm#PrSetProgEx">PrSetProgEx</a> de <a
|
||||
href="vapi/index.htm">VAPI</a>, rendent temporairement la
|
||||
main <20> l'AES. Cela permet de pouvoir d<>placer les
|
||||
fen<65>tres <20> ce moment. C'est aussi une des raisons pour
|
||||
lesquelles il faut l'appeler un peu... mais pas trop !</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>8</strong></td>
|
||||
<td width="95%">Si votre LDV est param<61>trable (au plus 4
|
||||
param<61>tres), vous devez utiliser un <a
|
||||
href="descrip.htm#fichier ini">fichier INI associ<63></a>.
|
||||
Je vous recommande d'associer syst<73>matiquement un
|
||||
fichier INI <20> votre LDV, c'est vraiment tr<74>s pratique
|
||||
pour les traductions et pas difficile du tout ! Si votre
|
||||
LDV n<>cessite vraiment une saisie de param<61>tre tr<74>s
|
||||
sp<73>cifique, vous pouvez d<>finir la fonction <a
|
||||
href="descrip.htm#getparams">GetParams</a> dans votre
|
||||
LDV.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>9</strong></td>
|
||||
<td width="95%">Si vous utilisez un <a
|
||||
href="descrip.htm#fichier ini">fichier INI</a>, votre LDV
|
||||
doit contr<74>ler la validit<69> des param<61>tres qui lui sont
|
||||
pass<73>s et ne pas se vautrer lamentablement si un d'eux
|
||||
est hors limites... Dans un tel cas, renvoyez simplement
|
||||
le code d'erreur <a href="defines.htm#ELDV">ELDV_INVALIDPARAMETER</a>.
|
||||
N'oubliez pas que le <a href="descrip.htm#fichier ini">fichier
|
||||
INI</a> est un fichier texte, ais<69>ment modifiable par un
|
||||
utilisateur...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>10</strong></td>
|
||||
<td width="95%">A priori les nombres flottants, bien que
|
||||
pr<70>vus pour une extension future, ne sont pas
|
||||
n<>cessaires au param<61>trage des LDV. Imaginons que vous
|
||||
deviez saisir une valeur entre 0.0 et 1.0, il vous suffit
|
||||
d'indiquer comme plage de variation [0;1000] dans le <a
|
||||
href="descrip.htm#fichier ini">fichier INI</a> (ce qui
|
||||
vous donne tout de m<>me une pr<70>cision sup<75>rieure <20>
|
||||
celle pouvant <20>tre saisie par l'interface), de convertir
|
||||
le param<61>tre pass<73> par <em><strong>VISION</strong></em>
|
||||
en float puis de le diviser par 1000. Il doit exister des
|
||||
cas tordus o<> il devient n<>cessaire d'utiliser des
|
||||
flottants mais on doit s'en sortir tr<74>s bien dans 99%
|
||||
des cas !</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>11</strong></td>
|
||||
<td width="95%">Je vous conseille, pour des
|
||||
consid<69>rations de performance m<>moire, de toujours
|
||||
utiliser les flags <a href="defines.htm#LDVF">LDVF_OPINPLACE</a>
|
||||
et <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
|
||||
Allouez la m<>moire que vous voulez dans le LDV (si vous
|
||||
le pouvez...), et lib<69>rez la apr<70>s son ex<65>cution.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>12</strong></td>
|
||||
<td width="95%">Si vous ne travaillez que sur les lignes
|
||||
et colonnes, utilisez le flag <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>.
|
||||
La fonction VDI vr_cpyfm par exemple est faite pour cela.
|
||||
Utiliser le flag <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>
|
||||
ou <a href="defines.htm#LDVF">LDVF_STDFORMAT</a>
|
||||
obligerait <em><strong>VISION</strong></em> <20> vous
|
||||
allouer de la m<>moire inutilement (d'autant plus que les
|
||||
fonctions VDI travaillent TOUJOURS sur le format
|
||||
sp<73>cifique de la machine : <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>
|
||||
!)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>13</strong></td>
|
||||
<td width="95%">Si vous <20>tes amen<65> <20> manipuler les
|
||||
indices TOS et/ou VDI, :<ul>
|
||||
<li>Vous pouvez travailler par ligne ou paquet de n
|
||||
lignes :<br>
|
||||
Utilisez le format <a href="defines.htm#LDVF">LDVF_SPECFORMAT</a>,
|
||||
et les fonctions de <a href="vapi/ra.htm">l'interface
|
||||
Raster</a>. Cela minimisera la m<>moire <20>
|
||||
allouer</li>
|
||||
<li>Vous <20>tes oblig<69> d'avoir acc<63>s <20> n'importe
|
||||
quel index <20> n'importe quel moment:<br>
|
||||
Utilisez le format <a href="defines.htm#LDVF">LDVF_ATARIFORMAT</a>,
|
||||
et les fonctions de <a href="vapi/ra.htm">l'interface
|
||||
Raster</a>. <em><strong>VISION</strong></em>
|
||||
convertira l'image du format sp<73>cifique vers le
|
||||
format ATARI bit-plan avant d'appeler <a
|
||||
href="descrip.htm#prerun">PreRun</a> ou <a
|
||||
href="descrip.htm#run">Run</a>.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>14</strong></td>
|
||||
<td width="95%">M<EFBFBD>me si l'utilisateur a s<>lectionn<6E> un
|
||||
bloc comme zone d'application du LDV sur l'image, vous
|
||||
n'<27>tes pas limit<69> <20> la seule zone d<>finie par ce
|
||||
bloc. Vous avez acc<63>s <20> toute l'image, voire m<>me plus
|
||||
si vous d<>cidez de modifier sa taille (champs
|
||||
out->fd_w et out->fd_h de la fonction <a
|
||||
href="descrip.htm#prerun">PreRun</a>). Par contre,
|
||||
n'oubliez pas de mettre <20> jour les champs x1, x2, y1 et
|
||||
y2 de la structure <a href="struct.htm#LDV_PARAMS">LDV_PARAMS</a>
|
||||
fournie par la fonction <a href="descrip.htm#prerun">PreRun</a>,
|
||||
afin que le buffer UNDO permette de revenir en arri<72>re.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>15</strong></td>
|
||||
<td width="95%">Si vous utilisez Magic Mac, vous allez
|
||||
peut <20>tre avoir le probl<62>me "classique" du <a
|
||||
href="../../download/fpupatch.lzh">FPUPATCH</a> : en
|
||||
effet, la librairie PCSTDLIB.LIB du compilateur PURE C
|
||||
provoque un blocage lors du lancement du programme (vrai
|
||||
pour <em><strong>VISION</strong></em> et ses LDV). Il
|
||||
faut donc le passer au travers de <a
|
||||
href="../../download/fpupatch.lzh">FPUPATCH</a> ou encore
|
||||
patcher directement le fichier PCSTDLIB.LIB.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="5%"><strong>16</strong></td>
|
||||
<td width="95%">Depuis la version 4.0d de <em><strong>VISION</strong></em>,
|
||||
vous pouvez obtenir des statistiques de performances
|
||||
survotre LDV. Il suffit pour cela d'ins<6E>rer la ligne
|
||||
ShowPerf = 1 dans la section [LDV] de VISION.INI. Apr<70>s
|
||||
ex<65>cution du LDV, <em><strong>VISION</strong></em>
|
||||
affichera diverses statistiques sur les temps de
|
||||
traitement du LDV, vous permettant d'optimiser les
|
||||
parties critiques.</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="17%"><a href="kitdev.htm"><img
|
||||
src="images/cprev.jpg" alt="Chapitre pr<70>c<EFBFBD>dent"
|
||||
border="0" hspace="2" width="46" height="26"></a><a
|
||||
href="index.htm"><img src="images/csom.jpg"
|
||||
alt="Retour au sommaire" border="0" hspace="2" width="26"
|
||||
height="26"></a><a href="vapi/index.htm"><img
|
||||
src="images/csuiv.jpg" alt="Chapitre suivant" border="0"
|
||||
hspace="2" width="43" height="26"></a></td>
|
||||
<td align="center" valign="top" rowspan="2" width="8%"><p
|
||||
align="center"><img src="images/icoprinc.gif" width="59"
|
||||
height="71"></p>
|
||||
</td>
|
||||
<td width="33%"><p align="center"><font color="#0000FF"
|
||||
size="5"><strong>Documentation </strong><em><strong>VISION
|
||||
(LDV)</strong></em></font></p>
|
||||
</td>
|
||||
<td align="center" valign="top" rowspan="2" width="8%"><p
|
||||
align="center"><img src="images/icointro.gif" width="59"
|
||||
height="71"></p>
|
||||
</td>
|
||||
<td valign="top" width="17%"><p align="left">Derni<EFBFBD>re
|
||||
mise <20> jour : <!--webbot bot="Timestamp" startspan
|
||||
s-type="EDITED" s-format="%d/%m/%y" -->03/06/01<!--webbot
|
||||
bot="Timestamp" i-checksum="12434" endspan --></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="17%"><p align="center"><a
|
||||
href="..\..\download/dvldv.zip">T<EFBFBD>l<EFBFBD>charger la doc</a></p>
|
||||
</td>
|
||||
<td width="33%"><p align="center"><font size="4"><strong>7.
|
||||
R E C O M M A N D A T I O N S</strong></font></p>
|
||||
</td>
|
||||
<td valign="top" width="17%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 726 B |
|
Before Width: | Height: | Size: 518 B |
|
Before Width: | Height: | Size: 703 B |
|
Before Width: | Height: | Size: 492 B |
|
Before Width: | Height: | Size: 413 B |
@@ -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%"> <!--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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
@@ -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 : 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><..>/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><...>/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>
|
||||
<nom du ldv>.C : le fichier "source" du
|
||||
LDV<br>
|
||||
<nom du ldv>.PRJ : le fichier projet (Pure C)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><strong><...>/LDV/DOC</strong></td>
|
||||
<td>Cette documentation</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
|
||||
<p> </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> </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> </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> </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&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> </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> </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> </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> </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. 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. 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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--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> </p>
|
||||
|
||||
<p> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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%"> </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 --> 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%"> </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%"> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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 <= 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> </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> </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 <= index <= 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 <= index <= 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 <= index <= 1000)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </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 "de base" 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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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 : 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%"> <a href="http://www.estat.com/getstats?serial=1390118421"> </a> <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> </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> </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>
|
||||
<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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> </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> </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 >= 0 : un identifiant de fichier
|
||||
INI<br>
|
||||
Si < 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%"> </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="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%"> </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="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%"> </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="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%"> </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="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> </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> </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-></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-></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 && language )
|
||||
{
|
||||
sprintf( buffer, "%s\\%s\\MYLDV.INI", path_ldv, language ) ;
|
||||
hini = Vapi-></font><a href="#InOpen"><font size="3">InOpen</font></a><font size="3">( buffer ) ;<br> if ( hini >= 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-></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-></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-></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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--webbot
|
||||
bot="HTMLMarkup" startspan --><a href="http://www.estat.com/getstats?serial=1390118421"> </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 <--> 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> </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> </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->RaImgWhite( &out->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> </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> </td>
|
||||
<td align="center"> </td>
|
||||
<td align="center"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<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/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%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> </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> </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, 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->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> </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> </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> INTERFACE</strong></font></p>
|
||||
</td>
|
||||
<td valign="top" width="17%"> </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center></div>
|
||||
</body></html>
|
||||
@@ -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%"> <!--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> </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> </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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </p>
|
||||
|
||||
<p> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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> </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> </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
|
||||
"030!" ou "DSP!" 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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
@@ -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%"> <!--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> </p>
|
||||
|
||||
<p> </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->fd_nplanes <= 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
|
||||
"sur place".</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> </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> </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
|
||||
"sur place". 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> </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
|
||||
"sur place". 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> </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->fd_w mais il est l<> parce que <em><strong>VISION</strong></em>
|
||||
positionne toujours img->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> </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->RaInd2RasterInit( img, wished_width ) ;<br>
|
||||
for ( y = 0; y < img->fd_h; y++ )<br>
|
||||
{<br>
|
||||
GetTosIndexes( y, tab_indexes, &nb_indexes ) ; /*
|
||||
Recupere les indices TOS pour la ligne y */<br>
|
||||
Vapi->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> </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> </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 --> 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> </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 --> 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> </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%"> </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> </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> </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> </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 <= i < 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 > 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> </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 <= i < 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 > 63) new_val = 63 ; /* Important ! */<br>
|
||||
green[i] = new_val ; /* Pour 0 <= i < 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> </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 <= i < 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 <= i
|
||||
< 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> </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> </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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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%"> <!--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
|
||||
"caster" 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> </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> </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> </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->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
|
||||
"Pr" pour les fonctions du groupe de progression).</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" width="17%"><a href="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%"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
</body>
|
||||
</html>
|
||||