Cross-Platform C Library Integration

סקירה

HotPDF משתמשת ב-HPDFCLibs.pas כגשר Pascal-facing בין Delphi לבין קובצי object של C המקושרים סטטית ומשמשים את HPDFZLib.pas, HPDFJpeg.pas ו-HPDFTiff.pas. היחידה חושפת את סמלי runtime שהספריות מצפות להם, תוך שמירה על שכבת הצהרות Pascal אחת ועקבית עבור בניות Win32 ו-Win64

Key Features

  • גשר runtime משותף עבור zlib-ng במצב תואם zlib, ‏zlib-ng 64-bit runtime SIMD dispatch, ‏libjpeg-turbo 3.1.90 עם אובייקטי NASM SIMD, ו-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 שנבנו ב-bcc32c ואובייקטי JPEG/TIFF OMF שנבנו ב-bcc32 מתוך Lib\thirdparty\Win32
  • תאימות Win64 עם קובצי obj מסוג COFF64 מתוך Lib\thirdparty\Win64 ואובייקטי zlib-ng COFF מתוך Lib\thirdparty\Win64x
  • טיפוסי עזר בגודל pointer ו-stubs של Pascal עבור סמלים שה-linker של Delphi אינו יכול לייבא ישירות

High-Performance JPEG Backend

תהליכי עבודה סטנדרטיים של JPEG מגובים ב-libjpeg-turbo 3.1.90 דרך API הקלאסי התואם libjpeg שנחשף על ידי HPDFJpeg.pas. בניות object של Win32, Win64 ו-Win64x כוללות את אובייקטי האצת NASM SIMD הרלוונטיים, ואותה ערכת אובייקטים מצורפת זמינה גם לשכבת TIFF עבור טיפול ב-TIFF דחוס JPEG

Zlib-ng Bridge Notes

זרמי תמונת Flate ב-Win64 משתמשים בגשר C קטן סביב דחיסת zlib-ng one-shot. הגשר שומר את טיפוסי האורך המקוריים של zlib-ng בתוך C, תוך שמירה על אורכי buffer של 32-bit ועל התנהגות דחיסה מרבית בצד Pascal של HotPDF

בניות האובייקטים Win64x ו-MSVC Win64 הדיאגנוסטיות של zlib-ng כוללות מימושים שנבחרים בזמן runtime עבור SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ ו-AVX2 עם fallbacks גנריים. Win32 שומרת את אובייקטי OMF הגנריים של zlib-ng לתאימות bcc32c, בעוד מסלול JPEG/TIFF של Win32 נשאר על אובייקטי OMF קלאסיים של bcc32

קבוצות פונקציות נתמכות

  • 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 ועזרי WinAPI-backed שמתאימים לאובייקטי OMF של bcc32c ו-bcc32 המקושרים על ידי כל גרסת 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