Кросплатформна інтеграція бібліотеки 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

Див. також