Files
FireBee_Setup/tools/vision/ldv/ldvcom.h
2022-11-25 03:00:01 +01:00

92 lines
3.3 KiB
C

#ifndef __LDVCOM_H
#define __LDVCOM_H
#include "ldv\ldv.h"
typedef struct
{
char* ShortName ; /* Module short name (15 chars max) */
char* LongName ; /* Module long name (31 chars max) */
char* Description ; /* Module description (79 chars max) */
/* Parameters that can apply */
LDV_DEF_PARAM Params[LDVNBMAX_PARAMETERS] ;
char* ParamLabels[LDVNBMAX_PARAMETERS] ; /* Optional labels for parameters */
/* Should be part of LDV_DEF_PARAM */
/* But that would break compatibility with previous LDVs */
}
LDV_INI_SPEC ;
/* Image Modification Interface */
typedef struct
{
/* Allows VISION to allocate required ressources for LDV to operate */
/* You have to indicate in out->Raster the output image size */
/* As well as in out->Palette.NbColors field */
/* In params, you have to tell which zone has to be send to Undo buffer */
LDV_STATUS cdecl (*PreRun)(LDV_IMAGE* in, LDV_PARAMS* params, LDV_IMAGE* out) ;
/* Performs LDV operation */
/* VISION already allocated required memory from previous call */
/* DO NOT ALLOCATE OR FREE MEMORY THAT VISION WILL USE AFTER THIS CALL */
LDV_STATUS cdecl (*Run)(LDV_IMAGE* in, LDV_PARAMS* params, LDV_IMAGE* out) ;
/* Same as previous one, but in preview mode */
LDV_STATUS cdecl (*Preview)(LDV_IMAGE* in, LDV_PARAMS* params, LDV_IMAGE* out) ;
}
ILDVModifImg ;
typedef struct
{
LDG* Ldg ; /* LDG Module */
char* FileName ; /* Only name, no path */
short Version ; /* Same as Ldg->vers */
LDV_INFOS Infos ; /* Module informations */
LDV_INI_SPEC IniSpec ; /* .INI specific */
/* Reports capabilities to VISION */
/* VISION gives access to its Application Programmer Interface */
LDV_INFOS* cdecl (*GetLDVCapabilities)(VAPI* vapi) ;
int NbReferences ; /* How many times this module is referenced */
ILDVModifImg* IModifImg ; /* TLDV_MODIFYIMG Interface */
}
LDV_MODULE ;
typedef struct
{
unsigned long prerun_ms ;
unsigned long pre_ldv_ms ;
unsigned long run_ms ;
unsigned long post_ldv_ms ;
unsigned long total_ms ;
}
LDV_PERF ;
/* Flags for LDVDo */
#define LDVDOF_NONE 0
#define LDVDOF_PREVIEW 1
#define LDVDOF_PROGLFOUT 2 /* Progression Life Cycle (creation/destruction) is outside of LDVDo */
LDV_CAPS* LDVGetNPlanesCaps(LDV_MODULE* mod, int nplanes) ;
LDV_MODULE* LDVGetModuleList(char* path, int* nb_ldv) ;
void LDVFreeModuleList(LDV_MODULE* module_list) ;
LDV_MODULE* GetLdvByLdg(LDV_MODULE* ldv_list, LDG* ldg) ;
LDV_STATUS LDVAlloc(LDV_IMAGE* img) ;
LDV_STATUS LDVDo(LDV_MODULE* ldv, LDV_PARAMS* ldv_params, LDV_IMAGE* ldv_img, int flags) ;
LDV_STATUS LDVAdapt2Planes(LDV_IMAGE* pldv_img, short nplanes) ;
LDV_STATUS LDVLoadFunctions(char* path, LDV_MODULE* mod) ;
void LDVUnloadFunctions(LDV_MODULE* mod) ;
void LDVFreeDynParams(LDV_PARAMS* ldv_params) ;
GEM_WINDOW* LDVGetProgWindow(void) ;
GEM_WINDOW* LDVCreateProgWindow(int ldvcap_flags) ;
void LDVDestroyProgWindow(void) ;
#endif