|
Cross-Platform C Library Integration
Tổng quan
HotPDF dùng HPDFCLibs.pas làm cầu nối phía Pascal giữa Delphi và các C object file được liên kết tĩnh mà HPDFZLib.pas, HPDFJpeg.pas, và HPDFTiff.pas sử dụng. Unit này expose các runtime symbol mà những thư viện đó cần, đồng thời giữ một lớp khai báo Pascal nhất quán cho cả bản dựng Win32 lẫn Win64
Tính năng chính
- Cầu nối runtime dùng chung cho zlib-ng ở chế độ tương thích zlib, dispatch SIMD runtime 64-bit của zlib-ng, libjpeg-turbo 3.1.90 với NASM SIMD object, và libtiff 4.7.1
- Phủ các helper cho memory, stdio, string/character, và một số hàm math/runtime được chọn
- Bridging malloc, free, realloc, và calloc căn chỉnh 32 byte cho các buffer native thân thiện với SIMD
- Tương thích Win32 với các object zlib-ng OMF build bằng bcc32c và các object JPEG/TIFF OMF build bằng bcc32 từ Lib\thirdparty\Win32
- Tương thích Win64 với các file COFF64 obj từ Lib\thirdparty\Win64 và các object COFF zlib-ng từ Lib\thirdparty\Win64x
- Các kiểu helper theo kích thước con trỏ và các Pascal stub cho những symbol mà Delphi linker không thể import trực tiếp
Backend JPEG hiệu năng cao
Các luồng JPEG chuẩn được libjpeg-turbo 3.1.90 xử lý thông qua API tương thích libjpeg cổ điển mà HPDFJpeg.pas expose. Các object build Win32, Win64, và Win64x đều có các object tăng tốc SIMD NASM liên quan, và cùng bộ object đóng gói đó cũng sẵn cho lớp tích hợp TIFF để xử lý TIFF nén JPEG
Ghi chú cầu nối Zlib-ng
Các image stream Flate của Win64 dùng một cầu nối C nhỏ quanh chế độ nén một lần của zlib-ng. Cầu nối giữ các kiểu độ dài native của zlib-ng ở phía C trong khi vẫn bảo toàn các độ dài buffer 32-bit phía Pascal và hành vi nén tối đa của HotPDF
Các object build zlib-ng Win64x và diagnostic MSVC Win64 bao gồm các triển khai SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ, và AVX2 được dispatch ở runtime kèm các nhánh fallback tổng quát. Win32 giữ các object OMF zlib-ng tổng quát để tương thích bcc32c, còn đường JPEG/TIFF Win32 vẫn dùng các object OMF bcc32 cổ điển
Nhóm hàm được hỗ trợ
- Quản lý bộ nhớ: malloc, free, realloc, calloc với cấp phát căn chỉnh 32 byte
- Thao tác tệp và stream: fopen, fclose, fputc, fread, fwrite, fflush, ferror
- Hàm chuỗi và ký tự: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
- Helper runtime: ftol, setjmp, log, snprintf, memcmp
Hỗ trợ kiến trúc
- Win32: các Pascal wrapper và helper dựa trên WinAPI khớp với các object OMF bcc32c và bcc32 được liên kết bởi mọi bản Delphi Win32 được hỗ trợ
- Win64: các import từ msvcrt.dll cộng với các stub helper nhỏ mà object COFF64 do MSVC sinh ra cần đến
- Kiểu dùng chung: PtrInt và PtrUInt giữ cho các khai báo theo kích thước con trỏ khớp nhau trên cả hai target
Xem thêm
|