Cross-Platform C Library Integration

نمای کلی

HotPDF از HPDFCLibs.pas به عنوان پل سمت پاسکال میان Delphi و فایل‌های شیء C پیوند‌شدهٔ ایستا که توسط HPDFZLib.pas، HPDFJpeg.pas و HPDFTiff.pas استفاده می‌شوند بهره می‌برد. این واحد نمادهای زمان اجرا را که آن کتابخانه‌ها انتظار دارند در معرض قرار می‌دهد و در عین حال یک لایه اعلان پاسکال یکنواخت برای هر دو بیلد Win32 و Win64 حفظ می‌کند

ویژگی‌های کلیدی

  • پل زمان اجرای مشترک برای zlib-ng در حالت سازگار با zlib، dispatch زمان اجرای SIMD در zlib-ng 64-bit، libjpeg-turbo 3.1.90 با اشیای NASM SIMD، و libtiff 4.7.1
  • پوشش کمک‌رویه‌های memory، stdio، string/character و چند تابع کمکی math/runtime
  • پل‌های malloc، free، realloc و calloc با هم‌ترازی 32 بایت برای بافرهای بومی سازگار با SIMD
  • سازگاری Win32 با اشیای OMF ساخته‌شده توسط bcc32c برای zlib-ng و اشیای OMF ساخته‌شده توسط bcc32 برای JPEG/TIFF از Lib\thirdparty\Win32
  • سازگاری Win64 با فایل‌های obj از نوع COFF64 در Lib\thirdparty\Win64 و اشیای COFF مربوط به zlib-ng در Lib\thirdparty\Win64x
  • انواع کمکی هم‌سایز با اشاره‌گر و stubهای پاسکال برای نمادهایی که Delphi linker نمی‌تواند مستقیم وارد کند

پشتوانه JPEG پرکارایی

گردش‌کارهای استاندارد JPEG از libjpeg-turbo 3.1.90 و API سازگار با libjpeg که HPDFJpeg.pas در معرض می‌گذارد استفاده می‌کنند. بیلدهای شیء Win32، Win64 و Win64x اشیای شتاب‌دهنده NASM SIMD مربوطه را هم شامل می‌شوند و همان مجموعه اشیای همراه برای لایه یکپارچه‌سازی TIFF نیز در دسترس است تا TIFFهای فشرده با JPEG را مدیریت کند

یادداشت‌های پل zlib-ng

جریان‌های تصویر Flate در Win64 از یک پل کوچک C پیرامون فشرده‌سازی یک‌مرحله‌ای zlib-ng استفاده می‌کنند. این پل انواع طول بومی zlib-ng را در C نگه می‌دارد و در عین حال طول بافر 32 بیتی سمت پاسکال و رفتار فشرده‌سازی حداکثری HotPDF را حفظ می‌کند

بیلدهای شیء Win64x و عیب‌یابی‌شدهٔ MSVC Win64 برای zlib-ng شامل پیاده‌سازی‌های dispatch زمان اجرا برای SSE2، SSSE3، SSE4.1، SSE4.2، PCLMULQDQ و AVX2 همراه با fallbackهای عمومی هستند. Win32 اشیای OMF عمومی zlib-ng را برای سازگاری با bcc32c نگه می‌دارد، در حالی که مسیر JPEG/TIFF در Win32 همچنان روی اشیای OMF کلاسیک bcc32 باقی می‌ماند

گروه‌های تابع پشتیبانی‌شده

  • مدیریت حافظه: malloc، free، realloc، calloc با تخصیص هم‌تراز 32 بایت
  • عملیات فایل و جریان: fopen، fclose، fputc، fread، fwrite، fflush، ferror
  • توابع رشته و نویسه: strcpy، sprintf، memcpy، memmove، memset، tolower، toupper، towlower، towupper، getenv، atoi
  • کمک‌رویه‌های زمان اجرا: ftol، setjmp، log، snprintf، memcmp

پشتیبانی معماری

  • Win32: wrapperهای پاسکال و کمک‌رویه‌های متکی بر WinAPI که با اشیای OMF مربوط به bcc32c و bcc32 که هر نسخه پشتیبانی‌شده Delphi Win32 لینک می‌کند هم‌خوان هستند
  • Win64: importهای msvcrt.dll به‌همراه stubهای کمکی کوچکی که اشیای COFF64 تولیدشده توسط MSVC به آن‌ها نیاز دارند
  • انواع مشترک: PtrInt و PtrUInt اعلان‌های هم‌سایز با اشاره‌گر را میان هر دو هدف هم‌راستا نگه می‌دارند

همچنین ببینید