diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-28 11:17:26 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-28 11:17:26 +0200 |
| commit | 3919bb2e7de813732b7a8917744eadddf3ecfa67 (patch) | |
| tree | f868ea3af3d42d4fd4a9c1aab3a3afd5ddcb6e9b /src | |
| parent | 93e8434a87c845956784a53e49111c46a099feba (diff) | |
| download | box64-3919bb2e7de813732b7a8917744eadddf3ecfa67.tar.gz box64-3919bb2e7de813732b7a8917744eadddf3ecfa67.zip | |
[BOX32][WRAPPER] Added 32bits wrapped libexpat and another batch of wrapped function for 32bits libfreetype and SDL2
Diffstat (limited to 'src')
| -rw-r--r-- | src/library_list_32.h | 3 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 36 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedexpatdefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedexpattypes32.h | 22 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedexpatundefs32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedfreetypetypes32.h | 25 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 10 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 5 | ||||
| -rw-r--r-- | src/wrapped32/wrappedexpat.c | 696 | ||||
| -rw-r--r-- | src/wrapped32/wrappedexpat_private.h | 71 | ||||
| -rw-r--r-- | src/wrapped32/wrappedfreetype.c | 247 | ||||
| -rw-r--r-- | src/wrapped32/wrappedfreetype_private.h | 28 | ||||
| -rw-r--r-- | src/wrapped32/wrappedsdl2_private.h | 2 |
13 files changed, 1146 insertions, 15 deletions
diff --git a/src/library_list_32.h b/src/library_list_32.h index 32b03c95..c4fe2276 100644 --- a/src/library_list_32.h +++ b/src/library_list_32.h @@ -30,4 +30,7 @@ GO("libopenal.so.0", openal) GO("libopenal.so", openal) GO("openal.so", openal) +GO("libexpat.so.1", expat) +GO("libexpat.so", expat) + GO("crashhandler.so", crashhandler) diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index f43b5f14..19cf1462 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -362,6 +362,7 @@ #() uFuuu -> uFuuu #() uFuup -> uFuup #() uFupp -> uFupp +#() uFpii -> uFpii #() uFpuU -> uFpuU #() uFppu -> uFppu #() fFuii -> fFuii @@ -375,6 +376,7 @@ #() lFppi -> lFppi #() lFppL -> lFppL #() LFEpi -> LFEpi +#() LFEpp -> LFEpp #() LFpii -> LFpii #() LFpip -> LFpip #() LFppi -> LFppi @@ -570,6 +572,7 @@ #() lFipLi -> lFipLi #() lFipLl -> lFipLl #() lFpuip -> lFpuip +#() LFEpLp -> LFEpLp #() LFEXii -> LFEXii #() LFpLLS -> LFpLLS #() LFppLp -> LFppLp @@ -702,6 +705,7 @@ #() iFEiiip -> iFEiiip #() iFEipii -> iFEipii #() iFEpipp -> iFEpipp +#() iFEpupu -> iFEpupu #() iFEpupV -> iFEpupV #() iFEpLpp -> iFEpLpp #() iFEpLpV -> iFEpLpV @@ -817,6 +821,7 @@ #() iFEuppLp -> iFEuppLp #() iFEpiLpp -> iFEpiLpp #() iFEplluu -> iFEplluu +#() iFEpLlpp -> iFEpLlpp #() iFEppipp -> iFEppipp #() iFEppllp -> iFEppllp #() iFEpppup -> iFEpppup @@ -1058,25 +1063,56 @@ #() iFEpvvpV -> iFEppV #() iFEpLvvpp -> iFEpLpp wrappedcrashhandler: +wrappedexpat: +- vFpp: + - XML_SetCharacterDataHandler +- vFppp: + - XML_SetDoctypeDeclHandler + - XML_SetElementHandler wrappedfreetype: - iFp: - FT_Done_Face + - FT_Has_PS_Glyph_Names +- uFp: + - FT_Get_Sfnt_Name_Count +- pFp: + - FT_Get_Postscript_Name + - FT_Get_X11_Font_Format - vFpp: - FT_Outline_Get_CBox +- iFpi: + - FT_Select_Charmap + - FT_Select_Size - iFpu: - FT_Render_Glyph +- iFpp: + - FT_Get_PS_Font_Info - uFpL: - FT_Get_Char_Index +- LFpp: + - FT_Get_First_Char +- pFpi: + - FT_Get_Sfnt_Table +- iFpip: + - FT_Get_Sfnt_Name - iFpui: - FT_Load_Glyph - iFpuu: - FT_Set_Pixel_Sizes - iFpLi: - FT_Load_Char +- iFppp: + - FT_Get_BDF_Property +- LFpLp: + - FT_Get_Next_Char +- iFpupu: + - FT_Get_Glyph_Name - iFpplp: - FT_New_Face - iFplluu: - FT_Set_Char_Size +- iFpLlpp: + - FT_Load_Sfnt_Table - iFppllp: - FT_New_Memory_Face wrappedldlinux: diff --git a/src/wrapped32/generated/wrappedexpatdefs32.h b/src/wrapped32/generated/wrappedexpatdefs32.h new file mode 100644 index 00000000..ba9ba295 --- /dev/null +++ b/src/wrapped32/generated/wrappedexpatdefs32.h @@ -0,0 +1,8 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedexpatDEFS32_H_ +#define __wrappedexpatDEFS32_H_ + + +#endif // __wrappedexpatDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedexpattypes32.h b/src/wrapped32/generated/wrappedexpattypes32.h new file mode 100644 index 00000000..b3bed412 --- /dev/null +++ b/src/wrapped32/generated/wrappedexpattypes32.h @@ -0,0 +1,22 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedexpatTYPES32_H_ +#define __wrappedexpatTYPES32_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef void (*vFpp_t)(void*, void*); +typedef void (*vFppp_t)(void*, void*, void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(XML_SetCharacterDataHandler, vFpp_t) \ + GO(XML_SetDoctypeDeclHandler, vFppp_t) \ + GO(XML_SetElementHandler, vFppp_t) + +#endif // __wrappedexpatTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedexpatundefs32.h b/src/wrapped32/generated/wrappedexpatundefs32.h new file mode 100644 index 00000000..62f20708 --- /dev/null +++ b/src/wrapped32/generated/wrappedexpatundefs32.h @@ -0,0 +1,8 @@ +/****************************************************************** + * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) * + ******************************************************************/ +#ifndef __wrappedexpatUNDEFS32_H_ +#define __wrappedexpatUNDEFS32_H_ + + +#endif // __wrappedexpatUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedfreetypetypes32.h b/src/wrapped32/generated/wrappedfreetypetypes32.h index 868f7d07..eea13522 100644 --- a/src/wrapped32/generated/wrappedfreetypetypes32.h +++ b/src/wrapped32/generated/wrappedfreetypetypes32.h @@ -12,26 +12,51 @@ #endif typedef int32_t (*iFp_t)(void*); +typedef uint32_t (*uFp_t)(void*); +typedef void* (*pFp_t)(void*); typedef void (*vFpp_t)(void*, void*); +typedef int32_t (*iFpi_t)(void*, int32_t); typedef int32_t (*iFpu_t)(void*, uint32_t); +typedef int32_t (*iFpp_t)(void*, void*); typedef uint32_t (*uFpL_t)(void*, uintptr_t); +typedef uintptr_t (*LFpp_t)(void*, void*); +typedef void* (*pFpi_t)(void*, int32_t); +typedef int32_t (*iFpip_t)(void*, int32_t, void*); typedef int32_t (*iFpui_t)(void*, uint32_t, int32_t); typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t); typedef int32_t (*iFpLi_t)(void*, uintptr_t, int32_t); +typedef int32_t (*iFppp_t)(void*, void*, void*); +typedef uintptr_t (*LFpLp_t)(void*, uintptr_t, void*); +typedef int32_t (*iFpupu_t)(void*, uint32_t, void*, uint32_t); typedef int32_t (*iFpplp_t)(void*, void*, intptr_t, void*); typedef int32_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint32_t, uint32_t); +typedef int32_t (*iFpLlpp_t)(void*, uintptr_t, intptr_t, void*, void*); typedef int32_t (*iFppllp_t)(void*, void*, intptr_t, intptr_t, void*); #define SUPER() ADDED_FUNCTIONS() \ GO(FT_Done_Face, iFp_t) \ + GO(FT_Has_PS_Glyph_Names, iFp_t) \ + GO(FT_Get_Sfnt_Name_Count, uFp_t) \ + GO(FT_Get_Postscript_Name, pFp_t) \ + GO(FT_Get_X11_Font_Format, pFp_t) \ GO(FT_Outline_Get_CBox, vFpp_t) \ + GO(FT_Select_Charmap, iFpi_t) \ + GO(FT_Select_Size, iFpi_t) \ GO(FT_Render_Glyph, iFpu_t) \ + GO(FT_Get_PS_Font_Info, iFpp_t) \ GO(FT_Get_Char_Index, uFpL_t) \ + GO(FT_Get_First_Char, LFpp_t) \ + GO(FT_Get_Sfnt_Table, pFpi_t) \ + GO(FT_Get_Sfnt_Name, iFpip_t) \ GO(FT_Load_Glyph, iFpui_t) \ GO(FT_Set_Pixel_Sizes, iFpuu_t) \ GO(FT_Load_Char, iFpLi_t) \ + GO(FT_Get_BDF_Property, iFppp_t) \ + GO(FT_Get_Next_Char, LFpLp_t) \ + GO(FT_Get_Glyph_Name, iFpupu_t) \ GO(FT_New_Face, iFpplp_t) \ GO(FT_Set_Char_Size, iFplluu_t) \ + GO(FT_Load_Sfnt_Table, iFpLlpp_t) \ GO(FT_New_Memory_Face, iFppllp_t) #endif // __wrappedfreetypeTYPES32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index de01ca30..3546f5f3 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -452,6 +452,7 @@ typedef uint32_t (*uFuip_t)(uint32_t, int32_t, void*); typedef uint32_t (*uFuuu_t)(uint32_t, uint32_t, uint32_t); typedef uint32_t (*uFuup_t)(uint32_t, uint32_t, void*); typedef uint32_t (*uFupp_t)(uint32_t, void*, void*); +typedef uint32_t (*uFpii_t)(void*, int32_t, int32_t); typedef uint32_t (*uFpuU_t)(void*, uint32_t, uint64_t); typedef uint32_t (*uFppu_t)(void*, void*, uint32_t); typedef float (*fFuii_t)(uint32_t, int32_t, int32_t); @@ -465,6 +466,7 @@ typedef intptr_t (*lFpLL_t)(void*, uintptr_t, uintptr_t); typedef intptr_t (*lFppi_t)(void*, void*, int32_t); typedef intptr_t (*lFppL_t)(void*, void*, uintptr_t); typedef uintptr_t (*LFEpi_t)(x64emu_t*, void*, int32_t); +typedef uintptr_t (*LFEpp_t)(x64emu_t*, void*, void*); typedef uintptr_t (*LFpii_t)(void*, int32_t, int32_t); typedef uintptr_t (*LFpip_t)(void*, int32_t, void*); typedef uintptr_t (*LFppi_t)(void*, void*, int32_t); @@ -660,6 +662,7 @@ typedef intptr_t (*lFiipL_t)(int32_t, int32_t, void*, uintptr_t); typedef intptr_t (*lFipLi_t)(int32_t, void*, uintptr_t, int32_t); typedef intptr_t (*lFipLl_t)(int32_t, void*, uintptr_t, intptr_t); typedef intptr_t (*lFpuip_t)(void*, uint32_t, int32_t, void*); +typedef uintptr_t (*LFEpLp_t)(x64emu_t*, void*, uintptr_t, void*); typedef uintptr_t (*LFEXii_t)(x64emu_t*, void*, int32_t, int32_t); typedef uintptr_t (*LFpLLS_t)(void*, uintptr_t, uintptr_t, void*); typedef uintptr_t (*LFppLp_t)(void*, void*, uintptr_t, void*); @@ -792,6 +795,7 @@ typedef void (*vFppppp_t)(void*, void*, void*, void*, void*); typedef int32_t (*iFEiiip_t)(x64emu_t*, int32_t, int32_t, int32_t, void*); typedef int32_t (*iFEipii_t)(x64emu_t*, int32_t, void*, int32_t, int32_t); typedef int32_t (*iFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*); +typedef int32_t (*iFEpupu_t)(x64emu_t*, void*, uint32_t, void*, uint32_t); typedef int32_t (*iFEpupV_t)(x64emu_t*, void*, uint32_t, void*, void*); typedef int32_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*); typedef int32_t (*iFEpLpV_t)(x64emu_t*, void*, uintptr_t, void*, void*); @@ -907,6 +911,7 @@ typedef int32_t (*iFEuppup_t)(x64emu_t*, uint32_t, void*, void*, uint32_t, void* typedef int32_t (*iFEuppLp_t)(x64emu_t*, uint32_t, void*, void*, uintptr_t, void*); typedef int32_t (*iFEpiLpp_t)(x64emu_t*, void*, int32_t, uintptr_t, void*, void*); typedef int32_t (*iFEplluu_t)(x64emu_t*, void*, intptr_t, intptr_t, uint32_t, uint32_t); +typedef int32_t (*iFEpLlpp_t)(x64emu_t*, void*, uintptr_t, intptr_t, void*, void*); typedef int32_t (*iFEppipp_t)(x64emu_t*, void*, void*, int32_t, void*, void*); typedef int32_t (*iFEppllp_t)(x64emu_t*, void*, void*, intptr_t, intptr_t, void*); typedef int32_t (*iFEpppup_t)(x64emu_t*, void*, void*, void*, uint32_t, void*); @@ -1511,6 +1516,7 @@ void uFuip_32(x64emu_t *emu, uintptr_t fcn) { uFuip_t fn = (uFuip_t)fcn; R_EAX = void uFuuu_32(x64emu_t *emu, uintptr_t fcn) { uFuuu_t fn = (uFuuu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void uFuup_32(x64emu_t *emu, uintptr_t fcn) { uFuup_t fn = (uFuup_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFupp_32(x64emu_t *emu, uintptr_t fcn) { uFupp_t fn = (uFupp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } +void uFpii_32(x64emu_t *emu, uintptr_t fcn) { uFpii_t fn = (uFpii_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void uFpuU_32(x64emu_t *emu, uintptr_t fcn) { uFpuU_t fn = (uFpuU_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12)); } void uFppu_32(x64emu_t *emu, uintptr_t fcn) { uFppu_t fn = (uFppu_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void fFuii_32(x64emu_t *emu, uintptr_t fcn) { fFuii_t fn = (fFuii_t)fcn; float fl = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); fpu_do_push(emu); ST0val = fl; } @@ -1524,6 +1530,7 @@ void lFpLL_32(x64emu_t *emu, uintptr_t fcn) { lFpLL_t fn = (lFpLL_t)fcn; R_EAX = void lFppi_32(x64emu_t *emu, uintptr_t fcn) { lFppi_t fn = (lFppi_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } void lFppL_32(x64emu_t *emu, uintptr_t fcn) { lFppL_t fn = (lFppL_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)))); } void LFEpi_32(x64emu_t *emu, uintptr_t fcn) { LFEpi_t fn = (LFEpi_t)fcn; R_EAX = to_ulong(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8))); } +void LFEpp_32(x64emu_t *emu, uintptr_t fcn) { LFEpp_t fn = (LFEpp_t)fcn; R_EAX = to_ulong(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); } void LFpii_32(x64emu_t *emu, uintptr_t fcn) { LFpii_t fn = (LFpii_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } void LFpip_32(x64emu_t *emu, uintptr_t fcn) { LFpip_t fn = (LFpip_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12))); } void LFppi_32(x64emu_t *emu, uintptr_t fcn) { LFppi_t fn = (LFppi_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } @@ -1719,6 +1726,7 @@ void lFiipL_32(x64emu_t *emu, uintptr_t fcn) { lFiipL_t fn = (lFiipL_t)fcn; R_EA void lFipLi_32(x64emu_t *emu, uintptr_t fcn) { lFipLi_t fn = (lFipLi_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16))); } void lFipLl_32(x64emu_t *emu, uintptr_t fcn) { lFipLl_t fn = (lFipLl_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_long(from_ptri(long_t, R_ESP + 16)))); } void lFpuip_32(x64emu_t *emu, uintptr_t fcn) { lFpuip_t fn = (lFpuip_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); } +void LFEpLp_32(x64emu_t *emu, uintptr_t fcn) { LFEpLp_t fn = (LFEpLp_t)fcn; R_EAX = to_ulong(fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12))); } void LFEXii_32(x64emu_t *emu, uintptr_t fcn) { LFEXii_t fn = (LFEXii_t)fcn; R_EAX = to_ulong(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); } void LFpLLS_32(x64emu_t *emu, uintptr_t fcn) { LFpLLS_t fn = (LFpLLS_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), io_convert32(from_ptriv(R_ESP + 16)))); } void LFppLp_32(x64emu_t *emu, uintptr_t fcn) { LFppLp_t fn = (LFppLp_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); } @@ -1851,6 +1859,7 @@ void vFppppp_32(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; f void iFEiiip_32(x64emu_t *emu, uintptr_t fcn) { iFEiiip_t fn = (iFEiiip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFEipii_32(x64emu_t *emu, uintptr_t fcn) { iFEipii_t fn = (iFEipii_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFEpipp_32(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } +void iFEpupu_32(x64emu_t *emu, uintptr_t fcn) { iFEpupu_t fn = (iFEpupu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void iFEpupV_32(x64emu_t *emu, uintptr_t fcn) { iFEpupV_t fn = (iFEpupV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptrv(R_ESP + 16)); } void iFEpLpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void iFEpLpV_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpV_t fn = (iFEpLpV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptrv(R_ESP + 16)); } @@ -1966,6 +1975,7 @@ void iFEuppup_32(x64emu_t *emu, uintptr_t fcn) { iFEuppup_t fn = (iFEuppup_t)fcn void iFEuppLp_32(x64emu_t *emu, uintptr_t fcn) { iFEuppLp_t fn = (iFEuppLp_t)fcn; R_EAX = fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20)); } void iFEpiLpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpiLpp_t fn = (iFEpiLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFEplluu_32(x64emu_t *emu, uintptr_t fcn) { iFEplluu_t fn = (iFEplluu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); } +void iFEpLlpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLlpp_t fn = (iFEpLlpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFEppipp_32(x64emu_t *emu, uintptr_t fcn) { iFEppipp_t fn = (iFEppipp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); } void iFEppllp_32(x64emu_t *emu, uintptr_t fcn) { iFEppllp_t fn = (iFEppllp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_long(from_ptri(long_t, R_ESP + 12)), to_long(from_ptri(long_t, R_ESP + 16)), from_ptriv(R_ESP + 20)); } void iFEpppup_32(x64emu_t *emu, uintptr_t fcn) { iFEpppup_t fn = (iFEpppup_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 118dc064..1b16db48 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -403,6 +403,7 @@ void uFuip_32(x64emu_t *emu, uintptr_t fnc); void uFuuu_32(x64emu_t *emu, uintptr_t fnc); void uFuup_32(x64emu_t *emu, uintptr_t fnc); void uFupp_32(x64emu_t *emu, uintptr_t fnc); +void uFpii_32(x64emu_t *emu, uintptr_t fnc); void uFpuU_32(x64emu_t *emu, uintptr_t fnc); void uFppu_32(x64emu_t *emu, uintptr_t fnc); void fFuii_32(x64emu_t *emu, uintptr_t fnc); @@ -416,6 +417,7 @@ void lFpLL_32(x64emu_t *emu, uintptr_t fnc); void lFppi_32(x64emu_t *emu, uintptr_t fnc); void lFppL_32(x64emu_t *emu, uintptr_t fnc); void LFEpi_32(x64emu_t *emu, uintptr_t fnc); +void LFEpp_32(x64emu_t *emu, uintptr_t fnc); void LFpii_32(x64emu_t *emu, uintptr_t fnc); void LFpip_32(x64emu_t *emu, uintptr_t fnc); void LFppi_32(x64emu_t *emu, uintptr_t fnc); @@ -611,6 +613,7 @@ void lFiipL_32(x64emu_t *emu, uintptr_t fnc); void lFipLi_32(x64emu_t *emu, uintptr_t fnc); void lFipLl_32(x64emu_t *emu, uintptr_t fnc); void lFpuip_32(x64emu_t *emu, uintptr_t fnc); +void LFEpLp_32(x64emu_t *emu, uintptr_t fnc); void LFEXii_32(x64emu_t *emu, uintptr_t fnc); void LFpLLS_32(x64emu_t *emu, uintptr_t fnc); void LFppLp_32(x64emu_t *emu, uintptr_t fnc); @@ -743,6 +746,7 @@ void vFppppp_32(x64emu_t *emu, uintptr_t fnc); void iFEiiip_32(x64emu_t *emu, uintptr_t fnc); void iFEipii_32(x64emu_t *emu, uintptr_t fnc); void iFEpipp_32(x64emu_t *emu, uintptr_t fnc); +void iFEpupu_32(x64emu_t *emu, uintptr_t fnc); void iFEpupV_32(x64emu_t *emu, uintptr_t fnc); void iFEpLpp_32(x64emu_t *emu, uintptr_t fnc); void iFEpLpV_32(x64emu_t *emu, uintptr_t fnc); @@ -858,6 +862,7 @@ void iFEuppup_32(x64emu_t *emu, uintptr_t fnc); void iFEuppLp_32(x64emu_t *emu, uintptr_t fnc); void iFEpiLpp_32(x64emu_t *emu, uintptr_t fnc); void iFEplluu_32(x64emu_t *emu, uintptr_t fnc); +void iFEpLlpp_32(x64emu_t *emu, uintptr_t fnc); void iFEppipp_32(x64emu_t *emu, uintptr_t fnc); void iFEppllp_32(x64emu_t *emu, uintptr_t fnc); void iFEpppup_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedexpat.c b/src/wrapped32/wrappedexpat.c new file mode 100644 index 00000000..1467aaaf --- /dev/null +++ b/src/wrapped32/wrappedexpat.c @@ -0,0 +1,696 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include <dlfcn.h> + +#include "wrappedlibs.h" + +#include "debug.h" +#include "wrapper32.h" +#include "bridge.h" +#include "librarian/library_private.h" +#include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box32context.h" +#include "emu/x64emu_private.h" +#include "myalign32.h" + +static const char* expatName = "libexpat.so.1"; +#define LIBNAME expat + +#include "generated/wrappedexpattypes32.h" + +#include "wrappercallback32.h" + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) \ +GO(4) + +// Start ... +#define GO(A) \ +static uintptr_t my_Start_fct_##A = 0; \ +static void* my_Start_##A(void* data, void* name, void* attr) \ +{ \ + return (void*)RunFunctionFmt(my_Start_fct_##A, "ppp", data, name, attr); \ +} +SUPER() +#undef GO +static void* find_Start_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Start_fct_##A == (uintptr_t)fct) return my_Start_##A; + SUPER() + #undef GO + #define GO(A) if(my_Start_fct_##A == 0) {my_Start_fct_##A = (uintptr_t)fct; return my_Start_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat Start callback\n"); + return NULL; +} +// End ... +#define GO(A) \ +static uintptr_t my_End_fct_##A = 0; \ +static void my_End_##A(void* data, void* name) \ +{ \ + RunFunctionFmt(my_End_fct_##A, "pp", data, name); \ +} +SUPER() +#undef GO +static void* find_End_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_End_fct_##A == (uintptr_t)fct) return my_End_##A; + SUPER() + #undef GO + #define GO(A) if(my_End_fct_##A == 0) {my_End_fct_##A = (uintptr_t)fct; return my_End_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat End callback\n"); + return NULL; +} +// CharData ... +#define GO(A) \ +static uintptr_t my_CharData_fct_##A = 0; \ +static void my_CharData_##A(void* data, void* s, int l) \ +{ \ + RunFunctionFmt(my_CharData_fct_##A, "ppi", data, s, l); \ +} +SUPER() +#undef GO +static void* find_CharData_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_CharData_fct_##A == (uintptr_t)fct) return my_CharData_##A; + SUPER() + #undef GO + #define GO(A) if(my_CharData_fct_##A == 0) {my_CharData_fct_##A = (uintptr_t)fct; return my_CharData_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat CharData callback\n"); + return NULL; +} +// StartNamespaceDecl ... +#define GO(A) \ +static uintptr_t my_StartNamespaceDecl_fct_##A = 0; \ +static void my_StartNamespaceDecl_##A(void* data, void* name, void* attr) \ +{ \ + RunFunctionFmt(my_StartNamespaceDecl_fct_##A, "ppp", data, name, attr); \ +} +SUPER() +#undef GO +static void* find_StartNamespaceDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_StartNamespaceDecl_fct_##A == (uintptr_t)fct) return my_StartNamespaceDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_StartNamespaceDecl_fct_##A == 0) {my_StartNamespaceDecl_fct_##A = (uintptr_t)fct; return my_StartNamespaceDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat StartNamespaceDecl callback\n"); + return NULL; +} +// EndNamespaceDecl ... +#define GO(A) \ +static uintptr_t my_EndNamespaceDecl_fct_##A = 0; \ +static void my_EndNamespaceDecl_##A(void* data, void* name) \ +{ \ + RunFunctionFmt(my_EndNamespaceDecl_fct_##A, "pp", data, name); \ +} +SUPER() +#undef GO +static void* find_EndNamespaceDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_EndNamespaceDecl_fct_##A == (uintptr_t)fct) return my_EndNamespaceDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_EndNamespaceDecl_fct_##A == 0) {my_EndNamespaceDecl_fct_##A = (uintptr_t)fct; return my_EndNamespaceDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat EndNamespaceDecl callback\n"); + return NULL; +} +// StartElement ... +#define GO(A) \ +static uintptr_t my_StartElement_fct_##A = 0; \ +static void my_StartElement_##A(void* data, void* name, void* attr) \ +{ \ + RunFunctionFmt(my_StartElement_fct_##A, "ppp", data, name, attr); \ +} +SUPER() +#undef GO +static void* find_StartElement_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_StartElement_fct_##A == (uintptr_t)fct) return my_StartElement_##A; + SUPER() + #undef GO + #define GO(A) if(my_StartElement_fct_##A == 0) {my_StartElement_fct_##A = (uintptr_t)fct; return my_StartElement_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat StartElement callback\n"); + return NULL; +} +// EndElement ... +#define GO(A) \ +static uintptr_t my_EndElement_fct_##A = 0; \ +static void my_EndElement_##A(void* data, void* name) \ +{ \ + RunFunctionFmt(my_EndElement_fct_##A, "pp", data, name); \ +} +SUPER() +#undef GO +static void* find_EndElement_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_EndElement_fct_##A == (uintptr_t)fct) return my_EndElement_##A; + SUPER() + #undef GO + #define GO(A) if(my_EndElement_fct_##A == 0) {my_EndElement_fct_##A = (uintptr_t)fct; return my_EndElement_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat EndElement callback\n"); + return NULL; +} +// ProcessingInstruction ... +#define GO(A) \ +static uintptr_t my_ProcessingInstruction_fct_##A = 0; \ +static void my_ProcessingInstruction_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(my_ProcessingInstruction_fct_##A, "ppp", a, b, c); \ +} +SUPER() +#undef GO +static void* find_ProcessingInstruction_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_ProcessingInstruction_fct_##A == (uintptr_t)fct) return my_ProcessingInstruction_##A; + SUPER() + #undef GO + #define GO(A) if(my_ProcessingInstruction_fct_##A == 0) {my_ProcessingInstruction_fct_##A = (uintptr_t)fct; return my_ProcessingInstruction_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat ProcessingInstruction callback\n"); + return NULL; +} +// Comment ... +#define GO(A) \ +static uintptr_t my_Comment_fct_##A = 0; \ +static void my_Comment_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(my_Comment_fct_##A, "pp", a, b); \ +} +SUPER() +#undef GO +static void* find_Comment_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Comment_fct_##A == (uintptr_t)fct) return my_Comment_##A; + SUPER() + #undef GO + #define GO(A) if(my_Comment_fct_##A == 0) {my_Comment_fct_##A = (uintptr_t)fct; return my_Comment_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat Comment callback\n"); + return NULL; +} +// StartCdataSection ... +#define GO(A) \ +static uintptr_t my_StartCdataSection_fct_##A = 0; \ +static void my_StartCdataSection_##A(void* data) \ +{ \ + RunFunctionFmt(my_StartCdataSection_fct_##A, "p", data); \ +} +SUPER() +#undef GO +static void* find_StartCdataSection_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_StartCdataSection_fct_##A == (uintptr_t)fct) return my_StartCdataSection_##A; + SUPER() + #undef GO + #define GO(A) if(my_StartCdataSection_fct_##A == 0) {my_StartCdataSection_fct_##A = (uintptr_t)fct; return my_StartCdataSection_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat StartCdataSection callback\n"); + return NULL; +} +// EndCdataSection ... +#define GO(A) \ +static uintptr_t my_EndCdataSection_fct_##A = 0; \ +static void my_EndCdataSection_##A(void* data) \ +{ \ + RunFunctionFmt(my_EndCdataSection_fct_##A, "p", data); \ +} +SUPER() +#undef GO +static void* find_EndCdataSection_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_EndCdataSection_fct_##A == (uintptr_t)fct) return my_EndCdataSection_##A; + SUPER() + #undef GO + #define GO(A) if(my_EndCdataSection_fct_##A == 0) {my_EndCdataSection_fct_##A = (uintptr_t)fct; return my_EndCdataSection_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat EndCdataSection callback\n"); + return NULL; +} +// Default ... +#define GO(A) \ +static uintptr_t my_Default_fct_##A = 0; \ +static void my_Default_##A(void* data, void* name, int len) \ +{ \ + RunFunctionFmt(my_Default_fct_##A, "ppi", data, name, len); \ +} +SUPER() +#undef GO +static void* find_Default_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_Default_fct_##A == (uintptr_t)fct) return my_Default_##A; + SUPER() + #undef GO + #define GO(A) if(my_Default_fct_##A == 0) {my_Default_fct_##A = (uintptr_t)fct; return my_Default_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat Default callback\n"); + return NULL; +} +// StartDoctypeDecl ... +#define GO(A) \ +static uintptr_t my_StartDoctypeDecl_fct_##A = 0; \ +static void my_StartDoctypeDecl_##A(void* a, void* b, void* c, void* d, int e) \ +{ \ + RunFunctionFmt(my_StartDoctypeDecl_fct_##A, "ppppi", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_StartDoctypeDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_StartDoctypeDecl_fct_##A == (uintptr_t)fct) return my_StartDoctypeDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_StartDoctypeDecl_fct_##A == 0) {my_StartDoctypeDecl_fct_##A = (uintptr_t)fct; return my_StartDoctypeDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat StartDoctypeDecl callback\n"); + return NULL; +} +// EndDoctypeDecl ... +#define GO(A) \ +static uintptr_t my_EndDoctypeDecl_fct_##A = 0; \ +static void my_EndDoctypeDecl_##A(void* data) \ +{ \ + RunFunctionFmt(my_EndDoctypeDecl_fct_##A, "p", data); \ +} +SUPER() +#undef GO +static void* find_EndDoctypeDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_EndDoctypeDecl_fct_##A == (uintptr_t)fct) return my_EndDoctypeDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_EndDoctypeDecl_fct_##A == 0) {my_EndDoctypeDecl_fct_##A = (uintptr_t)fct; return my_EndDoctypeDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat EndDoctypeDecl callback\n"); + return NULL; +} +// EntityDecl ... +#define GO(A) \ +static uintptr_t my_EntityDecl_fct_##A = 0; \ +static void my_EntityDecl_##A(void* a, void* b, int c, void* d, int e, void* f, void* g, void* h, void* i) \ +{ \ + RunFunctionFmt(my_EntityDecl_fct_##A, "ppipipppp", a, b, c, d, e, f, g, h, i); \ +} +SUPER() +#undef GO +static void* find_EntityDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_EntityDecl_fct_##A == (uintptr_t)fct) return my_EntityDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_EntityDecl_fct_##A == 0) {my_EntityDecl_fct_##A = (uintptr_t)fct; return my_EntityDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat EntityDecl callback\n"); + return NULL; +} +// ElementDecl ... +#define GO(A) \ +static uintptr_t my_ElementDecl_fct_##A = 0; \ +static void my_ElementDecl_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(my_ElementDecl_fct_##A, "ppp", a, b, c); \ +} +SUPER() +#undef GO +static void* find_ElementDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_ElementDecl_fct_##A == (uintptr_t)fct) return my_ElementDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_ElementDecl_fct_##A == 0) {my_ElementDecl_fct_##A = (uintptr_t)fct; return my_ElementDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat ElementDecl callback\n"); + return NULL; +} +// UnknownEncoding ... +#define GO(A) \ +static uintptr_t my_UnknownEncoding_fct_##A = 0; \ +static int my_UnknownEncoding_##A(void* a, void* b, void* c) \ +{ \ + return (int)RunFunctionFmt(my_UnknownEncoding_fct_##A, "ppp", a, b, c); \ +} +SUPER() +#undef GO +static void* find_UnknownEncoding_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_UnknownEncoding_fct_##A == (uintptr_t)fct) return my_UnknownEncoding_##A; + SUPER() + #undef GO + #define GO(A) if(my_UnknownEncoding_fct_##A == 0) {my_UnknownEncoding_fct_##A = (uintptr_t)fct; return my_UnknownEncoding_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat UnknownEncoding callback\n"); + return NULL; +} +// UnparsedEntityDecl ... +#define GO(A) \ +static uintptr_t my_UnparsedEntityDecl_fct_##A = 0; \ +static void my_UnparsedEntityDecl_##A(void* a, void* b, void* c, void* d, void* e, void* f) \ +{ \ + RunFunctionFmt(my_UnparsedEntityDecl_fct_##A, "pppppp", a, b, c, d, e, f); \ +} +SUPER() +#undef GO +static void* find_UnparsedEntityDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_UnparsedEntityDecl_fct_##A == (uintptr_t)fct) return my_UnparsedEntityDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_UnparsedEntityDecl_fct_##A == 0) {my_UnparsedEntityDecl_fct_##A = (uintptr_t)fct; return my_UnparsedEntityDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat UnparsedEntityDecl callback\n"); + return NULL; +} +// NotationDecl ... +#define GO(A) \ +static uintptr_t my_NotationDecl_fct_##A = 0; \ +static void my_NotationDecl_##A(void* a, void* b, void* c, void* d, void* e) \ +{ \ + RunFunctionFmt(my_NotationDecl_fct_##A, "ppppp", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_NotationDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_NotationDecl_fct_##A == (uintptr_t)fct) return my_NotationDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_NotationDecl_fct_##A == 0) {my_NotationDecl_fct_##A = (uintptr_t)fct; return my_NotationDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat NotationDecl callback\n"); + return NULL; +} +// NotStandalone ... +#define GO(A) \ +static uintptr_t my_NotStandalone_fct_##A = 0; \ +static int my_NotStandalone_##A(void* data) \ +{ \ + return (int)RunFunctionFmt(my_NotStandalone_fct_##A, "p", data); \ +} +SUPER() +#undef GO +static void* find_NotStandalone_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_NotStandalone_fct_##A == (uintptr_t)fct) return my_NotStandalone_##A; + SUPER() + #undef GO + #define GO(A) if(my_NotStandalone_fct_##A == 0) {my_NotStandalone_fct_##A = (uintptr_t)fct; return my_NotStandalone_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat NotStandalone callback\n"); + return NULL; +} +// ExternalEntityRef ... +#define GO(A) \ +static uintptr_t my_ExternalEntityRef_fct_##A = 0; \ +static int my_ExternalEntityRef_##A(void* a, void* b, void* c, void* d, void* e) \ +{ \ + return (int)RunFunctionFmt(my_ExternalEntityRef_fct_##A, "ppppp", a, b, c, d, e); \ +} +SUPER() +#undef GO +static void* find_ExternalEntityRef_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_ExternalEntityRef_fct_##A == (uintptr_t)fct) return my_ExternalEntityRef_##A; + SUPER() + #undef GO + #define GO(A) if(my_ExternalEntityRef_fct_##A == 0) {my_ExternalEntityRef_fct_##A = (uintptr_t)fct; return my_ExternalEntityRef_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat ExternalEntityRef callback\n"); + return NULL; +} +// XmlDecl ... +#define GO(A) \ +static uintptr_t my_XmlDecl_fct_##A = 0; \ +static void my_XmlDecl_##A(void* a, void* b, void* c, int d) \ +{ \ + RunFunctionFmt(my_XmlDecl_fct_##A, "pppi", a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_XmlDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_XmlDecl_fct_##A == (uintptr_t)fct) return my_XmlDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_XmlDecl_fct_##A == 0) {my_XmlDecl_fct_##A = (uintptr_t)fct; return my_XmlDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat XmlDecl callback\n"); + return NULL; +} +// AttlistDecl ... +#define GO(A) \ +static uintptr_t my_AttlistDecl_fct_##A = 0; \ +static void my_AttlistDecl_##A(void* a, void* b, void* c, void* d, void* e, int f) \ +{ \ + RunFunctionFmt(my_AttlistDecl_fct_##A, "pppppi", a, b, c, d, e, f); \ +} +SUPER() +#undef GO +static void* find_AttlistDecl_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_AttlistDecl_fct_##A == (uintptr_t)fct) return my_AttlistDecl_##A; + SUPER() + #undef GO + #define GO(A) if(my_AttlistDecl_fct_##A == 0) {my_AttlistDecl_fct_##A = (uintptr_t)fct; return my_AttlistDecl_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat AttlistDecl callback\n"); + return NULL; +} +// SkippedEntity ... +#define GO(A) \ +static uintptr_t my_SkippedEntity_fct_##A = 0; \ +static void my_SkippedEntity_##A(void* a, void* b, int c) \ +{ \ + RunFunctionFmt(my_SkippedEntity_fct_##A, "ppi", a, b, c); \ +} +SUPER() +#undef GO +static void* find_SkippedEntity_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_SkippedEntity_fct_##A == (uintptr_t)fct) return my_SkippedEntity_##A; + SUPER() + #undef GO + #define GO(A) if(my_SkippedEntity_fct_##A == 0) {my_SkippedEntity_fct_##A = (uintptr_t)fct; return my_SkippedEntity_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for expat SkippedEntity callback\n"); + return NULL; +} +#undef SUPER + +EXPORT void my32_XML_SetElementHandler(x64emu_t* emu, void* p, void* start, void* end) +{ + my->XML_SetElementHandler(p, find_Start_Fct(start), find_End_Fct(end)); +} + +EXPORT void my32_XML_SetCharacterDataHandler(x64emu_t* emu, void* p, void* h) +{ + my->XML_SetCharacterDataHandler(p, find_CharData_Fct(h)); +} + +//EXPORT void my32_XML_SetNamespaceDeclHandler(x64emu_t* emu, void* p, void* start, void* end) +//{ +// my->XML_SetNamespaceDeclHandler(p, find_StartNamespaceDecl_Fct(start), find_EndNamespaceDecl_Fct(end)); +//} + +//EXPORT void my32_XML_SetEntityDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetEntityDeclHandler(p, find_EntityDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetStartDoctypeDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetStartDoctypeDeclHandler(p, find_StartDoctypeDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetEndDoctypeDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetEndDoctypeDeclHandler(p, find_EndDoctypeDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetElementDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetElementDeclHandler(p, find_ElementDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetDefaultHandlerExpand(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetDefaultHandlerExpand(p, find_Default_Fct(f)); +//} + +//EXPORT void my32_XML_SetCommentHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetCommentHandler(p, find_Comment_Fct(f)); +//} + +//EXPORT void my32_XML_SetProcessingInstructionHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetProcessingInstructionHandler(p, find_ProcessingInstruction_Fct(f)); +//} + +//EXPORT void my32_XML_SetStartElementHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetStartElementHandler(p, find_StartElement_Fct(f)); +//} + +//EXPORT void my32_XML_SetEndElementHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetEndElementHandler(p, find_EndElement_Fct(f)); +//} + +//EXPORT void my32_XML_SetUnknownEncodingHandler(x64emu_t* emu, void* p, void* f, void* d) +//{ +// my->XML_SetUnknownEncodingHandler(p, find_UnknownEncoding_Fct(f), d); +//} + +//EXPORT void my32_XML_SetUnparsedEntityDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetUnparsedEntityDeclHandler(p, find_UnparsedEntityDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetNotationDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetNotationDeclHandler(p, find_NotationDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetStartNamespaceDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetStartNamespaceDeclHandler(p, find_StartNamespaceDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetEndNamespaceDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetEndNamespaceDeclHandler(p, find_EndNamespaceDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetStartCdataSectionHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetStartCdataSectionHandler(p, find_StartCdataSection_Fct(f)); +//} + +//EXPORT void my32_XML_SetEndCdataSectionHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetEndCdataSectionHandler(p, find_EndCdataSection_Fct(f)); +//} + +//EXPORT void my32_XML_SetDefaultHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetDefaultHandler(p, find_Default_Fct(f)); +//} + +//EXPORT void my32_XML_SetNotStandaloneHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetNotStandaloneHandler(p, find_NotStandalone_Fct(f)); +//} + +//EXPORT void my32_XML_SetExternalEntityRefHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetExternalEntityRefHandler(p, find_ExternalEntityRef_Fct(f)); +//} + +//EXPORT void my32_XML_SetXmlDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetXmlDeclHandler(p, find_XmlDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetAttlistDeclHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetAttlistDeclHandler(p, find_AttlistDecl_Fct(f)); +//} + +//EXPORT void my32_XML_SetSkippedEntityHandler(x64emu_t* emu, void* p, void* f) +//{ +// my->XML_SetSkippedEntityHandler(p, find_SkippedEntity_Fct(f)); +//} + +EXPORT void my32_XML_SetDoctypeDeclHandler(x64emu_t* emu, void* p, void* start, void* end) +{ + (void)emu; + my->XML_SetDoctypeDeclHandler(p, find_Start_Fct(start), find_End_Fct(end)); +} + +#include "wrappedlib_init32.h" diff --git a/src/wrapped32/wrappedexpat_private.h b/src/wrapped32/wrappedexpat_private.h new file mode 100644 index 00000000..975de9d5 --- /dev/null +++ b/src/wrapped32/wrappedexpat_private.h @@ -0,0 +1,71 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh... +#endif + +//GO(_INTERNAL_trim_to_complete_utf8_characters, +//GO(XML_DefaultCurrent, vFp) +GO(XML_ErrorString, pFu) +//GO(XML_ExpatVersion, pFv) +//GO(XML_ExpatVersionInfo, pFp) // return a struct of 3 int. Use shadow pointer on ARM64 and x86_64 +//GO(XML_ExternalEntityParserCreate, pFppp) +//GO(XML_FreeContentModel, vFpp) +//GO(XML_GetBase, pFp) +GO(XML_GetBuffer, pFpi) +//GO(XML_GetCurrentByteCount, iFp) +//GO(XML_GetCurrentByteIndex, lFp) +//GO(XML_GetCurrentColumnNumber, LFp) +GO(XML_GetCurrentLineNumber, LFp) +GO(XML_GetErrorCode, uFp) +//GO(XML_GetFeatureList, pFv) +//GO(XML_GetIdAttributeIndex, iFp) +//GO(XML_GetInputContext, pFppp) +//GO(XML_GetParsingStatus, vFpp) +//GO(XML_GetSpecifiedAttributeCount, iFp) +//GO(XML_MemFree, vFpp) +//GO(XML_MemMalloc, pFpL) +//GO(XML_MemRealloc, pFppL) +//GO(XML_Parse, uFppii) +GO(XML_ParseBuffer, uFpii) +GO(XML_ParserCreate, pFp) +//GO(XML_ParserCreate_MM, pFpppp) // return a structure +//GO(XML_ParserCreateNS, pFpc) +GO(XML_ParserFree, vFp) +//GO(XML_ParserReset, CFpp) +//GO(XML_ResumeParser, uFp) +//GOM(XML_SetAttlistDeclHandler, vFEpp) +//GO(XML_SetBase, uFpp) +//GOM(XML_SetCdataSectionHandler, vFEppp) +GOM(XML_SetCharacterDataHandler, vFEpp) +//GOM(XML_SetCommentHandler, vFEpp) +//GOM(XML_SetDefaultHandler, vFEpp) +//GOM(XML_SetDefaultHandlerExpand, vFEpp) +GOM(XML_SetDoctypeDeclHandler, vFEppp) +//GOM(XML_SetElementDeclHandler, vFEpp) +GOM(XML_SetElementHandler, vFEppp) +//GO(XML_SetEncoding, uFpp) +//GOM(XML_SetEndCdataSectionHandler, vFEpp) +//GOM(XML_SetEndDoctypeDeclHandler, vFEpp) +//GOM(XML_SetEndElementHandler, vFEpp) +//GOM(XML_SetEndNamespaceDeclHandler, vFEpp) +//GOM(XML_SetEntityDeclHandler, vFEpp) +//GOM(XML_SetExternalEntityRefHandler, vFEpp) +//GO(XML_SetExternalEntityRefHandlerArg, vFpp) +//GO(XML_SetHashSalt, iFpL) +//GOM(XML_SetNamespaceDeclHandler, vFEppp) +//GOM(XML_SetNotationDeclHandler, vFEpp) +//GOM(XML_SetNotStandaloneHandler, vFEpp) +//GO(XML_SetParamEntityParsing, iFpu) +//GOM(XML_SetProcessingInstructionHandler, vFEpp) +//GO(XML_SetReturnNSTriplet, vFpi) +//GOM(XML_SetSkippedEntityHandler, vFEpp) +//GOM(XML_SetStartCdataSectionHandler, vFEpp) +//GOM(XML_SetStartDoctypeDeclHandler, vFEpp) +//GOM(XML_SetStartElementHandler, vFEpp) +//GOM(XML_SetStartNamespaceDeclHandler, vFEpp) +//GOM(XML_SetUnknownEncodingHandler, vFEppp) +//GOM(XML_SetUnparsedEntityDeclHandler, vFEpp) +GO(XML_SetUserData, vFpp) +//GOM(XML_SetXmlDeclHandler, vFEpp) +//GO(XML_StopParser, uFpC) +//GO(XML_UseForeignDTD, uFpC) +//GO(XML_UseParserAsHandlerArg, vFp) diff --git a/src/wrapped32/wrappedfreetype.c b/src/wrapped32/wrappedfreetype.c index 1b06fe13..685ad760 100644 --- a/src/wrapped32/wrappedfreetype.c +++ b/src/wrapped32/wrappedfreetype.c @@ -201,6 +201,46 @@ typedef struct FT_MemoryRec_s void* realloc; } FT_MemoryRec_t; +typedef struct PS_PrivateRec_s +{ + int unique_id; + int lenIV; + uint8_t num_blue_values; + uint8_t num_other_blues; + uint8_t num_family_blues; + uint8_t num_family_other_blues; + int16_t blue_values[14]; + int16_t other_blues[10]; + int16_t family_blues [14]; + int16_t family_other_blues[10]; + long blue_scale; + int blue_shift; + int blue_fuzz; + uint16_t standard_width[1]; + uint16_t standard_height[1]; + uint8_t num_snap_widths; + uint8_t num_snap_heights; + uint8_t force_bold; + uint8_t round_stem_up; + int16_t snap_widths [13]; + int16_t snap_heights[13]; + long expansion_factor; + long language_group; + long password; + int16_t min_feature[2]; +} PS_PrivateRec_t; + +typedef struct BDF_PropertyRec_s +{ + int type; + union { + void* atom; //const char* + int integer; + uint32_t cardinal; + + } u; +} BDF_PropertyRec_t; + // 32bits FreeType structures typedef union FT_StreamDesc_32_s { @@ -372,6 +412,47 @@ typedef struct FT_MemoryRec_32_s ptr_t realloc;//void* } FT_MemoryRec_32_t; +typedef struct PS_PrivateRec_32_s +{ + int unique_id; + int lenIV; + uint8_t num_blue_values; + uint8_t num_other_blues; + uint8_t num_family_blues; + uint8_t num_family_other_blues; + int16_t blue_values[14]; + int16_t other_blues[10]; + int16_t family_blues [14]; + int16_t family_other_blues[10]; + long_t blue_scale; + int blue_shift; + int blue_fuzz; + uint16_t standard_width[1]; + uint16_t standard_height[1]; + uint8_t num_snap_widths; + uint8_t num_snap_heights; + uint8_t force_bold; + uint8_t round_stem_up; + int16_t snap_widths [13]; + int16_t snap_heights[13]; + long_t expansion_factor; + long_t language_group; + long_t password; + int16_t min_feature[2]; +} PS_PrivateRec_32_t; + +typedef struct BDF_PropertyRec_32_s +{ + int type; + union { + ptr_t atom; //const char* + int integer; + uint32_t cardinal; + + } u; +} BDF_PropertyRec_32_t; + + void inplace_FT_GlyphSlot_shrink(void* a) { if(!a) return; @@ -609,6 +690,53 @@ void inplace_FT_FaceRec_enlarge(void* a) inplace_FT_GlyphSlot_enlarge(glyphslot); } +void convert_PS_PrivateRec_to_32(void* d, void* s) +{ + PS_PrivateRec_t* src = s; + PS_PrivateRec_32_t* dst = d; + + dst->unique_id = src->unique_id; + dst->lenIV = src->lenIV; + dst->num_blue_values = src->num_blue_values; + dst->num_other_blues = src->num_other_blues; + dst->num_family_blues = src->num_family_blues; + dst->num_family_other_blues = src->num_family_other_blues; + memcpy(dst->blue_values, src->blue_values, sizeof(dst->blue_values)); + memcpy(dst->other_blues, src->other_blues, sizeof(dst->other_blues)); + memcpy(dst->family_blues, src->family_blues, sizeof(dst->family_blues)); + memcpy(dst->family_other_blues, src->family_other_blues, sizeof(dst->family_other_blues)); + dst->blue_scale = src->blue_scale; + dst->blue_shift = src->blue_shift; + dst->blue_fuzz = src->blue_fuzz; + dst->standard_width[0] = src->standard_width[0]; + dst->standard_height[0] = src->standard_height[0]; + dst->num_snap_widths = src->num_snap_widths; + dst->num_snap_heights = src->num_snap_heights; + dst->force_bold = src->force_bold; + dst->round_stem_up = src->round_stem_up; + memcpy(dst->snap_widths, src->snap_widths, sizeof(dst->snap_widths)); + memcpy(dst->snap_heights, src->snap_heights, sizeof(dst->snap_heights)); + dst->expansion_factor = src->expansion_factor; + dst->language_group = src->language_group; + dst->password = src->password; + dst->min_feature[0] = src->min_feature[0]; + dst->min_feature[1] = src->min_feature[1]; +} + +void convert_BDF_PropertyRec_to_32(void* d, void* s) +{ + BDF_PropertyRec_t* src = s; + BDF_PropertyRec_32_t* dst = d; + + dst->type = src->type; + switch(dst->type) { + case 0: break; + case 1: dst->u.atom = to_ptrv(src->u.atom); break; + case 2: dst->u.integer = src->u.integer; break; + case 3: dst->u.cardinal = src->u.cardinal; break; + } +} + #define ADDED_FUNCTIONS() \ #include "generated/wrappedfreetypetypes32.h" @@ -954,6 +1082,125 @@ EXPORT int my32_FT_New_Memory_Face(x64emu_t* emu, void* lib, void* base, long si return ret; } +EXPORT uint32_t my32_FT_Get_Sfnt_Name_Count(x64emu_t* emu, void* face) +{ + inplace_FT_FaceRec_enlarge(face); + uint32_t ret = my->FT_Get_Sfnt_Name_Count(face); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT uint32_t my32_FT_Get_Sfnt_Name(x64emu_t* emu, void* face, uint32_t idx, void* name) +{ + inplace_FT_FaceRec_enlarge(face); + uint32_t ret = my->FT_Get_Sfnt_Name(face, idx, name); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Get_Glyph_Name(x64emu_t* emu, void* face, uint32_t index, void* buff, uint32_t size) +{ + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Get_Glyph_Name(face, index, buff, size); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT void* my32_FT_Get_X11_Font_Format(x64emu_t* emu, void* face) +{ + inplace_FT_FaceRec_enlarge(face); + void* ret = my->FT_Get_X11_Font_Format(face); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT void* my32_FT_Get_Postscript_Name(x64emu_t* emu, void* face) +{ + inplace_FT_FaceRec_enlarge(face); + void* ret = my->FT_Get_Postscript_Name(face); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Load_Sfnt_Table(x64emu_t* emu, void* face, unsigned long tag, long offset, void* buff, ulong_t* length) +{ + unsigned long len_l = 0; + if(length) len_l = from_ulong(*length); + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Load_Sfnt_Table(face, tag, offset, buff, length?(&len_l):NULL); + inplace_FT_FaceRec_shrink(face); + if(length) *length = to_ulong(len_l); + return ret; +} + +EXPORT unsigned long my32_FT_Get_First_Char(x64emu_t* emu, void* face, uint32_t* index) +{ + inplace_FT_FaceRec_enlarge(face); + unsigned long ret = my->FT_Get_First_Char(face, index); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Get_PS_Font_Info(x64emu_t* emu, void* face, PS_PrivateRec_32_t* info) +{ + PS_PrivateRec_t info_l = {0}; + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Get_PS_Font_Info(face, &info_l); + inplace_FT_FaceRec_shrink(face); + convert_PS_PrivateRec_to_32(info, &info_l); + return ret; +} + +EXPORT int my32_FT_Select_Charmap(x64emu_t* emu, void* face, int encoding) +{ + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Select_Charmap(face, encoding); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT void* my32_FT_Get_Sfnt_Table(x64emu_t* emu, void* face, int tag) +{ + inplace_FT_FaceRec_enlarge(face); + void* ret = my->FT_Get_Sfnt_Table(face, tag); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Select_Size(x64emu_t* emu, void* face, int index) +{ + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Select_Size(face, index); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT unsigned long my32_FT_Get_Next_Char(x64emu_t* emu, void* face, unsigned long code, void* buff) +{ + inplace_FT_FaceRec_enlarge(face); + unsigned long ret = my->FT_Get_Next_Char(face, code, buff); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Has_PS_Glyph_Names(x64emu_t* emu, void* face) +{ + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Has_PS_Glyph_Names(face); + inplace_FT_FaceRec_shrink(face); + return ret; +} + +EXPORT int my32_FT_Get_BDF_Property(x64emu_t* emu, void* face, void* name, BDF_PropertyRec_32_t* prop) +{ + BDF_PropertyRec_t prop_l = {0}; + inplace_FT_FaceRec_enlarge(face); + int ret = my->FT_Get_BDF_Property(face, name, &prop_l); + inplace_FT_FaceRec_shrink(face); + convert_BDF_PropertyRec_to_32(prop, &prop_l); + return ret; +} + EXPORT int my32_FT_Done_Face(x64emu_t* emu, void* face) { inplace_FT_FaceRec_enlarge(face); diff --git a/src/wrapped32/wrappedfreetype_private.h b/src/wrapped32/wrappedfreetype_private.h index e5e7904f..cb2ca559 100644 --- a/src/wrapped32/wrappedfreetype_private.h +++ b/src/wrapped32/wrappedfreetype_private.h @@ -38,7 +38,7 @@ GO(FT_FloorFix, lFl) //GO(FT_Get_Advance, iFpiup) //GO(FT_Get_Advances, iFpuuip) //GO(FT_Get_BDF_Charset_ID, -//GO(FT_Get_BDF_Property, +GOM(FT_Get_BDF_Property, iFEppp) GOM(FT_Get_Char_Index, uFEpL) //GO(FT_Get_Charmap_Index, iFp) //GO(FT_Get_Color_Glyph_Layer, iFpupp) @@ -50,33 +50,33 @@ GOM(FT_Get_Char_Index, uFEpL) //GO(FT_Get_CID_Registry_Ordering_Supplement, //GO(FT_Get_CMap_Format, //GO(FT_Get_CMap_Language_ID, -//GO(FT_Get_First_Char, LFpp) +GOM(FT_Get_First_Char, LFEpp) //GO(FT_Get_Font_Format, pFp) //GO(FT_Get_FSType_Flags, WFp) //GO(FT_Get_Gasp, //GO(FT_Get_Glyph, iFpp) -//GO(FT_Get_Glyph_Name, iFpupu) +GOM(FT_Get_Glyph_Name, iFEpupu) //GO(FT_Get_Kerning, iFpuuup) //GO(FT_Get_MM_Blend_Coordinates, //GO(FT_Get_MM_Var, iFpp) //GO(FT_Get_Module, pFpp) //GO(FT_Get_Multi_Master, //GO(FT_Get_Name_Index, uFpp) -//GO(FT_Get_Next_Char, LFpLp) +GOM(FT_Get_Next_Char, LFEpLp) //GO(FT_Get_Paint, iFppip) // FT_OpaquePaint is a struct with "pi" //GO(FT_Get_Paint_Layers, iFppp) //GO(FT_Get_PFR_Advance, //GO(FT_Get_PFR_Kerning, //GO(FT_Get_PFR_Metrics, -//GO(FT_Get_Postscript_Name, pFp) -//GO(FT_Get_PS_Font_Info, iFpp) +GOM(FT_Get_Postscript_Name, pFEp) +GOM(FT_Get_PS_Font_Info, iFEpp) //GO(FT_Get_PS_Font_Private, //GO(FT_Get_PS_Font_Value, //GO(FT_Get_Renderer, pFpu) //GO(FT_Get_Sfnt_LangTag, -//GO(FT_Get_Sfnt_Name, iFpip) -//GO(FT_Get_Sfnt_Name_Count, uFp) -//GO(FT_Get_Sfnt_Table, pFpi) +GOM(FT_Get_Sfnt_Name, iFEpip) +GOM(FT_Get_Sfnt_Name_Count, uFEp) +GOM(FT_Get_Sfnt_Table, pFEpi) //GO(FT_Get_SubGlyph_Info, iFpuppppp) //GO(FT_Get_Track_Kerning, iFplip) //GO(FT_Get_Transform, vFppp) @@ -84,7 +84,7 @@ GOM(FT_Get_Char_Index, uFEpL) //GO(FT_Get_Var_Blend_Coordinates, iFpup) //GO(FT_Get_Var_Design_Coordinates, //GO(FT_Get_WinFNT_Header, iFpp) // does FT_WinFNT_HeaderRec_ needs alignment? -//GO(FT_Get_X11_Font_Format, pFp) +GOM(FT_Get_X11_Font_Format, pFEp) //GO(FT_Glyph_Copy, iFpp) //GO(FT_Glyph_Get_CBox, vFpup) //GO(FT_GlyphSlot_Embolden, vFp) @@ -95,7 +95,7 @@ GOM(FT_Get_Char_Index, uFEpL) //GO(FT_Glyph_To_Bitmap, iFpupC) //GO(FT_Glyph_Transform, iFppp) //GO(FT_Gzip_Uncompress, -//GO(FT_Has_PS_Glyph_Names, +GOM(FT_Has_PS_Glyph_Names, iFEp) GO(FT_Init_FreeType, iFBp_) //GO(FT_Library_SetLcdFilter, iFpu) //GO(FT_Library_SetLcdFilterWeights, iFpp) @@ -109,7 +109,7 @@ GO(FT_Init_FreeType, iFBp_) //GO(FT_List_Up, vFpp) GOM(FT_Load_Char, iFEpLi) GOM(FT_Load_Glyph, iFEpui) -//GO(FT_Load_Sfnt_Table, iFpLlpp) +GOM(FT_Load_Sfnt_Table, iFEpLlpp) //GO(FT_Matrix_Invert, iFp) //GO(FT_Matrix_Multiply, vFpp) //GO(FT_MulDiv, lFlll) @@ -149,8 +149,8 @@ GOM(FT_Outline_Get_CBox, vFEpp) GOM(FT_Render_Glyph, iFEpu) //GO(FT_Request_Size, iFpp) //GO(FT_RoundFix, -//GO(FT_Select_Charmap, iFpi) -//GO(FT_Select_Size, iFpi) +GOM(FT_Select_Charmap, iFEpi) +GOM(FT_Select_Size, iFEpi) //GO(FT_Set_Charmap, iFpp) GOM(FT_Set_Char_Size, iFEplluu) //GO(FT_Set_Debug_Hook, diff --git a/src/wrapped32/wrappedsdl2_private.h b/src/wrapped32/wrappedsdl2_private.h index c3b4906c..c00e8cfb 100644 --- a/src/wrapped32/wrappedsdl2_private.h +++ b/src/wrapped32/wrappedsdl2_private.h @@ -77,7 +77,7 @@ GOM(SDL_CreateRGBSurfaceWithFormatFrom, pFEpiiiiu) // GO(SDL_CreateSemaphore, pFu) // GO(SDL_CreateShapedWindow, pFpuuuuu) // GO(SDL_CreateSoftwareRenderer, pFp) -// GO(SDL_CreateSystemCursor, pFu) +GO(SDL_CreateSystemCursor, pFu) GO(SDL_CreateTexture, pFpuiii) // GO(SDL_CreateTextureFromSurface, pFpp) GOM(SDL_CreateThread, pFEppp) |