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

151 lines
5.5 KiB
C

#ifndef __LDV_H
#define __LDV_H
#ifndef __LDG__
#include "ldv\ldg.h"
#endif
#ifndef __VAPI_H
#include "ldv\vapi.h"
#endif
/* Error codes */
typedef long LDV_STATUS ;
#define ELDV_NOERROR 0x0 /* No error */
#define ELDV_INVALIDPARAMETER 0x1 /* At least one parameter is invalid */
#define ELDV_NBPLANESNOTSUPPORTED 0x2 /* Unsupported number of planes */
#define ELDV_NOTENOUGHMEMORY 0x3 /* Not enough memory */
#define ELDV_PREVIEWNOTSUPPORTED 0x4 /* Preview is not supported */
#define ELDV_RUNNOTSUPPORTED 0x5 /* Run is not supported (!) */
#define ELDV_BADVAPIVERSION 0x6 /* No VAPI or wrong version */
#define ELDV_IMGFORMATMISMATCH 0x7 /* Image format is not compatible */
#define ELDV_CANCELLED 0x8 /* User cancelled the operation */
#define ELDV_BADINTERFACE 0x9 /* LDV does not expose a proper interface */
#define ELDV_GENERALFAILURE 0xF /* General failure, reason unknown */
/* Macro aiming to test if a */
/* LDV call was successful */
#define LDV_SUCCESS(x) ((x) == ELDV_NOERROR)
/* LDV types */
#define TLDV_MODIFYIMG 0x01 /* Modify image : filter, scaler, ... */
/* Flags field bitmask for */
/* A given number of planes */
#define LDVF_STDFORMAT 0x00000001UL /* Image is standard format */
#define LDVF_ATARIFORMAT 0x00000002UL /* Image is ATARI format (Falcon) */
#define LDVF_SPECFORMAT 0x00000004UL /* Image is specific format (video card/emulator)) */
#define LDVF_SUPPORTPREVIEW 0x00000008UL /* Preview is supported */
#define LDVF_AFFECTPALETTE 0x00000010UL /* Module changes palette (if NbPlanes <= 8) */
#define LDVF_SUPPORTPROG 0x00000020UL /* Module wil call progress fonction */
#define LDVF_OPINPLACE 0x00000040UL /* Module operate inplace and changes the source (out parameter is ignored) */
#define LDVF_REALTIMEPARAMS 0x00000080UL /* Module supports real time parameter changes in preview mode */
#define LDVF_SUPPORTCANCEL 0x00000100UL /* Module supports user cancellation (see PrSetProgEx) */
#define LDVF_NOSELECTION 0x00000200UL /* Module can only operate on full image, not sub block */
#define LDVF_NOCHANGE 0x00000400UL /* Module won't change any part of the image (e.g. report LDV) */
/* This struct reports what a LDV */
/* Can do for each number of planes */
typedef struct
{
char NbPlanes ; /* Image number of planes : */
/* 0 : ends this structure */
/* 1, 2, 4, 8, 16, 24, or 32 */
char NbPlanesOut ; /* Number of planes after modification */
unsigned long Flags ; /* LDVF_... */
}
LDV_CAPS ;
#define LDVNBMAX_PARAMETERS 4 /* Maximum 4 parameters can be passed by VISION */
typedef union
{
short s ;
float f ;
void* str ;
}
LDV_BASICPARAM ;
#define LDVT_SHORT 1
#define LDVT_FLOAT 2
#define LDVT_FILE 3
typedef struct
{
char Name[1+15] ;
char Type ;
LDV_BASICPARAM MinValue ;
LDV_BASICPARAM DefaultValue ;
LDV_BASICPARAM MaxValue ;
}
LDV_DEF_PARAM ;
typedef struct
{
short StrSize ; /* Size in bytes of LDV_INFOS */
short Type ; /* TLDV_... */
char Authors[1+45] ; /* Author(s) list */
LDV_CAPS Caps[10] ; /* What this LDV can do */
/* For each number of planes */
/* Last element is zeroed to */
/* Mark the end */
char RFU[16] ; /* Futur usage */
}
LDV_INFOS ;
typedef struct
{
short Red ; /* 0...1000 */
short Green ; /* 0...1000 */
short Blue ; /* 0...1000 */
}
VDI_ELEMENTPAL ;
typedef struct
{
short NbColors ; /* Number of colors for this palette */
VDI_ELEMENTPAL* Pal ; /* Indexed from VDI */
}
LDV_PALETTE ;
typedef struct
{
short x1, y1, x2, y2 ; /* Rectangle defining the sub block to work on */
short NbParams ;
LDV_BASICPARAM Param[LDVNBMAX_PARAMETERS] ;
short ParamType[LDVNBMAX_PARAMETERS] ; /* A bit redundant but useful to free allocated memory for file name */
/* Since VAPI_LDVVERSION 0x0106 */
/* LDV can return a text to be displayed by VISION */
char ldv_txt_out[128] ;
}
LDV_PARAMS ;
/* Image definition for the LDV to operate on */
typedef struct
{
short RasterFormat ; /* LDVF_STDFORMAT, LDVF_ATARIFORMAT or LDVF_SPECFORMAT */
/* VISION selects the optimal format from */
/* LDV capabilities reported via GetLDVCapabilities */
MFDB Raster ; /* Image */
LDV_PALETTE Palette ; /* Valid if Raster.fd_nplanes <= 8 */
void* Context ; /* Used by Image I/O interface */
}
LDV_IMAGE ;
long cdecl ImGetInf(char* filename, void* ldv_img) ;
long cdecl ImLoad(void* ldv_img) ;
void cdecl ImFree(void* ldv_img) ;
#endif