|
Кросплатформна інтеграція бібліотеки C
Огляд
HotPDF використовує HPDFCLibs.pas як Pascal-міст між Delphi та statically linked C object files, що використовуються HPDFZLib.pas, HPDFJpeg.pas і HPDFTiff.pas Unit exposes runtime symbols, потрібні цим libraries, і зберігає consistent Pascal declaration layer для Win32 і Win64 builds
Ключові особливості
- Спільний міст часу виконання для zlib-ng у zlib-сумісному режимі, 64-розрядна диспетчеризація SIMD часу виконання zlib-ng, libjpeg-turbo 3.1.90 з об'єктами NASM SIMD та libtiff 4.7.1
- Покриття пам'яті, stdio, рядків/символів та вибраних допоміжних засобів математики/часу виконання
- Міст для вирівняних по 32 байтах malloc, free, realloc та calloc для SIMD-дружніх нативних буферів
- Сумісність Win32 з zlib-ng OMF objects, built by bcc32c, і JPEG/TIFF OMF objects, built by bcc32, з Lib\thirdparty\Win32
- Сумісність Win64 з COFF64 obj files з Lib\thirdparty\Win64 і zlib-ng COFF objects з Lib\thirdparty\Win64x
- Допоміжні типи розміром із вказівник та заглушки Pascal для символів, які лінкер Delphi не може імпортувати безпосередньо
Високопродуктивний бекенд JPEG
Стандартні робочі процеси JPEG підтримуються libjpeg-turbo 3.1.90 через класичний libjpeg-сумісний API, наданий HPDFJpeg.pas. Об'єктні збірки Win32, Win64 та Win64x містять відповідні об'єкти прискорення NASM SIMD, і той самий пакетний набір об'єктів також доступний для рівня інтеграції TIFF для обробки TIFF із JPEG-стисненням
Примітки щодо мосту Zlib-ng
Потоки зображень Win64 Flate використовують невеликий міст C навколо однокрокового стиснення zlib-ng. Міст зберігає нативні типи довжини zlib-ng всередині C, зберігаючи Pascal-орієнтовані 32-бітові довжини буферів HotPDF та поведінку максимального стиснення
Збірки об'єктів Win64x та діагностичні MSVC Win64 zlib-ng містять реалізації SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ та AVX2 з диспетчеризацією часу виконання з загальними резервними варіантами. Win32 зберігає загальні OMF-об'єкти zlib-ng для сумісності з bcc32c, тоді як шлях Win32 JPEG/TIFF залишається на класичних 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
Підтримка архітектур
- Win32: обгортки Pascal і допоміжні засоби на основі WinAPI, що відповідають 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
Див. також
|