Çapraz platform C kitaplığı entegrasyonu

Genel bakış

HotPDF, Delphi ile HPDFZLib.pas, HPDFJpeg.pas ve HPDFTiff.pas tarafından kullanılan statik bağlı C object dosyaları arasında Pascal tarafına bakan köprü olarak HPDFCLibs.pas kullanır. Unit, bu kitaplıkların beklediği runtime sembollerini açığa çıkarırken Win32 ve Win64 buildleri için tek ve tutarlı bir Pascal bildirim katmanı korur.

Temel özellikler

  • zlib uyumlu modda zlib-ng, zlib-ng 64 bit runtime SIMD dispatch, NASM SIMD objectleriyle libjpeg-turbo 3.1.90 ve libtiff 4.7.1 için paylaşılan runtime köprüsü
  • Bellek, stdio, string/character ve seçili math/runtime yardımcıları kapsamı
  • SIMD dostu native bufferlar için 32 bayt hizalı malloc, free, realloc ve calloc köprüsü
  • Lib\thirdparty\Win32 içinden bcc32c ile oluşturulmuş zlib-ng OMF objectleri ve bcc32 ile oluşturulmuş JPEG/TIFF OMF objectleriyle Win32 uyumluluğu
  • Lib\thirdparty\Win64 içinden COFF64 obj dosyaları ve Lib\thirdparty\Win64x içinden zlib-ng COFF objectleriyle Win64 uyumluluğu
  • Delphi linker tarafından doğrudan import edilemeyen semboller için pointer boyutlu yardımcı türler ve Pascal stubları

Yüksek performanslı JPEG backend

Standart JPEG iş akışları, HPDFJpeg.pas tarafından açığa çıkarılan klasik libjpeg uyumlu API üzerinden libjpeg-turbo 3.1.90 ile desteklenir. Win32, Win64 ve Win64x object buildleri ilgili NASM SIMD acceleration objectlerini içerir ve aynı paketlenmiş object seti JPEG sıkıştırmalı TIFF işleme için TIFF entegrasyon katmanına da açıktır.

zlib-ng köprü notları

Win64 Flate görüntü akışları, zlib-ng one-shot sıkıştırma etrafında küçük bir C köprüsü kullanır. Köprü, native zlib-ng uzunluk türlerini C içinde tutarken HotPDF’nin Pascal tarafına bakan 32 bit buffer uzunluklarını ve maksimum sıkıştırma davranışını korur.

Win64x ve diagnostic MSVC Win64 zlib-ng object buildleri, generic fallbacklarla birlikte runtime-dispatched SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ ve AVX2 implementasyonlarını içerir. Win32, bcc32c uyumluluğu için generic zlib-ng OMF objectlerini korurken Win32 JPEG/TIFF yolu klasik bcc32 OMF objectlerinde kalır.

Desteklenen işlev grupları

  • Bellek yönetimi: 32 bayt hizalı allocation ile malloc, free, realloc, calloc
  • Dosya ve stream işlemleri: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • String ve character işlevleri: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Runtime yardımcıları: ftol, setjmp, log, snprintf, memcmp

Mimari desteği

  • Win32: Desteklenen her Delphi Win32 sürümü tarafından link edilen bcc32c ve bcc32 OMF objectleriyle eşleşen Pascal wrapperları ve WinAPI destekli yardımcılar
  • Win64: msvcrt.dll importları ve MSVC tarafından üretilen COFF64 objectlerinin gerektirdiği küçük yardımcı stublar
  • Ortak türler: PtrInt ve PtrUInt, pointer boyutlu bildirimleri iki target arasında hizalı tutar

Ayrıca bkz.