クロスプラットフォーム C ライブラリ統合

概要

HotPDF は、Delphi と、HPDFZLib.pas、HPDFJpeg.pas、および HPDFTiff.pas で使用される静的リンクされた C オブジェクトファイルとの間の Pascal 向けのブリッジとして HPDFCLibs.pas を使用します。このユニットは、それらのライブラリが期待するランタイムシンボルを公開しながら、Win32 ビルドと Win64 ビルドの両方で一貫した 1 つの Pascal 宣言レイヤーを保持します。

主な機能

  • zlib 互換モードの zlib-ng、zlib-ng 64 ビット ランタイム SIMD ディスパッチ、NASM SIMD オブジェクトを備えた libjpeg-turbo 3.1.90、および libtiff 4.7.1 用の共有ランタイムブリッジ
  • メモリ、stdio、文字列/文字、および選択された数学/ランタイムヘルパーのカバレッジ
  • SIMD に適したネイティブバッファのための 32 バイトアライメントの malloc、free、realloc、および calloc ブリッジ
  • Lib\thirdparty\Win32 の bcc32c でビルドされた zlib-ng OMF オブジェクトおよび bcc32 でビルドされた JPEG/TIFF OMF オブジェクトとの Win32 互換性
  • Lib\thirdparty\Win64 の COFF64 obj ファイルおよび Lib\thirdparty\Win64x の zlib-ng COFF オブジェクトとの Win64 互換性
  • Delphi のリンカーが直接インポートできないシンボルのための、ポインターサイズのヘルパー型と Pascal スタブ

高性能 JPEG バックエンド

標準の JPEG ワークフローは、HPDFJpeg.pas によって公開されている従来の libjpeg 互換 API を介して libjpeg-turbo 3.1.90 によってバックアップされています。Win32、Win64、および Win64x のオブジェクトビルドには、関連する NASM SIMD アクセラレーションオブジェクトが含まれており、同じバンドルされたオブジェクトセットは、JPEG 圧縮された TIFF の処理のために TIFF 統合レイヤーでも利用できます。

Zlib-ng ブリッジの注意事項

Win64 Flate 画像ストリームは、zlib-ng のワンショット圧縮の周りに小さな C ブリッジを使用します。このブリッジは、ネイティブの zlib-ng の長さの型を C の内部に保持しながら、HotPDF の Pascal 向けの 32 ビットバッファの長さと最大圧縮動作を維持します。

Win64x および診断用 MSVC Win64 zlib-ng オブジェクトビルドには、汎用フォールバックを備えたランタイムディスパッチの SSE2、SSSE3、SSE4.1、SSE4.2、PCLMULQDQ、および AVX2 実装が含まれています。Win32 は bcc32c との互換性のために汎用の zlib-ng OMF オブジェクトを保持しますが、Win32 の JPEG/TIFF パスは従来の bcc32 OMF オブジェクトのままです。

サポートされている機能グループ

  • メモリ管理: 32 バイトアライメント割り当てによる malloc、free、realloc、calloc
  • ファイルとストリームの操作: fopen、fclose、fputc、fread、fwrite、fflush、ferror
  • 文字列と文字の関数: strcpy、sprintf、memcpy、memmove、memset、tolower、toupper、towlower、towupper、getenv、atoi
  • ランタイムヘルパー: ftol、setjmp、log、snprintf、memcmp

アーキテクチャのサポート

  • Win32: サポートされているすべての Delphi Win32 バージョンによってリンクされている bcc32c および bcc32 OMF オブジェクトと一致する Pascal ラッパーと WinAPI 支援ヘルパー
  • Win64: msvcrt.dll のインポートに加えて、MSVC で生成された COFF64 オブジェクトに必要な小さなヘルパースタブ
  • 共通の型: PtrInt と PtrUInt は、両方のターゲット間でポインターサイズの宣言を一致させます

関連項目