diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
commit | 16f504a9dca3fe3b70568f67b7d41241ae485288 (patch) | |
tree | c60f36ada0496ba928b7161059ba5ab1ab224f9d /src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h | |
parent | Initial commit. (diff) | |
download | virtualbox-upstream.tar.xz virtualbox-upstream.zip |
Adding upstream version 7.0.6-dfsg.upstream/7.0.6-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h')
-rw-r--r-- | src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h b/src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h new file mode 100644 index 00000000..e4847680 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/fdi.h @@ -0,0 +1,310 @@ +/* + * Copyright (C) 2002 Patrik Stridvall + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#ifndef __WINE_FDI_H +#define __WINE_FDI_H + +#include <basetsd.h> + +#ifdef __cplusplus +extern "C" { +#endif /* defined(__cplusplus) */ + +#ifndef _WIN64 +#include <pshpack4.h> +#endif + +#ifndef INCLUDED_TYPES_FCI_FDI +#define INCLUDED_TYPES_FCI_FDI 1 + +/*********************************************************************** + * Common FCI/TDI declarations + */ + +typedef ULONG CHECKSUM; + +typedef ULONG UOFF; +typedef ULONG COFF; + +/**********************************************************************/ + +typedef struct { + int erfOper; /* FCI/FDI error code - see {FCI,FDI}ERROR_XXX for details. */ + int erfType; /* Optional error value filled in by FCI/FDI. */ + BOOL fError; /* TRUE => error present */ +} ERF, *PERF; + +/**********************************************************************/ + +#define CB_MAX_CHUNK 32768U +#define CB_MAX_DISK __MSABI_LONG(0x7fffffff) +#define CB_MAX_FILENAME 256 +#define CB_MAX_CABINET_NAME 256 +#define CB_MAX_CAB_PATH 256 +#define CB_MAX_DISK_NAME 256 + +/**********************************************************************/ + +typedef unsigned short TCOMP; + +#define tcompMASK_TYPE 0x000F /* Mask for compression type */ +#define tcompTYPE_NONE 0x0000 /* No compression */ +#define tcompTYPE_MSZIP 0x0001 /* MSZIP */ +#define tcompTYPE_QUANTUM 0x0002 /* Quantum */ +#define tcompTYPE_LZX 0x0003 /* LZX */ +#define tcompBAD 0x000F /* Unspecified compression type */ + +#define tcompMASK_LZX_WINDOW 0x1F00 /* Mask for LZX Compression Memory */ +#define tcompLZX_WINDOW_LO 0x0F00 /* Lowest LZX Memory (15) */ +#define tcompLZX_WINDOW_HI 0x1500 /* Highest LZX Memory (21) */ +#define tcompSHIFT_LZX_WINDOW 8 /* Amount to shift over to get int */ + +#define tcompMASK_QUANTUM_LEVEL 0x00F0 /* Mask for Quantum Compression Level */ +#define tcompQUANTUM_LEVEL_LO 0x0010 /* Lowest Quantum Level (1) */ +#define tcompQUANTUM_LEVEL_HI 0x0070 /* Highest Quantum Level (7) */ +#define tcompSHIFT_QUANTUM_LEVEL 4 /* Amount to shift over to get int */ + +#define tcompMASK_QUANTUM_MEM 0x1F00 /* Mask for Quantum Compression Memory */ +#define tcompQUANTUM_MEM_LO 0x0A00 /* Lowest Quantum Memory (10) */ +#define tcompQUANTUM_MEM_HI 0x1500 /* Highest Quantum Memory (21) */ +#define tcompSHIFT_QUANTUM_MEM 8 /* Amount to shift over to get int */ + +#define tcompMASK_RESERVED 0xE000 /* Reserved bits (high 3 bits) */ + +/**********************************************************************/ + +#define CompressionTypeFromTCOMP(tc) \ + ((tc) & tcompMASK_TYPE) + +#define CompressionLevelFromTCOMP(tc) \ + (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL) + +#define CompressionMemoryFromTCOMP(tc) \ + (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM) + +#define TCOMPfromTypeLevelMemory(t, l, m) \ + (((m) << tcompSHIFT_QUANTUM_MEM ) | \ + ((l) << tcompSHIFT_QUANTUM_LEVEL) | \ + ( t )) + +#define LZXCompressionWindowFromTCOMP(tc) \ + (((tc) & tcompMASK_LZX_WINDOW) >> tcompSHIFT_LZX_WINDOW) + +#define TCOMPfromLZXWindow(w) \ + (((w) << tcompSHIFT_LZX_WINDOW) | \ + ( tcompTYPE_LZX )) + +#endif /* !defined(INCLUDED_TYPES_FCI_FDI) */ + +/*********************************************************************** + * FDI declarations + */ + +typedef enum { + FDIERROR_NONE, + FDIERROR_CABINET_NOT_FOUND, + FDIERROR_NOT_A_CABINET, + FDIERROR_UNKNOWN_CABINET_VERSION, + FDIERROR_CORRUPT_CABINET, + FDIERROR_ALLOC_FAIL, + FDIERROR_BAD_COMPR_TYPE, + FDIERROR_MDI_FAIL, + FDIERROR_TARGET_FILE, + FDIERROR_RESERVE_MISMATCH, + FDIERROR_WRONG_CABINET, + FDIERROR_USER_ABORT, +} FDIERROR; + +/**********************************************************************/ + +#ifndef _A_NAME_IS_UTF +#define _A_NAME_IS_UTF 0x80 +#endif + +#ifndef _A_EXEC +#define _A_EXEC 0x40 +#endif + +/**********************************************************************/ + +typedef void *HFDI; + +/**********************************************************************/ + +typedef struct { + LONG cbCabinet; /* Total length of cabinet file */ + USHORT cFolders; /* Count of folders in cabinet */ + USHORT cFiles; /* Count of files in cabinet */ + USHORT setID; /* Cabinet set ID */ + USHORT iCabinet; /* Cabinet number in set (0 based) */ + BOOL fReserve; /* TRUE => RESERVE present in cabinet */ + BOOL hasprev; /* TRUE => Cabinet is chained prev */ + BOOL hasnext; /* TRUE => Cabinet is chained next */ +} FDICABINETINFO, *PFDICABINETINFO; /* pfdici */ + +/**********************************************************************/ + +typedef enum { + fdidtNEW_CABINET, /* New cabinet */ + fdidtNEW_FOLDER, /* New folder */ + fdidtDECRYPT, /* Decrypt a data block */ +} FDIDECRYPTTYPE; + +/**********************************************************************/ + +typedef struct { + FDIDECRYPTTYPE fdidt; /* Command type (selects union below) */ + + void *pvUser; /* Decryption context */ + + union { + struct { /* fdidtNEW_CABINET */ + void *pHeaderReserve; /* RESERVE section from CFHEADER */ + USHORT cbHeaderReserve; /* Size of pHeaderReserve */ + USHORT setID; /* Cabinet set ID */ + int iCabinet; /* Cabinet number in set (0 based) */ + } cabinet; + + struct { /* fdidtNEW_FOLDER */ + void *pFolderReserve; /* RESERVE section from CFFOLDER */ + USHORT cbFolderReserve; /* Size of pFolderReserve */ + USHORT iFolder; /* Folder number in cabinet (0 based) */ + } folder; + + struct { /* fdidtDECRYPT */ + void *pDataReserve; /* RESERVE section from CFDATA */ + USHORT cbDataReserve; /* Size of pDataReserve */ + void *pbData; /* Data buffer */ + USHORT cbData; /* Size of data buffer */ + BOOL fSplit; /* TRUE if this is a split data block */ + USHORT cbPartial; /* 0 if this is not a split block, or + * the first piece of a split block; + * Greater than 0 if this is the + * second piece of a split block. + */ + } decrypt; + } DUMMYUNIONNAME; +} FDIDECRYPT, *PFDIDECRYPT; + +/**********************************************************************/ + +typedef void * (__cdecl *PFNALLOC)(ULONG cb); +#define FNALLOC(fn) void * __cdecl fn(ULONG cb) + +typedef void (__cdecl *PFNFREE)(void *pv); +#define FNFREE(fn) void __cdecl fn(void *pv) + +typedef INT_PTR (__cdecl *PFNOPEN) (char *pszFile, int oflag, int pmode); +#define FNOPEN(fn) INT_PTR __cdecl fn(char *pszFile, int oflag, int pmode) + +typedef UINT (__cdecl *PFNREAD) (INT_PTR hf, void *pv, UINT cb); +#define FNREAD(fn) UINT __cdecl fn(INT_PTR hf, void *pv, UINT cb) + +typedef UINT (__cdecl *PFNWRITE)(INT_PTR hf, void *pv, UINT cb); +#define FNWRITE(fn) UINT __cdecl fn(INT_PTR hf, void *pv, UINT cb) + +typedef int (__cdecl *PFNCLOSE)(INT_PTR hf); +#define FNCLOSE(fn) int __cdecl fn(INT_PTR hf) + +typedef LONG (__cdecl *PFNSEEK) (INT_PTR hf, LONG dist, int seektype); +#define FNSEEK(fn) LONG __cdecl fn(INT_PTR hf, LONG dist, int seektype) + +typedef int (__cdecl *PFNFDIDECRYPT)(PFDIDECRYPT pfdid); +#define FNFDIDECRYPT(fn) int __cdecl fn(PFDIDECRYPT pfdid) + +typedef struct { + LONG cb; + char *psz1; + char *psz2; + char *psz3; /* Points to a 256 character buffer */ + void *pv; /* Value for client */ + + INT_PTR hf; + + USHORT date; + USHORT time; + USHORT attribs; + + USHORT setID; /* Cabinet set ID */ + USHORT iCabinet; /* Cabinet number (0-based) */ + USHORT iFolder; /* Folder number (0-based) */ + + FDIERROR fdie; +} FDINOTIFICATION, *PFDINOTIFICATION; + +typedef enum { + fdintCABINET_INFO, /* General information about cabinet */ + fdintPARTIAL_FILE, /* First file in cabinet is continuation */ + fdintCOPY_FILE, /* File to be copied */ + fdintCLOSE_FILE_INFO, /* Close the file, set relevant info */ + fdintNEXT_CABINET, /* File continued to next cabinet */ + fdintENUMERATE, /* Enumeration status */ +} FDINOTIFICATIONTYPE; + +typedef INT_PTR (__cdecl *PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint, + PFDINOTIFICATION pfdin); +#define FNFDINOTIFY(fn) INT_PTR __cdecl fn(FDINOTIFICATIONTYPE fdint, \ + PFDINOTIFICATION pfdin) + +#ifndef _WIN64 +#include <pshpack1.h> +#endif + +typedef struct { + char ach[2]; /* Set to { '*', '\0' } */ + LONG cbFile; /* Required spill file size */ +} FDISPILLFILE, *PFDISPILLFILE; + +#ifndef _WIN64 +#include <poppack.h> +#endif + +#define cpuUNKNOWN (-1) /* FDI does detection */ +#define cpu80286 (0) /* '286 opcodes only */ +#define cpu80386 (1) /* '386 opcodes used */ + +/**********************************************************************/ + +HFDI __cdecl FDICreate(PFNALLOC, PFNFREE, PFNOPEN, PFNREAD, PFNWRITE, + PFNCLOSE, PFNSEEK, int, PERF); +BOOL __cdecl FDIIsCabinet(HFDI, INT_PTR, PFDICABINETINFO); +BOOL __cdecl FDICopy(HFDI, char *, char *, int, PFNFDINOTIFY, + PFNFDIDECRYPT, void *pvUser); +BOOL __cdecl FDIDestroy(HFDI); +BOOL __cdecl FDITruncateCabinet(HFDI, char *, USHORT); + +/**********************************************************************/ + +#ifndef _WIN64 +#include <poppack.h> +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* defined(__cplusplus) */ + +#endif /* __WINE_FDI_H */ |