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é