Cross-Platform C Library Integration

Yleiskatsaus

HotPDF käyttää tiedostoa HPDFCLibs.pas Pascal-rajapintana Delphin ja HPDFZLib.pas-, HPDFJpeg.pas- ja HPDFTiff.pas-tiedostojen käyttämien staattisesti linkitettyjen C-objektitiedostojen välillä. Yksikkö tuo näkyville runtime-symbolit, joita kyseiset kirjastot odottavat, säilyttäen samalla yhden yhtenäisen Pascal-esittelykerroksen sekä Win32- että Win64-versioille

Key Features

  • Jaettu ajonaikainen silta zlib-ng-kirjastolle zlib-yhteensopivassa tilassa, zlib-ng:n 64-bittisen ajonaikaisen SIMD-jakelulle, libjpeg-turbo 3.1.90 -kirjastolle NASM SIMD -objekteilla sekä libtiff 4.7.1 -kirjastolle
  • Muisti-, stdio-, merkkijono-/merkki- ja valittujen matematiikka-/runtime-apuohjelmien kattavuus
  • 32-tavuisesti kohdistettu malloc-, free-, realloc- ja calloc-silta SIMD-ystävällisille natiivipuskureille
  • Win32-yhteensopivuus bcc32c-kääntäjällä luotujen zlib-ng OMF -objektien ja bcc32-kääntäjällä luotujen JPEG/TIFF OMF -objektien kanssa polusta Lib\thirdparty\Win32
  • Win64-yhteensopivuus polusta Lib\thirdparty\Win64 peräisin olevien COFF64 obj -tiedostojen ja polusta Lib\thirdparty\Win64x peräisin olevien zlib-ng COFF -objektien kanssa
  • Osoittimen kokoiset aputyypit ja Pascal-tynkäkoodit symboleille, joita Delphi-linkkeri ei voi tuoda suoraan

High-Performance JPEG Backend

Standardit JPEG-työnkulut perustuvat libjpeg-turbo 3.1.90 -kirjastoon perinteisen libjpeg-yhteensopivan API:n kautta, jonka HPDFJpeg.pas tarjoaa. Win32-, Win64- ja Win64x-objektiversiot sisältävät asianmukaiset NASM SIMD -kiihdytysobjektit, ja sama paketoitu objektijoukko on myös TIFF-integraatiotason käytettävissä JPEG-pakattujen TIFF-tiedostojen käsittelyyn

Zlib-ng Bridge Notes

Win64 Flate -kuvavirrat käyttävät pientä C-siltaa zlib-ng-kertapakkauksen ympärillä. Silta säilyttää natiivit zlib-ng-pituustyypit C-kielessä samalla kun se säilyttää HotPDF-kirjaston Pascal-puoleiset 32-bittiset puskurinpituudet ja maksimaalisen pakkauskäyttäytymisen

Win64x- ja diagnostiikka-MSVC Win64 zlib-ng -objektiversiot sisältävät ajonaikaisesti jaetut SSE2-, SSSE3-, SSE4.1-, SSE4.2-, PCLMULQDQ- ja AVX2-toteutukset geneerisillä vararatkaisuilla. Win32 säilyttää geneeriset zlib-ng OMF -objektit bcc32c-yhteensopivuutta varten, kun taas Win32 JPEG/TIFF -polku käyttää edelleen klassisia bcc32 OMF -objekteja

Tuetut funktioryhmät

  • Muistinhallinta: malloc, free, realloc, calloc 32 tavun kohdistetulla varauksella
  • Tiedosto- ja virtatoiminnot: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Merkkijono- ja merkkifunktiot: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Ajonaikaiset apuohjelmat: ftol, setjmp, log, snprintf, memcmp

Architecture Support

  • Win32: Pascal-kääreet ja WinAPI-pohjaiset apuohjelmat, jotka vastaavat bcc32c- ja bcc32 OMF -objekteja, joita jokainen tuettu Delphin Win32-versio linkittää
  • Win64: msvcrt.dll-tuonnit sekä pienet aputyngät, joita MSVC:n luomat COFF64-objektit edellyttävät
  • Yleiset tyypit: PtrInt ja PtrUInt pitävät osoittimen kokoiset määrittelyt kohdistettuina molemmissa kohteissa

See Also