Интеграция на C библиотека за различни платформи

Общ преглед

HotPDF използва HPDFCLibs.pas като Pascal слой мост между Delphi и статично свързаните C object files, използвани от HPDFZLib.pas, HPDFJpeg.pas и HPDFTiff.pas. Модулът излага runtime символите, които тези библиотеки очакват, като запазва един последователен Pascal declaration layer както за Win32, така и за Win64 build-ове

Основни възможности

  • Споделен runtime мост за zlib-ng в zlib-съвместим режим, 64-битов zlib-ng runtime SIMD dispatch, libjpeg-turbo 3.1.90 с NASM SIMD обекти и libtiff 4.7.1
  • Покритие за memory, stdio, string/character и избрани math/runtime помощни функции
  • 32-byte подравнен мост за malloc, free, realloc и calloc за SIMD-friendly native буфери
  • Win32 съвместимост с bcc32c-built zlib-ng OMF обекти и bcc32-built JPEG/TIFF OMF обекти от Lib\thirdparty\Win32
  • Win64 съвместимост с COFF64 obj файлове от Lib\thirdparty\Win64 и zlib-ng COFF обекти от Lib\thirdparty\Win64x
  • Помощни типове с размер на указател и Pascal stub-ове за символи, които Delphi linker-ът не може да импортира директно

Високопроизводителен JPEG backend

Стандартните JPEG работни потоци се поддържат от libjpeg-turbo 3.1.90 чрез класическия libjpeg-съвместим API, изложен от HPDFJpeg.pas Изгражданията на обекти за Win32, Win64 и Win64x включват съответните NASM SIMD ускорителни обекти, а същият пакетирани обектен набор е наличен и за слоя за TIFF интеграция при работа с JPEG-компресиран TIFF

Бележки за zlib-ng моста

Потоците от Flate изображения във Win64 използват малък C мост около еднократната компресия на zlib-ng Мостът запазва собствените типове за дължина на zlib-ng вътре в C, като същевременно съхранява 32-битовите дължини на буфера, видими от Pascal, и поведението за максимална компресия на HotPDF

Сборките zlib-ng за Win64x и диагностичния MSVC Win64 включват при изпълнение диспечирани реализации на SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ и AVX2 с общи резервни варианти Win32 запазва генеричните zlib-ng OMF обекти за съвместимост с bcc32c, а пътят Win32 JPEG/TIFF остава върху класическите bcc32 OMF обекти

Поддържани групи функции

  • Управление на паметта: malloc, free, realloc, calloc с 32-byte aligned allocation
  • Операции с файлове и потоци: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Функции за низове и символи: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Помощни функции за изпълнение: ftol, setjmp, log, snprintf, memcmp

Поддръжка на архитектури

  • Win32: Pascal обвивки и WinAPI-базирани помощници, които съвпадат с bcc32c и bcc32 OMF обектите, линквани от всяка поддържана Delphi Win32 версия
  • Win64: msvcrt.dll импорти плюс малки helper stub-ове, изисквани от MSVC-generated COFF64 обектите
  • Common Types: PtrInt и PtrUInt държат декларациите с размер на указател подравнени и за двете цели

Виж също