|
Integrace knihoven C napříč platformami
Přehled
HotPDF používá HPDFCLibs.pas jako bridge orientovaný na Pascal mezi Delphi a
staticky linkovanými objektovými soubory C používanými jednotkami HPDFZLib.pas, HPDFJpeg.pas a
HPDFTiff.pas. Jednotka zpřístupňuje runtime symboly, které tyto knihovny očekávají, a zároveň
udržuje jednu konzistentní vrstvu deklarací Pascalu pro sestavení Win32 i Win64
Klíčové funkce
- Sdílený runtime bridge pro zlib-ng v režimu kompatibilním se zlib, 64bitový runtime SIMD dispatch zlib-ng, libjpeg-turbo 3.1.90 s objekty NASM SIMD a libtiff 4.7.1
- Pokrytí paměti, stdio, řetězcových a znakových funkcí a vybraných matematických a runtime pomocných rutin
- Bridge pro malloc, free, realloc a calloc se zarovnáním na 32 bajtů pro nativní buffery vhodné pro SIMD
- Kompatibilita Win32 s objekty zlib-ng OMF sestavenými pomocí bcc32c a s objekty JPEG/TIFF OMF sestavenými pomocí bcc32 ze složky Lib\thirdparty\Win32
- Kompatibilita Win64 se soubory obj COFF64 ze složky Lib\thirdparty\Win64 a s objekty zlib-ng COFF ze složky Lib\thirdparty\Win64x
- Pomocné typy o velikosti pointeru a Pascal stubs pro symboly, které linker Delphi neumí importovat přímo
Vysoce výkonné JPEG jádro
Standardní pracovní postupy JPEG podporuje libjpeg-turbo 3.1.90 přes klasické API kompatibilní s libjpeg, které zpřístupňuje HPDFJpeg.pas. Objektová sestavení Win32, Win64 a Win64x obsahují příslušné akcelerační objekty NASM SIMD a stejná přibalená sada objektů je dostupná také integrační vrstvě TIFF pro zpracování TIFF komprimovaného pomocí JPEG
Poznámky k bridge zlib-ng
Flate obrazové streamy ve Win64 používají malý bridge v C okolo jednorázové komprese zlib-ng. Bridge drží nativní délkové typy zlib-ng uvnitř C, zatímco vůči Pascal vrstvě HotPDF zachovává 32bitové délky bufferů a chování maximální komprese
Objektová sestavení zlib-ng pro Win64x a diagnostické MSVC Win64 obsahují runtime dispatch implementací SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ a AVX2 s obecnými fallbacky. Win32 ponechává obecné objekty zlib-ng OMF kvůli kompatibilitě s bcc32c, zatímco cesta Win32 JPEG/TIFF zůstává na klasických objektech bcc32 OMF
Podporované skupiny funkcí
- Správa paměti: malloc, free, realloc, calloc s alokací zarovnanou na 32 bajtů
- Operace se soubory a streamy: fopen, fclose, fputc, fread, fwrite, fflush, ferror
- Řetězcové a znakové funkce: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
- Runtime pomocné rutiny: ftol, setjmp, log, snprintf, memcmp
Podpora architektur
- Win32: Pascal wrappers a pomocné rutiny nad WinAPI odpovídající objektům bcc32c a bcc32 OMF linkovaným každou podporovanou verzí Delphi Win32
- Win64: importy msvcrt.dll a malé pomocné stubs vyžadované objekty COFF64 generovanými MSVC
- Společné typy: PtrInt a PtrUInt udržují deklarace velikosti pointeru sladěné napříč oběma cíli
Viz také
|