|
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
|