Cross-Platform C Library Integration

Επισκόπηση

Το HotPDF χρησιμοποιεί HPDFCLibs.pas ως γέφυρα προς Pascal ανάμεσα σε Delphi και στα statically linked C object files που χρησιμοποιούνται από HPDFZLib.pas, HPDFJpeg.pas και HPDFTiff.pas. Η unit εκθέτει τα runtime symbols που περιμένουν αυτές οι βιβλιοθήκες, διατηρώντας παράλληλα ένα συνεπές Pascal declaration layer για Win32 και Win64 builds

Key Features

  • Κοινή runtime γέφυρα για zlib-ng σε zlib-compatible mode, zlib-ng 64-bit runtime SIMD dispatch, libjpeg-turbo 3.1.90 με NASM SIMD objects και libtiff 4.7.1
  • Memory, stdio, string/character, and selected math/runtime helper coverage
  • 32-byte aligned malloc, free, realloc, and calloc bridging for SIMD-friendly native buffers
  • Συμβατότητα Win32 με zlib-ng OMF objects χτισμένα με bcc32c και JPEG/TIFF OMF objects χτισμένα με bcc32 από Lib\thirdparty\Win32
  • Συμβατότητα Win64 με COFF64 obj files από Lib\thirdparty\Win64 και zlib-ng COFF objects από Lib\thirdparty\Win64x
  • Pointer-sized helper types και Pascal stubs για symbols που ο Delphi linker δεν μπορεί να εισαγάγει απευθείας

High-Performance JPEG Backend

Οι τυπικές ροές JPEG υποστηρίζονται από libjpeg-turbo 3.1.90 μέσω της κλασικής libjpeg-compatible API που εκτίθεται από HPDFJpeg.pas. Τα object builds Win32, Win64 και Win64x περιλαμβάνουν τα σχετικά NASM SIMD acceleration objects, και το ίδιο bundled object set είναι επίσης διαθέσιμο στο TIFF integration layer για χειρισμό TIFF με JPEG compression

Zlib-ng Bridge Notes

Τα Win64 Flate image streams χρησιμοποιούν μικρή C γέφυρα γύρω από zlib-ng one-shot compression. Η γέφυρα κρατά τους native zlib-ng length types μέσα σε C, διατηρώντας παράλληλα τα Pascal-facing 32-bit buffer lengths και τη συμπεριφορά maximum compression του HotPDF

Τα Win64x και diagnostic MSVC Win64 zlib-ng object builds περιλαμβάνουν runtime-dispatched SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ και AVX2 implementations με generic fallbacks. Το Win32 κρατά τα generic zlib-ng OMF objects για συμβατότητα bcc32c, ενώ η διαδρομή Win32 JPEG/TIFF παραμένει σε classic bcc32 OMF objects

Υποστηριζόμενες ομάδες functions

  • Memory Management: malloc, free, realloc, calloc with 32-byte aligned allocation
  • File and Stream Operations: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • String and Character Functions: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Runtime Helpers: ftol, setjmp, log, snprintf, memcmp

Architecture Support

  • Win32: Pascal wrappers και WinAPI-backed helpers που ταιριάζουν με τα bcc32c και bcc32 OMF objects που συνδέονται από κάθε υποστηριζόμενη έκδοση Delphi Win32
  • Win64: msvcrt.dll imports plus small helper stubs required by the MSVC-generated COFF64 objects
  • Common Types: PtrInt and PtrUInt keep pointer-sized declarations aligned across both targets

See Also